Files
pwcli/src/globals.ts
T

76 lines
1.7 KiB
TypeScript

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<TConfig | null> => {
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<string | null> => {
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));
};