proc run(cmd: string; quiet = false): tuple[output: string, exitCode: int] {. discardable, ...raises: [CatchableError], tags: [ReadEnvEffect, RootEffect], forbids: [].}
proc run_quiet(cmd: string): tuple[output: string, exitCode: int] {.discardable, ...raises: [CatchableError], tags: [ReadEnvEffect, RootEffect], forbids: [].}
macro sh(body: untyped): tuple[output: string, exitCode: int] {.discardable.}