UNPKG

lugger

Version:

Lugger is an automation framework running on customizable Typescript DSL

88 lines (76 loc) 2.43 kB
/* Firestack (c) 2020, License: MIT */ import { ReturnCodeFamily } from 'ts-basis'; import { ChildProcessWithoutNullStreams } from 'child_process'; import { PostfixWrappedReturn } from 'ts-dsl'; enum ShellCodesEnum { SH_TEMP_FILE_WRITE_ERROR, SH_TEMP_OUTPUT_FILE_READ_ERROR, SH_RETURN_TYPE_ERROR_SERIALIZABLE_TYPE, SH_TEMP_SPECIAL_OUTPUT_FILE_READ_ERROR, SH_RETURN_TYPE_ERROR_OBJECT_TYPE, SH_RETURN_PARSE_ERROR_BAD_JSON_FORMAT, SH_RETURN_PARSE_ERROR_BAD_YAML_FORMAT, } export const ShellCodes = ReturnCodeFamily('ShellCodes', ShellCodesEnum); export type ShellReturnType = ( 'process' | 'string' | 'base64' | 'hex' | 'utf8' | 'ucs2' | 'ascii' | 'buffer' | 'exitcode' | 'object-json' | 'object-yaml' ); export interface ShellProcessReturn { exitcode?: number; outputText?: string; outputBuffer?: Buffer; duration?: number; timeCalled?: number; timeStarted?: number; timeEnded?: number; canceled?: boolean; callArgs?: ShellProcessOptions; } type configBoolean = true | false | 1 | 0; type configTrue = true | 1; type configFalse = false | 0; export interface ShellProcessOptions { script?: string; tee?: configBoolean; showCommands?: configBoolean; failFast?: configBoolean; printSteps?: configBoolean; quietConsole?: configBoolean; outputFile?: string; outputFileMode?: 'r' | 'r+' | 'w' | 'w+' | 'a' | 'a+'; // https://cplusplus.com/reference/cstdio/fopen/ returnOutput?: configBoolean; returnExitCode?: configBoolean; returnType?: ShellReturnType; onStdoutData?: (data: Buffer) => any; onStderrData?: (data: Buffer) => any; onProcess?: (proc: ChildProcessWithoutNullStreams, shArg: ShellProcessOptions) => any; otherData?: any; } export interface ShellProcessOptionsGeneric extends ShellProcessOptions { returnType: 'process'; } export interface ShellProcessOptionsReturnString extends ShellProcessOptions { returnType: 'string' | 'base64' | 'hex' | 'utf8' | 'ucs2' | 'ascii'; } export interface ShellProcessOptionsReturnObject extends ShellProcessOptions { returnType: 'object-json' | 'object-yaml'; } export interface ShellProcessOptionsReturnBuffer extends ShellProcessOptions { returnType: 'buffer'; } export interface ShellProcessOptionsReturnOutput extends ShellProcessOptions { returnOutput: configTrue; } export interface ShellProcessOptionsReturnExitCode extends ShellProcessOptions { returnExitCode: configTrue; }