8000 Add new command to disable a project · TailorDev/assignees@990e386 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Apr 6, 2021. It is now read-only.

Commit

Permalink
Add new command to disable a project
Browse files Browse the repository at this point in the history
  • Loading branch information
willdurand committed Apr 26, 2018
1 parent 509c611 commit 990e386
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
18 changes: 18 additions & 0 deletions bin/assignees
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const mongoose = require('../config/mongoose')(logger);
const findReviewersTask = require('../tasks/findReviewers');
const listUserFeaturesTask = require('../tasks/listUserFeatures');
const updateUserFeatureTask = require('../tasks/updateUserFeature');
const disableProjectTask = require('../tasks/disableProject');

const updateUserFeatureAction = operation => async (username, feature) => {
const updateUserFeature = updateUserFeatureTask.configure({ logger });
Expand Down Expand Up @@ -90,6 +91,23 @@ program
})
;

program
.command('project:disable [owner] [repo]')
.description('disable a project completely')
.action(async (owner, repo) => {
const disableProject = disableProjectTask.configure({ logger });

try {
await disableProject(owner, repo);
} catch(e) {
logger.error(chalk.red(e.stack));
process.exitCode = 1;
} finally {
mongoose.connection.close();
}
})
;

program.parse(process.argv);

if (!program.args.length) {
Expand Down
56 changes: 56 additions & 0 deletions tasks/disableProject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
const gh = require('../helpers/github');
const Repository = require('../models/Repository');
const User = require('../models/User');

/**
* config = {
* logger: { info: Function, error: Function },
* }
*/
exports.configure = config => async (owner, repo) => {
const repository = await Repository.findOne({
name: repo,
owner,
})
.catch(() => null);

if (!repository) {
config.logger.error(`No project found for owner = "${owner}" and repo = "${repo}".`);
return;
}

if (!repository.github_hook_id) {
config.logger.error('No webhook registered for this project.');
return;
}

if (!repository.enabled_by || !repository.enabled_by.user_id) {
config.logger.error(`Cannot find a user ID for this repository.`);
return;
}

try {
const user = await User.findOneById(repository.enabled_by.user_id);

if (!user) {
config.logger.error(`User not found`);
return;
}

await gh.auth(user).repos.deleteHook({
owner,
repo,
id: repository.github_hook_id,
});

await repository.set({
enabled: false,
github_hook_id: undefined,
}).save();
} catch (err) {
config.logger.error(err.message || err);
return;
}

config.logger.info(`${owner}/${repo} successfully disabled.`);
};

0 comments on commit 990e386

Please sign in to comment.
0