mirror of
https://github.com/kristoferssolo/solorice.git
synced 2025-10-21 20:10:34 +00:00
1002 lines
36 KiB
Plaintext
1002 lines
36 KiB
Plaintext
#compdef bun
|
|
|
|
_bun_add_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'*: :->package' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'--global[Add a package globally]' \
|
|
'-g[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' \
|
|
'--dev[Add dependence to "devDependencies]' \
|
|
'-d[Add dependence to "devDependencies]' \
|
|
'-D[]' \
|
|
'--development[]' \
|
|
'--optional[Add dependency to "optionalDependencies]' \
|
|
'--peer[Add dependency to "peerDependencies]' \
|
|
'--exact[Add the exact version instead of the ^range]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
package)
|
|
_bun_add_param_package_completion
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_unlink_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'*: :->package' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'--global[Add a package globally]' \
|
|
'-g[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
package)
|
|
# TODO: error: bun unlink {packageName} not implemented yet
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_link_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'*: :->package' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'--global[Add a package globally]' \
|
|
'-g[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
package)
|
|
_bun_link_param_package_completion
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_bun_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'*: :->file' \
|
|
'--version[Show version and exit]' \
|
|
'-V[Show version and exit]' \
|
|
'--cwd[Change directory]:cwd' \
|
|
'--help[Show command help]' \
|
|
'-h[Show command help]' \
|
|
'--use[Use a framework, e.g. "next"]:use' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_files
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_init_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'-y[Answer yes to all prompts]:' \
|
|
'--yes[Answer yes to all prompts]:' &&
|
|
ret=0
|
|
|
|
}
|
|
|
|
_bun_create_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
cmd2)
|
|
_alternative 'args:create:((next-app\:"Next.js app" react-app\:"React app"))'
|
|
|
|
;;
|
|
args)
|
|
case $line[2] in
|
|
next)
|
|
pmargs=(
|
|
'1: :->cmd'
|
|
'2: :->cmd2'
|
|
'3: :->file'
|
|
'--force[Overwrite existing files]'
|
|
'--no-install[Don'"'"'t install node_modules]'
|
|
'--no-git[Don'"'"'t create a git repository]'
|
|
'--verbose[verbose]'
|
|
'--no-package-json[Disable package.json transforms]'
|
|
'--open[On finish, start bun & open in-browser]'
|
|
)
|
|
|
|
# ---- Command: create next
|
|
_arguments -s -C \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_files
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
react)
|
|
|
|
# ---- Command: create react
|
|
_arguments -s -C \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_files
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
*)
|
|
|
|
# ---- Command: create from other template
|
|
_arguments -s -C \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_files
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
}
|
|
|
|
_bun_pm_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
cmd2)
|
|
sub_commands=(
|
|
'bin\:"print the path to bin folder" '
|
|
'ls\:"list the dependency tree according to the current lockfile" '
|
|
'hash\:"generate & print the hash of the current lockfile" '
|
|
'hash-string\:"print the string used to hash the lockfile" '
|
|
'hash-print\:"print the hash stored in the current lockfile" '
|
|
'cache\:"print the path to the cache folder" '
|
|
'version\:"bump the version in package.json and create a git tag" '
|
|
)
|
|
|
|
_alternative "args:cmd3:(($sub_commands))"
|
|
|
|
;;
|
|
args)
|
|
case $line[2] in
|
|
cache)
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
':::(rm)' &&
|
|
ret=0
|
|
|
|
;;
|
|
bin)
|
|
pmargs=(
|
|
"-g[print the global path to bin folder]"
|
|
)
|
|
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
;;
|
|
ls)
|
|
pmargs=(
|
|
"--all[list the entire dependency tree according to the current lockfile]"
|
|
)
|
|
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
;;
|
|
version)
|
|
version_args=(
|
|
"patch[increment patch version]"
|
|
"minor[increment minor version]"
|
|
"major[increment major version]"
|
|
"prepatch[increment patch version and add pre-release]"
|
|
"preminor[increment minor version and add pre-release]"
|
|
"premajor[increment major version and add pre-release]"
|
|
"prerelease[increment pre-release version]"
|
|
"from-git[use version from latest git tag]"
|
|
)
|
|
|
|
pmargs=(
|
|
"--no-git-tag-version[don't create a git commit and tag]"
|
|
"--allow-same-version[allow bumping to the same version]"
|
|
"-m[use the given message for the commit]:message"
|
|
"--message[use the given message for the commit]:message"
|
|
"--preid[identifier to prefix pre-release versions]:preid"
|
|
)
|
|
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'3: :->increment' \
|
|
$pmargs &&
|
|
ret=0
|
|
|
|
case $state in
|
|
increment)
|
|
_alternative "args:increment:(($version_args))"
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_install_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'--global[Add a package globally]' \
|
|
'-g[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' \
|
|
'--dev[Add dependence to "devDependencies]' \
|
|
'-d[Add dependence to "devDependencies]' \
|
|
'--development[]' \
|
|
'-D[]' \
|
|
'--optional[Add dependency to "optionalDependencies]' \
|
|
'--peer[Add dependency to "peerDependencies]' \
|
|
'--exact[Add the exact version instead of the ^range]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_remove_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'*: :->package' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'--global[Add a package globally]' \
|
|
'-g[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
package)
|
|
_bun_remove_param_package_completion
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_run_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->script' \
|
|
'*: :->other' \
|
|
'--help[Display this help and exit]' \
|
|
'-h[Display this help and exit]' \
|
|
'--bun[Force a script or package to use Bun'"'"'s runtime instead of Node.js (via symlinking node)]' \
|
|
'-b[Force a script or package to use Bun'"'"'s runtime instead of Node.js (via symlinking node)]' \
|
|
'--cwd[Absolute path to resolve files & entry points from. This just changes the process cwd]:cwd' \
|
|
'--config[Config file to load bun from (e.g. -c bunfig.toml]: :->config' \
|
|
'-c[Config file to load bun from (e.g. -c bunfig.toml]: :->config' \
|
|
'--env-file[Load environment variables from the specified file(s)]:env-file' \
|
|
'--extension-order[Defaults to: .tsx,.ts,.jsx,.js,.json]:extension-order' \
|
|
'--jsx-factory[Changes the function called when compiling JSX elements using the classic JSX runtime]:jsx-factory' \
|
|
'--jsx-fragment[Changes the function called when compiling JSX fragments]:jsx-fragment' \
|
|
'--jsx-import-source[Declares the module specifier to be used for importing the jsx and jsxs factory functions. Default: "react"]:jsx-import-source' \
|
|
'--jsx-runtime["automatic" (default) or "classic"]: :->jsx-runtime' \
|
|
'--preload[Import a module before other modules are loaded]:preload' \
|
|
'-r[Import a module before other modules are loaded]:preload' \
|
|
'--main-fields[Main fields to lookup in package.json. Defaults to --target dependent]:main-fields' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--version[Print version and exit]' \
|
|
'-v[Print version and exit]' \
|
|
'--revision[Print version with revision and exit]' \
|
|
'--tsconfig-override[Load tsconfig from path instead of cwd/tsconfig.json]:tsconfig-override' \
|
|
'--define[Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:"development". Values are parsed as JSON.]:define' \
|
|
'-d[Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:"development". Values are parsed as JSON.]:define' \
|
|
'--external[Exclude module from transpilation (can use * wildcards). ex: -e react]:external' \
|
|
'-e[Exclude module from transpilation (can use * wildcards). ex: -e react]:external' \
|
|
'--loader[Parse files with .ext:loader, e.g. --loader .js:jsx. Valid loaders: js, jsx, ts, tsx, json, toml, text, file, wasm, napi]:loader' \
|
|
'--packages[Exclude dependencies from bundle, e.g. --packages external. Valid options: bundle, external]:packages' \
|
|
'-l[Parse files with .ext:loader, e.g. --loader .js:jsx. Valid loaders: js, jsx, ts, tsx, json, toml, text, file, wasm, napi]:loader' \
|
|
'--origin[Rewrite import URLs to start with --origin. Default: ""]:origin' \
|
|
'-u[Rewrite import URLs to start with --origin. Default: ""]:origin' \
|
|
'--port[Port to serve bun'"'"'s dev server on. Default: '"'"'3000'"'"']:port' \
|
|
'-p[Port to serve bun'"'"'s dev server on. Default: '"'"'3000'"'"']:port' \
|
|
'--smol[Use less memory, but run garbage collection more often]' \
|
|
'--minify[Minify (experimental)]' \
|
|
'--minify-syntax[Minify syntax and inline data (experimental)]' \
|
|
'--minify-whitespace[Minify Whitespace (experimental)]' \
|
|
'--minify-identifiers[Minify identifiers]' \
|
|
'--no-macros[Disable macros from being executed in the bundler, transpiler and runtime]' \
|
|
'--target[The intended execution environment for the bundle. "browser", "bun" or "node"]: :->target' \
|
|
'--inspect[Activate Bun'"'"'s Debugger]:inspect' \
|
|
'--inspect-wait[Activate Bun'"'"'s Debugger, wait for a connection before executing]:inspect-wait' \
|
|
'--inspect-brk[Activate Bun'"'"'s Debugger, set breakpoint on first line of code and wait]:inspect-brk' \
|
|
'--hot[Enable auto reload in bun'"'"'s JavaScript runtime]' \
|
|
'--watch[Automatically restart bun'"'"'s JavaScript runtime on file change]' \
|
|
'--no-install[Disable auto install in bun'"'"'s JavaScript runtime]' \
|
|
'--install[Install dependencies automatically when no node_modules are present, default: "auto". "force" to ignore node_modules, fallback to install any missing]: :->install_' \
|
|
'-i[Automatically install dependencies and use global cache in bun'"'"'s runtime, equivalent to --install=fallback'] \
|
|
'--prefer-offline[Skip staleness checks for packages in bun'"'"'s JavaScript runtime and resolve from disk]' \
|
|
'--prefer-latest[Use the latest matching versions of packages in bun'"'"'s JavaScript runtime, always checking npm]' \
|
|
'--silent[Don'"'"'t repeat the command for bun run]' \
|
|
'--dump-environment-variables[Dump environment variables from .env and process as JSON and quit. Useful for debugging]' \
|
|
'--dump-limits[Dump system limits. Userful for debugging]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
script)
|
|
curcontext="${curcontext%:*:*}:bun-grouped"
|
|
_bun_run_param_script_completion
|
|
|
|
;;
|
|
jsx-runtime)
|
|
_alternative 'args:cmd3:((classic automatic))'
|
|
|
|
;;
|
|
target)
|
|
_alternative 'args:cmd3:((browser bun node))'
|
|
|
|
;;
|
|
install_)
|
|
_alternative 'args:cmd3:((auto force fallback))'
|
|
|
|
;;
|
|
other)
|
|
_files
|
|
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
_bun_upgrade_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'--canary[Upgrade to canary build]' &&
|
|
ret=0
|
|
|
|
}
|
|
|
|
_bun_build_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'*: :->file' \
|
|
'--outfile[Write the output to a specific file (default: stdout)]:outfile' \
|
|
'--outdir[Write the output to a directory (required for splitting)]:outdir' \
|
|
'--minify[Enable all minification flags]' \
|
|
'--minify-whitespace[Remove unneeded whitespace]' \
|
|
'--minify-syntax[Transform code to use less syntax]' \
|
|
'--minify-identifiers[Shorten variable names]' \
|
|
'--sourcemap[Generate sourcemaps]: :->sourcemap' \
|
|
'--target[The intended execution environment for the bundle. "browser", "bun" or "node"]: :->target' \
|
|
'--splitting[Whether to enable code splitting (requires --outdir)]' \
|
|
'--compile[generating a standalone binary from a TypeScript or JavaScript file]' \
|
|
'--format[Specifies the module format to be used in the generated bundles]: :->format' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_files
|
|
|
|
;;
|
|
target)
|
|
_alternative 'args:cmd3:((browser bun node))'
|
|
|
|
;;
|
|
sourcemap)
|
|
_alternative 'args:cmd3:((none external inline))'
|
|
|
|
;;
|
|
format)
|
|
|
|
_alternative 'args:cmd3:((esm cjs iife))'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_update_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'-y[Write a yarn.lock file (yarn v1)]' \
|
|
'--yarn[Write a yarn.lock file (yarn v1)]' \
|
|
'-p[Don'"'"'t install devDependencies]' \
|
|
'--production[Don'"'"'t install devDependencies]' \
|
|
'--no-save[Don'"'"'t save a lockfile]' \
|
|
'--save[Save to package.json]' \
|
|
'--dry-run[Don'"'"'t install anything]' \
|
|
'--frozen-lockfile[Disallow changes to lockfile]' \
|
|
'--latest[Updates dependencies to latest version, regardless of compatibility]' \
|
|
'-f[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--force[Always request the latest versions from the registry & reinstall all dependencies]' \
|
|
'--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
|
|
'--no-cache[Ignore manifest cache entirely]' \
|
|
'--silent[Don'"'"'t log anything]' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--no-verify[Skip verifying integrity of newly downloaded packages]' \
|
|
'--ignore-scripts[Skip lifecycle scripts in the package.json (dependency scripts are never run)]' \
|
|
'-g[Add a package globally]' \
|
|
'--global[Add a package globally]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--backend[Platform-specific optimizations for installing dependencies]:backend:("copyfile" "hardlink" "symlink")' \
|
|
'--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' \
|
|
'--help[Print this help menu]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_outdated_completion() {
|
|
_arguments -s -C \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'--verbose[Excessively verbose logging]' \
|
|
'--no-progress[Disable the progress bar]' \
|
|
'--help[Print this help menu]' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
config)
|
|
_bun_list_bunfig_toml
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_test_completion() {
|
|
_arguments -s -C \
|
|
'1: :->cmd1' \
|
|
'*: :->file' \
|
|
'-h[Display this help and exit]' \
|
|
'--help[Display this help and exit]' \
|
|
'-b[Force a script or package to use Bun.js instead of Node.js (via symlinking node)]' \
|
|
'--bun[Force a script or package to use Bun.js instead of Node.js (via symlinking node)]' \
|
|
'--cwd[Set a specific cwd]:cwd' \
|
|
'-c[Load config(bunfig.toml)]: :->config' \
|
|
'--config[Load config(bunfig.toml)]: :->config' \
|
|
'--env-file[Load environment variables from the specified file(s)]:env-file' \
|
|
'--extension-order[Defaults to: .tsx,.ts,.jsx,.js,.json]:extension-order' \
|
|
'--jsx-factory[Changes the function called when compiling JSX elements using the classic JSX runtime]:jsx-factory' \
|
|
'--jsx-fragment[Changes the function called when compiling JSX fragments]:jsx-fragment' \
|
|
'--jsx-import-source[Declares the module specifier to be used for importing the jsx and jsxs factory functions. Default: "react"]:jsx-import-source' \
|
|
'--jsx-runtime["automatic" (default) or "classic"]: :->jsx-runtime' \
|
|
'--preload[Import a module before other modules are loaded]:preload' \
|
|
'-r[Import a module before other modules are loaded]:preload' \
|
|
'--main-fields[Main fields to lookup in package.json. Defaults to --target dependent]:main-fields' \
|
|
'--no-summary[Don'"'"'t print a summary]' \
|
|
'--version[Print version and exit]' \
|
|
'-v[Print version and exit]' \
|
|
'--revision[Print version with revision and exit]' \
|
|
'--tsconfig-override[Load tsconfig from path instead of cwd/tsconfig.json]:tsconfig-override' \
|
|
'--define[Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:"development". Values are parsed as JSON.]:define' \
|
|
'-d[Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:"development". Values are parsed as JSON.]:define' \
|
|
'--external[Exclude module from transpilation (can use * wildcards). ex: -e react]:external' \
|
|
'-e[Exclude module from transpilation (can use * wildcards). ex: -e react]:external' \
|
|
'--loader[Parse files with .ext:loader, e.g. --loader .js:jsx. Valid loaders: js, jsx, ts, tsx, json, toml, text, file, wasm, napi]:loader' \
|
|
'-l[Parse files with .ext:loader, e.g. --loader .js:jsx. Valid loaders: js, jsx, ts, tsx, json, toml, text, file, wasm, napi]:loader' \
|
|
'--origin[Rewrite import URLs to start with --origin. Default: ""]:origin' \
|
|
'-u[Rewrite import URLs to start with --origin. Default: ""]:origin' \
|
|
'--port[Port to serve bun'"'"'s dev server on. Default: '"'"'3000'"'"']:port' \
|
|
'-p[Port to serve bun'"'"'s dev server on. Default: '"'"'3000'"'"']:port' \
|
|
'--smol[Use less memory, but run garbage collection more often]' \
|
|
'--minify[Minify (experimental)]' \
|
|
'--minify-syntax[Minify syntax and inline data (experimental)]' \
|
|
'--minify-identifiers[Minify identifiers]' \
|
|
'--no-macros[Disable macros from being executed in the bundler, transpiler and runtime]' \
|
|
'--target[The intended execution environment for the bundle. "browser", "bun" or "node"]: :->target' \
|
|
'--inspect[Activate Bun'"'"'s Debugger]:inspect' \
|
|
'--inspect-wait[Activate Bun'"'"'s Debugger, wait for a connection before executing]:inspect-wait' \
|
|
'--inspect-brk[Activate Bun'"'"'s Debugger, set breakpoint on first line of code and wait]:inspect-brk' \
|
|
'--watch[Automatically restart bun'"'"'s JavaScript runtime on file change]' \
|
|
'--timeout[Set the per-test timeout in milliseconds, default is 5000.]:timeout' \
|
|
'--update-snapshots[Update snapshot files]' \
|
|
'--rerun-each[Re-run each test file <NUMBER> times, helps catch certain bugs]:rerun' \
|
|
'--todo[Include tests that are marked with "test.todo()"]' \
|
|
'--coverage[Generate a coverage profile]' \
|
|
'--bail[Exit the test suite after <NUMBER> failures. If you do not specify a number, it defaults to 1.]:bail' \
|
|
'--test-name-pattern[Run only tests with a name that matches the given regex]:pattern' \
|
|
'-t[Run only tests with a name that matches the given regex]:pattern' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
file)
|
|
_bun_test_param_script_completion
|
|
|
|
;;
|
|
config)
|
|
_files
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
_bun() {
|
|
zstyle ':completion:*:*:bun:*' group-name ''
|
|
zstyle ':completion:*:*:bun-grouped:*' group-name ''
|
|
|
|
zstyle ':completion:*:*:bun::descriptions' format '%F{green}-- %d --%f'
|
|
zstyle ':completion:*:*:bun-grouped:*' format '%F{green}-- %d --%f'
|
|
# zstyle ':completion:*:options' list-colors '=^(-- *)=34'
|
|
|
|
local program=bun
|
|
typeset -A opt_args
|
|
local curcontext="$curcontext" state line context
|
|
|
|
# ---- Command:
|
|
_arguments -s \
|
|
'1: :->cmd' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
cmd)
|
|
local -a scripts_list
|
|
IFS=$'\n' scripts_list=($(SHELL=zsh bun getcompletes i))
|
|
scripts="scripts:scripts:((${scripts_list//:/\\\\:}))"
|
|
IFS=$'\n' files_list=($(SHELL=zsh bun getcompletes j))
|
|
|
|
main_commands=(
|
|
'run\:"Run JavaScript with Bun, a package.json script, or a bin" '
|
|
'test\:"Run unit tests with Bun" '
|
|
'x\:"Install and execute a package bin (bunx)" '
|
|
'repl\:"Start a REPL session with Bun" '
|
|
'init\:"Start an empty Bun project from a blank template" '
|
|
'create\:"Create a new project from a template (bun c)" '
|
|
'install\:"Install dependencies for a package.json (bun i)" '
|
|
'add\:"Add a dependency to package.json (bun a)" '
|
|
'remove\:"Remove a dependency from package.json (bun rm)" '
|
|
'update\:"Update outdated dependencies & save to package.json" '
|
|
'outdated\:"Display the latest versions of outdated dependencies" '
|
|
'link\:"Link an npm package globally" '
|
|
'unlink\:"Globally unlink an npm package" '
|
|
'pm\:"More commands for managing packages" '
|
|
'build\:"Bundle TypeScript & JavaScript into a single file" '
|
|
'upgrade\:"Get the latest version of bun" '
|
|
'help\:"Show all supported flags and commands" '
|
|
)
|
|
main_commands=($main_commands)
|
|
_alternative "$scripts" "args:command:(($main_commands))" "files:files:(($files_list))"
|
|
|
|
;;
|
|
args)
|
|
case $line[1] in
|
|
add|a)
|
|
_bun_add_completion
|
|
|
|
;;
|
|
unlink)
|
|
_bun_unlink_completion
|
|
|
|
;;
|
|
link)
|
|
_bun_link_completion
|
|
|
|
;;
|
|
bun)
|
|
_bun_bun_completion
|
|
|
|
;;
|
|
init)
|
|
_bun_init_completion
|
|
|
|
;;
|
|
create|c)
|
|
_bun_create_completion
|
|
|
|
;;
|
|
x)
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
;;
|
|
pm)
|
|
_bun_pm_completion
|
|
|
|
;;
|
|
install|i)
|
|
_bun_install_completion
|
|
|
|
;;
|
|
remove|rm)
|
|
_bun_remove_completion
|
|
|
|
;;
|
|
run)
|
|
_bun_run_completion
|
|
|
|
;;
|
|
upgrade)
|
|
_bun_upgrade_completion
|
|
|
|
;;
|
|
build)
|
|
_bun_build_completion
|
|
|
|
;;
|
|
update)
|
|
_bun_update_completion
|
|
|
|
;;
|
|
outdated)
|
|
_bun_outdated_completion
|
|
|
|
;;
|
|
'test')
|
|
_bun_test_completion
|
|
|
|
;;
|
|
help)
|
|
# ---- Command: help
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
|
|
case $state in
|
|
cmd2)
|
|
curcontext="${curcontext%:*:*}:bun-grouped"
|
|
_alternative "args:command:(($main_commands))"
|
|
|
|
;;
|
|
args)
|
|
case $line[2] in
|
|
add)
|
|
_bun_add_completion
|
|
|
|
;;
|
|
unlink)
|
|
_bun_unlink_completion
|
|
|
|
;;
|
|
link)
|
|
_bun_link_completion
|
|
|
|
;;
|
|
bun)
|
|
_bun_bun_completion
|
|
|
|
;;
|
|
init)
|
|
_bun_init_completion
|
|
|
|
;;
|
|
create)
|
|
_bun_create_completion
|
|
|
|
;;
|
|
x)
|
|
_arguments -s -C \
|
|
'1: :->cmd' \
|
|
'2: :->cmd2' \
|
|
'*: :->args' &&
|
|
ret=0
|
|
;;
|
|
pm)
|
|
_bun_pm_completion
|
|
|
|
;;
|
|
install)
|
|
_bun_install_completion
|
|
|
|
;;
|
|
remove)
|
|
_bun_remove_completion
|
|
|
|
;;
|
|
run)
|
|
_bun_run_completion
|
|
|
|
;;
|
|
upgrade)
|
|
_bun_upgrade_completion
|
|
|
|
;;
|
|
build)
|
|
_bun_build_completion
|
|
|
|
;;
|
|
update)
|
|
_bun_update_completion
|
|
|
|
;;
|
|
outdated)
|
|
_bun_outdated_completion
|
|
|
|
;;
|
|
'test')
|
|
_bun_test_completion
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_bun_list_bunfig_toml() {
|
|
# _alternative "files:file:_files -g '*.toml'"
|
|
_files
|
|
}
|
|
|
|
_bun_run_param_script_completion() {
|
|
local -a scripts_list
|
|
IFS=$'\n' scripts_list=($(SHELL=zsh bun getcompletes s))
|
|
IFS=$'\n' bins=($(SHELL=zsh bun getcompletes b))
|
|
|
|
_alternative "scripts:scripts:((${scripts_list//:/\\\\:}))"
|
|
_alternative "bin:bin:((${bins//:/\\\\:}))"
|
|
_alternative "files:file:_files -g '*.(js|ts|jsx|tsx|wasm)'"
|
|
}
|
|
|
|
_bun_link_param_package_completion() {
|
|
# Read packages from ~/.bun/install/global/node_modules
|
|
install_env=$BUN_INSTALL
|
|
install_dir=${(P)install_env:-$HOME/.bun}
|
|
global_node_modules=$install_dir/install/global/node_modules
|
|
|
|
local -a packages_full_path=(${global_node_modules}/*(N))
|
|
packages=$(echo $packages_full_path | tr ' ' '\n' | xargs basename)
|
|
_alternative "dirs:directory:(($packages))"
|
|
}
|
|
|
|
_bun_remove_param_package_completion() {
|
|
if ! command -v jq &>/dev/null; then
|
|
return
|
|
fi
|
|
|
|
# TODO: move to "bun getcompletes"
|
|
if [ -f "package.json" ]; then
|
|
local dependencies=$(jq -r '.dependencies | keys[]' package.json)
|
|
local dev_dependencies=$(jq -r '.devDependencies | keys[]' package.json)
|
|
_alternative "deps:dependency:(($dependencies))"
|
|
_alternative "deps:dependency:(($dev_dependencies))"
|
|
fi
|
|
}
|
|
|
|
_bun_test_param_script_completion() {
|
|
local -a scripts_list
|
|
|
|
_alternative "files:file:_files -g '*(_|.)(test|spec).(js|ts|jsx|tsx)'"
|
|
}
|
|
|
|
_set_remove() {
|
|
comm -23 <(echo $1 | sort | tr " " "\n") <(echo $2 | sort | tr " " "\n") 2>/dev/null
|
|
}
|
|
|
|
_bun_add_param_package_completion() {
|
|
|
|
IFS=$'\n' inexact=($(history -n bun | grep -E "^bun add " | cut -c 9- | uniq))
|
|
IFS=$'\n' exact=($($inexact | grep -E "^$words[$CURRENT]"))
|
|
IFS=$'\n' packages=($(SHELL=zsh bun getcompletes a $words[$CURRENT]))
|
|
|
|
to_print=$inexact
|
|
if [ ! -z "$exact" -a "$exact" != " " ]; then
|
|
to_print=$exact
|
|
fi
|
|
|
|
if [ ! -z "$to_print" -a "$to_print" != " " ]; then
|
|
if [ ! -z "$packages" -a "$packages" != " " ]; then
|
|
_describe -1 -t to_print 'History' to_print
|
|
_describe -1 -t packages "Popular" packages
|
|
return
|
|
fi
|
|
|
|
_describe -1 -t to_print 'History' to_print
|
|
return
|
|
fi
|
|
|
|
if [ ! -z "$packages" -a "$packages" != " " ]; then
|
|
_describe -1 -t packages "Popular" packages
|
|
return
|
|
fi
|
|
|
|
}
|
|
|
|
__bun_dynamic_comp() {
|
|
local comp=""
|
|
|
|
for arg in scripts; do
|
|
local line
|
|
while read -r line; do
|
|
local name="$line"
|
|
local desc="$line"
|
|
name="${name%$'\t'*}"
|
|
desc="${desc/*$'\t'/}"
|
|
echo
|
|
done <<<"$arg"
|
|
done
|
|
|
|
return $comp
|
|
}
|
|
|
|
if ! command -v compinit >/dev/null; then
|
|
autoload -U compinit && compinit
|
|
fi
|
|
|
|
compdef _bun bun
|