| 56 | |
| 57 | const mkCommand = |
| 58 | (cmd) => |
| 59 | (args, options = {}) => { |
| 60 | options['env'] = Object.assign( |
| 61 | { SERVERLESS_PLATFORM_STAGE: 'dev' }, |
| 62 | process.env, |
| 63 | options['env'], |
| 64 | ) |
| 65 | const { error, stdout, stderr, status } = crossSpawn.sync( |
| 66 | cmd, |
| 67 | args, |
| 68 | options, |
| 69 | ) |
| 70 | if (error && !options['noThrow']) { |
| 71 | console.error(`Error running: ${quote([cmd, ...args])}`) |
| 72 | throw error |
| 73 | } |
| 74 | if (status && !options['noThrow']) { |
| 75 | console.error('STDOUT: ', stdout.toString()) |
| 76 | console.error('STDERR: ', stderr.toString()) |
| 77 | throw new Error( |
| 78 | `${quote([cmd, ...args])} failed with status code ${status}`, |
| 79 | ) |
| 80 | } |
| 81 | return { |
| 82 | stdout: stdout && stdout.toString().trim(), |
| 83 | stderr: stderr && stderr.toString().trim(), |
| 84 | } |
| 85 | } |
| 86 | |
| 87 | const sls = mkCommand('sls') |
| 88 | const git = mkCommand('git') |