8000 Add command to disable all projects for a given user · TailorDev/assignees@1f670e3 · 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 command to disable all projects for a given user
Browse files Browse the repository at this point in the history
  • Loading branch information
willdurand committed Apr 26, 2018
1 parent f46c4bd commit 1f670e3
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 10 deletions.
20 changes: 19 additions & 1 deletion bin/assignees
8000
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const findReviewersTask = require('../tasks/findReviewers');
const listUserFeaturesTask = require('../tasks/listUserFeatures');
const updateUserFeatureTask = require('../tasks/updateUserFeature');
const disableProjectTask = require('../tasks/disableProject');
const disableProjectsTask = require('../tasks/disableProjects');

const updateUserFeatureAction = operation => async (username, feature) => {
const updateUserFeature = updateUserFeatureTask.configure({ logger });
Expand Down Expand Up @@ -98,7 +99,24 @@ program
const disableProject = disableProjectTask.configure({ logger });

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

program
.command('project:disable-all [owner]')
.description('disable all projects of a user or organization completely')
.action(async (owner, repo) => {
const disableProjects = disableProjectsTask.configure({ logger });

try {
await disableProjects(owner);
} catch(e) {
logger.error(chalk.red(e.stack));
process.exitCode = 1;
Expand Down
20 changes: 11 additions & 9 deletions tasks/disableProject.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ const User = require('../models/User');
* logger: { info: Function, error: Function },
* }
*/
exports.configure = config => async (owner, repo) => {
const repository = await Repository.findOne({
name: repo,
owner,
})
exports.configure = config => async ({ owner, repo, repository }) => {
if (!repository) {
repository = await Repository.findOne({
name: repo,
owner,
})
.catch(() => null);
}

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

Expand All @@ -38,8 +40,8 @@ exports.configure = config => async (owner, repo) => {
}

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

Expand All @@ -52,5 +54,5 @@ exports.configure = config => async (owner, repo) => {
return;
}

config.logger.info(`${owner}/${repo} successfully disabled.`);
config.logger.info(`${repository.owner}/${repository.name} successfully disabled.`);
};
26 changes: 26 additions & 0 deletions tasks/disableProjects.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const Repository = require('../models/Repository');
const disableProjectTask = require('./disableProject');

/**
* config = {
* logger: { info: Function, error: Function },
* }
*/
exports.configure = config => async (owner) => {
config.logger.info(`Disabling all enabled projects for "${owner}"`);

const disableProject = disableProjectTask.configure(config);

const repositories = await Repository.find({
owner,
enabled: true,
});

await Promise.all(
repositories.map(async (repository) => {
config.logger.info(`-> disabling "${repository.name}"`);

await disableProject({ repository });
})
);
};

0 comments on commit 1f670e3

Please sign in to comment.
0