@computesdk/cmd
Advanced tools
+23
-6
@@ -182,8 +182,25 @@ "use strict"; | ||
| }; | ||
| var rm = (path, options) => { | ||
| const flags = []; | ||
| if (options?.recursive) flags.push("r"); | ||
| if (options?.force) flags.push("f"); | ||
| return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path]; | ||
| }; | ||
| var rm = Object.assign( | ||
| (path, options) => { | ||
| const flags = []; | ||
| if (options?.recursive) flags.push("r"); | ||
| if (options?.force) flags.push("f"); | ||
| return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path]; | ||
| }, | ||
| { | ||
| /** | ||
| * Force remove file or directory (always uses -rf) | ||
| * @example rm.rf('/app/tmp') | ||
| */ | ||
| rf: (path) => ["rm", "-rf", path], | ||
| /** | ||
| * Smart remove - automatically detects if path is a directory and uses appropriate flags | ||
| * Uses a shell one-liner to check if directory and apply -r flag accordingly | ||
| * @example rm.auto('/app/tmp') | ||
| */ | ||
| auto: (path) => { | ||
| return ["sh", "-c", `if [ -d "${path}" ]; then rm -rf "${path}"; else rm -f "${path}"; fi`]; | ||
| } | ||
| } | ||
| ); | ||
| var cp = (src, dest, options) => { | ||
@@ -190,0 +207,0 @@ return options?.recursive ? ["cp", "-r", src, dest] : ["cp", src, dest]; |
+13
-18
@@ -378,21 +378,13 @@ /** | ||
| }) => Command; | ||
| rm: (path: string, options?: { | ||
| rm: ((path: string, options?: { | ||
| recursive?: boolean; | ||
| force?: boolean; | ||
| }) => Command) & { | ||
| rf: (path: string) => Command; | ||
| auto: (path: string) => Command; | ||
| }; | ||
| cp: (src: string, dest: string, // Export individual command builders for destructured imports | ||
| options?: { | ||
| recursive?: boolean; | ||
| }) => Command; | ||
| cp: (src: string, dest: string, options?: { | ||
| recursive?: boolean; | ||
| } /** | ||
| * Command builders for common shell operations - callable with shell wrapper + command methods | ||
| * | ||
| * @example | ||
| * // As shell wrapper (default: sh) | ||
| * cmd(npm.install(), { cwd: '/app' }) | ||
| * // => ['sh', '-c', 'cd '/app' && npm install'] | ||
| * | ||
| * @example | ||
| * // As command builders | ||
| * cmd.npm.install('express') | ||
| * // => ['npm', 'install', 'express'] | ||
| */) => Command; | ||
| mv: (src: string, dest: string) => Command; | ||
@@ -441,6 +433,9 @@ ls: (path?: string, options?: { | ||
| }) => Command; | ||
| declare const rm: (path: string, options?: { | ||
| declare const rm: ((path: string, options?: { | ||
| recursive?: boolean; | ||
| force?: boolean; | ||
| }) => Command; | ||
| }) => Command) & { | ||
| rf: (path: string) => Command; | ||
| auto: (path: string) => Command; | ||
| }; | ||
| declare const cp: (src: string, dest: string, options?: { | ||
@@ -447,0 +442,0 @@ recursive?: boolean; |
+13
-18
@@ -378,21 +378,13 @@ /** | ||
| }) => Command; | ||
| rm: (path: string, options?: { | ||
| rm: ((path: string, options?: { | ||
| recursive?: boolean; | ||
| force?: boolean; | ||
| }) => Command) & { | ||
| rf: (path: string) => Command; | ||
| auto: (path: string) => Command; | ||
| }; | ||
| cp: (src: string, dest: string, // Export individual command builders for destructured imports | ||
| options?: { | ||
| recursive?: boolean; | ||
| }) => Command; | ||
| cp: (src: string, dest: string, options?: { | ||
| recursive?: boolean; | ||
| } /** | ||
| * Command builders for common shell operations - callable with shell wrapper + command methods | ||
| * | ||
| * @example | ||
| * // As shell wrapper (default: sh) | ||
| * cmd(npm.install(), { cwd: '/app' }) | ||
| * // => ['sh', '-c', 'cd '/app' && npm install'] | ||
| * | ||
| * @example | ||
| * // As command builders | ||
| * cmd.npm.install('express') | ||
| * // => ['npm', 'install', 'express'] | ||
| */) => Command; | ||
| mv: (src: string, dest: string) => Command; | ||
@@ -441,6 +433,9 @@ ls: (path?: string, options?: { | ||
| }) => Command; | ||
| declare const rm: (path: string, options?: { | ||
| declare const rm: ((path: string, options?: { | ||
| recursive?: boolean; | ||
| force?: boolean; | ||
| }) => Command; | ||
| }) => Command) & { | ||
| rf: (path: string) => Command; | ||
| auto: (path: string) => Command; | ||
| }; | ||
| declare const cp: (src: string, dest: string, options?: { | ||
@@ -447,0 +442,0 @@ recursive?: boolean; |
+23
-6
@@ -83,8 +83,25 @@ var __defProp = Object.defineProperty; | ||
| }; | ||
| var rm = (path, options) => { | ||
| const flags = []; | ||
| if (options?.recursive) flags.push("r"); | ||
| if (options?.force) flags.push("f"); | ||
| return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path]; | ||
| }; | ||
| var rm = Object.assign( | ||
| (path, options) => { | ||
| const flags = []; | ||
| if (options?.recursive) flags.push("r"); | ||
| if (options?.force) flags.push("f"); | ||
| return flags.length > 0 ? ["rm", `-${flags.join("")}`, path] : ["rm", path]; | ||
| }, | ||
| { | ||
| /** | ||
| * Force remove file or directory (always uses -rf) | ||
| * @example rm.rf('/app/tmp') | ||
| */ | ||
| rf: (path) => ["rm", "-rf", path], | ||
| /** | ||
| * Smart remove - automatically detects if path is a directory and uses appropriate flags | ||
| * Uses a shell one-liner to check if directory and apply -r flag accordingly | ||
| * @example rm.auto('/app/tmp') | ||
| */ | ||
| auto: (path) => { | ||
| return ["sh", "-c", `if [ -d "${path}" ]; then rm -rf "${path}"; else rm -f "${path}"; fi`]; | ||
| } | ||
| } | ||
| ); | ||
| var cp = (src, dest, options) => { | ||
@@ -91,0 +108,0 @@ return options?.recursive ? ["cp", "-r", src, dest] : ["cp", src, dest]; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/utils.ts","../src/shell.ts","../src/commands/filesystem.ts","../src/commands/process.ts","../src/commands/packages.ts","../src/commands/git.ts","../src/commands/network.ts","../src/commands/text.ts","../src/commands/archive.ts","../src/commands/system.ts","../src/index.ts"],"sourcesContent":["import type { Command, ShellOptions } from './types.js';\n\n/**\n * Escape a string for safe use in shell commands using single quotes.\n * This is the safest method as single quotes preserve all characters literally,\n * except for single quotes themselves which must be handled specially.\n *\n * @example shellEscape(\"hello world\") // \"'hello world'\"\n * @example shellEscape(\"it's here\") // \"'it'\\\\''s here'\"\n * @example shellEscape(\"$HOME\") // \"'$HOME'\" (no variable expansion)\n */\nexport function shellEscape(s: string): string {\n // Wrap in single quotes and escape any embedded single quotes\n // 'foo'bar' becomes 'foo'\\''bar' (end quote, escaped quote, start quote)\n return \"'\" + s.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n/**\n * Escape a string for use inside double quotes.\n *\n * This is a legacy helper kept for backward compatibility; for new code,\n * prefer {@link shellEscape} which uses single-quoted, safer shell escaping.\n *\n * @example esc('path with \"quotes\"') // 'path with \\\\\"quotes\\\\\"'\n * @deprecated Use {@link shellEscape} for safer escaping. This function only escapes\n * double quotes and may not be safe for all shell contexts. Migration: replace\n * `esc(str)` with `shellEscape(str)`.\n */\nexport function esc(s: string): string {\n return s.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Escape each argument in a command array and join them with spaces.\n * Arguments that are safe (alphanumeric, dash, underscore, dot, slash, colon, equals)\n * are left unquoted for readability.\n *\n * @example escapeArgs(['npm', 'install', 'express']) // 'npm install express'\n * @example escapeArgs(['echo', 'hello world']) // \"echo 'hello world'\"\n * @example escapeArgs(['cp', 'file with spaces.txt', '/dest']) // \"cp 'file with spaces.txt' /dest\"\n */\nexport function escapeArgs(args: string[]): string {\n return args.map(arg => {\n // If arg contains only safe characters, no escaping needed\n if (/^[a-zA-Z0-9_./:=@-]+$/.test(arg) && arg.length > 0) {\n return arg;\n }\n // Otherwise, use shellEscape for safety\n return shellEscape(arg);\n }).join(' ');\n}\n\n/**\n * Internal helper to build shell command with proper escaping\n */\nexport function buildShellCommand(shellBin: string, command: Command, options?: ShellOptions): Command {\n if (!options?.cwd && !options?.background) {\n return command;\n }\n\n let cmdStr = escapeArgs(command);\n\n // Build command: first wrap with nohup if background, then prepend cd if cwd\n // Result: cd '/path' && nohup cmd > /dev/null 2>&1 &\n if (options.background) {\n cmdStr = `nohup ${cmdStr} > /dev/null 2>&1 &`;\n }\n\n if (options.cwd) {\n cmdStr = `cd ${shellEscape(options.cwd)} && ${cmdStr}`;\n }\n\n return [shellBin, '-c', cmdStr];\n}\n","import type { Command, ShellOptions } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Shell wrapper - callable function with shell-specific methods\n *\n * @example\n * // Default (sh)\n * shell(cmd.npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd \"/app\" && npm install']\n *\n * @example\n * // Shell-specific\n * shell.bash(cmd.node('server.js'), { background: true })\n * // => ['bash', '-c', 'nohup node server.js > /dev/null 2>&1 &']\n *\n * @example\n * shell.zsh(cmd.npm.run('dev'), { cwd: '/app' })\n * // => ['zsh', '-c', 'cd \"/app\" && npm run dev']\n */\nexport const shell = Object.assign(\n // Default: use sh\n (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n /** Wrap with sh (POSIX shell) */\n sh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n /** Wrap with bash */\n bash: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('bash', command, options);\n },\n /** Wrap with zsh */\n zsh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('zsh', command, options);\n },\n }\n);\n\n// Individual shell exports\nexport const sh = shell.sh;\nexport const bash = shell.bash;\nexport const zsh = shell.zsh;\n","import type { Command } from '../types.js';\n\n/**\n * Create directory\n *\n * By default, recursive is true (includes -p flag to create parent directories).\n * This differs from standard shell mkdir which requires explicit -p flag.\n *\n * @example mkdir('/app/src') // ['mkdir', '-p', '/app/src']\n * @example mkdir('/app/src', { recursive: false }) // ['mkdir', '/app/src']\n */\nexport const mkdir = (path: string, options?: { recursive?: boolean }): Command => {\n const recursive = options?.recursive ?? true;\n return recursive ? ['mkdir', '-p', path] : ['mkdir', path];\n};\n\n/**\n * Remove file or directory\n * @example rm('/app/tmp') // ['rm', '/app/tmp']\n * @example rm('/app/tmp', { recursive: true }) // ['rm', '-rf', '/app/tmp']\n */\nexport const rm = (path: string, options?: { recursive?: boolean; force?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.recursive) flags.push('r');\n if (options?.force) flags.push('f');\n return flags.length > 0 ? ['rm', `-${flags.join('')}`, path] : ['rm', path];\n};\n\n/**\n * Copy file or directory\n * @example cp('/src/file.txt', '/dest/file.txt')\n */\nexport const cp = (src: string, dest: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['cp', '-r', src, dest] : ['cp', src, dest];\n};\n\n/**\n * Move/rename file or directory\n * @example mv('/old/path', '/new/path')\n */\nexport const mv = (src: string, dest: string): Command => ['mv', src, dest];\n\n/**\n * List directory contents\n * @example ls('/app') // ['ls', '/app']\n * @example ls('/app', { all: true, long: true }) // ['ls', '-la', '/app']\n */\nexport const ls = (path?: string, options?: { all?: boolean; long?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.long) flags.push('l');\n if (options?.all) flags.push('a');\n const flagStr = flags.length > 0 ? `-${flags.join('')}` : '';\n if (flagStr && path) return ['ls', flagStr, path];\n if (flagStr) return ['ls', flagStr];\n if (path) return ['ls', path];\n return ['ls'];\n};\n\n/**\n * Print working directory\n * @example pwd() // ['pwd']\n */\nexport const pwd = (): Command => ['pwd'];\n\n/**\n * Change file permissions\n * @example chmod('755', '/app/script.sh')\n */\nexport const chmod = (mode: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chmod', '-R', mode, path] : ['chmod', mode, path];\n};\n\n/**\n * Change file owner/group\n * @example chown('user', '/app/file.txt')\n * @example chown('user:group', '/app', { recursive: true })\n */\nexport const chown = (owner: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chown', '-R', owner, path] : ['chown', owner, path];\n};\n\n/**\n * Create empty file or update timestamp\n * @example touch('/app/newfile.txt')\n */\nexport const touch = (path: string): Command => ['touch', path];\n\n/**\n * Read file contents\n * @example cat('/app/file.txt')\n */\nexport const cat = (path: string): Command => ['cat', path];\n\n/**\n * Create symbolic link\n * @example ln('/app/config', '/etc/app/config')\n * @example ln('/app/config', '/etc/app/config', { symbolic: true, force: true })\n */\nexport const ln = (target: string, link: string, options?: { symbolic?: boolean; force?: boolean }): Command => {\n const args = ['ln'];\n if (options?.symbolic !== false) args.push('-s'); // symbolic by default\n if (options?.force) args.push('-f');\n args.push(target, link);\n return args as Command;\n};\n\n/**\n * Resolve symbolic link\n * @example readlink('/usr/bin/python')\n * @example readlink('/usr/bin/python', { canonical: true })\n */\nexport const readlink = (path: string, options?: { canonical?: boolean }): Command => {\n return options?.canonical ? ['readlink', '-f', path] : ['readlink', path];\n};\n\n/**\n * Filesystem checks (exit 0 if true, 1 if false)\n * @example test.exists('/app/file.txt')\n * @example test.isDir('/app')\n */\nexport const test = {\n exists: (path: string): Command => ['test', '-e', path],\n isFile: (path: string): Command => ['test', '-f', path],\n isDir: (path: string): Command => ['test', '-d', path],\n isReadable: (path: string): Command => ['test', '-r', path],\n isWritable: (path: string): Command => ['test', '-w', path],\n isExecutable: (path: string): Command => ['test', '-x', path],\n notEmpty: (path: string): Command => ['test', '-s', path],\n isSymlink: (path: string): Command => ['test', '-L', path],\n};\n\n/**\n * Sync files/directories with rsync\n * @example rsync('/src/', '/dest/')\n * @example rsync('/src/', 'user@host:/dest/', { archive: true, compress: true })\n */\nexport const rsync = (src: string, dest: string, options?: {\n archive?: boolean;\n verbose?: boolean;\n compress?: boolean;\n delete?: boolean;\n dryRun?: boolean;\n exclude?: string[];\n}): Command => {\n const args = ['rsync'];\n if (options?.archive) args.push('-a');\n if (options?.verbose) args.push('-v');\n if (options?.compress) args.push('-z');\n if (options?.delete) args.push('--delete');\n if (options?.dryRun) args.push('--dry-run');\n if (options?.exclude) {\n for (const pattern of options.exclude) {\n args.push('--exclude', pattern);\n }\n }\n args.push(src, dest);\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Run Node.js script\n * @example node('server.js')\n * @example node('server.js', ['--port', '3000'])\n */\nexport const node = (script: string, args?: string[]): Command => {\n return args ? ['node', script, ...args] : ['node', script];\n};\n\n/**\n * Run Python script\n * @example python('script.py')\n * @example python('script.py', ['--verbose'])\n */\nexport const python = (script: string, args?: string[]): Command => {\n return args ? ['python3', script, ...args] : ['python3', script];\n};\n\n/**\n * Kill process by PID\n * @example kill(1234)\n * @example kill(1234, 9) // SIGKILL\n */\nexport const kill = (pid: number, signal?: number): Command => {\n return signal ? ['kill', `-${signal}`, String(pid)] : ['kill', String(pid)];\n};\n\n/**\n * Kill processes by name\n * @example pkill('node')\n * @example pkill('python', { signal: 9 })\n */\nexport const pkill = (name: string, options?: { signal?: number }): Command => {\n return options?.signal\n ? ['pkill', `-${options.signal}`, name]\n : ['pkill', name];\n};\n\n/**\n * List processes\n * @example ps()\n * @example ps({ all: true })\n */\nexport const ps = (options?: { all?: boolean }): Command => {\n return options?.all ? ['ps', 'aux'] : ['ps'];\n};\n\n/**\n * Run command with timeout\n * @example timeout(30, 'npm', ['test'])\n * @example timeout(10, 'curl', ['https://example.com'])\n */\nexport const timeout = (seconds: number, command: string, args?: string[]): Command => {\n const base: string[] = ['timeout', String(seconds), command];\n return args ? [...base, ...args] as Command : base as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * npm package manager commands\n */\nexport const npm = {\n /**\n * Install packages\n * @example npm.install() // ['npm', 'install']\n * @example npm.install('express') // ['npm', 'install', 'express']\n * @example npm.install('express', { dev: true }) // ['npm', 'install', '-D', 'express']\n */\n install: (pkg?: string, options?: { dev?: boolean; global?: boolean }): Command => {\n const args = ['npm', 'install'];\n if (options?.dev) args.push('-D');\n if (options?.global) args.push('-g');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run npm script\n * @example npm.run('build')\n * @example npm.run('test', ['--coverage'])\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['npm', 'run', script, '--', ...args] : ['npm', 'run', script];\n },\n\n /**\n * Initialize new package\n * @example npm.init() // ['npm', 'init', '-y']\n */\n init: (): Command => ['npm', 'init', '-y'],\n\n /**\n * Uninstall package\n * @example npm.uninstall('lodash')\n */\n uninstall: (pkg: string): Command => ['npm', 'uninstall', pkg],\n};\n\n/**\n * pnpm package manager commands\n */\nexport const pnpm = {\n /**\n * Install packages with pnpm\n * @example pnpm.install()\n * @example pnpm.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['pnpm', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run pnpm script\n * @example pnpm.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['pnpm', 'run', script, '--', ...args] : ['pnpm', 'run', script];\n },\n};\n\n/**\n * yarn package manager commands\n */\nexport const yarn = {\n /**\n * Install packages with yarn\n * @example yarn.install()\n */\n install: (): Command => ['yarn', 'install'],\n\n /**\n * Add package\n * @example yarn.add('express')\n * @example yarn.add('typescript', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev ? ['yarn', 'add', '-D', pkg] : ['yarn', 'add', pkg];\n },\n\n /**\n * Run yarn script\n * @example yarn.run('build')\n */\n run: (script: string): Command => ['yarn', 'run', script],\n};\n\n/**\n * pip Python package manager commands\n */\nexport const pip = {\n /**\n * Install Python package\n * @example pip.install('requests')\n * @example pip.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['pip', 'install', pkg],\n\n /**\n * Uninstall Python package\n * @example pip.uninstall('requests')\n */\n uninstall: (pkg: string): Command => ['pip', 'uninstall', '-y', pkg],\n};\n\n/**\n * bun runtime commands\n */\nexport const bun = {\n /**\n * Install packages with bun\n * @example bun.install()\n * @example bun.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['bun', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run bun script\n * @example bun.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['bun', 'run', script, ...args] : ['bun', 'run', script];\n },\n\n /**\n * Run file with bun\n * @example bun.exec('server.ts')\n */\n exec: (file: string, args?: string[]): Command => {\n return args ? ['bun', file, ...args] : ['bun', file];\n },\n};\n\n/**\n * deno runtime commands\n */\nexport const deno = {\n /**\n * Run deno script\n * @example deno.run('server.ts')\n * @example deno.run('server.ts', { allow: ['net', 'read'] })\n */\n run: (file: string, options?: { allow?: string[] }): Command => {\n const args = ['deno', 'run'];\n if (options?.allow) {\n for (const perm of options.allow) {\n args.push(`--allow-${perm}`);\n }\n }\n args.push(file);\n return args as Command;\n },\n\n /**\n * Install deno package\n * @example deno.install('https://deno.land/std/http/file_server.ts')\n */\n install: (url: string, options?: { name?: string }): Command => {\n const args = ['deno', 'install'];\n if (options?.name) args.push('-n', options.name);\n args.push(url);\n return args as Command;\n },\n};\n\n/**\n * Run packages with npx - callable function with additional methods\n * @example npx('create-react-app', ['my-app']) // run package directly\n * @example npx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const npx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['npx', pkg, ...args] : ['npx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires npx)\n * @example npx.concurrently(['npm:dev', 'npm:watch'])\n * @example npx.concurrently(['npm run dev', 'npm run watch'], { names: ['dev', 'watch'], killOthers: true })\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['npx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * Run packages with bunx - callable function with additional methods\n * @example bunx('create-next-app', ['my-app']) // run package directly\n * @example bunx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const bunx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['bunx', pkg, ...args] : ['bunx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires bunx)\n * @example bunx.concurrently(['npm:dev', 'npm:watch'])\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['bunx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * uv - Fast Python package manager\n */\nexport const uv = {\n /**\n * Install Python packages with uv\n * @example uv.install('requests')\n * @example uv.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['uv', 'pip', 'install', pkg],\n\n /**\n * Run Python script with uv\n * @example uv.run('script.py')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['uv', 'run', script, ...args] : ['uv', 'run', script];\n },\n\n /**\n * Sync dependencies from pyproject.toml\n * @example uv.sync()\n */\n sync: (): Command => ['uv', 'sync'],\n\n /**\n * Create virtual environment\n * @example uv.venv()\n * @example uv.venv('.venv')\n */\n venv: (path?: string): Command => {\n return path ? ['uv', 'venv', path] : ['uv', 'venv'];\n },\n};\n\n/**\n * poetry - Python dependency management\n */\nexport const poetry = {\n /**\n * Install dependencies\n * @example poetry.install()\n */\n install: (options?: { noRoot?: boolean }): Command => {\n const args = ['poetry', 'install'];\n if (options?.noRoot) args.push('--no-root');\n return args as Command;\n },\n\n /**\n * Add a dependency\n * @example poetry.add('requests')\n * @example poetry.add('pytest', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev\n ? ['poetry', 'add', '--group', 'dev', pkg]\n : ['poetry', 'add', pkg];\n },\n\n /**\n * Run command in poetry environment\n * @example poetry.run('python', ['script.py'])\n */\n run: (command: string, args?: string[]): Command => {\n return args ? ['poetry', 'run', command, ...args] : ['poetry', 'run', command];\n },\n\n /**\n * Build package\n * @example poetry.build()\n */\n build: (): Command => ['poetry', 'build'],\n};\n\n/**\n * pipx - Install and run Python applications\n */\nexport const pipx = {\n /**\n * Install application globally\n * @example pipx.install('black')\n */\n install: (pkg: string): Command => ['pipx', 'install', pkg],\n\n /**\n * Run application without installing\n * @example pipx.run('black', ['--check', '.'])\n */\n run: (pkg: string, args?: string[]): Command => {\n return args ? ['pipx', 'run', pkg, ...args] : ['pipx', 'run', pkg];\n },\n\n /**\n * Uninstall application\n * @example pipx.uninstall('black')\n */\n uninstall: (pkg: string): Command => ['pipx', 'uninstall', pkg],\n\n /**\n * Upgrade application\n * @example pipx.upgrade('black')\n */\n upgrade: (pkg: string): Command => ['pipx', 'upgrade', pkg],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Git version control commands\n */\nexport const git = {\n /**\n * Clone repository\n * @example git.clone('https://github.com/user/repo.git')\n * @example git.clone('https://github.com/user/repo.git', { depth: 1 })\n */\n clone: (url: string, options?: { depth?: number; branch?: string; dir?: string }): Command => {\n const args = ['git', 'clone'];\n if (options?.depth) args.push('--depth', String(options.depth));\n if (options?.branch) args.push('-b', options.branch);\n args.push(url);\n if (options?.dir) args.push(options.dir);\n return args as Command;\n },\n\n /**\n * Pull latest changes\n * @example git.pull()\n */\n pull: (): Command => ['git', 'pull'],\n\n /**\n * Checkout branch\n * @example git.checkout('main')\n * @example git.checkout('feature', { create: true })\n */\n checkout: (branch: string, options?: { create?: boolean }): Command => {\n return options?.create\n ? ['git', 'checkout', '-b', branch]\n : ['git', 'checkout', branch];\n },\n\n /**\n * Git status\n * @example git.status()\n */\n status: (): Command => ['git', 'status'],\n\n /**\n * Stage files\n * @example git.add('.')\n * @example git.add('src/index.ts')\n */\n add: (path: string, options?: { all?: boolean }): Command => {\n return options?.all ? ['git', 'add', '-A', path] : ['git', 'add', path];\n },\n\n /**\n * Commit staged changes\n * @example git.commit('feat: add new feature')\n * @example git.commit('fix: bug fix', { all: true })\n */\n commit: (message: string, options?: { all?: boolean }): Command => {\n return options?.all\n ? ['git', 'commit', '-a', '-m', message]\n : ['git', 'commit', '-m', message];\n },\n\n /**\n * Push to remote\n * @example git.push()\n * @example git.push({ remote: 'origin', branch: 'main' })\n * @example git.push({ setUpstream: true, branch: 'feature' })\n */\n push: (options?: { remote?: string; branch?: string; setUpstream?: boolean; force?: boolean }): Command => {\n const args = ['git', 'push'];\n if (options?.setUpstream) args.push('-u');\n if (options?.force) args.push('--force');\n if (options?.remote) args.push(options.remote);\n if (options?.branch) args.push(options.branch);\n return args as Command;\n },\n\n /**\n * List or create branches\n * @example git.branch()\n * @example git.branch({ all: true })\n * @example git.branch('new-feature', { create: true })\n */\n branch: (name?: string, options?: { all?: boolean; delete?: boolean; create?: boolean }): Command => {\n const args = ['git', 'branch'];\n if (options?.all) args.push('-a');\n if (options?.delete) args.push('-d');\n if (name) args.push(name);\n return args as Command;\n },\n\n /**\n * Show changes\n * @example git.diff()\n * @example git.diff({ staged: true })\n * @example git.diff({ file: 'src/index.ts' })\n */\n diff: (options?: { staged?: boolean; file?: string }): Command => {\n const args = ['git', 'diff'];\n if (options?.staged) args.push('--staged');\n if (options?.file) args.push(options.file);\n return args as Command;\n },\n\n /**\n * Show commit history\n * @example git.log()\n * @example git.log({ oneline: true, count: 10 })\n */\n log: (options?: { oneline?: boolean; count?: number }): Command => {\n const args = ['git', 'log'];\n if (options?.oneline) args.push('--oneline');\n if (options?.count) args.push('-n', String(options.count));\n return args as Command;\n },\n\n /**\n * Stash changes\n * @example git.stash()\n * @example git.stash({ pop: true })\n * @example git.stash({ list: true })\n */\n stash: (options?: { pop?: boolean; list?: boolean; drop?: boolean; message?: string }): Command => {\n const args = ['git', 'stash'];\n if (options?.pop) args.push('pop');\n else if (options?.list) args.push('list');\n else if (options?.drop) args.push('drop');\n else if (options?.message) args.push('push', '-m', options.message);\n return args as Command;\n },\n\n /**\n * Fetch from remote\n * @example git.fetch()\n * @example git.fetch({ all: true })\n */\n fetch: (options?: { remote?: string; all?: boolean; prune?: boolean }): Command => {\n const args = ['git', 'fetch'];\n if (options?.all) args.push('--all');\n if (options?.prune) args.push('--prune');\n if (options?.remote) args.push(options.remote);\n return args as Command;\n },\n\n /**\n * Reset changes\n * @example git.reset()\n * @example git.reset({ hard: true })\n * @example git.reset({ ref: 'HEAD~1' })\n */\n reset: (options?: { hard?: boolean; soft?: boolean; ref?: string }): Command => {\n const args = ['git', 'reset'];\n if (options?.hard) args.push('--hard');\n if (options?.soft) args.push('--soft');\n if (options?.ref) args.push(options.ref);\n return args as Command;\n },\n\n /**\n * Initialize repository\n * @example git.init()\n */\n init: (): Command => ['git', 'init'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Download file with curl\n * @example curl('https://example.com/file.tar.gz')\n * @example curl('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const curl = (url: string, options?: { output?: string; silent?: boolean }): Command => {\n const args = ['curl'];\n if (options?.silent) args.push('-s');\n args.push('-L'); // follow redirects\n if (options?.output) {\n args.push('-o', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Download file with wget\n * @example wget('https://example.com/file.tar.gz')\n * @example wget('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const wget = (url: string, options?: { output?: string; quiet?: boolean }): Command => {\n const args = ['wget'];\n if (options?.quiet) args.push('-q');\n if (options?.output) {\n args.push('-O', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Port management utilities\n */\nexport const port = {\n /**\n * Find process using a port (using lsof)\n * @example port.find(3000)\n */\n find: (p: number): Command => ['lsof', '-i', `:${p}`],\n\n /**\n * Kill process on a port\n * @example port.kill(3000)\n */\n kill: (p: number): Command => ['sh', '-c', `lsof -ti :${p} | xargs kill -9 2>/dev/null || true`],\n\n /**\n * Check if port is in use (exits 0 if in use)\n * @example port.isUsed(3000)\n */\n isUsed: (p: number): Command => ['sh', '-c', `lsof -i :${p} >/dev/null 2>&1`],\n\n /**\n * List all listening ports\n * @example port.list()\n */\n list: (): Command => ['ss', '-tlnp'],\n\n /**\n * Wait for port to be available (with timeout)\n * @example port.waitFor(3000, 30)\n */\n waitFor: (p: number, timeoutSeconds?: number): Command => {\n const timeout = timeoutSeconds ?? 30;\n return ['sh', '-c', `for i in $(seq 1 ${timeout}); do nc -z localhost ${p} && exit 0 || sleep 1; done; exit 1`];\n },\n};\n\n/**\n * Network utilities\n */\nexport const net = {\n /**\n * Check connectivity to host\n * @example net.ping('google.com')\n * @example net.ping('google.com', 3)\n */\n ping: (host: string, count?: number): Command => {\n return count ? ['ping', '-c', String(count), host] : ['ping', '-c', '1', host];\n },\n\n /**\n * Check if host:port is reachable\n * @example net.check('localhost', 3000)\n */\n check: (host: string, p: number): Command => ['nc', '-z', host, String(p)],\n\n /**\n * Get public IP\n * @example net.publicIp()\n */\n publicIp: (): Command => ['curl', '-s', 'ifconfig.me'],\n\n /**\n * Show network interfaces\n * @example net.interfaces()\n */\n interfaces: (): Command => ['ip', 'addr'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Search for pattern in files\n * @example grep('TODO', 'src/*.ts')\n * @example grep('error', undefined, { recursive: true, ignoreCase: true })\n */\nexport const grep = (pattern: string, file?: string, options?: { recursive?: boolean; ignoreCase?: boolean; lineNumber?: boolean }): Command => {\n const args = ['grep'];\n if (options?.recursive) args.push('-r');\n if (options?.ignoreCase) args.push('-i');\n if (options?.lineNumber) args.push('-n');\n args.push(pattern);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Stream editor for filtering and transforming text\n * @example sed('s/foo/bar/g', 'file.txt')\n * @example sed('s/foo/bar/g', 'file.txt', { inPlace: true })\n */\nexport const sed = (expression: string, file: string, options?: { inPlace?: boolean }): Command => {\n return options?.inPlace\n ? ['sed', '-i', expression, file]\n : ['sed', expression, file];\n};\n\n/**\n * Output first lines of file\n * @example head('file.txt')\n * @example head('file.txt', 20)\n */\nexport const head = (file: string, lines?: number): Command => {\n return lines ? ['head', '-n', String(lines), file] : ['head', file];\n};\n\n/**\n * Output last lines of file\n * @example tail('file.txt')\n * @example tail('file.txt', 20)\n * @example tail('app.log', undefined, { follow: true })\n */\nexport const tail = (file: string, lines?: number, options?: { follow?: boolean }): Command => {\n const args = ['tail'];\n if (options?.follow) args.push('-f');\n if (lines) args.push('-n', String(lines));\n args.push(file);\n return args as Command;\n};\n\n/**\n * Word, line, character count\n * @example wc('file.txt')\n * @example wc('file.txt', { lines: true })\n */\nexport const wc = (file: string, options?: { lines?: boolean; words?: boolean; chars?: boolean }): Command => {\n const args = ['wc'];\n if (options?.lines) args.push('-l');\n if (options?.words) args.push('-w');\n if (options?.chars) args.push('-c');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Sort lines of text\n * @example sort('file.txt')\n * @example sort('file.txt', { reverse: true, numeric: true })\n */\nexport const sort = (file: string, options?: { reverse?: boolean; numeric?: boolean; unique?: boolean }): Command => {\n const args = ['sort'];\n if (options?.reverse) args.push('-r');\n if (options?.numeric) args.push('-n');\n if (options?.unique) args.push('-u');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Report or filter out repeated lines\n * @example uniq('file.txt')\n * @example uniq('file.txt', { count: true })\n */\nexport const uniq = (file: string, options?: { count?: boolean }): Command => {\n return options?.count ? ['uniq', '-c', file] : ['uniq', file];\n};\n\n/**\n * Process JSON with jq\n * @example jq('.name', 'data.json')\n * @example jq('.[] | .id') // for piping\n */\nexport const jq = (filter: string, file?: string, options?: { raw?: boolean; compact?: boolean }): Command => {\n const args = ['jq'];\n if (options?.raw) args.push('-r');\n if (options?.compact) args.push('-c');\n args.push(filter);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Build and execute commands from stdin\n * @example xargs('rm') // pipe file list to rm\n * @example xargs('grep', ['pattern'], { parallel: 4 })\n */\nexport const xargs = (command: string, args?: string[], options?: { parallel?: number; nullDelimited?: boolean }): Command => {\n const xargsArgs = ['xargs'];\n if (options?.nullDelimited) xargsArgs.push('-0');\n if (options?.parallel) xargsArgs.push('-P', String(options.parallel));\n xargsArgs.push(command);\n if (args) xargsArgs.push(...args);\n return xargsArgs as Command;\n};\n\n/**\n * Pattern scanning and processing\n * @example awk('{print $1}', 'file.txt')\n * @example awk('BEGIN {sum=0} {sum+=$1} END {print sum}', 'numbers.txt')\n */\nexport const awk = (program: string, file?: string, options?: { fieldSeparator?: string }): Command => {\n const args = ['awk'];\n if (options?.fieldSeparator) args.push('-F', options.fieldSeparator);\n args.push(program);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Extract columns/fields from lines\n * @example cut('file.txt', { fields: '1,3', delimiter: ',' })\n * @example cut('file.txt', { characters: '1-10' })\n */\nexport const cut = (file: string, options: { fields?: string; delimiter?: string; characters?: string }): Command => {\n const args = ['cut'];\n if (options.delimiter) args.push('-d', options.delimiter);\n if (options.fields) args.push('-f', options.fields);\n if (options.characters) args.push('-c', options.characters);\n args.push(file);\n return args as Command;\n};\n\n/**\n * Translate or delete characters\n * @example tr('a-z', 'A-Z') // uppercase\n * @example tr('\\n', ' ') // newlines to spaces\n * @example tr('', '', { delete: 'abc' }) // delete chars\n */\nexport const tr = (set1: string, set2?: string, options?: { delete?: string; squeeze?: boolean }): Command => {\n const args = ['tr'];\n if (options?.delete) {\n args.push('-d', options.delete);\n } else {\n if (options?.squeeze) args.push('-s');\n args.push(set1);\n if (set2) args.push(set2);\n }\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Tar archive operations\n */\nexport const tar = {\n /**\n * Extract tar archive\n * @example tar.extract('archive.tar.gz')\n * @example tar.extract('archive.tar.gz', { dir: '/app' })\n */\n extract: (file: string, options?: { dir?: string }): Command => {\n const args = ['tar', '-xzf', file];\n if (options?.dir) args.push('-C', options.dir);\n return args as Command;\n },\n\n /**\n * Create tar archive\n * @example tar.create('archive.tar.gz', '/app/dist')\n */\n create: (output: string, source: string): Command => {\n return ['tar', '-czf', output, source];\n },\n};\n\n/**\n * Unzip archive\n * @example unzip('archive.zip')\n * @example unzip('archive.zip', { dir: '/app' })\n */\nexport const unzip = (file: string, options?: { dir?: string }): Command => {\n return options?.dir ? ['unzip', '-o', file, '-d', options.dir] : ['unzip', '-o', file];\n};\n","import type { Command } from '../types.js';\n\n/**\n * Print environment variable\n * @example echo('$HOME')\n * @example echo('Hello World')\n */\nexport const echo = (text: string): Command => ['echo', text];\n\n/**\n * Print environment variables\n * @example env()\n */\nexport const env = (): Command => ['env'];\n\n/**\n * Print specific environment variable\n * @example printenv('PATH')\n * @example printenv() // prints all\n */\nexport const printenv = (name?: string): Command => {\n return name ? ['printenv', name] : ['printenv'];\n};\n\n/**\n * Which command location\n * @example which('node')\n */\nexport const which = (command: string): Command => ['which', command];\n\n/**\n * Print current user\n * @example whoami()\n */\nexport const whoami = (): Command => ['whoami'];\n\n/**\n * Print system information\n * @example uname()\n * @example uname({ all: true })\n */\nexport const uname = (options?: { all?: boolean }): Command => {\n return options?.all ? ['uname', '-a'] : ['uname'];\n};\n\n/**\n * Print hostname\n * @example hostname()\n */\nexport const hostname = (): Command => ['hostname'];\n\n/**\n * Report disk space usage\n * @example df()\n * @example df('/app')\n */\nexport const df = (path?: string, options?: { human?: boolean }): Command => {\n const args = ['df'];\n if (options?.human) args.push('-h');\n if (path) args.push(path);\n return args as Command;\n};\n\n/**\n * Estimate file/directory space usage\n * @example du('/app')\n * @example du('/app', { human: true, summarize: true })\n */\nexport const du = (path: string, options?: { human?: boolean; summarize?: boolean }): Command => {\n const args = ['du'];\n if (options?.human) args.push('-h');\n if (options?.summarize) args.push('-s');\n args.push(path);\n return args as Command;\n};\n\n/**\n * Delay for specified seconds\n * @example sleep(5)\n */\nexport const sleep = (seconds: number): Command => ['sleep', String(seconds)];\n\n/**\n * Print date/time\n * @example date()\n * @example date('+%Y-%m-%d')\n */\nexport const date = (format?: string): Command => {\n return format ? ['date', format] : ['date'];\n};\n\n/**\n * Find files\n * @example find('/app', { name: '*.ts' })\n * @example find('/app', { type: 'f', name: '*.js' })\n */\nexport const find = (path: string, options?: { name?: string; type?: 'f' | 'd' }): Command => {\n const args = ['find', path];\n if (options?.type) args.push('-type', options.type);\n if (options?.name) args.push('-name', options.name);\n return args as Command;\n};\n\n/**\n * Write to file and stdout\n * @example tee('/app/output.log')\n * @example tee('/app/output.log', { append: true })\n */\nexport const tee = (file: string, options?: { append?: boolean }): Command => {\n return options?.append ? ['tee', '-a', file] : ['tee', file];\n};\n\n/**\n * Compare files\n * @example diff('file1.txt', 'file2.txt')\n * @example diff('file1.txt', 'file2.txt', { unified: true })\n */\nexport const diff = (file1: string, file2: string, options?: { unified?: boolean; brief?: boolean }): Command => {\n const args = ['diff'];\n if (options?.unified) args.push('-u');\n if (options?.brief) args.push('-q');\n args.push(file1, file2);\n return args as Command;\n};\n\n/**\n * Run multiple commands in parallel\n * @example parallel(['npm run dev', 'npm run watch'])\n */\nexport const parallel = (commands: string[], options?: { killOthers?: boolean }): Command => {\n const joined = commands.join(' & ');\n if (options?.killOthers) {\n // trap EXIT to kill all background jobs when any exits\n return ['sh', '-c', `trap \"kill 0\" EXIT; ${joined} & wait`];\n }\n return ['sh', '-c', `${joined} & wait`];\n};\n\n/**\n * Build a custom command from parts\n * @example raw('my-cli', ['--flag', 'value'])\n */\nexport const raw = (command: string, args?: string[]): Command => {\n return args ? [command, ...args] : [command];\n};\n\n/**\n * Base64 encoding/decoding utilities\n */\nexport const base64 = {\n /**\n * Encode to base64\n * @example base64.encode('file.txt')\n */\n encode: (file?: string): Command => {\n return file ? ['base64', file] : ['base64'];\n },\n\n /**\n * Decode from base64\n * @example base64.decode('encoded.txt')\n */\n decode: (file?: string): Command => {\n return file ? ['base64', '-d', file] : ['base64', '-d'];\n },\n};\n\n/**\n * Compute MD5 checksum\n * @example md5sum('file.txt')\n * @example md5sum('file.txt', { check: true })\n */\nexport const md5sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['md5sum', '-c', file] : ['md5sum', file];\n};\n\n/**\n * Compute SHA256 checksum\n * @example sha256sum('file.txt')\n * @example sha256sum('file.txt', { check: true })\n */\nexport const sha256sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha256sum', '-c', file] : ['sha256sum', file];\n};\n\n/**\n * Compute SHA1 checksum\n * @example sha1sum('file.txt')\n */\nexport const sha1sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha1sum', '-c', file] : ['sha1sum', file];\n};\n","/**\n * @computesdk/cmd - Type-safe shell command builders\n *\n * Build shell commands as tuples for use with sandbox.runCommand()\n *\n * @example\n * ```typescript\n * import { cmd, npm, node } from '@computesdk/cmd';\n *\n * await sandbox.runCommand(npm.install('express'));\n * await sandbox.runCommand(cmd.mkdir('/app/src'));\n * await sandbox.runCommand(node('server.js'), { background: true });\n * ```\n */\n\n// Re-export types\nexport type { Command, ShellOptions } from './types.js';\n\n// Re-export utilities\nexport { esc, shellEscape, escapeArgs, buildShellCommand } from './utils.js';\n\n// Re-export shell wrappers\nexport { shell, sh, bash, zsh } from './shell.js';\n\n// Import all commands for assembly\nimport * as filesystem from './commands/filesystem.js';\nimport * as process from './commands/process.js';\nimport * as packages from './commands/packages.js';\nimport * as gitCommands from './commands/git.js';\nimport * as network from './commands/network.js';\nimport * as text from './commands/text.js';\nimport * as archive from './commands/archive.js';\nimport * as system from './commands/system.js';\n\nimport type { Command } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Command builders for common shell operations - callable with shell wrapper + command methods\n *\n * @example\n * // As shell wrapper (default: sh)\n * cmd(npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd '/app' && npm install']\n *\n * @example\n * // As command builders\n * cmd.npm.install('express')\n * // => ['npm', 'install', 'express']\n */\nexport const cmd = Object.assign(\n // Callable: shell wrapper with sh default\n (command: Command, options?: { cwd?: string; background?: boolean }): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n // Filesystem\n ...filesystem,\n // Process\n ...process,\n // Package managers\n ...packages,\n // Git\n ...gitCommands,\n // Network\n ...network,\n // Text processing\n ...text,\n // Archives\n ...archive,\n // System\n ...system,\n }\n);\n\n// Export individual command builders for destructured imports\n// Filesystem\nexport const {\n mkdir, rm, cp, mv, ls, pwd, chmod, chown, touch, cat, ln, readlink, test, rsync,\n} = filesystem;\n\n// Process\nexport const { node, python, kill, pkill, ps, timeout } = process;\n\n// Package managers\nexport const { npm, pnpm, yarn, pip, bun, deno, npx, bunx, uv, poetry, pipx } = packages;\n\n// Git\nexport const { git } = gitCommands;\n\n// Network\nexport const { curl, wget, port, net } = network;\n\n// Text processing\nexport const { grep, sed, head, tail, wc, sort, uniq, jq, xargs, awk, cut, tr } = text;\n\n// Archives\nexport const { tar, unzip } = archive;\n\n// System\nexport const {\n echo, env, printenv, which, whoami, uname, hostname,\n df, du, sleep, date, find, tee, diff, parallel, raw,\n base64, md5sum, sha256sum, sha1sum,\n} = system;\n\n// Default export for convenience\nexport default cmd;\n"],"mappings":"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","names":["timeout","mkdir","rm","cp","mv","ls","pwd","chmod","chown","touch","cat","ln","readlink","test","rsync","node","python","kill","pkill","ps","timeout","npm","pnpm","yarn","pip","bun","deno","npx","bunx","uv","poetry","pipx","git","curl","wget","port","net","grep","sed","head","tail","wc","sort","uniq","jq","xargs","awk","cut","tr","tar","unzip","echo","env","printenv","which","whoami","uname","hostname","df","du","sleep","date","find","tee","diff","parallel","raw","base64","md5sum","sha256sum","sha1sum"]} | ||
| {"version":3,"sources":["../src/utils.ts","../src/shell.ts","../src/commands/filesystem.ts","../src/commands/process.ts","../src/commands/packages.ts","../src/commands/git.ts","../src/commands/network.ts","../src/commands/text.ts","../src/commands/archive.ts","../src/commands/system.ts","../src/index.ts"],"sourcesContent":["import type { Command, ShellOptions } from './types.js';\n\n/**\n * Escape a string for safe use in shell commands using single quotes.\n * This is the safest method as single quotes preserve all characters literally,\n * except for single quotes themselves which must be handled specially.\n *\n * @example shellEscape(\"hello world\") // \"'hello world'\"\n * @example shellEscape(\"it's here\") // \"'it'\\\\''s here'\"\n * @example shellEscape(\"$HOME\") // \"'$HOME'\" (no variable expansion)\n */\nexport function shellEscape(s: string): string {\n // Wrap in single quotes and escape any embedded single quotes\n // 'foo'bar' becomes 'foo'\\''bar' (end quote, escaped quote, start quote)\n return \"'\" + s.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n/**\n * Escape a string for use inside double quotes.\n *\n * This is a legacy helper kept for backward compatibility; for new code,\n * prefer {@link shellEscape} which uses single-quoted, safer shell escaping.\n *\n * @example esc('path with \"quotes\"') // 'path with \\\\\"quotes\\\\\"'\n * @deprecated Use {@link shellEscape} for safer escaping. This function only escapes\n * double quotes and may not be safe for all shell contexts. Migration: replace\n * `esc(str)` with `shellEscape(str)`.\n */\nexport function esc(s: string): string {\n return s.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Escape each argument in a command array and join them with spaces.\n * Arguments that are safe (alphanumeric, dash, underscore, dot, slash, colon, equals)\n * are left unquoted for readability.\n *\n * @example escapeArgs(['npm', 'install', 'express']) // 'npm install express'\n * @example escapeArgs(['echo', 'hello world']) // \"echo 'hello world'\"\n * @example escapeArgs(['cp', 'file with spaces.txt', '/dest']) // \"cp 'file with spaces.txt' /dest\"\n */\nexport function escapeArgs(args: string[]): string {\n return args.map(arg => {\n // If arg contains only safe characters, no escaping needed\n if (/^[a-zA-Z0-9_./:=@-]+$/.test(arg) && arg.length > 0) {\n return arg;\n }\n // Otherwise, use shellEscape for safety\n return shellEscape(arg);\n }).join(' ');\n}\n\n/**\n * Internal helper to build shell command with proper escaping\n */\nexport function buildShellCommand(shellBin: string, command: Command, options?: ShellOptions): Command {\n if (!options?.cwd && !options?.background) {\n return command;\n }\n\n let cmdStr = escapeArgs(command);\n\n // Build command: first wrap with nohup if background, then prepend cd if cwd\n // Result: cd '/path' && nohup cmd > /dev/null 2>&1 &\n if (options.background) {\n cmdStr = `nohup ${cmdStr} > /dev/null 2>&1 &`;\n }\n\n if (options.cwd) {\n cmdStr = `cd ${shellEscape(options.cwd)} && ${cmdStr}`;\n }\n\n return [shellBin, '-c', cmdStr];\n}\n","import type { Command, ShellOptions } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Shell wrapper - callable function with shell-specific methods\n *\n * @example\n * // Default (sh)\n * shell(cmd.npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd \"/app\" && npm install']\n *\n * @example\n * // Shell-specific\n * shell.bash(cmd.node('server.js'), { background: true })\n * // => ['bash', '-c', 'nohup node server.js > /dev/null 2>&1 &']\n *\n * @example\n * shell.zsh(cmd.npm.run('dev'), { cwd: '/app' })\n * // => ['zsh', '-c', 'cd \"/app\" && npm run dev']\n */\nexport const shell = Object.assign(\n // Default: use sh\n (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n /** Wrap with sh (POSIX shell) */\n sh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('sh', command, options);\n },\n /** Wrap with bash */\n bash: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('bash', command, options);\n },\n /** Wrap with zsh */\n zsh: (command: Command, options?: ShellOptions): Command => {\n return buildShellCommand('zsh', command, options);\n },\n }\n);\n\n// Individual shell exports\nexport const sh = shell.sh;\nexport const bash = shell.bash;\nexport const zsh = shell.zsh;\n","import type { Command } from '../types.js';\n\n/**\n * Create directory\n *\n * By default, recursive is true (includes -p flag to create parent directories).\n * This differs from standard shell mkdir which requires explicit -p flag.\n *\n * @example mkdir('/app/src') // ['mkdir', '-p', '/app/src']\n * @example mkdir('/app/src', { recursive: false }) // ['mkdir', '/app/src']\n */\nexport const mkdir = (path: string, options?: { recursive?: boolean }): Command => {\n const recursive = options?.recursive ?? true;\n return recursive ? ['mkdir', '-p', path] : ['mkdir', path];\n};\n\n/**\n * Remove file or directory\n * @example rm('/app/file.txt') // ['rm', '/app/file.txt']\n * @example rm('/app/tmp', { recursive: true }) // ['rm', '-r', '/app/tmp']\n * @example rm('/app/tmp', { recursive: true, force: true }) // ['rm', '-rf', '/app/tmp']\n * @example rm.rf('/app/tmp') // ['rm', '-rf', '/app/tmp']\n * @example rm.auto('/app/anything') // Automatically detects file vs directory\n */\nexport const rm = Object.assign(\n (path: string, options?: { recursive?: boolean; force?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.recursive) flags.push('r');\n if (options?.force) flags.push('f');\n return flags.length > 0 ? ['rm', `-${flags.join('')}`, path] : ['rm', path];\n },\n {\n /**\n * Force remove file or directory (always uses -rf)\n * @example rm.rf('/app/tmp')\n */\n rf: (path: string): Command => ['rm', '-rf', path],\n \n /**\n * Smart remove - automatically detects if path is a directory and uses appropriate flags\n * Uses a shell one-liner to check if directory and apply -r flag accordingly\n * @example rm.auto('/app/tmp')\n */\n auto: (path: string): Command => {\n // Shell one-liner: if it's a directory, use -rf, otherwise just rm -f\n return ['sh', '-c', `if [ -d \"${path}\" ]; then rm -rf \"${path}\"; else rm -f \"${path}\"; fi`];\n }\n }\n);\n\n/**\n * Copy file or directory\n * @example cp('/src/file.txt', '/dest/file.txt')\n */\nexport const cp = (src: string, dest: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['cp', '-r', src, dest] : ['cp', src, dest];\n};\n\n/**\n * Move/rename file or directory\n * @example mv('/old/path', '/new/path')\n */\nexport const mv = (src: string, dest: string): Command => ['mv', src, dest];\n\n/**\n * List directory contents\n * @example ls('/app') // ['ls', '/app']\n * @example ls('/app', { all: true, long: true }) // ['ls', '-la', '/app']\n */\nexport const ls = (path?: string, options?: { all?: boolean; long?: boolean }): Command => {\n const flags: string[] = [];\n if (options?.long) flags.push('l');\n if (options?.all) flags.push('a');\n const flagStr = flags.length > 0 ? `-${flags.join('')}` : '';\n if (flagStr && path) return ['ls', flagStr, path];\n if (flagStr) return ['ls', flagStr];\n if (path) return ['ls', path];\n return ['ls'];\n};\n\n/**\n * Print working directory\n * @example pwd() // ['pwd']\n */\nexport const pwd = (): Command => ['pwd'];\n\n/**\n * Change file permissions\n * @example chmod('755', '/app/script.sh')\n */\nexport const chmod = (mode: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chmod', '-R', mode, path] : ['chmod', mode, path];\n};\n\n/**\n * Change file owner/group\n * @example chown('user', '/app/file.txt')\n * @example chown('user:group', '/app', { recursive: true })\n */\nexport const chown = (owner: string, path: string, options?: { recursive?: boolean }): Command => {\n return options?.recursive ? ['chown', '-R', owner, path] : ['chown', owner, path];\n};\n\n/**\n * Create empty file or update timestamp\n * @example touch('/app/newfile.txt')\n */\nexport const touch = (path: string): Command => ['touch', path];\n\n/**\n * Read file contents\n * @example cat('/app/file.txt')\n */\nexport const cat = (path: string): Command => ['cat', path];\n\n/**\n * Create symbolic link\n * @example ln('/app/config', '/etc/app/config')\n * @example ln('/app/config', '/etc/app/config', { symbolic: true, force: true })\n */\nexport const ln = (target: string, link: string, options?: { symbolic?: boolean; force?: boolean }): Command => {\n const args = ['ln'];\n if (options?.symbolic !== false) args.push('-s'); // symbolic by default\n if (options?.force) args.push('-f');\n args.push(target, link);\n return args as Command;\n};\n\n/**\n * Resolve symbolic link\n * @example readlink('/usr/bin/python')\n * @example readlink('/usr/bin/python', { canonical: true })\n */\nexport const readlink = (path: string, options?: { canonical?: boolean }): Command => {\n return options?.canonical ? ['readlink', '-f', path] : ['readlink', path];\n};\n\n/**\n * Filesystem checks (exit 0 if true, 1 if false)\n * @example test.exists('/app/file.txt')\n * @example test.isDir('/app')\n */\nexport const test = {\n exists: (path: string): Command => ['test', '-e', path],\n isFile: (path: string): Command => ['test', '-f', path],\n isDir: (path: string): Command => ['test', '-d', path],\n isReadable: (path: string): Command => ['test', '-r', path],\n isWritable: (path: string): Command => ['test', '-w', path],\n isExecutable: (path: string): Command => ['test', '-x', path],\n notEmpty: (path: string): Command => ['test', '-s', path],\n isSymlink: (path: string): Command => ['test', '-L', path],\n};\n\n/**\n * Sync files/directories with rsync\n * @example rsync('/src/', '/dest/')\n * @example rsync('/src/', 'user@host:/dest/', { archive: true, compress: true })\n */\nexport const rsync = (src: string, dest: string, options?: {\n archive?: boolean;\n verbose?: boolean;\n compress?: boolean;\n delete?: boolean;\n dryRun?: boolean;\n exclude?: string[];\n}): Command => {\n const args = ['rsync'];\n if (options?.archive) args.push('-a');\n if (options?.verbose) args.push('-v');\n if (options?.compress) args.push('-z');\n if (options?.delete) args.push('--delete');\n if (options?.dryRun) args.push('--dry-run');\n if (options?.exclude) {\n for (const pattern of options.exclude) {\n args.push('--exclude', pattern);\n }\n }\n args.push(src, dest);\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Run Node.js script\n * @example node('server.js')\n * @example node('server.js', ['--port', '3000'])\n */\nexport const node = (script: string, args?: string[]): Command => {\n return args ? ['node', script, ...args] : ['node', script];\n};\n\n/**\n * Run Python script\n * @example python('script.py')\n * @example python('script.py', ['--verbose'])\n */\nexport const python = (script: string, args?: string[]): Command => {\n return args ? ['python3', script, ...args] : ['python3', script];\n};\n\n/**\n * Kill process by PID\n * @example kill(1234)\n * @example kill(1234, 9) // SIGKILL\n */\nexport const kill = (pid: number, signal?: number): Command => {\n return signal ? ['kill', `-${signal}`, String(pid)] : ['kill', String(pid)];\n};\n\n/**\n * Kill processes by name\n * @example pkill('node')\n * @example pkill('python', { signal: 9 })\n */\nexport const pkill = (name: string, options?: { signal?: number }): Command => {\n return options?.signal\n ? ['pkill', `-${options.signal}`, name]\n : ['pkill', name];\n};\n\n/**\n * List processes\n * @example ps()\n * @example ps({ all: true })\n */\nexport const ps = (options?: { all?: boolean }): Command => {\n return options?.all ? ['ps', 'aux'] : ['ps'];\n};\n\n/**\n * Run command with timeout\n * @example timeout(30, 'npm', ['test'])\n * @example timeout(10, 'curl', ['https://example.com'])\n */\nexport const timeout = (seconds: number, command: string, args?: string[]): Command => {\n const base: string[] = ['timeout', String(seconds), command];\n return args ? [...base, ...args] as Command : base as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * npm package manager commands\n */\nexport const npm = {\n /**\n * Install packages\n * @example npm.install() // ['npm', 'install']\n * @example npm.install('express') // ['npm', 'install', 'express']\n * @example npm.install('express', { dev: true }) // ['npm', 'install', '-D', 'express']\n */\n install: (pkg?: string, options?: { dev?: boolean; global?: boolean }): Command => {\n const args = ['npm', 'install'];\n if (options?.dev) args.push('-D');\n if (options?.global) args.push('-g');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run npm script\n * @example npm.run('build')\n * @example npm.run('test', ['--coverage'])\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['npm', 'run', script, '--', ...args] : ['npm', 'run', script];\n },\n\n /**\n * Initialize new package\n * @example npm.init() // ['npm', 'init', '-y']\n */\n init: (): Command => ['npm', 'init', '-y'],\n\n /**\n * Uninstall package\n * @example npm.uninstall('lodash')\n */\n uninstall: (pkg: string): Command => ['npm', 'uninstall', pkg],\n};\n\n/**\n * pnpm package manager commands\n */\nexport const pnpm = {\n /**\n * Install packages with pnpm\n * @example pnpm.install()\n * @example pnpm.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['pnpm', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run pnpm script\n * @example pnpm.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['pnpm', 'run', script, '--', ...args] : ['pnpm', 'run', script];\n },\n};\n\n/**\n * yarn package manager commands\n */\nexport const yarn = {\n /**\n * Install packages with yarn\n * @example yarn.install()\n */\n install: (): Command => ['yarn', 'install'],\n\n /**\n * Add package\n * @example yarn.add('express')\n * @example yarn.add('typescript', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev ? ['yarn', 'add', '-D', pkg] : ['yarn', 'add', pkg];\n },\n\n /**\n * Run yarn script\n * @example yarn.run('build')\n */\n run: (script: string): Command => ['yarn', 'run', script],\n};\n\n/**\n * pip Python package manager commands\n */\nexport const pip = {\n /**\n * Install Python package\n * @example pip.install('requests')\n * @example pip.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['pip', 'install', pkg],\n\n /**\n * Uninstall Python package\n * @example pip.uninstall('requests')\n */\n uninstall: (pkg: string): Command => ['pip', 'uninstall', '-y', pkg],\n};\n\n/**\n * bun runtime commands\n */\nexport const bun = {\n /**\n * Install packages with bun\n * @example bun.install()\n * @example bun.install('express')\n */\n install: (pkg?: string, options?: { dev?: boolean }): Command => {\n const args = ['bun', 'install'];\n if (options?.dev) args.push('-D');\n if (pkg) args.push(pkg);\n return args as Command;\n },\n\n /**\n * Run bun script\n * @example bun.run('build')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['bun', 'run', script, ...args] : ['bun', 'run', script];\n },\n\n /**\n * Run file with bun\n * @example bun.exec('server.ts')\n */\n exec: (file: string, args?: string[]): Command => {\n return args ? ['bun', file, ...args] : ['bun', file];\n },\n};\n\n/**\n * deno runtime commands\n */\nexport const deno = {\n /**\n * Run deno script\n * @example deno.run('server.ts')\n * @example deno.run('server.ts', { allow: ['net', 'read'] })\n */\n run: (file: string, options?: { allow?: string[] }): Command => {\n const args = ['deno', 'run'];\n if (options?.allow) {\n for (const perm of options.allow) {\n args.push(`--allow-${perm}`);\n }\n }\n args.push(file);\n return args as Command;\n },\n\n /**\n * Install deno package\n * @example deno.install('https://deno.land/std/http/file_server.ts')\n */\n install: (url: string, options?: { name?: string }): Command => {\n const args = ['deno', 'install'];\n if (options?.name) args.push('-n', options.name);\n args.push(url);\n return args as Command;\n },\n};\n\n/**\n * Run packages with npx - callable function with additional methods\n * @example npx('create-react-app', ['my-app']) // run package directly\n * @example npx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const npx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['npx', pkg, ...args] : ['npx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires npx)\n * @example npx.concurrently(['npm:dev', 'npm:watch'])\n * @example npx.concurrently(['npm run dev', 'npm run watch'], { names: ['dev', 'watch'], killOthers: true })\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['npx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * Run packages with bunx - callable function with additional methods\n * @example bunx('create-next-app', ['my-app']) // run package directly\n * @example bunx.concurrently(['npm:dev', 'npm:watch']) // run concurrently\n */\nexport const bunx = Object.assign(\n (pkg: string, args?: string[]): Command => {\n return args ? ['bunx', pkg, ...args] : ['bunx', pkg];\n },\n {\n /**\n * Run commands in parallel with concurrently (requires bunx)\n * @example bunx.concurrently(['npm:dev', 'npm:watch'])\n */\n concurrently: (commands: string[], options?: { names?: string[]; killOthers?: boolean }): Command => {\n const args = ['bunx', 'concurrently'];\n if (options?.killOthers) args.push('--kill-others');\n if (options?.names) args.push('--names', options.names.join(','));\n args.push(...commands);\n return args as Command;\n },\n }\n);\n\n/**\n * uv - Fast Python package manager\n */\nexport const uv = {\n /**\n * Install Python packages with uv\n * @example uv.install('requests')\n * @example uv.install('-r requirements.txt')\n */\n install: (pkg: string): Command => ['uv', 'pip', 'install', pkg],\n\n /**\n * Run Python script with uv\n * @example uv.run('script.py')\n */\n run: (script: string, args?: string[]): Command => {\n return args ? ['uv', 'run', script, ...args] : ['uv', 'run', script];\n },\n\n /**\n * Sync dependencies from pyproject.toml\n * @example uv.sync()\n */\n sync: (): Command => ['uv', 'sync'],\n\n /**\n * Create virtual environment\n * @example uv.venv()\n * @example uv.venv('.venv')\n */\n venv: (path?: string): Command => {\n return path ? ['uv', 'venv', path] : ['uv', 'venv'];\n },\n};\n\n/**\n * poetry - Python dependency management\n */\nexport const poetry = {\n /**\n * Install dependencies\n * @example poetry.install()\n */\n install: (options?: { noRoot?: boolean }): Command => {\n const args = ['poetry', 'install'];\n if (options?.noRoot) args.push('--no-root');\n return args as Command;\n },\n\n /**\n * Add a dependency\n * @example poetry.add('requests')\n * @example poetry.add('pytest', { dev: true })\n */\n add: (pkg: string, options?: { dev?: boolean }): Command => {\n return options?.dev\n ? ['poetry', 'add', '--group', 'dev', pkg]\n : ['poetry', 'add', pkg];\n },\n\n /**\n * Run command in poetry environment\n * @example poetry.run('python', ['script.py'])\n */\n run: (command: string, args?: string[]): Command => {\n return args ? ['poetry', 'run', command, ...args] : ['poetry', 'run', command];\n },\n\n /**\n * Build package\n * @example poetry.build()\n */\n build: (): Command => ['poetry', 'build'],\n};\n\n/**\n * pipx - Install and run Python applications\n */\nexport const pipx = {\n /**\n * Install application globally\n * @example pipx.install('black')\n */\n install: (pkg: string): Command => ['pipx', 'install', pkg],\n\n /**\n * Run application without installing\n * @example pipx.run('black', ['--check', '.'])\n */\n run: (pkg: string, args?: string[]): Command => {\n return args ? ['pipx', 'run', pkg, ...args] : ['pipx', 'run', pkg];\n },\n\n /**\n * Uninstall application\n * @example pipx.uninstall('black')\n */\n uninstall: (pkg: string): Command => ['pipx', 'uninstall', pkg],\n\n /**\n * Upgrade application\n * @example pipx.upgrade('black')\n */\n upgrade: (pkg: string): Command => ['pipx', 'upgrade', pkg],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Git version control commands\n */\nexport const git = {\n /**\n * Clone repository\n * @example git.clone('https://github.com/user/repo.git')\n * @example git.clone('https://github.com/user/repo.git', { depth: 1 })\n */\n clone: (url: string, options?: { depth?: number; branch?: string; dir?: string }): Command => {\n const args = ['git', 'clone'];\n if (options?.depth) args.push('--depth', String(options.depth));\n if (options?.branch) args.push('-b', options.branch);\n args.push(url);\n if (options?.dir) args.push(options.dir);\n return args as Command;\n },\n\n /**\n * Pull latest changes\n * @example git.pull()\n */\n pull: (): Command => ['git', 'pull'],\n\n /**\n * Checkout branch\n * @example git.checkout('main')\n * @example git.checkout('feature', { create: true })\n */\n checkout: (branch: string, options?: { create?: boolean }): Command => {\n return options?.create\n ? ['git', 'checkout', '-b', branch]\n : ['git', 'checkout', branch];\n },\n\n /**\n * Git status\n * @example git.status()\n */\n status: (): Command => ['git', 'status'],\n\n /**\n * Stage files\n * @example git.add('.')\n * @example git.add('src/index.ts')\n */\n add: (path: string, options?: { all?: boolean }): Command => {\n return options?.all ? ['git', 'add', '-A', path] : ['git', 'add', path];\n },\n\n /**\n * Commit staged changes\n * @example git.commit('feat: add new feature')\n * @example git.commit('fix: bug fix', { all: true })\n */\n commit: (message: string, options?: { all?: boolean }): Command => {\n return options?.all\n ? ['git', 'commit', '-a', '-m', message]\n : ['git', 'commit', '-m', message];\n },\n\n /**\n * Push to remote\n * @example git.push()\n * @example git.push({ remote: 'origin', branch: 'main' })\n * @example git.push({ setUpstream: true, branch: 'feature' })\n */\n push: (options?: { remote?: string; branch?: string; setUpstream?: boolean; force?: boolean }): Command => {\n const args = ['git', 'push'];\n if (options?.setUpstream) args.push('-u');\n if (options?.force) args.push('--force');\n if (options?.remote) args.push(options.remote);\n if (options?.branch) args.push(options.branch);\n return args as Command;\n },\n\n /**\n * List or create branches\n * @example git.branch()\n * @example git.branch({ all: true })\n * @example git.branch('new-feature', { create: true })\n */\n branch: (name?: string, options?: { all?: boolean; delete?: boolean; create?: boolean }): Command => {\n const args = ['git', 'branch'];\n if (options?.all) args.push('-a');\n if (options?.delete) args.push('-d');\n if (name) args.push(name);\n return args as Command;\n },\n\n /**\n * Show changes\n * @example git.diff()\n * @example git.diff({ staged: true })\n * @example git.diff({ file: 'src/index.ts' })\n */\n diff: (options?: { staged?: boolean; file?: string }): Command => {\n const args = ['git', 'diff'];\n if (options?.staged) args.push('--staged');\n if (options?.file) args.push(options.file);\n return args as Command;\n },\n\n /**\n * Show commit history\n * @example git.log()\n * @example git.log({ oneline: true, count: 10 })\n */\n log: (options?: { oneline?: boolean; count?: number }): Command => {\n const args = ['git', 'log'];\n if (options?.oneline) args.push('--oneline');\n if (options?.count) args.push('-n', String(options.count));\n return args as Command;\n },\n\n /**\n * Stash changes\n * @example git.stash()\n * @example git.stash({ pop: true })\n * @example git.stash({ list: true })\n */\n stash: (options?: { pop?: boolean; list?: boolean; drop?: boolean; message?: string }): Command => {\n const args = ['git', 'stash'];\n if (options?.pop) args.push('pop');\n else if (options?.list) args.push('list');\n else if (options?.drop) args.push('drop');\n else if (options?.message) args.push('push', '-m', options.message);\n return args as Command;\n },\n\n /**\n * Fetch from remote\n * @example git.fetch()\n * @example git.fetch({ all: true })\n */\n fetch: (options?: { remote?: string; all?: boolean; prune?: boolean }): Command => {\n const args = ['git', 'fetch'];\n if (options?.all) args.push('--all');\n if (options?.prune) args.push('--prune');\n if (options?.remote) args.push(options.remote);\n return args as Command;\n },\n\n /**\n * Reset changes\n * @example git.reset()\n * @example git.reset({ hard: true })\n * @example git.reset({ ref: 'HEAD~1' })\n */\n reset: (options?: { hard?: boolean; soft?: boolean; ref?: string }): Command => {\n const args = ['git', 'reset'];\n if (options?.hard) args.push('--hard');\n if (options?.soft) args.push('--soft');\n if (options?.ref) args.push(options.ref);\n return args as Command;\n },\n\n /**\n * Initialize repository\n * @example git.init()\n */\n init: (): Command => ['git', 'init'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Download file with curl\n * @example curl('https://example.com/file.tar.gz')\n * @example curl('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const curl = (url: string, options?: { output?: string; silent?: boolean }): Command => {\n const args = ['curl'];\n if (options?.silent) args.push('-s');\n args.push('-L'); // follow redirects\n if (options?.output) {\n args.push('-o', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Download file with wget\n * @example wget('https://example.com/file.tar.gz')\n * @example wget('https://example.com/file.tar.gz', { output: 'file.tar.gz' })\n */\nexport const wget = (url: string, options?: { output?: string; quiet?: boolean }): Command => {\n const args = ['wget'];\n if (options?.quiet) args.push('-q');\n if (options?.output) {\n args.push('-O', options.output);\n }\n args.push(url);\n return args as Command;\n};\n\n/**\n * Port management utilities\n */\nexport const port = {\n /**\n * Find process using a port (using lsof)\n * @example port.find(3000)\n */\n find: (p: number): Command => ['lsof', '-i', `:${p}`],\n\n /**\n * Kill process on a port\n * @example port.kill(3000)\n */\n kill: (p: number): Command => ['sh', '-c', `lsof -ti :${p} | xargs kill -9 2>/dev/null || true`],\n\n /**\n * Check if port is in use (exits 0 if in use)\n * @example port.isUsed(3000)\n */\n isUsed: (p: number): Command => ['sh', '-c', `lsof -i :${p} >/dev/null 2>&1`],\n\n /**\n * List all listening ports\n * @example port.list()\n */\n list: (): Command => ['ss', '-tlnp'],\n\n /**\n * Wait for port to be available (with timeout)\n * @example port.waitFor(3000, 30)\n */\n waitFor: (p: number, timeoutSeconds?: number): Command => {\n const timeout = timeoutSeconds ?? 30;\n return ['sh', '-c', `for i in $(seq 1 ${timeout}); do nc -z localhost ${p} && exit 0 || sleep 1; done; exit 1`];\n },\n};\n\n/**\n * Network utilities\n */\nexport const net = {\n /**\n * Check connectivity to host\n * @example net.ping('google.com')\n * @example net.ping('google.com', 3)\n */\n ping: (host: string, count?: number): Command => {\n return count ? ['ping', '-c', String(count), host] : ['ping', '-c', '1', host];\n },\n\n /**\n * Check if host:port is reachable\n * @example net.check('localhost', 3000)\n */\n check: (host: string, p: number): Command => ['nc', '-z', host, String(p)],\n\n /**\n * Get public IP\n * @example net.publicIp()\n */\n publicIp: (): Command => ['curl', '-s', 'ifconfig.me'],\n\n /**\n * Show network interfaces\n * @example net.interfaces()\n */\n interfaces: (): Command => ['ip', 'addr'],\n};\n","import type { Command } from '../types.js';\n\n/**\n * Search for pattern in files\n * @example grep('TODO', 'src/*.ts')\n * @example grep('error', undefined, { recursive: true, ignoreCase: true })\n */\nexport const grep = (pattern: string, file?: string, options?: { recursive?: boolean; ignoreCase?: boolean; lineNumber?: boolean }): Command => {\n const args = ['grep'];\n if (options?.recursive) args.push('-r');\n if (options?.ignoreCase) args.push('-i');\n if (options?.lineNumber) args.push('-n');\n args.push(pattern);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Stream editor for filtering and transforming text\n * @example sed('s/foo/bar/g', 'file.txt')\n * @example sed('s/foo/bar/g', 'file.txt', { inPlace: true })\n */\nexport const sed = (expression: string, file: string, options?: { inPlace?: boolean }): Command => {\n return options?.inPlace\n ? ['sed', '-i', expression, file]\n : ['sed', expression, file];\n};\n\n/**\n * Output first lines of file\n * @example head('file.txt')\n * @example head('file.txt', 20)\n */\nexport const head = (file: string, lines?: number): Command => {\n return lines ? ['head', '-n', String(lines), file] : ['head', file];\n};\n\n/**\n * Output last lines of file\n * @example tail('file.txt')\n * @example tail('file.txt', 20)\n * @example tail('app.log', undefined, { follow: true })\n */\nexport const tail = (file: string, lines?: number, options?: { follow?: boolean }): Command => {\n const args = ['tail'];\n if (options?.follow) args.push('-f');\n if (lines) args.push('-n', String(lines));\n args.push(file);\n return args as Command;\n};\n\n/**\n * Word, line, character count\n * @example wc('file.txt')\n * @example wc('file.txt', { lines: true })\n */\nexport const wc = (file: string, options?: { lines?: boolean; words?: boolean; chars?: boolean }): Command => {\n const args = ['wc'];\n if (options?.lines) args.push('-l');\n if (options?.words) args.push('-w');\n if (options?.chars) args.push('-c');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Sort lines of text\n * @example sort('file.txt')\n * @example sort('file.txt', { reverse: true, numeric: true })\n */\nexport const sort = (file: string, options?: { reverse?: boolean; numeric?: boolean; unique?: boolean }): Command => {\n const args = ['sort'];\n if (options?.reverse) args.push('-r');\n if (options?.numeric) args.push('-n');\n if (options?.unique) args.push('-u');\n args.push(file);\n return args as Command;\n};\n\n/**\n * Report or filter out repeated lines\n * @example uniq('file.txt')\n * @example uniq('file.txt', { count: true })\n */\nexport const uniq = (file: string, options?: { count?: boolean }): Command => {\n return options?.count ? ['uniq', '-c', file] : ['uniq', file];\n};\n\n/**\n * Process JSON with jq\n * @example jq('.name', 'data.json')\n * @example jq('.[] | .id') // for piping\n */\nexport const jq = (filter: string, file?: string, options?: { raw?: boolean; compact?: boolean }): Command => {\n const args = ['jq'];\n if (options?.raw) args.push('-r');\n if (options?.compact) args.push('-c');\n args.push(filter);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Build and execute commands from stdin\n * @example xargs('rm') // pipe file list to rm\n * @example xargs('grep', ['pattern'], { parallel: 4 })\n */\nexport const xargs = (command: string, args?: string[], options?: { parallel?: number; nullDelimited?: boolean }): Command => {\n const xargsArgs = ['xargs'];\n if (options?.nullDelimited) xargsArgs.push('-0');\n if (options?.parallel) xargsArgs.push('-P', String(options.parallel));\n xargsArgs.push(command);\n if (args) xargsArgs.push(...args);\n return xargsArgs as Command;\n};\n\n/**\n * Pattern scanning and processing\n * @example awk('{print $1}', 'file.txt')\n * @example awk('BEGIN {sum=0} {sum+=$1} END {print sum}', 'numbers.txt')\n */\nexport const awk = (program: string, file?: string, options?: { fieldSeparator?: string }): Command => {\n const args = ['awk'];\n if (options?.fieldSeparator) args.push('-F', options.fieldSeparator);\n args.push(program);\n if (file) args.push(file);\n return args as Command;\n};\n\n/**\n * Extract columns/fields from lines\n * @example cut('file.txt', { fields: '1,3', delimiter: ',' })\n * @example cut('file.txt', { characters: '1-10' })\n */\nexport const cut = (file: string, options: { fields?: string; delimiter?: string; characters?: string }): Command => {\n const args = ['cut'];\n if (options.delimiter) args.push('-d', options.delimiter);\n if (options.fields) args.push('-f', options.fields);\n if (options.characters) args.push('-c', options.characters);\n args.push(file);\n return args as Command;\n};\n\n/**\n * Translate or delete characters\n * @example tr('a-z', 'A-Z') // uppercase\n * @example tr('\\n', ' ') // newlines to spaces\n * @example tr('', '', { delete: 'abc' }) // delete chars\n */\nexport const tr = (set1: string, set2?: string, options?: { delete?: string; squeeze?: boolean }): Command => {\n const args = ['tr'];\n if (options?.delete) {\n args.push('-d', options.delete);\n } else {\n if (options?.squeeze) args.push('-s');\n args.push(set1);\n if (set2) args.push(set2);\n }\n return args as Command;\n};\n","import type { Command } from '../types.js';\n\n/**\n * Tar archive operations\n */\nexport const tar = {\n /**\n * Extract tar archive\n * @example tar.extract('archive.tar.gz')\n * @example tar.extract('archive.tar.gz', { dir: '/app' })\n */\n extract: (file: string, options?: { dir?: string }): Command => {\n const args = ['tar', '-xzf', file];\n if (options?.dir) args.push('-C', options.dir);\n return args as Command;\n },\n\n /**\n * Create tar archive\n * @example tar.create('archive.tar.gz', '/app/dist')\n */\n create: (output: string, source: string): Command => {\n return ['tar', '-czf', output, source];\n },\n};\n\n/**\n * Unzip archive\n * @example unzip('archive.zip')\n * @example unzip('archive.zip', { dir: '/app' })\n */\nexport const unzip = (file: string, options?: { dir?: string }): Command => {\n return options?.dir ? ['unzip', '-o', file, '-d', options.dir] : ['unzip', '-o', file];\n};\n","import type { Command } from '../types.js';\n\n/**\n * Print environment variable\n * @example echo('$HOME')\n * @example echo('Hello World')\n */\nexport const echo = (text: string): Command => ['echo', text];\n\n/**\n * Print environment variables\n * @example env()\n */\nexport const env = (): Command => ['env'];\n\n/**\n * Print specific environment variable\n * @example printenv('PATH')\n * @example printenv() // prints all\n */\nexport const printenv = (name?: string): Command => {\n return name ? ['printenv', name] : ['printenv'];\n};\n\n/**\n * Which command location\n * @example which('node')\n */\nexport const which = (command: string): Command => ['which', command];\n\n/**\n * Print current user\n * @example whoami()\n */\nexport const whoami = (): Command => ['whoami'];\n\n/**\n * Print system information\n * @example uname()\n * @example uname({ all: true })\n */\nexport const uname = (options?: { all?: boolean }): Command => {\n return options?.all ? ['uname', '-a'] : ['uname'];\n};\n\n/**\n * Print hostname\n * @example hostname()\n */\nexport const hostname = (): Command => ['hostname'];\n\n/**\n * Report disk space usage\n * @example df()\n * @example df('/app')\n */\nexport const df = (path?: string, options?: { human?: boolean }): Command => {\n const args = ['df'];\n if (options?.human) args.push('-h');\n if (path) args.push(path);\n return args as Command;\n};\n\n/**\n * Estimate file/directory space usage\n * @example du('/app')\n * @example du('/app', { human: true, summarize: true })\n */\nexport const du = (path: string, options?: { human?: boolean; summarize?: boolean }): Command => {\n const args = ['du'];\n if (options?.human) args.push('-h');\n if (options?.summarize) args.push('-s');\n args.push(path);\n return args as Command;\n};\n\n/**\n * Delay for specified seconds\n * @example sleep(5)\n */\nexport const sleep = (seconds: number): Command => ['sleep', String(seconds)];\n\n/**\n * Print date/time\n * @example date()\n * @example date('+%Y-%m-%d')\n */\nexport const date = (format?: string): Command => {\n return format ? ['date', format] : ['date'];\n};\n\n/**\n * Find files\n * @example find('/app', { name: '*.ts' })\n * @example find('/app', { type: 'f', name: '*.js' })\n */\nexport const find = (path: string, options?: { name?: string; type?: 'f' | 'd' }): Command => {\n const args = ['find', path];\n if (options?.type) args.push('-type', options.type);\n if (options?.name) args.push('-name', options.name);\n return args as Command;\n};\n\n/**\n * Write to file and stdout\n * @example tee('/app/output.log')\n * @example tee('/app/output.log', { append: true })\n */\nexport const tee = (file: string, options?: { append?: boolean }): Command => {\n return options?.append ? ['tee', '-a', file] : ['tee', file];\n};\n\n/**\n * Compare files\n * @example diff('file1.txt', 'file2.txt')\n * @example diff('file1.txt', 'file2.txt', { unified: true })\n */\nexport const diff = (file1: string, file2: string, options?: { unified?: boolean; brief?: boolean }): Command => {\n const args = ['diff'];\n if (options?.unified) args.push('-u');\n if (options?.brief) args.push('-q');\n args.push(file1, file2);\n return args as Command;\n};\n\n/**\n * Run multiple commands in parallel\n * @example parallel(['npm run dev', 'npm run watch'])\n */\nexport const parallel = (commands: string[], options?: { killOthers?: boolean }): Command => {\n const joined = commands.join(' & ');\n if (options?.killOthers) {\n // trap EXIT to kill all background jobs when any exits\n return ['sh', '-c', `trap \"kill 0\" EXIT; ${joined} & wait`];\n }\n return ['sh', '-c', `${joined} & wait`];\n};\n\n/**\n * Build a custom command from parts\n * @example raw('my-cli', ['--flag', 'value'])\n */\nexport const raw = (command: string, args?: string[]): Command => {\n return args ? [command, ...args] : [command];\n};\n\n/**\n * Base64 encoding/decoding utilities\n */\nexport const base64 = {\n /**\n * Encode to base64\n * @example base64.encode('file.txt')\n */\n encode: (file?: string): Command => {\n return file ? ['base64', file] : ['base64'];\n },\n\n /**\n * Decode from base64\n * @example base64.decode('encoded.txt')\n */\n decode: (file?: string): Command => {\n return file ? ['base64', '-d', file] : ['base64', '-d'];\n },\n};\n\n/**\n * Compute MD5 checksum\n * @example md5sum('file.txt')\n * @example md5sum('file.txt', { check: true })\n */\nexport const md5sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['md5sum', '-c', file] : ['md5sum', file];\n};\n\n/**\n * Compute SHA256 checksum\n * @example sha256sum('file.txt')\n * @example sha256sum('file.txt', { check: true })\n */\nexport const sha256sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha256sum', '-c', file] : ['sha256sum', file];\n};\n\n/**\n * Compute SHA1 checksum\n * @example sha1sum('file.txt')\n */\nexport const sha1sum = (file: string, options?: { check?: boolean }): Command => {\n return options?.check ? ['sha1sum', '-c', file] : ['sha1sum', file];\n};\n","/**\n * @computesdk/cmd - Type-safe shell command builders\n *\n * Build shell commands as tuples for use with sandbox.runCommand()\n *\n * @example\n * ```typescript\n * import { cmd, npm, node } from '@computesdk/cmd';\n *\n * await sandbox.runCommand(npm.install('express'));\n * await sandbox.runCommand(cmd.mkdir('/app/src'));\n * await sandbox.runCommand(node('server.js'), { background: true });\n * ```\n */\n\n// Re-export types\nexport type { Command, ShellOptions } from './types.js';\n\n// Re-export utilities\nexport { esc, shellEscape, escapeArgs, buildShellCommand } from './utils.js';\n\n// Re-export shell wrappers\nexport { shell, sh, bash, zsh } from './shell.js';\n\n// Import all commands for assembly\nimport * as filesystem from './commands/filesystem.js';\nimport * as process from './commands/process.js';\nimport * as packages from './commands/packages.js';\nimport * as gitCommands from './commands/git.js';\nimport * as network from './commands/network.js';\nimport * as text from './commands/text.js';\nimport * as archive from './commands/archive.js';\nimport * as system from './commands/system.js';\n\nimport type { Command } from './types.js';\nimport { buildShellCommand } from './utils.js';\n\n/**\n * Command builders for common shell operations - callable with shell wrapper + command methods\n *\n * @example\n * // As shell wrapper (default: sh)\n * cmd(npm.install(), { cwd: '/app' })\n * // => ['sh', '-c', 'cd '/app' && npm install']\n *\n * @example\n * // As command builders\n * cmd.npm.install('express')\n * // => ['npm', 'install', 'express']\n */\nexport const cmd = Object.assign(\n // Callable: shell wrapper with sh default\n (command: Command, options?: { cwd?: string; background?: boolean }): Command => {\n return buildShellCommand('sh', command, options);\n },\n {\n // Filesystem\n ...filesystem,\n // Process\n ...process,\n // Package managers\n ...packages,\n // Git\n ...gitCommands,\n // Network\n ...network,\n // Text processing\n ...text,\n // Archives\n ...archive,\n // System\n ...system,\n }\n);\n\n// Export individual command builders for destructured imports\n// Filesystem\nexport const {\n mkdir, rm, cp, mv, ls, pwd, chmod, chown, touch, cat, ln, readlink, test, rsync,\n} = filesystem;\n\n// Process\nexport const { node, python, kill, pkill, ps, timeout } = process;\n\n// Package managers\nexport const { npm, pnpm, yarn, pip, bun, deno, npx, bunx, uv, poetry, pipx } = packages;\n\n// Git\nexport const { git } = gitCommands;\n\n// Network\nexport const { curl, wget, port, net } = network;\n\n// Text processing\nexport const { grep, sed, head, tail, wc, sort, uniq, jq, xargs, awk, cut, tr } = text;\n\n// Archives\nexport const { tar, unzip } = archive;\n\n// System\nexport const {\n echo, env, printenv, which, whoami, uname, hostname,\n df, du, sleep, date, find, tee, diff, parallel, raw,\n base64, md5sum, sha256sum, sha1sum,\n} = system;\n\n// Default export for convenience\nexport default cmd;\n"],"mappings":"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","names":["timeout","mkdir","rm","cp","mv","ls","pwd","chmod","chown","touch","cat","ln","readlink","test","rsync","node","python","kill","pkill","ps","timeout","npm","pnpm","yarn","pip","bun","deno","npx","bunx","uv","poetry","pipx","git","curl","wget","port","net","grep","sed","head","tail","wc","sort","uniq","jq","xargs","awk","cut","tr","tar","unzip","echo","env","printenv","which","whoami","uname","hostname","df","du","sleep","date","find","tee","diff","parallel","raw","base64","md5sum","sha256sum","sha1sum"]} |
+1
-1
| { | ||
| "name": "@computesdk/cmd", | ||
| "version": "0.1.0", | ||
| "version": "0.2.0", | ||
| "type": "module", | ||
@@ -5,0 +5,0 @@ "description": "Type-safe shell command builders for ComputeSDK sandboxes", |
Sorry, the diff of this file is too big to display
241045
1.29%2988
0.98%