Skip to content

Commit

Permalink
Add create + delete milestone commands
Browse files Browse the repository at this point in the history
  • Loading branch information
getvega committed Jul 6, 2017
1 parent 9ec4808 commit b023ac9
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 2 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ ghm milestone list list all milestones
ghm milestone open [milestone] re-open milestone
ghm milestone close [milestone] close milestone
ghm milestone update [milestone] update milestone
ghm milestone create [milestone] create a new milestone
ghm milestone delete [milestone] permanently delete a milestone
# pull-request commands
ghm pull list list all pull-requests
Expand Down
2 changes: 1 addition & 1 deletion lib/commands/milestone/change-status.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module.exports = state => {
const milestones = await filterMilestones(repos, argv.milestone);
if (!milestones.length) return;

log.info(`Changing status to ${state}...`);Ò
log.info(`Changing status to ${state}...`);
const progress = new ProgressBar(':current/:total [:bar]', { total: milestones.length });

for (let milestone of milestones) {
Expand Down
45 changes: 45 additions & 0 deletions lib/commands/milestone/create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const ProgressBar = require('progress');
const colors = require('colors');
const auth = require('../../auth');
const log = require('../../log');

module.exports.command = 'create [milestone]';

module.exports.describe = 'Create a new milestone in multiple repositories';

module.exports.builder = {
description: {
type: 'string',
describe: 'description of the milestone'
},
due: {
alias: 'd',
type: 'string',
describe: 'milestone\'s due date. format: YYYY-MM-DD'
}
};

module.exports.handler = async function(argv) {
const { github, repos } = await auth.init();

log.info(`Creating milestones...`);
const progress = new ProgressBar(':current/:total [:bar]', { total: repos.length });
for (let repo of repos) {
await github.issues.createMilestone({
owner: repo.owner,
repo: repo.name,
title: argv.milestone,
description: argv.description,
due_on: argv.due || getDefaultDue()
});
progress.tick();
}

log.success(`Done.`);
};

function getDefaultDue() {
var now = new Date();
now.setDate(now.getDate() + 14);
return now.toISOString();
}
28 changes: 28 additions & 0 deletions lib/commands/milestone/delete.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const ProgressBar = require('progress');
const auth = require('../../auth');
const log = require('../../log');

module.exports.command = 'delete [milestone]';

module.exports.describe = 'Permanently delete a milestone a milestone (see `close` to update milestone status)';

module.exports.handler = async function(argv) {
const { github, repos, hydrateMilestones, filterMilestones } = await auth.init();
await hydrateMilestones(repos, 'all');
const milestones = await filterMilestones(repos, argv.milestone);
if (!milestones.length) return;

log.info(`Deleting milestones...`);
const progress = new ProgressBar(':current/:total [:bar]', { total: milestones.length });

for (let milestone of milestones) {
await github.issues.deleteMilestone({
owner: milestone.repo.owner,
repo: milestone.repo.name,
number: milestone.number
});
progress.tick();
}

log.success(`Done.`);
};
4 changes: 3 additions & 1 deletion lib/commands/milestone/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
module.exports = yargs => {
return yargs
.command(require('./list'))
.command(require('./close'))
.command(require('./create'))
.command(require('./delete'))
.command(require('./list'))
.command(require('./open'))
.command(require('./update'));
};

0 comments on commit b023ac9

Please # to comment.