import chalk = require('chalk'); const os = require('os'); const snakeCase = require('lodash.snakecase'); const { Confirm } = require('enquirer'); export const defaultMenuSettings = { showHelp: false, }; export type TConfig = { gh_token: string; photowall_repo: string; mandrill_api_key: string; localhost_url?: string; localhost_username?: string; localhost_password?: string; }; export const getSettings = async (toolbox): Promise => { const { filesystem, print } = toolbox; try { return await filesystem.readAsync( `${os.homedir()}/.pwcli_settings`, 'json', ); } catch { print.error(` No config found, please run [ ${chalk.cyan( 'pwcli s se', )} ] or setup > settings from the menu. `); return null; } }; export const getCurrentBranch = async ( path: string, toolbox, ): Promise => { const { system } = toolbox; const config = await getSettings(toolbox); if (config.photowall_repo) { // git rev-parse --abbrev-ref HEAD const branch = await system.run('git rev-parse --abbrev-ref HEAD', { cwd: config.photowall_repo, trim: true, }); console.log(`branch`, branch); return branch; } return null; }; export const issueToBranchName = (issue) => { return `${issue.number}-${snakeCase(issue.title).substr(0, 40)}`; }; export const confirmMessage = async (message: string) => { const confirm = new Confirm({ name: 'confirm', message: message, }); try { return await confirm.run(); } catch (e) { console.error(e); return false; } }; export const sleep = (milliseconds) => { return new Promise((resolve) => setTimeout(resolve, milliseconds)); };