Move configuration into package.json configs section
This commit is contained in:
parent
dba1b8a7e9
commit
f7c1e10b5a
@ -31,7 +31,15 @@
|
|||||||
"run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit"
|
"run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"artifacts": "TokenTransferProxy Exchange TokenRegistry Token EtherToken"
|
"artifacts": "TokenTransferProxy Exchange TokenRegistry Token EtherToken",
|
||||||
|
"postpublish": {
|
||||||
|
"assets": ["_bundles/index.js", "_bundles/index.min.js"],
|
||||||
|
"docPublishConfigs": {
|
||||||
|
"extraFileIncludes": ["../types/src/index.ts"],
|
||||||
|
"s3BucketPath": "s3://0xjs-docs-jsons/",
|
||||||
|
"s3StagingBucketPath": "s3://staging-0xjs-docs-jsons/"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -53,7 +61,6 @@
|
|||||||
"@types/node": "^8.0.53",
|
"@types/node": "^8.0.53",
|
||||||
"@types/sinon": "^2.2.2",
|
"@types/sinon": "^2.2.2",
|
||||||
"@types/uuid": "^3.4.2",
|
"@types/uuid": "^3.4.2",
|
||||||
"async-child-process": "^1.1.1",
|
|
||||||
"awesome-typescript-loader": "^3.1.3",
|
"awesome-typescript-loader": "^3.1.3",
|
||||||
"chai": "^4.0.1",
|
"chai": "^4.0.1",
|
||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
|
1
packages/0x.js/src/globals.d.ts
vendored
1
packages/0x.js/src/globals.d.ts
vendored
@ -4,7 +4,6 @@ declare module 'dirty-chai';
|
|||||||
declare module 'request-promise-native';
|
declare module 'request-promise-native';
|
||||||
declare module 'web3-provider-engine';
|
declare module 'web3-provider-engine';
|
||||||
declare module 'web3-provider-engine/subproviders/rpc';
|
declare module 'web3-provider-engine/subproviders/rpc';
|
||||||
declare module 'async-child-process';
|
|
||||||
declare module 'publish-release';
|
declare module 'publish-release';
|
||||||
|
|
||||||
// semver-sort declarations
|
// semver-sort declarations
|
||||||
|
@ -1,29 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
import { execAsync } from 'async-child-process';
|
|
||||||
import * as _ from 'lodash';
|
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
import * as tsConfig from '../tsconfig.json';
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const cwd = `${__dirname}/..`;
|
const cwd = `${__dirname}/..`;
|
||||||
const subPackageName = (packageJSON as any).name;
|
// tslint:disable-next-line:no-floating-promises
|
||||||
// Include any external packages that are part of the 0x.js public interface
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
|
|
||||||
// So far, we only have @0xproject/types as part of 0x.js's public interface.
|
|
||||||
const fileIncludes = [...(tsConfig as any).include, '../types/src/index.ts'];
|
|
||||||
const fileIncludesAdjusted = postpublishUtils.adjustFileIncludePaths(fileIncludes, __dirname);
|
|
||||||
const S3BucketPath = 's3://0xjs-docs-jsons/';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
const tagAndVersion = await postpublishUtils.getLatestTagAndVersionAsync(subPackageName);
|
|
||||||
const tag = tagAndVersion.tag;
|
|
||||||
const version = tagAndVersion.version;
|
|
||||||
|
|
||||||
const releaseName = postpublishUtils.getReleaseName(subPackageName, version);
|
|
||||||
const assets = [`${__dirname}/../_bundles/index.js`, `${__dirname}/../_bundles/index.min.js`];
|
|
||||||
const release = await postpublishUtils.publishReleaseNotesAsync(tag, releaseName, assets);
|
|
||||||
|
|
||||||
// tslint:disable-next-line:no-console
|
|
||||||
console.log('POSTPUBLISH: Release successful, generating docs...');
|
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(__dirname, cwd, fileIncludesAdjusted, version, S3BucketPath);
|
|
||||||
})().catch(console.error);
|
|
||||||
|
@ -1,19 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
import { execAsync } from 'async-child-process';
|
|
||||||
import * as _ from 'lodash';
|
|
||||||
|
|
||||||
import * as tsConfig from '../tsconfig.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const cwd = __dirname + '/..';
|
const cwd = `${__dirname}/..`;
|
||||||
const S3BucketPath = 's3://staging-0xjs-docs-jsons/';
|
// tslint:disable-next-line:no-floating-promises
|
||||||
// Include any external packages that are part of the 0x.js public interface
|
postpublishUtils.publishDocsToStagingAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
|
|
||||||
// So far, we only have @0xproject/types as part of 0x.js's public interface.
|
|
||||||
const fileIncludes = [...(tsConfig as any).include, '../types/src/index.ts'];
|
|
||||||
const fileIncludesAdjusted = postpublishUtils.adjustFileIncludePaths(fileIncludes, __dirname);
|
|
||||||
const jsonFilePath = `${__dirname}/../${postpublishUtils.generatedDocsDirectoryName}/index.json`;
|
|
||||||
const version = process.env.DOCS_VERSION || '0.0.0';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(__dirname, cwd, fileIncludesAdjusted, version, S3BucketPath);
|
|
||||||
})().catch(console.error);
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -23,6 +23,15 @@
|
|||||||
"test": "run-s clean build copy_test_fixtures run_mocha",
|
"test": "run-s clean build copy_test_fixtures run_mocha",
|
||||||
"test:circleci": "yarn test"
|
"test:circleci": "yarn test"
|
||||||
},
|
},
|
||||||
|
"config": {
|
||||||
|
"postpublish": {
|
||||||
|
"assets": ["_bundles/index.js", "_bundles/index.min.js"],
|
||||||
|
"docPublishConfigs": {
|
||||||
|
"s3BucketPath": "s3://connect-docs-jsons/",
|
||||||
|
"s3StagingBucketPath": "s3://staging-connect-docs-jsons/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||||
|
@ -1,28 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
import { execAsync } from 'async-child-process';
|
|
||||||
import * as _ from 'lodash';
|
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
import * as tsConfig from '../tsconfig.json';
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const cwd = `${__dirname}/..`;
|
const cwd = `${__dirname}/..`;
|
||||||
const subPackageName = (packageJSON as any).name;
|
// tslint:disable-next-line:no-floating-promises
|
||||||
// Include any external packages that are part of the @0xproject/connect public interface
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
|
|
||||||
const fileIncludes = [...(tsConfig as any).include];
|
|
||||||
const fileIncludesAdjusted = postpublishUtils.adjustFileIncludePaths(fileIncludes, __dirname);
|
|
||||||
const S3BucketPath = 's3://connect-docs-jsons/';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
const tagAndVersion = await postpublishUtils.getLatestTagAndVersionAsync(subPackageName);
|
|
||||||
const tag = tagAndVersion.tag;
|
|
||||||
const version = tagAndVersion.version;
|
|
||||||
|
|
||||||
const releaseName = postpublishUtils.getReleaseName(subPackageName, version);
|
|
||||||
const assets = [`${__dirname}/../_bundles/index.js`, `${__dirname}/../_bundles/index.min.js`];
|
|
||||||
const release = await postpublishUtils.publishReleaseNotesAsync(tag, releaseName, assets);
|
|
||||||
|
|
||||||
// tslint:disable-next-line:no-console
|
|
||||||
console.log('POSTPUBLISH: Release successful, generating docs...');
|
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(__dirname, cwd, fileIncludesAdjusted, version, S3BucketPath);
|
|
||||||
})().catch(console.error);
|
|
||||||
|
@ -1,19 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
import { execAsync } from 'async-child-process';
|
|
||||||
import * as _ from 'lodash';
|
|
||||||
|
|
||||||
import * as tsConfig from '../tsconfig.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const cwd = __dirname + '/..';
|
const cwd = `${__dirname}/..`;
|
||||||
const S3BucketPath = 's3://staging-connect-docs-jsons/';
|
// tslint:disable-next-line:no-floating-promises
|
||||||
// Include any external packages that are part of the @0xproject/connect public interface
|
postpublishUtils.publishDocsToStagingAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
|
|
||||||
const fileIncludes = [...(tsConfig as any).include];
|
|
||||||
const fileIncludesAdjusted = postpublishUtils.adjustFileIncludePaths(fileIncludes, __dirname);
|
|
||||||
const projectFiles = fileIncludesAdjusted.join(' ');
|
|
||||||
const jsonFilePath = `${__dirname}/../${postpublishUtils.generatedDocsDirectoryName}/index.json`;
|
|
||||||
const version = process.env.DOCS_VERSION || '0.0.0';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(__dirname, cwd, fileIncludesAdjusted, version, S3BucketPath);
|
|
||||||
})().catch(console.error);
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -10,37 +10,95 @@ const publishReleaseAsync = promisify(publishRelease);
|
|||||||
const githubPersonalAccessToken = process.env.GITHUB_PERSONAL_ACCESS_TOKEN_0X_JS;
|
const githubPersonalAccessToken = process.env.GITHUB_PERSONAL_ACCESS_TOKEN_0X_JS;
|
||||||
const generatedDocsDirectoryName = 'generated_docs';
|
const generatedDocsDirectoryName = 'generated_docs';
|
||||||
|
|
||||||
export interface TagAndVersion {
|
export interface PostpublishConfigs {
|
||||||
tag: string;
|
cwd: string;
|
||||||
|
packageName: string;
|
||||||
version: string;
|
version: string;
|
||||||
|
assets: string[];
|
||||||
|
docPublishConfigs: DocPublishConfigs;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DocPublishConfigs {
|
||||||
|
fileIncludes: string[];
|
||||||
|
s3BucketPath: string;
|
||||||
|
s3StagingBucketPath: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const postpublishUtils = {
|
export const postpublishUtils = {
|
||||||
async getLatestTagAndVersionAsync(subPackageName: string): Promise<TagAndVersion> {
|
generateConfig(packageJSON: any, tsConfigJSON: any, cwd: string): PostpublishConfigs {
|
||||||
const subPackagePrefix = `${subPackageName}@`;
|
if (_.isUndefined(packageJSON.name)) {
|
||||||
const gitTagsCommand = `git tag -l "${subPackagePrefix}*"`;
|
throw new Error('name field required in package.json. Cannot publish release notes to Github.');
|
||||||
const result = await execAsync(gitTagsCommand);
|
|
||||||
if (!_.isEmpty(result.stderr)) {
|
|
||||||
throw new Error(result.stderr);
|
|
||||||
}
|
}
|
||||||
const tags = result.stdout.trim().split('\n');
|
if (_.isUndefined(packageJSON.version)) {
|
||||||
const versions = tags.map((tag: string) => {
|
throw new Error('version field required in package.json. Cannot publish release notes to Github.');
|
||||||
return tag.slice(subPackagePrefix.length);
|
}
|
||||||
});
|
const postpublishConfig = _.get(packageJSON, 'config.postpublish', {});
|
||||||
const sortedVersions = semverSort.desc(versions);
|
const configs: PostpublishConfigs = {
|
||||||
const latestVersion = sortedVersions[0];
|
cwd,
|
||||||
const latestTag = subPackagePrefix + latestVersion;
|
packageName: packageJSON.name,
|
||||||
return {
|
version: packageJSON.version,
|
||||||
tag: latestTag,
|
assets: _.get(postpublishConfig, 'assets', []),
|
||||||
version: latestVersion,
|
docPublishConfigs: {
|
||||||
|
// Include any external packages that are part of the 0x.js public interface
|
||||||
|
// to this array so that TypeDoc picks it up and adds it to the Docs JSON
|
||||||
|
// So far, we only have @0xproject/types as part of 0x.js's public interface.
|
||||||
|
fileIncludes: [
|
||||||
|
...(tsConfigJSON as any).include,
|
||||||
|
..._.get(postpublishConfig, 'docPublishConfigs.extraFileIncludes', []),
|
||||||
|
],
|
||||||
|
s3BucketPath: _.get(postpublishConfig, 'docPublishConfigs.s3BucketPath'),
|
||||||
|
s3StagingBucketPath: _.get(postpublishConfig, 'docPublishConfigs.s3StagingBucketPath'),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
return configs;
|
||||||
},
|
},
|
||||||
async publishReleaseNotesAsync(tag: string, releaseName: string, assets: string[]) {
|
async runAsync(packageJSON: any, tsConfigJSON: any, cwd: string): Promise<void> {
|
||||||
|
const configs = this.generateConfig(packageJSON, tsConfigJSON, cwd);
|
||||||
|
const release = await this.publishReleaseNotesAsync(
|
||||||
|
configs.cwd,
|
||||||
|
configs.packageName,
|
||||||
|
configs.version,
|
||||||
|
configs.assets,
|
||||||
|
);
|
||||||
|
if (
|
||||||
|
!_.isUndefined(configs.docPublishConfigs.s3BucketPath) ||
|
||||||
|
!_.isUndefined(configs.docPublishConfigs.s3StagingBucketPath)
|
||||||
|
) {
|
||||||
|
utils.log('POSTPUBLISH: Release successful, generating docs...');
|
||||||
|
await postpublishUtils.generateAndUploadDocsAsync(
|
||||||
|
configs.cwd,
|
||||||
|
configs.docPublishConfigs.fileIncludes,
|
||||||
|
configs.version,
|
||||||
|
configs.docPublishConfigs.s3BucketPath,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
utils.log(`POSTPUBLISH: No S3Bucket config found for ${packageJSON.name}. Skipping doc JSON generation.`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async publishDocsToStagingAsync(packageJSON: any, tsConfigJSON: any, cwd: string) {
|
||||||
|
const configs = this.generateConfig(packageJSON, tsConfigJSON, cwd);
|
||||||
|
if (_.isUndefined(configs.docPublishConfigs.s3StagingBucketPath)) {
|
||||||
|
utils.log('config.postpublish.docPublishConfigs.s3StagingBucketPath entry in package.json not found!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
utils.log('POSTPUBLISH: Generating docs...');
|
||||||
|
await postpublishUtils.generateAndUploadDocsAsync(
|
||||||
|
configs.cwd,
|
||||||
|
configs.docPublishConfigs.fileIncludes,
|
||||||
|
configs.version,
|
||||||
|
configs.docPublishConfigs.s3StagingBucketPath,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
async publishReleaseNotesAsync(cwd: string, packageName: string, version: string, assets: string[]): Promise<void> {
|
||||||
|
const releaseName = this.getReleaseName(packageName, version);
|
||||||
|
const tag = this.getTag(packageName, version);
|
||||||
utils.log('POSTPUBLISH: Releasing ', releaseName, '...');
|
utils.log('POSTPUBLISH: Releasing ', releaseName, '...');
|
||||||
return publishReleaseAsync({
|
const finalAssets = this.adjustAssetPaths(cwd, assets);
|
||||||
|
const result = await publishReleaseAsync({
|
||||||
token: githubPersonalAccessToken,
|
token: githubPersonalAccessToken,
|
||||||
owner: '0xProject',
|
owner: '0xProject',
|
||||||
repo: '0x.js',
|
repo: '0x-monorepo',
|
||||||
tag,
|
tag,
|
||||||
name: releaseName,
|
name: releaseName,
|
||||||
notes: 'N/A',
|
notes: 'N/A',
|
||||||
@ -51,26 +109,23 @@ export const postpublishUtils = {
|
|||||||
assets,
|
assets,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
getTag(packageName: string, version: string) {
|
||||||
|
return `${packageName}@${version}`;
|
||||||
|
},
|
||||||
getReleaseName(subPackageName: string, version: string): string {
|
getReleaseName(subPackageName: string, version: string): string {
|
||||||
const releaseName = `${subPackageName} v${version}`;
|
const releaseName = `${subPackageName} v${version}`;
|
||||||
return releaseName;
|
return releaseName;
|
||||||
},
|
},
|
||||||
async standardPostPublishAsync(subPackageName: string): Promise<void> {
|
adjustAssetPaths(cwd: string, assets: string[]) {
|
||||||
const result: TagAndVersion = await this.getLatestTagAndVersionAsync(subPackageName);
|
const finalAssets: string[] = [];
|
||||||
const releaseName = this.getReleaseName(subPackageName, result.version);
|
_.each(assets, (asset: string) => {
|
||||||
const assets: string[] = [];
|
finalAssets.push(`${cwd}/${asset}`);
|
||||||
await this.publishReleaseNotesAsync(result.tag, releaseName, assets);
|
});
|
||||||
|
return finalAssets;
|
||||||
},
|
},
|
||||||
adjustFileIncludePaths(fileIncludes: string[], cwd: string): string[] {
|
adjustFileIncludePaths(fileIncludes: string[], cwd: string): string[] {
|
||||||
const fileIncludesAdjusted = _.map(fileIncludes, fileInclude => {
|
const fileIncludesAdjusted = _.map(fileIncludes, fileInclude => {
|
||||||
let path;
|
let path = _.startsWith(fileInclude, './') ? `${cwd}/${fileInclude.substr(2)}` : `${cwd}/${fileInclude}`;
|
||||||
if (_.startsWith(fileInclude, '../')) {
|
|
||||||
path = `${cwd}/../${fileInclude}`;
|
|
||||||
} else if (_.startsWith(fileInclude, './')) {
|
|
||||||
path = `${cwd}/../${fileInclude.substr(2)}`;
|
|
||||||
} else {
|
|
||||||
path = `${cwd}/${fileInclude}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
// HACK: tsconfig.json needs wildcard directory endings as `/**/*`
|
// HACK: tsconfig.json needs wildcard directory endings as `/**/*`
|
||||||
// but TypeDoc needs it as `/**` in order to pick up files at the root
|
// but TypeDoc needs it as `/**` in order to pick up files at the root
|
||||||
@ -81,15 +136,10 @@ export const postpublishUtils = {
|
|||||||
});
|
});
|
||||||
return fileIncludesAdjusted;
|
return fileIncludesAdjusted;
|
||||||
},
|
},
|
||||||
async generateAndUploadDocsAsync(
|
async generateAndUploadDocsAsync(cwd: string, fileIncludes: string[], version: string, S3BucketPath: string) {
|
||||||
dirname: string,
|
const fileIncludesAdjusted = this.adjustFileIncludePaths(fileIncludes, cwd);
|
||||||
cwd: string,
|
const projectFiles = fileIncludesAdjusted.join(' ');
|
||||||
includedFiles: string[],
|
const jsonFilePath = `${cwd}/${generatedDocsDirectoryName}/index.json`;
|
||||||
version: string,
|
|
||||||
S3BucketPath: string,
|
|
||||||
) {
|
|
||||||
const jsonFilePath = `${dirname}/../${postpublishUtils.generatedDocsDirectoryName}/index.json`;
|
|
||||||
const projectFiles = includedFiles.join(' ');
|
|
||||||
const result = await execAsync(
|
const result = await execAsync(
|
||||||
`JSON_FILE_PATH=${jsonFilePath} PROJECT_FILES="${projectFiles}" yarn docs:json`,
|
`JSON_FILE_PATH=${jsonFilePath} PROJECT_FILES="${projectFiles}" yarn docs:json`,
|
||||||
{
|
{
|
||||||
@ -105,7 +155,10 @@ export const postpublishUtils = {
|
|||||||
await execAsync(`S3_URL=${s3Url} yarn upload_docs_json`, {
|
await execAsync(`S3_URL=${s3Url} yarn upload_docs_json`, {
|
||||||
cwd,
|
cwd,
|
||||||
});
|
});
|
||||||
|
// Remove the generated docs directory
|
||||||
|
await execAsync(`rm -rf ${generatedDocsDirectoryName}`, {
|
||||||
|
cwd,
|
||||||
|
});
|
||||||
utils.log(`POSTPUBLISH: Docs uploaded to S3 bucket: ${S3BucketPath}`);
|
utils.log(`POSTPUBLISH: Docs uploaded to S3 bucket: ${S3BucketPath}`);
|
||||||
},
|
},
|
||||||
generatedDocsDirectoryName,
|
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
import { postpublishUtils } from '@0xproject/monorepo-scripts';
|
||||||
|
|
||||||
import * as packageJSON from '../package.json';
|
import * as packageJSON from '../package.json';
|
||||||
|
import * as tsConfigJSON from '../tsconfig.json';
|
||||||
|
|
||||||
const subPackageName = (packageJSON as any).name;
|
const cwd = `${__dirname}/..`;
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
postpublishUtils.standardPostPublishAsync(subPackageName);
|
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user