UNPKG

6.38 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/run-script.ts"],"names":["processExecutor","ignoredBin","script","args","process","argv","executor","handleSignal","result","signal","console","log","exit","attemptResolve","resolveArgs","require","resolve","error","getEnv","Object","keys","env","filter","key","undefined","reduce","envCopy","toUpperCase","toString","spawnScript","relativeScriptPath","path","join","__dirname","scriptPath","Error","spawn","sync","stdio","status","scriptsPath","scriptsAvailable","glob","scriptsAvailableMessage","map","normalize","s","replace","Boolean","trim","fullMessage","chalk","cyan","green"],"mappings":"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","sourcesContent":["import path from \"path\"\nimport spawn from \"cross-spawn\"\nimport glob from \"glob\"\nimport { SpawnSyncReturns } from \"child_process\"\nimport chalk from \"chalk\"\n\nimport { isGdScripts } from \"./utils\"\n\nconst [processExecutor, ignoredBin, script, ...args] = process.argv\n\nconst executor = isGdScripts() ? \"ts-node\" : processExecutor\n\nconst handleSignal = (result: SpawnSyncReturns<Buffer>) => {\n if (result.signal === \"SIGKILL\") {\n // eslint-disable-next-line no-console\n console.log(\n `The script \"${script}\" failed because the process exited too early. ` +\n \"This probably means the system ran out of memory or someone called \" +\n \"`kill -9` on the process.\",\n )\n } else if (result.signal === \"SIGTERM\") {\n // eslint-disable-next-line no-console\n console.log(\n `The script \"${script}\" failed because the process exited too early. ` +\n \"Someone might have called `kill` or `killall`, or the system could \" +\n \"be shutting down.\",\n )\n }\n process.exit(1)\n}\n\nconst attemptResolve = (...resolveArgs: string[]) => {\n try {\n return (require.resolve as any)(...resolveArgs)\n } catch (error) {\n return null\n }\n}\n\n// this is required to address an issue in cross-spawn\n// https://github.com/kentcdodds/kcd-scripts/issues/4\nconst getEnv = () =>\n Object.keys(process.env)\n .filter(key => process.env[key] !== undefined)\n .reduce(\n (envCopy, key) => {\n envCopy[key] = process.env[key] as any\n\n return envCopy\n },\n {\n [`SCRIPTS_${script.toUpperCase()}`]: true.toString(),\n },\n )\n\nconst spawnScript = () => {\n const relativeScriptPath = path.join(__dirname, \"./scripts\", script)\n const scriptPath = attemptResolve(relativeScriptPath)\n\n if (!scriptPath) {\n throw new Error(`Unknown script \"${script}\".`)\n }\n const result = spawn.sync(executor, [scriptPath, ...args], {\n stdio: \"inherit\",\n env: getEnv(),\n })\n\n if (result.signal) {\n handleSignal(result)\n } else {\n process.exit(result.status)\n }\n}\n\nif (script) {\n spawnScript()\n} else {\n const scriptsPath = path.join(__dirname, \"scripts/\")\n const scriptsAvailable = glob.sync(path.join(__dirname, \"scripts\", \"*\"))\n // `glob.sync` returns paths with unix style path separators even on Windows.\n // So we normalize it before attempting to strip out the scripts path.\n const scriptsAvailableMessage = scriptsAvailable\n .map(path.normalize)\n .map(s =>\n s\n .replace(scriptsPath, \"\")\n .replace(/__tests__/, \"\")\n .replace(/\\.ts$/, \"\"),\n )\n .filter(Boolean)\n .join(\"\\n \")\n .trim()\n const fullMessage = `\n${chalk.cyan(\"Usage\")}: \n ${ignoredBin} [script] [--flags]\n\n${chalk.cyan(\"Available Scripts\")}:\n ${scriptsAvailableMessage}\n\n${chalk.cyan(\"Options\")}:\n All options depend on the script. Docs will be improved eventually, \n but for most scripts you can assume that the args you pass will be \n forwarded to the respective tool that's being run under the hood.\n\n${chalk.green(\"May the force be with you\")}.\n `.trim()\n console.log(`\\n${fullMessage}\\n`) // eslint-disable-line no-console\n}\n"],"file":"run-script.js"}
\No newline at end of file