UNPKG

flipswitch

Version:

Rename all your default branches on github

72 lines (65 loc) 2.54 kB
const chalk = require('chalk') const {say} = require("../util"); const {githubAccess, INVALID_TOKEN} = require("../githubAccess"); const prompt = require('prompt-sync')(); const {View} = require("./_abstracts"); const {permissionsReview} = require('./permissionsReview'); const requestAccessToken = new View('RequestAccessToken', { /** Provides prompt for access token and verifies **/ run: async function() { say('\nYou will need to create a personal access token!') say('→ ' + chalk.cyan('https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line')); let token; while (true) { token = prompt.hide('Personal access token (hidden): '); if (token === null) { return null; } if(await githubAccess.updateToken(token) === true) { const name = await githubAccess.getName(); console.log(chalk.green(`~ Welcome, ${name} ~`)); break; } console.log(chalk.yellow('That didn\'t quite work. Make sure the token is valid')); console.log('Would you like to try again?'); if (!/y/i.test(prompt('[y/N]: '))) { return null; } } return { view: initAccessToken } } }) const initAccessToken = new View('InitAccessToken', { /** Tries to get a token, if unable, requests it via `requestAccessToken` **/ run: async function() { const accessStatus = await githubAccess.initToken(); if (accessStatus === "INVALID_TOKEN") { return { view: requestAccessToken } } if (accessStatus === 'TOKEN_NOT_FOUND') { return { view: requestAccessToken } } return { view: confirmUser } } }); const confirmUser = new View('ConfirmUser', { run: async function() { const user = await githubAccess.getAuthenticatedUserDetails(); say('You are currently logged in as:') say(chalk.cyan(user.name)); say(chalk.cyan(user.email)); say.newline(); const answer = prompt('Does this look correct? [Y/n]: '); if (/y/i.test(answer)) { return { view: permissionsReview } } else if (answer === null) { return null; } else { githubAccess.clearToken(); return { view: requestAccessToken } } } }); module.exports = { addAccessToken: initAccessToken };