Skip to content

Commit

Permalink
feat: add command for generating action config (#87)
Browse files Browse the repository at this point in the history
  • Loading branch information
bcoe committed May 15, 2019
1 parent 0c487b8 commit 73d9165
Showing 1 changed file with 66 additions and 13 deletions.
79 changes: 66 additions & 13 deletions src/bin/release-please.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

'use strict';

import chalk from 'chalk';
import {GitHubRelease, GitHubReleaseOptions} from '../github-release';
import {ReleasePR, ReleasePROptions} from '../release-pr';
import {CandidateIssue} from '../candidate-issue';
Expand All @@ -30,18 +31,23 @@ interface YargsOptions {
}

interface YargsOptionsBuilder {
option(opt: string, options: YargsOptions): void;
option(opt: string, options: YargsOptions): YargsOptionsBuilder;
}

yargs
.command(
'candidate-issue',
'create an issue that\'s an example of the next release',
(yargs: YargsOptionsBuilder) => {
yargs.option('package-name', {
describe: 'name of package release is being minted for',
demand: true
});
yargs
.option('package-name', {
describe: 'name of package release is being minted for',
demand: true
})
.option('repo-url', {
describe: 'GitHub URL to generate release for',
demand: true
});
},
async (argv: ReleasePROptions) => {
const ci = new CandidateIssue(argv);
Expand All @@ -50,27 +56,74 @@ yargs
.command(
'release-pr', 'create a new release PR from a candidate issue',
(yargs: YargsOptionsBuilder) => {
yargs.option('package-name', {
describe: 'name of package release is being minted for',
demand: true
});
yargs
.option('package-name', {
describe: 'name of package release is being minted for',
demand: true
})
.option('repo-url', {
describe: 'GitHub URL to generate release for',
demand: true
});
},
async (argv: ReleasePROptions) => {
const rp = new ReleasePR(argv);
await rp.run();
})
.command(
'github-release', 'create a GitHub release from am release PR',
() => {},
(yargs: YargsOptionsBuilder) => {
yargs.option(
'repo-url',
{describe: 'GitHub URL to generate release for', demand: true});
},
async (argv: GitHubReleaseOptions) => {
const gr = new GitHubRelease(argv);
await gr.createRelease();
})
.command(
'generate-action',
'outputs the release-please stanzas that should be added to main.workflow',
(yargs: YargsOptionsBuilder) => {
yargs.option('package-name', {
describe: 'name of package release is being minted for',
demand: true
});
},
async (argv: ReleasePROptions) => {
console.info(chalk.green(
'----- put the content below in .github/main.workflow -----'));
console.info(`workflow "Candidate Issue" {
on = "schedule(*/5 * * * *)"
resolves = ["candidate-issue"]
}
action "candidate-issue" {
uses = "googleapis/release-please/.github/action/release-please@master"
env = {
PACKAGE_NAME = "${argv.packageName}"
RELEASE_PLEASE_COMMAND = "candidate-issue"
}
secrets = ["GITHUB_TOKEN"]
}
workflow "GitHub Release" {
on = "push"
resolves = ["github-release"]
}
action "github-release" {
uses = "googleapis/release-please/.github/action/release-please@master"
env = {
PACKAGE_NAME = "${argv.packageName}"
RELEASE_PLEASE_COMMAND = "github-release"
}
secrets = ["GITHUB_TOKEN"]
}
`);
})
.option(
'token', {describe: 'GitHub repo token', default: process.env.GH_TOKEN})
.option(
'repo-url',
{describe: 'GitHub URL to generate release for', required: true})
.option('release-as', {
describe: 'override the semantically determined release version',
type: 'string'
Expand Down

0 comments on commit 73d9165

Please sign in to comment.