1import readline from 'readline' 3export const doPrompt = async (promptStr: string) => { 4 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) 5 const prompt = (query: string) => new Promise<string>((resolve) => rl.question(query, resolve)) 7 const got = await prompt(promptStr) 12export const guardPromptEq = async (promptStr: string, expected: string | number) => { 13 const got = await doPrompt(promptStr) 14 const expectedStr = expected.toString() 15 if (got != expectedStr) { 16 console.log('Aborted.', {expected: expectedStr, got}) 21export const guardProdAction = ({ 25 dangerousActions = ['delete', 'apply'], 31 dangerousActions?: string[] 32 warnOnlyActions?: string[] 36 const isWarnOnly = warnOnlyActions.includes(action) 37 const isDangerous = dangerousActions.includes(action) 39 if (!isDangerous && !isWarnOnly) return 42 console.log(`\nWARNING: ${action} on prod ${name}\n`) 46 return guardPromptEq(`\nWARNING: ${action} on prod ${name}. Enter ${name} to confirm: `, name)