2 lines
1.4 MiB
2 lines
1.4 MiB
(()=>{var e={28:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(2341),a={trigger:(e,t)=>0===e.length||0===t.length&&e.length>0,custom:async(e,t)=>{const n=e[e.length-1];if(0===n.length)return[];const{stdout:i}=await t({command:"apt",args:["list"]});return i.trim().split("\n").filter(e=>e.startsWith(n)).map(e=>e.replace(/\/.*/,"")).map(e=>({name:e,description:"Package",icon:"📦",priority:50}))}},s={script:["apt","list","--installed"],postProcess:function(e){return e.trim().split("\n").map(e=>({name:e.substring(0,e.indexOf("/")),description:"Package",icon:"📦"}))}},o=[{name:"-y",description:"Assume yes to all prompts",exclusiveOn:["--assume-no"]},{name:"--assume-no",description:"Assume no to all prompts",exclusiveOn:["-y"]}],r=[{name:["-d","--download-only"],description:"For any operation that would download packages, download them, but do nothing else"},{name:"--no-download",description:"Do not download packages, attempt to use already downloaded packages"}],c=[{name:["-s","--simulate"],description:"Simulate running this command and show it's output, without actually changing anything"}],l={name:"apt",description:"Package manager for Debian-based Linux distributions",subcommands:[{name:"update",description:"Update the package database",options:[...o]},{name:"upgrade",description:"Install all available upgrades",args:{name:"package",description:"Package(s) to upgrade",isVariadic:!0,isOptional:!0,generators:{script:["apt","list","--upgradable"],postProcess:function(e){return e.trim().split("\n").map(e=>({name:e.substring(0,e.indexOf("/")),description:"Package",icon:"📦"}))}}},options:[...r,...o,...c]},{name:"full-upgrade",description:"Install available upgrades, removing currently installed packages if needed to upgrade the system as a whole",options:[...r,...o,...c]},{name:"install",description:"Install package(s)",args:{name:"package",description:"The package you want to install",isVariadic:!0,generators:[a,(0,i.filepaths)({extensions:["deb"]})]},options:[...r,...o,...c,{name:"--reinstall",description:"Reinstall the package if it is already installed"},{name:["-f","--fix-broken"],description:"Attempt to fix broken packages"}]},{name:"reinstall",description:"Reinstall package(s)",args:{name:"package",description:"The package you want to reinstall",isVariadic:!0,generators:s},options:[...o,...c]},{name:"remove",description:"Remove package(s)",args:{name:"package",description:"The package you want to remove",isVariadic:!0,generators:s},options:[...o,...c,{name:["-f","--fix-broken"],description:"Attempt to fix broken packages"}]},{name:"purge",description:"Remove package(s) and their configuration files",args:{name:"package",description:"The package you want to purge",isVariadic:!0,generators:s},options:[...o,...c]},{name:["autoremove","auto-remove"],description:"Remove unused packages",options:[...o,...c]},{name:"list",description:"List packages",options:[{name:"--installed",description:"List installed packages"},{name:"--upgradable",description:"List upgradable packages"}]},{name:"search",description:"Search for packages",args:{name:"query",description:"The query to search for"},options:[...o]},{name:"show",description:"Show package details",args:{name:"package",description:"The package you want to show",generators:a}},{name:"satisfy",description:"Satisfy package dependencies",args:{name:"package",description:"The package you want to satisfy",isVariadic:!0,generators:a},options:[...r,...o,...c]},{name:"clean",description:"Remove downloaded package files",options:[...o,...c]},{name:"edit-sources",description:"Edit the list of package sources",options:[...o]},{name:"source",description:"Fetch package source files",args:{name:"package",description:"The package you want to get source files for",isVariadic:!0,generators:a},options:[...r,...o,...c,{name:"--compile",description:"Compile the package to a binary using dpkg-buildpackage"},{name:"--only-source"},{name:"--host-architecture",description:"The architecture to build for",args:{name:"architecture",description:"The architecture to build for"}}]},{name:"build-dep",description:"Install/remove packages in an attempt to satisfy the build dependencies for a source package",args:{name:"package",description:"The package you want to build dependencies for",generators:a},options:[...r,...o,...c,{name:"--host-architecture",description:"The architecture to build for",args:{name:"architecture",description:"The architecture to build for"}},{name:"--only-source"}]},{name:"download",description:"Download package binary into the current directory",args:{name:"package",description:"The package you want to download",generators:a},options:[...r,...o]},{name:["autoclean","auto-clean"],description:"Like clean, but only removes package files that can no longer be downloaded",options:[...r,...o,...c]},{name:"changelog",description:"Show the changelog for a package",args:{name:"package",description:"The package you want to show the changelog for",generators:a,isVariadic:!0},options:[...r,...o]}],options:[{name:["-h","--help"],description:"Print help message and exit",isPersistent:!0,priority:40},{name:["-v","--version"],description:"Print version information and exit",isPersistent:!0,priority:40}]};t.default=l},70:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>"docker"===e[0]?["docker","compose"]:["docker-compose"],i=e=>{const t=[];for(let n=0;n<e.length-1;n++)"-f"===e[n]&&(t.push(e[n+1]),n+=1);return t.flatMap(e=>["-f",e])},a={script:e=>[...n(e),...i(e),"config","--services"],splitOn:"\n"},s={name:"docker-compose",description:"Define and run multi-container applications with Docker",subcommands:[{name:"build",description:"Build or rebuild services",args:{name:"services",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--build-arg",description:"Set build-time variables for services",isRepeatable:!0,args:{name:"key=value",generators:a}},{name:"--compress",description:"Compress the build context using gzip. DEPRECATED",hidden:!0,deprecated:!0},{name:"--force-rm",description:"Always remove intermediate containers. DEPRECATED",hidden:!0,deprecated:!0},{name:["--memory","-m"],description:"Set memory limit for the build container. Not supported on buildkit yet",hidden:!0,args:{name:"memory"}},{name:"--no-cache",description:"Do not use cache when building the image"},{name:"--no-rm",description:"Do not remove intermediate containers after a successful build. DEPRECATED",hidden:!0,deprecated:!0},{name:"--parallel",description:"Build images in parallel. DEPRECATED",deprecated:!0,hidden:!0},{name:"--progress",description:"Set type of progress output (auto, tty, plain, quiet)",args:{name:"progress",default:"auto",suggestions:["auto","tty","plain","quiet"]}},{name:"--pull",description:"Always attempt to pull a newer version of the image"},{name:["--quiet","-q"],description:"Don't print anything to STDOUT"},{name:"--ssh",description:"Set SSH authentications used when building service images. (use 'default' for using your default SSH Agent)",args:{name:"ssh"}}]},{name:["config","convert"],description:"Converts the compose file to platform's canonical format",args:{name:"services",isVariadic:!0,generators:a},options:[{name:"--format",description:"Format the output. Values: [yaml | json]",args:{name:"format",default:"yaml",suggestions:["yaml","json"]}},{name:"--hash",description:"Print the service config hash, one per line",args:{name:"hash"}},{name:"--images",description:"Print the image names, one per line"},{name:"--no-interpolate",description:"Don't interpolate environment variables"},{name:"--no-normalize",description:"Don't normalize compose model"},{name:["--output","-o"],description:"Save to file (default to stdout)",args:{name:"output",template:"filepaths",suggestCurrentToken:!0}},{name:"--profiles",description:"Print the profile names, one per line"},{name:["--quiet","-q"],description:"Only validate the configuration, don't print anything"},{name:"--resolve-image-digests",description:"Pin image tags to digests"},{name:"--services",description:"Print the service names, one per line"},{name:"--volumes",description:"Print the volume names, one per line"}]},{name:"cp",description:"Copy files/folders between a service container and the local filesystem",args:[{name:"source path"},{name:"dest path"}],options:[{name:"--all",description:"Copy to all the containers of the service",hidden:!0},{name:["--archive","-a"],description:"Archive mode (copy all uid/gid information)"},{name:["--follow-link","-L"],description:"Always follow symbol link in SRC_PATH"},{name:"--index",description:"Index of the container if there are multiple instances of a service",args:{name:"index",default:"0"}}]},{name:"create",description:"Creates containers for a service",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--build",description:"Build images before starting containers"},{name:"--force-recreate",description:"Recreate containers even if their configuration and image haven't changed"},{name:"--no-build",description:"Don't build an image, even if it's missing"},{name:"--no-recreate",description:"If containers already exist, don't recreate them. Incompatible with --force-recreate"}]},{name:"down",description:"Stop and remove containers, networks",options:[{name:"--remove-orphans",description:"Remove containers for services not defined in the Compose file"},{name:"--rmi",description:'Remove images used by services. "local" remove only images that don\'t have a custom tag ("local"|"all")',args:{name:"rmi"}},{name:["--timeout","-t"],description:"Specify a shutdown timeout in seconds",args:{name:"timeout",default:"10"}},{name:["--volumes","-v"],description:"Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers"}]},{name:"events",description:"Receive real time events from containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--json",description:"Output events as a stream of json objects"}]},{name:"exec",description:"Execute a command in a running container",args:[{name:"service",generators:a},{name:"command",isCommand:!0,isVariadic:!0}],options:[{name:["--detach","-d"],description:"Detached mode: Run command in the background"},{name:["--env","-e"],description:"Set environment variables",isRepeatable:!0,args:{name:"key=value"}},{name:"--index",description:"Index of the container if there are multiple instances of a service [default: 1]",args:{name:"index",default:"1"}},{name:["--interactive","-i"],description:"Keep STDIN open even if not attached",hidden:!0},{name:["--no-TTY","-T"],description:"Disable pseudo-TTY allocation. By default `docker compose exec` allocates a TTY"},{name:"--privileged",description:"Give extended privileges to the process"},{name:["--tty","-t"],description:"Allocate a pseudo-TTY",hidden:!0},{name:["--user","-u"],description:"Run the command as this user",args:{name:"user"}},{name:["--workdir","-w"],description:"Path to workdir directory for this command",args:{name:"workdir",template:"folders"}}]},{name:"images",description:"List images used by the created containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--quiet","-q"],description:"Only display IDs"}]},{name:"kill",description:"Force stop service containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--signal","-s"],description:"SIGNAL to send to the container",args:{name:"signal",default:"SIGKILL"}}]},{name:"logs",description:"View output from containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--follow","-f"],description:"Follow log output"},{name:"--no-color",description:"Produce monochrome output"},{name:"--no-log-prefix",description:"Don't print prefix in logs"},{name:"--since",description:"Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)",args:{name:"since"}},{name:"--tail",description:"Number of lines to show from the end of the logs for each container",args:{name:"lines",suggestions:["all"],default:"all"}},{name:["--timestamps","-t"],description:"Show timestamps"},{name:"--until",description:"Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)",args:{name:"timestamp"}}]},{name:"ls",description:"List running compose projects",options:[{name:["--all","-a"],description:"Show all stopped Compose projects"},{name:"--filter",description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Format the output. Values: [pretty | json]",args:{name:"format",default:"pretty",suggestions:["pretty","json"]}},{name:["--quiet","-q"],description:"Only display IDs"}]},{name:"pause",description:"Pause services",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a}},{name:"port",description:"Print the public port for a port binding",args:[{name:"service",generators:a},{name:"private_port"}],options:[{name:"--index",description:"Index of the container if service has multiple replicas",args:{name:"index",default:"1"}},{name:"--protocol",description:"Tcp or udp",args:{name:"protocol",default:"tcp",suggestions:["tcp","udp"]}}]},{name:"ps",description:"List containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--all","-a"],description:"Show all stopped containers (including those created by the run command)"},{name:"--filter",description:"Filter services by a property (supported filters: status)",args:{name:"filter"}},{name:"--format",description:"Format the output. Values: [pretty | json]",args:{name:"format",default:"pretty",suggestions:["pretty","json"]}},{name:["--quiet","-q"],description:"Only display IDs"},{name:"--services",description:"Display services"},{name:"--status",description:"Filter services by status. Values: [paused | restarting | removing | running | dead | created | exited]",isRepeatable:!0,args:{name:"status",suggestions:["paused","restarting","removing","running","dead","created","exited"]}}]},{name:"pull",description:"Pull service images",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--ignore-pull-failures",description:"Pull what it can and ignores images with pull failures"},{name:"--include-deps",description:"Also pull services declared as dependencies"},{name:"--no-parallel",description:"DEPRECATED disable parallel pulling",deprecated:!0,hidden:!0},{name:"--parallel",description:"DEPRECATED pull multiple images in parallel",deprecated:!0,hidden:!0},{name:["--quiet","-q"],description:"Pull without printing progress information"}]},{name:"push",description:"Push service images",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--ignore-push-failures",description:"Push what it can and ignores images with push failures"}]},{name:"restart",description:"Restart containers",options:[{name:["--timeout","-t"],description:"Specify a shutdown timeout in seconds",args:{name:"timeout",default:"10"}}],args:{name:"service",isVariadic:!0,isOptional:!0,generators:a}},{name:"rm",description:"Removes stopped service containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--all","-a"],description:"Deprecated - no effect",hidden:!0},{name:["--force","-f"],description:"Don't ask to confirm removal"},{name:["--stop","-s"],description:"Stop the containers, if required, before removing"},{name:["--volumes","-v"],description:"Remove any anonymous volumes attached to containers"}]},{name:"run",description:"Run a one-off command on a service",args:[{name:"service",generators:a},{name:"command",isCommand:!0}],options:[{name:["--detach","-d"],description:"Run container in background and print container ID"},{name:"--entrypoint",description:"Override the entrypoint of the image",args:{name:"entrypoint"}},{name:["--env","-e"],description:"Set environment variables",isRepeatable:!0,args:{name:"env"}},{name:["--interactive","-i"],description:"Keep STDIN open even if not attached"},{name:["--label","-l"],description:"Add or override a label",isRepeatable:!0,args:{name:"label"}},{name:"--name",description:"Assign a name to the container",args:{name:"name"}},{name:["--no-TTY","-T"],description:"Disable pseudo-TTY allocation (default: auto-detected)"},{name:"--no-deps",description:"Don't start linked services"},{name:["--publish","-p"],description:"Publish a container's port(s) to the host",isRepeatable:!0,args:{name:"publish"}},{name:"--quiet-pull",description:"Pull without printing progress information"},{name:"--rm",description:"Automatically remove the container when it exits"},{name:"--service-ports",description:"Run command with the service's ports enabled and mapped to the host"},{name:["--tty","-t"],description:"Allocate a pseudo-TTY",hidden:!0},{name:"--use-aliases",description:"Use the service's network useAliases in the network(s) the container connects to"},{name:["--user","-u"],description:"Run as specified username or uid",args:{name:"user"}},{name:["--volume","-v"],description:"Bind mount a volume",isRepeatable:!0,args:{name:"volume"}},{name:["--workdir","-w"],description:"Working directory inside the container",args:{name:"workdir",template:"folders"}}]},{name:"start",description:"Start services",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a}},{name:"stop",description:"Stop services",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:["--timeout","-t"],description:"Specify a shutdown timeout in seconds",args:{name:"timeout",default:"10"}}]},{name:"top",description:"Display the running processes",args:{name:"service",isOptional:!0,isVariadic:!0,generators:a}},{name:"unpause",description:"Unpause services",args:{name:"service",isOptional:!0,isVariadic:!0,generators:a}},{name:"up",description:"Create and start containers",args:{name:"service",isVariadic:!0,isOptional:!0,generators:a},options:[{name:"--abort-on-container-exit",description:"Stops all containers if any container was stopped. Incompatible with -d"},{name:"--always-recreate-deps",description:"Recreate dependent containers. Incompatible with --no-recreate"},{name:"--attach",description:"Attach to service output",isRepeatable:!0,args:{name:"attach"}},{name:"--attach-dependencies",description:"Attach to dependent containers"},{name:"--build",description:"Build images before starting containers"},{name:["--detach","-d"],description:"Detached mode: Run containers in the background"},{name:"--exit-code-from",description:"Return the exit code of the selected service container. Implies --abort-on-container-exit",args:{name:"exit-code-from"}},{name:"--force-recreate",description:"Recreate containers even if their configuration and image haven't changed"},{name:"--no-build",description:"Don't build an image, even if it's missing"},{name:"--no-color",description:"Produce monochrome output"},{name:"--no-deps",description:"Don't start linked services"},{name:"--no-log-prefix",description:"Don't print prefix in logs"},{name:"--no-recreate",description:"If containers already exist, don't recreate them. Incompatible with --force-recreate"},{name:"--no-start",description:"Don't start the services after creating them"},{name:"--quiet-pull",description:"Pull without printing progress information"},{name:"--remove-orphans",description:"Remove containers for services not defined in the Compose file"},{name:["--renew-anon-volumes","-V"],description:"Recreate anonymous volumes instead of retrieving data from the previous containers"},{name:"--scale",description:"Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present",isRepeatable:!0,args:{name:"scale"}},{name:["--timeout","-t"],description:"Use this timeout in seconds for container shutdown when attached or when containers are already running",args:{name:"timeout",default:"10"}},{name:"--wait",description:"Wait for services to be running|healthy. Implies detached mode"}]},{name:"version",description:"Show the Docker Compose version information",options:[{name:["--format","-f"],description:"Format the output. Values: [pretty | json]. (Default: pretty)",args:{name:"format",suggestions:["pretty","json"]}},{name:"--short",description:"Shows only Compose's version number"}]}],options:[{name:"--ansi",description:'Control when to print ANSI control characters ("never"|"always"|"auto")',args:{name:"ansi",default:"auto",suggestions:["never","always","auto"]}},{name:"--compatibility",description:"Run compose in backward compatibility mode"},{name:"--env-file",description:"Specify an alternate environment file",args:{name:"env-file",template:"filepaths"}},{name:["--file","-f"],description:"Compose configuration files",isRepeatable:!0,args:{name:"file",template:"filepaths"}},{name:"--no-ansi",description:"Do not print ANSI control characters (DEPRECATED)",deprecated:!0,hidden:!0},{name:"--profile",description:"Specify a profile to enable",isRepeatable:!0,args:{name:"profile",generators:{script:e=>[...n(e),...i(e),"config","--profiles"],splitOn:"\n"}}},{name:"--project-directory",description:"Specify an alternate working directory (default: the path of the, first specified, Compose file)",args:{name:"project-directory",template:"folders"}},{name:["--project-name","-p"],description:"Project name",args:{name:"project-name"}},{name:"--verbose",description:"Show more output",hidden:!0},{name:"--workdir",description:"DEPRECATED! USE --project-directory INSTEAD. Specify an alternate working directory (default: the path of the, first specified, Compose file)",deprecated:!0,hidden:!0,args:{name:"workdir"}}]};t.default=s},228:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.parse=t.printTree=t.createTextNode=t.NodeType=void 0,function(e){e.Program="program",e.AssignmentList="assignment_list",e.Assignment="assignment",e.VariableName="variable_name",e.Subscript="subscript",e.CompoundStatement="compound_statement",e.Subshell="subshell",e.Command="command",e.Pipeline="pipeline",e.List="list",e.ProcessSubstitution="process_substitution",e.Concatenation="concatenation",e.Word="word",e.String="string",e.Expansion="expansion",e.CommandSubstitution="command_substitution",e.RawString="raw_string",e.AnsiCString="ansi_c_string",e.SimpleExpansion="simple_expansion",e.SpecialExpansion="special_expansion",e.ArithmeticExpansion="arithmetic_expansion"}(n||(t.NodeType=n={}));const i=[";","&","&;","|","|&","&&","||"],a=(e,t)=>{const n=e.charAt(t);if(["&",";","|"].includes(n)){const a=e.slice(t,t+2);return i.includes(a)?a:n}return null},s=(e,t)=>{const i={startIndex:0,type:n.Word,endIndex:e.length,text:"",innerText:"",complete:!0,children:[],...t},a=e.slice(i.startIndex,i.endIndex),s=(e=>{const{children:t,type:i,complete:a,text:s}=e;if(i===n.Concatenation)return t.reduce((e,t)=>e+t.innerText,"");const o={[n.String]:['"','"'],[n.RawString]:["'","'"],[n.AnsiCString]:["$'","'"]}[i]??["",""],r=o[0],c=a?o[1]:"";let l="";for(let e=r.length;e<s.length-c.length;e+=1){const t=s.charAt(e),a="\\"===t&&i===n.Word,o="\\"===t&&i===n.String&&'$`"\\\n'.includes(s.charAt(e+1));(a||o)&&(e+=1),l+=s.charAt(e)}return l})({...i,text:a});return{...i,text:a,innerText:s}};t.createTextNode=(e,t,n)=>s(e,{startIndex:t,text:n,endIndex:t+n.length});const o=(e,t)=>{const n=e.slice(t).search(/\S/);return-1===n?-1:t+n};function r(e,t,i){const a="`"===e.charAt(t)?t+1:t+2,{statements:o,terminatorIndex:r}=f(e,a,i),c=-1!==r;return s(e,{startIndex:t,type:n.CommandSubstitution,complete:c&&0!==o.length,endIndex:c?r+1:e.length,children:o})}const c=u(n.String,'"','"'),l=u(n.RawString,"'","'"),d=u(n.Expansion,"${","}"),m=u(n.AnsiCString,"$'","'"),p=u(n.ArithmeticExpansion,"$((","))");function h(e,t,i,a){const o=[e.charAt(t),e.charAt(t+1),e.charAt(t+2)];switch(o[0]){case"$":return"("===o[1]?"("===o[2]?p(e,t):r(e,t,")"):"{"===o[1]?d(e,t):i||"'"!==o[1]?((e,t,i)=>{const a={startIndex:t,type:n.SimpleExpansion};if(e.length>t+1&&"*@?-$0_".includes(e.charAt(t+1)))return s(e,{...a,type:n.SpecialExpansion,endIndex:t+2});const o=["\t"," ","\n","$","\\",...i];let r=t+1;for(;r<e.length;r+=1)if(o.includes(e.charAt(r)))return r===t+1?null:s(e,{...a,endIndex:r});return s(e,{...a,endIndex:r})})(e,t,a):m(e,t);case"`":return r(e,t,"`");case"'":return i?null:l(e,t);case'"':return i?null:c(e,t);default:return null}}function u(e,t,i){const a=e===n.Expansion||e===n.String,o=e===n.String;return(r,c)=>{const l=[];for(let d=c+t.length;d<r.length;d+=1){const t=a?h(r,d,o,[i]):null;if(null!==t)l.push(t),d=t.endIndex-1;else if("\\"===r.charAt(d)&&e!==n.RawString)d+=1;else if(r.slice(d,d+i.length)===i)return s(r,{startIndex:c,type:e,children:l,endIndex:d+i.length})}return s(r,{startIndex:c,type:e,children:l,complete:!1})}}function f(e,t,i,r=!1){const c=[];let l=t;for(;l<e.length;){let t=k(e,l,r?"":i);const d=o(e,t.endIndex),m=-1===d;if(!r&&!m&&i===e.charAt(d))return c.push(t),{statements:c,terminatorIndex:d};if(m){c.push(t);break}const p=!m&&a(e,d);if(p){l=d+p.length;const n=o(e,l);if(c.push(t),-1!==n&&e.charAt(n)===i)return{statements:c,terminatorIndex:n}}else t=s(e,{...t,complete:t.type===n.AssignmentList&&t.complete}),c.push(t),l=d}return{statements:c,terminatorIndex:-1}}const g=(e,t,i)=>{const o=[];let r=[],c=-1;const l=t=>{if(-1!==c){const n=s(e,{startIndex:c,endIndex:t});r.push(n)}c=-1},d=t=>{l(t);let[i]=r;if(r.length>1){const t=r[r.length-1];i=s(e,{startIndex:r[0].startIndex,type:n.Concatenation,endIndex:t.endIndex,complete:t.complete,children:r})}i&&o.push(i),r=[]},m=["&","|",";","\n","'",'"',"`"];i&&m.push(i);let p=t;for(;p<e.length;p+=1){const t=e.charAt(p);if(null!==a(e,p)||t===i)break;const n=h(e,p,!1,m);null!==n?(l(p),r.push(n),p=n.endIndex-1):[" ","\t"].includes(t)?d(p):("\\"===t&&(p+=1),-1===c&&(c=p))}return d(p),{children:o,endIndex:p}};function b(e,t,i){const a=Math.max(o(e,t),t),{children:r,endIndex:c}=g(e,a,i);return s(e,{startIndex:a,type:n.Command,complete:r.length>0,endIndex:r.length>0?c:e.length,children:r})}const y=(e,t)=>{const i=e.indexOf("=",t),a="+"===e.charAt(i-1)?"+=":"=",o="="===a?i:i-1,r=e.slice(t,o).indexOf("[");let c;const l=s(e,{type:n.VariableName,startIndex:t,endIndex:-1!==r?r:o});if(-1!==r){const i=s(e,{type:n.Word,startIndex:r+1,endIndex:o-1});c=s(e,{type:n.Subscript,name:l,startIndex:t,endIndex:i.endIndex+1,children:[i]})}else c=l;const{children:d,endIndex:m}=g(e,i+1," ");return s(e,{name:c,startIndex:t,endIndex:m,type:n.Assignment,operator:a,children:d,complete:d[d.length-1].complete})},w=(e,t,i)=>{const r=((e,t)=>{const n=[];let i=t;for(;i<e.length;){const t=o(e,i);if(!/^[\w[\]]+\+?=.*/.test(e.slice(t)))return n;{const a=y(e,t);n.push(a),i=a.endIndex}}return n})(e,t);if(r.length>0){const c=r[r.length-1];let l;return!a(e,o(e,c.endIndex))&&c.complete&&c.endIndex!==e.length&&(l=b(e,c.endIndex,i)),s(e,{type:n.AssignmentList,startIndex:t,endIndex:l?l.endIndex:c.endIndex,hasCommand:!!l,children:l?[...r,l]:r})}return b(e,t,i)},v=(e,t,n,i)=>s(e,{type:i,startIndex:t.startIndex,children:n.type===i?[t,...n.children]:[t,n],endIndex:n.endIndex,complete:t.complete&&n.complete});function k(e,t,i){let r=o(e,t);r=-1===r?t:r;let c=null;if(["{","("].includes(e.charAt(r))){const t="{"===e.charAt(r),i=t?"}":")",{statements:a,terminatorIndex:o}=f(e,r+1,i,t),l=a.length>0,d=-1!==o;let m=o+1;d||(m=l?a[a.length-1].endIndex:e.length),c=s(e,{startIndex:r,type:t?n.CompoundStatement:n.Subshell,endIndex:m,complete:d&&l,children:a})}else c=w(e,r,i);r=c.endIndex;const l=o(e,r),d=-1!==l&&a(e,l);if(!d||";"===d||"&"===d||"&;"===d||-1!==l&&i&&e.charAt(l)===i)return c;const m=k(e,l+d.length,i);if("&&"===d||"||"===d)return v(e,c,m,n.List);if("|"===d||"|&"===d){if(m.type===n.List){const[t,...i]=m.children,a=v(e,c,t,n.Pipeline);return s(e,{type:n.List,startIndex:a.startIndex,children:[a,...i],endIndex:m.endIndex,complete:a.complete&&m.complete})}return v(e,c,m,n.Pipeline)}return c}t.printTree=e=>{const t=(e,n=0)=>{const i=" ".repeat(n);let a=`${i}${e.type} [${e.startIndex}, ${e.endIndex}] - ${e.text}`;const s=e.children.map(e=>t(e,n+1)).join("\n");return s&&(a+=`\n${s}`),e.complete||(a+=`\n${i}INCOMPLETE`),a};console.log(t(e))},t.parse=e=>s(e,{startIndex:0,type:n.Program,children:f(e,0,"").statements})},265:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createGeneratorState=t.shellContextSelector=void 0;const i=n(3691),a=n(1121),s=n(6855);t.shellContextSelector=({figState:e})=>({currentWorkingDirectory:e.cwd||"",currentProcess:e.processUserIsIn||"",environmentVariables:e.environmentVariables,sshPrefix:""}),t.createGeneratorState=(e,n)=>({triggerGenerators:(n,o)=>{const{parserResult:{currentArg:r,searchTerm:c}}=e,{currentArg:l,searchTerm:d}=n,m=l?.generators??[],p=(e=>{const{command:n,parserResult:i}=e,{currentArg:a,searchTerm:s,annotations:o,commandIndex:r}=i,c=n?.tokens??[];return{...(0,t.shellContextSelector)(e),annotations:o.slice(r),tokenArray:c.slice(r).map(e=>e.text),isDangerous:Boolean(a?.isDangerous),searchTerm:s}})({...e,parserResult:n});return m.map((t,n)=>{const{trigger:m}=t,h=e.generatorStates[n];let u=!1;if(h&&l===r)if(void 0===m)u=Boolean(l?.debounce);else{let e;if("string"==typeof m)e=(e,t)=>e.lastIndexOf(m)!==t.lastIndexOf(m);else if("function"==typeof m)e=m;else switch(m.on){case"threshold":e=(e,t)=>e.length>m.length&&!(t.length>m.length);break;case"match":{const t="string"==typeof m.string?[m.string]:m.string;e=(e,n)=>t.findIndex(t=>t===e)!==t.findIndex(e=>e===n);break}default:e=(e,t)=>e!==t}try{u=e(d,c)}catch(e){u=!0}}else u=!0;if(!u)return h;const f={generator:t,context:p,result:h?.result||[],loading:!0};return l?.debounce?((0,a.sleep)("number"==typeof l.debounce&&l.debounce>0?l.debounce:200),f):((e,t)=>{const{generator:n,context:a}=e;let o;return o=n.template?Promise.resolve(void 0):n.script?(0,i.getScriptSuggestions)(n,a,void 0,t):(0,s.getCustomSuggestions)(n,a,t),{...e,loading:!0,request:o}})(f,o)})}})},346:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"ls",description:"List directory contents",args:{isVariadic:!0,template:["filepaths","folders"],filterStrategy:"fuzzy"},options:[{name:"-@",description:"Display extended attribute keys and sizes in long (-l) output"},{name:"-1",description:"(The numeric digit ``one''.) Force output to be one entry per line. This is the default when output is not to a terminal"},{name:"-A",description:"List all entries except for . and ... Always set for the super-user"},{name:"-a",description:"Include directory entries whose names begin with a dot (.)"},{name:"-B",description:"Force printing of non-printable characters (as defined by ctype(3) and current locale settings) in file names as xxx, where xxx is the numeric value of the character in octal"},{name:"-b",description:"As -B, but use C escape codes whenever possible"},{name:"-C",description:"Force multi-column output; this is the default when output is to a terminal"},{name:"-c",description:"Use time when file status was last changed for sorting (-t) or long printing (-l)"},{name:"-d",description:"Directories are listed as plain files (not searched recursively)"},{name:"-e",description:"Print the Access Control List (ACL) associated with the file, if present, in long (-l) output"},{name:"-F",description:"Display a slash (/) immediately after each pathname that is a directory, an asterisk (*) after each that is executable, an at sign (@) after each symbolic link, an equals sign (=) after each socket, a percent sign (%) after each whiteout, and a vertical bar (|) after each that is a FIFO"},{name:"-f",description:"Output is not sorted. This option turns on the -a option"},{name:"-G",description:"Enable colorized output. This option is equivalent to defining CLICOLOR in the environment. (See below.)"},{name:"-g",description:"This option is only available for compatibility with POSIX; it is used to display the group name in the long (-l) format output (the owner name is suppressed)"},{name:"-H",description:"Symbolic links on the command line are followed. This option is assumed if none of the -F, -d, or -l options are specified"},{name:"-h",description:"When used with the -l option, use unit suffixes: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte in order to reduce the number of digits to three or less using base 2 for sizes"},{name:"-i",description:"For each file, print the file's file serial number (inode number)"},{name:"-k",description:"If the -s option is specified, print the file size allocation in kilobytes, not blocks. This option overrides the environment variable BLOCKSIZE"},{name:"-L",description:"Follow all symbolic links to final target and list the file or directory the link references rather than the link itself. This option cancels the -P option"},{name:"-l",description:"(The lowercase letter ``ell''.) List in long format. (See below.) A total sum for all the file sizes is output on a line before the long listing"},{name:"-m",description:"Stream output format; list files across the page, separated by commas"},{name:"-n",description:"Display user and group IDs numerically, rather than converting to a user or group name in a long (-l) output. This option turns on the -l option"},{name:"-O",description:"Include the file flags in a long (-l) output"},{name:"-o",description:"List in long format, but omit the group id"},{name:"-P",description:"If argument is a symbolic link, list the link itself rather than the object the link references. This option cancels the -H and -L options"},{name:"-p",description:"Write a slash (`/') after each filename if that file is a directory"},{name:"-q",description:"Force printing of non-graphic characters in file names as the character `?'; this is the default when output is to a terminal"},{name:"-R",description:"Recursively list subdirectories encountered"},{name:"-r",description:"Reverse the order of the sort to get reverse lexicographical order or the oldest entries first (or largest files last, if combined with sort by size"},{name:"-S",description:"Sort files by size"},{name:"-s",description:"Display the number of file system blocks actually used by each file, in units of 512 bytes, where partial units are rounded up to the next integer value. If the output is to a terminal, a total sum for all the file sizes is output on a line before the listing. The environment variable BLOCKSIZE overrides the unit size of 512 bytes"},{name:"-T",description:"When used with the -l (lowercase letter ``ell'') option, display complete time information for the file, including month, day, hour, minute, second, and year"},{name:"-t",description:"Sort by time modified (most recently modified first) before sorting the operands by lexicographical order"},{name:"-u",description:"Use time of last access, instead of last modification of the file for sorting (-t) or long printing (-l)"},{name:"-U",description:"Use time of file creation, instead of last modification for sorting (-t) or long output (-l)"},{name:"-v",description:"Force unedited printing of non-graphic characters; this is the default when output is not to a terminal"},{name:"-W",description:"Display whiteouts when scanning directories. (-S) flag)"},{name:"-w",description:"Force raw printing of non-printable characters. This is the default when output is not to a terminal"},{name:"-x",description:"The same as -C, except that the multi-column output is produced with entries sorted across, rather than down, the columns"},{name:"-%",description:"Distinguish dataless files and directories with a '%' character in long (-l) output, and don't materialize dataless directories when listing them"},{name:"-,",description:"When the -l option is set, print file sizes grouped and separated by thousands using the non-monetary separator returned\nby localeconv(3), typically a comma or period. If no locale is set, or the locale does not have a non-monetary separator, this\noption has no effect. This option is not defined in IEEE Std 1003.1-2001 (“POSIX.1”)",dependsOn:["-l"]},{name:"--color",description:"Output colored escape sequences based on when, which may be set to either always, auto, or never",requiresSeparator:!0,args:{name:"when",suggestions:[{name:["always","yes","force"],description:"Will make ls always output color"},{name:"auto",description:"Will make ls output escape sequences based on termcap(5), but only if stdout is a tty and either the -G flag is specified or the COLORTERM environment variable is set and not empty"},{name:["never","no","none"],description:"Will disable color regardless of environment variables"}]}}]}},396:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fishBuiltinsCommandDescriptionsCache=void 0,t.fishBuiltinsCommandDescriptionsCache={".":{shortDescription:"source - evaluate contents of file",description:"source evaluates the commands of the specified FILE in the current\nshell as a new block of code. This is different from starting a new\nprocess to perform the commands (i.e. fish < FILE) since the commands\nwill be evaluated by the current shell, which means that changes in\nshell variables will affect the current shell. If additional\narguments are specified after the file name, they will be inserted\ninto the argv variable. The argv variable will not include the name\nof the sourced file.\n\nfish will search the working directory to resolve relative paths but\nwill not search PATH .\n\nIf no file is specified and stdin is not the terminal, or if the file\nname - is used, stdin will be read.\n\nThe exit status of source is the exit status of the last job to\nexecute. If something goes wrong while opening or reading the file,\nsource exits with a non-zero status.\n\n. (a single period) is an alias for the source command. The use of .\nis deprecated in favour of source, and . will be removed in a future\nversion of fish.\n\nsource creates a new local scope; set --local within a sourced block\nwill not affect variables in the enclosing scope.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\n\n source ~/.config/fish/config.fish\n # Causes fish to re-read its initialization file.\n\nCAVEATS\nIn fish versions prior to 2.3.0, the argv variable would have a\nsingle element (the name of the sourced file) if no arguments are\npresent. Otherwise, it would contain arguments without the name of\nthe sourced file. That behavior was very confusing and unlike other\nshells such as bash and zsh.",args:"source FILE [ARGUMENTS ...]\nSOMECOMMAND | source"},":":{shortDescription:"No operation command",description:"The `:` command is a no-op (no operation) command that returns a successful (zero) exit status. It can be used as a placeholder in scripts where a command is syntactically required but no action is desired."},"[":{shortDescription:"Test if a statement is true",description:"Evaluate an expression and return a status of true (0) or false (non-zero). Unlike the `test` command, the `[` command requires a closing `]`.",args:"EXPRESSION ]"},_:{shortDescription:"",description:""},abbr:{shortDescription:"manage fish abbreviations",description:'abbr manages abbreviations - user-defined words that are replaced\nwith longer phrases when entered.\n\nNOTE:\n Only typed-in commands use abbreviations. Abbreviations are not\n expanded in scripts.\n\nFor example, a frequently-run command like git checkout can be\nabbreviated to gco. After entering gco and pressing Space or Enter,\nthe full text git checkout will appear in the command line. To avoid\nexpanding something that looks like an abbreviation, the default\nControl+Space binding inserts a space without expanding.\n\nAn abbreviation may match a literal word, or it may match a pattern\ngiven by a regular expression. When an abbreviation matches a word,\nthat word is replaced by new text, called its expansion. This\nexpansion may be a fixed new phrase, or it can be dynamically created\nvia a fish function. This expansion occurs after pressing space or\nenter.\n\nCombining these features, it is possible to create custom syntaxes,\nwhere a regular expression recognizes matching tokens, and the\nexpansion function interprets them. See the Examples section.\n\nChanged in version 3.6.0: Previous versions of this allowed saving\nabbreviations in universal variables. That\'s no longer possible.\nExisting variables will still be imported and abbr --erase will also\nerase the variables. We recommend adding abbreviations to\nconfig.fish by just adding the abbr --add command. When you run\nabbr, you will see output like this\n\n > abbr\n abbr -a -- foo bar # imported from a universal variable, see `help abbr`\n\nIn that case you should take the part before the # comment and save\nit in config.fish, then you can run abbr --erase to remove the\nuniversal variable:\n\n > abbr >> ~/.config/fish/config.fish\n > abbr --erase (abbr --list)\n\nADD SUBCOMMAND\nabbr [-a | --add] NAME [--position command | anywhere] [-r | --regex PATTERN]\n [--set-cursor[=MARKER]] ([-f | --function FUNCTION] | EXPANSION)\n\nabbr --add creates a new abbreviation. With no other options, the\nstring NAME is replaced by EXPANSION.\n\nWith --position command, the abbreviation will only expand when it is\npositioned as a command, not as an argument to another command. With\n--position anywhere the abbreviation may expand anywhere in the\ncommand line. The default is command.\n\nWith --regex, the abbreviation matches using the regular expression\ngiven by PATTERN, instead of the literal NAME. The pattern is\ninterpreted using PCRE2 syntax and must match the entire token. If\nmultiple abbreviations match the same token, the last abbreviation\nadded is used.\n\nWith --set-cursor=MARKER, the cursor is moved to the first occurrence\nof MARKER in the expansion. The MARKER value is erased. The MARKER\nmay be omitted (i.e. simply --set-cursor), in which case it defaults\nto %.\n\nWith -f FUNCTION or --function FUNCTION, FUNCTION is treated as the\nname of a fish function instead of a literal replacement. When the\nabbreviation matches, the function will be called with the matching\ntoken as an argument. If the function\'s exit status is 0 (success),\nthe token will be replaced by the function\'s output; otherwise the\ntoken will be left unchanged. No EXPANSION may be given separately.\n\n Examples\n\n abbr --add gco git checkout\n\nAdd a new abbreviation where gco will be replaced with git checkout.\n\n abbr -a --position anywhere -- -C --color\n\nAdd a new abbreviation where -C will be replaced with --color. The --\nallows -C to be treated as the name of the abbreviation, instead of\nan option.\n\n abbr -a L --position anywhere --set-cursor "% | less"\n\nAdd a new abbreviation where L will be replaced with | less, placing\nthe cursor before the pipe.\n\n function last_history_item\n echo $history[1]\n end\n abbr -a !! --position anywhere --function last_history_item\n\nThis first creates a function last_history_item which outputs the\nlast entered command. It then adds an abbreviation which replaces !!\nwith the result of calling this function. Taken together, this is\nsimilar to the !! history expansion feature of bash.\n\n function vim_edit\n echo vim $argv\n end\n abbr -a vim_edit_texts --position command --regex ".+\\.txt" --function vim_edit\n\nThis first creates a function vim_edit which prepends vim before its\nargument. It then adds an abbreviation which matches commands ending\nin .txt, and replaces the command with the result of calling this\nfunction. This allows text files to be "executed" as a command to\nopen them in vim, similar to the "suffix alias" feature in zsh.\n\n abbr 4DIRS --set-cursor=! "$(string join \\n -- \'for dir in */\' \'cd $dir\' \'!\' \'cd ..\' \'end\')"\n\nThis creates an abbreviation "4DIRS" which expands to a multi-line\nloop "template." The template enters each directory and then leaves\nit. The cursor is positioned ready to enter the command to run in\neach directory, at the location of the !, which is itself erased.\n\nOTHER SUBCOMMANDS\n\n abbr --rename OLD_NAME NEW_NAME\n\nRenames an abbreviation, from OLD_NAME to NEW_NAME\n\n abbr [-s | --show]\n\nShow all abbreviations in a manner suitable for import and export\n\n abbr [-l | --list]\n\nPrints the names of all abbreviation\n\n abbr [-e | --erase] NAME\n\nErases the abbreviation with the given name\n\n abbr -q or --query [NAME...]\n\nReturn 0 (true) if one of the NAME is an abbreviation.\n\n abbr -h or --help\n\nDisplays help for the abbr command.',args:"abbr --add NAME [--position command | anywhere] [-r | --regex PATTERN]\n[--set-cursor[=MARKER]] ([-f | --function FUNCTION] | EXPANSION)\nabbr --erase NAME ...\nabbr --rename OLD_WORD NEW_WORD\nabbr --show\nabbr --list\nabbr --query NAME ..."},and:{shortDescription:"conditionally execute a command",description:"and is used to execute a command if the previous command was\nsuccessful (returned a status of 0).\n\nand statements may be used as part of the condition in an while or if\nblock.\n\nand does not change the current exit status itself, but the command\nit runs most likely will. The exit status of the last foreground\ncommand to exit can always be accessed using the $status variable.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nThe following code runs the make command to build a program. If the\nbuild succeeds, make's exit status is 0, and the program is\ninstalled. If either step fails, the exit status is 1, and make clean\nis run, which removes the files created by the build process.\n\n make; and make install; or make clean\n\nSEE ALSO\n\n• or command\n\n• not command",args:"PREVIOUS; and COMMAND"},argparse:{shortDescription:"parse options passed to a fish script or function",description:"This command makes it easy for fish scripts and functions to handle\narguments. You pass arguments that define the known options, followed\nby a literal --, then the arguments to be parsed (which might also\ninclude a literal --). argparse then sets variables to indicate the\npassed options with their values, and sets $argv to the remaining\narguments. See the usage section below.\n\nEach option specification (OPTION_SPEC) is written in the domain\nspecific language described below. All OPTION_SPECs must appear after\nany argparse flags and before the -- that separates them from the\narguments to be parsed.\n\nEach option that is seen in the ARG list will result in variables\nnamed _flag_X, where X is the short flag letter and the long flag\nname (if they are defined). For example a --help option could cause\nargparse to define one variable called _flag_h and another called\n_flag_help.\n\nThe variables will be set with local scope (i.e., as if the script\nhad done set -l _flag_X). If the flag is a boolean (that is, it just\nis passed or not, it doesn't have a value) the values are the short\nand long flags seen. If the option is not a boolean the values will\nbe zero or more values corresponding to the values collected when the\nARG list is processed. If the flag was not seen the flag variable\nwill not be set.\n\nOPTIONS\nThe following argparse options are available. They must appear before\nall OPTION_SPECs:\n\n-n or --name\n The command name for use in error messages. By default the\n current function name will be used, or argparse if run outside\n of a function.\n\n-x or --exclusive OPTIONS\n A comma separated list of options that are mutually exclusive.\n You can use this more than once to define multiple sets of\n mutually exclusive options. You give either the short or long\n version of each option, and you still need to otherwise define\n the options.\n\n-N or --min-args NUMBER\n The minimum number of acceptable non-option arguments. The\n default is zero.\n\n-X or --max-args NUMBER\n The maximum number of acceptable non-option arguments. The\n default is infinity.\n\n-i or --ignore-unknown\n Ignores unknown options, keeping them and their arguments in\n $argv instead.\n\n-s or --stop-nonopt\n Causes scanning the arguments to stop as soon as the first\n non-option argument is seen. Among other things, this is\n useful to implement subcommands that have their own options.\n\n-h or --help\n Displays help about using this command.\n\nUSAGE\nTo use this command, pass the option specifications (OPTION_SPEC), a\nmandatory --, and then the arguments to be parsed.\n\nA simple example:\n\n argparse --name=my_function 'h/help' 'n/name=' -- $argv\n or return\n\nIf $argv is empty then there is nothing to parse and argparse returns\nzero to indicate success. If $argv is not empty then it is checked\nfor flags -h, --help, -n and --name. If they are found they are\nremoved from the arguments and local variables called _flag_OPTION\nare set so the script can determine which options were seen. If $argv\ndoesn't have any errors, like a missing mandatory value for an\noption, then argparse exits with a status of zero. Otherwise it\nwrites appropriate error messages to stderr and exits with a status\nof one.\n\nThe or return means that the function returns argparse's status if it\nfailed, so if it goes on argparse succeeded.\n\nThe -- argument is required. You do not have to include any option\nspecifications or arguments after the -- but you must include the --.\nFor example, this is acceptable:\n\n set -l argv foo\n argparse 'h/help' 'n/name' -- $argv\n argparse --min-args=1 -- $argv\n\nBut this is not:\n\n set -l argv\n argparse 'h/help' 'n/name' $argv\n\nThe first -- seen is what allows the argparse command to reliably\nseparate the option specifications and options to argparse itself\n(like --ignore-unknown) from the command arguments, so it is\nrequired.\n\nOPTION SPECIFICATIONS\nEach option specification consists of:\n\n• An optional alphanumeric short flag character, followed by a / if\n the short flag can be used by someone invoking your command or, for\n backwards compatibility, a - if it should not be exposed as a valid\n short flag (in which case it will also not be exposed as a flag\n variable).\n\n• An optional long flag name, which if not present the short flag can\n be used, and if that is also not present, an error is reported\n\n• Nothing if the flag is a boolean that takes no argument or is an\n integer flag, or\n\n • = if it requires a value and only the last instance of the\n flag is saved, or\n\n • =? if it takes an optional value and only the last instance of\n the flag is saved, or\n\n • =+ if it requires a value and each instance of the flag is\n saved.\n\n• Optionally a ! followed by fish script to validate the value.\n Typically this will be a function to run. If the exit status is\n zero the value for the flag is valid. If non-zero the value is\n invalid. Any error messages should be written to stdout (not\n stderr). See the section on Flag Value Validation for more\n information.\n\nSee the fish_opt command for a friendlier but more verbose way to\ncreate option specifications.\n\nIf a flag is not seen when parsing the arguments then the\ncorresponding _flag_X var(s) will not be set.\n\nINTEGER FLAG\nSometimes commands take numbers directly as options, like foo -55. To\nallow this one option spec can have the # modifier so that any\ninteger will be understood as this flag, and the last number will be\ngiven as its value (as if = was used).\n\nThe # must follow the short flag letter (if any), and other modifiers\nlike = are not allowed, except for - (for backwards compatibility):\n\n m#maximum\n\nThis does not read numbers given as +NNN, only those that look like\nflags - -NNN.\n\nNOTE: OPTIONAL ARGUMENTS\nAn option defined with =? can take optional arguments. Optional\narguments have to be directly attached to the option they belong to.\n\nThat means the argument will only be used for the option if you use\nit like:\n\n cmd --flag=value\n # or\n cmd -fvalue\n\nbut not if used like:\n\n cmd --flag value\n # \"value\" here will be used as a positional argument\n # and \"--flag\" won't have an argument.\n\nIf this weren't the case, using an option without an optional\nargument would be difficult if you also wanted to use positional\narguments.\n\nFor example:\n\n grep --color auto\n # Here \"auto\" will be used as the search string,\n # \"color\" will not have an argument and will fall back to the default,\n # which also *happens to be* auto.\n grep --color always\n # Here grep will still only use color \"auto\"matically\n # and search for the string \"always\".\n\nThis isn't specific to argparse but common to all things using\ngetopt(3) (if they have optional arguments at all). That grep example\nis how GNU grep actually behaves.\n\nFLAG VALUE VALIDATION\nSometimes you need to validate the option values. For example, that\nit is a valid integer within a specific range, or an ip address, or\nsomething entirely different. You can always do this after argparse\nreturns but you can also request that argparse perform the validation\nby executing arbitrary fish script. To do so simply append an !\n(exclamation-mark) then the fish script to be run. When that code is\nexecuted three vars will be defined:\n\n• _argparse_cmd will be set to the value of the value of the argparse\n --name value.\n\n• _flag_name will be set to the short or long flag that being\n processed.\n\n• _flag_value will be set to the value associated with the flag being\n processed.\n\nThese variables are passed to the function as local exported\nvariables.\n\nThe script should write any error messages to stdout, not stderr. It\nshould return a status of zero if the flag value is valid otherwise a\nnon-zero status to indicate it is invalid.\n\nFish ships with a _validate_int function that accepts a --min and\n--max flag. Let's say your command accepts a -m or --max flag and the\nminimum allowable value is zero and the maximum is 5. You would\ndefine the option like this: m/max=!_validate_int --min 0 --max 5.\nThe default if you just call _validate_int without those flags is to\nsimply check that the value is a valid integer with no limits on the\nmin or max value allowed.\n\nHere are some examples of flag validations:\n\n # validate that a path is a directory\n argparse 'p/path=!test -d \"$_flag_value\"' -- --path $__fish_config_dir\n # validate that a function does not exist\n argparse 'f/func=!not functions -q \"$_flag_value\"' -- -f alias\n # validate that a string matches a regex\n argparse 'c/color=!string match -rq \\'^#?[0-9a-fA-F]{6}$\\' \"$_flag_value\"' -- -c 'c0ffee'\n # validate with a validator function\n argparse 'n/num=!_validate_int --min 0 --max 99' -- --num 42\n\nEXAMPLE OPTION_SPECS\nSome OPTION_SPEC examples:\n\n• h/help means that both -h and --help are valid. The flag is a\n boolean and can be used more than once. If either flag is used then\n _flag_h and _flag_help will be set to however either flag was seen,\n as many times as it was seen. So it could be set to -h, -h and\n --help, and count $_flag_h would yield \"3\".\n\n• help means that only --help is valid. The flag is a boolean and can\n be used more than once. If it is used then _flag_help will be set\n as above. Also h-help (with an arbitrary short letter) for\n backwards compatibility.\n\n• longonly= is a flag --longonly that requires an option, there is no\n short flag or even short flag variable.\n\n• n/name= means that both -n and --name are valid. It requires a\n value and can be used at most once. If the flag is seen then\n _flag_n and _flag_name will be set with the single mandatory value\n associated with the flag.\n\n• n/name=? means that both -n and --name are valid. It accepts an\n optional value and can be used at most once. If the flag is seen\n then _flag_n and _flag_name will be set with the value associated\n with the flag if one was provided else it will be set with no\n values.\n\n• name=+ means that only --name is valid. It requires a value and can\n be used more than once. If the flag is seen then _flag_name will be\n set with the values associated with each occurrence.\n\n• x means that only -x is valid. It is a boolean that can be used\n more than once. If it is seen then _flag_x will be set as above.\n\n• x=, x=?, and x=+ are similar to the n/name examples above but there\n is no long flag alternative to the short flag -x.\n\n• #max (or #-max) means that flags matching the regex \"^--?\\d+$\" are\n valid. When seen they are assigned to the variable _flag_max. This\n allows any valid positive or negative integer to be specified by\n prefixing it with a single \"-\". Many commands support this idiom.\n For example head -3 /a/file to emit only the first three lines of\n /a/file.\n\n• n#max means that flags matching the regex \"^--?\\d+$\" are valid.\n When seen they are assigned to the variables _flag_n and _flag_max.\n This allows any valid positive or negative integer to be specified\n by prefixing it with a single \"-\". Many commands support this\n idiom. For example head -3 /a/file to emit only the first three\n lines of /a/file. You can also specify the value using either flag:\n -n NNN or --max NNN in this example.\n\n• #longonly causes the last integer option to be stored in\n _flag_longonly.\n\nAfter parsing the arguments the argv variable is set with local scope\nto any values not already consumed during flag processing. If there\nare no unbound values the variable is set but count $argv will be\nzero.\n\nIf an error occurs during argparse processing it will exit with a\nnon-zero status and print error messages to stderr.\n\nEXAMPLES\nA simple use:\n\n argparse h/help -- $argv\n or return\n\n if set -q _flag_help\n # TODO: Print help here\n return 0\n end\n\nThis just wants one option - -h / --help. Any other option is an\nerror. If it is given it prints help and exits.\n\nHow fish_add_path - add to the path parses its args:\n\n argparse -x g,U -x P,U -x a,p g/global U/universal P/path p/prepend a/append h/help m/move v/verbose n/dry-run -- $argv\n\nThere are a variety of boolean flags, all with long and short\nversions. A few of these cannot be used together, and that is what\nthe -x flag is used for. -x g,U means that --global and --universal\nor their short equivalents conflict, and if they are used together\nyou get an error. In this case you only need to give the short or\nlong flag, not the full option specification.\n\nAfter this it figures out which variable it should operate on\naccording to the --path flag:\n\n set -l var fish_user_paths\n set -q _flag_path\n and set var PATH\n\nLIMITATIONS\nOne limitation with --ignore-unknown is that, if an unknown option is\ngiven in a group with known options, the entire group will be kept in\n$argv. argparse will not do any permutations here.\n\nFor instance:\n\n argparse --ignore-unknown h -- -ho\n echo $_flag_h # is -h, because -h was given\n echo $argv # is still -ho\n\nThis limitation may be lifted in future.\n\nAdditionally, it can only parse known options up to the first unknown\noption in the group - the unknown option could take options, so it\nisn't clear what any character after an unknown option means.",args:"argparse [OPTIONS] OPTION_SPEC ... -- [ARG ...]"},begin:{shortDescription:"start a new block of code",description:"begin is used to create a new block of code.\n\nA block allows the introduction of a new variable scope, redirection\nof the input or output of a set of commands as a group, or to specify\nprecedence when using the conditional commands like and.\n\nThe block is unconditionally executed. begin; ...; end is equivalent\nto if true; ...; end.\n\nbegin does not change the current exit status itself. After the block\nhas completed, $status will be set to the status returned by the most\nrecent command.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nThe following code sets a number of variables inside of a block\nscope. Since the variables are set inside the block and have local\nscope, they will be automatically deleted when the block ends.\n\n begin\n set -l PIRATE Yarrr\n\n ...\n end\n\n echo $PIRATE\n # This will not output anything, since the PIRATE variable\n # went out of scope at the end of the block\n\nIn the following code, all output is redirected to the file out.html.\n\n begin\n echo $xml_header\n echo $html_header\n if test -e $file\n ...\n end\n ...\n end > out.html",args:"begin; [COMMANDS ...]; end"},bg:{shortDescription:"send jobs to background",description:'bg sends jobs to the background, resuming them if they are stopped.\n\nA background job is executed simultaneously with fish, and does not\nhave access to the keyboard. If no job is specified, the last job to\nbe used is put in the background. If PID is specified, the jobs\ncontaining the specified process IDs are put in the background.\n\nFor compatibility with other shells, job expansion syntax is\nsupported for bg. A PID of the format %1 will be interpreted as the\nPID of job 1. Job numbers can be seen in the output of jobs.\n\nWhen at least one of the arguments isn\'t a valid job specifier, bg\nwill print an error without backgrounding anything.\n\nWhen all arguments are valid job specifiers, bg will background all\nmatching jobs that exist.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nbg 123 456 789 will background the jobs that contain processes 123,\n456 and 789.\n\nIf only 123 and 789 exist, it will still background them and print an\nerror about 456.\n\nbg 123 banana or bg banana 123 will complain that "banana" is not a\nvalid job specifier.\n\nbg %1 will background job 1.',args:"bg [PID ...]"},bind:{shortDescription:"handle fish key bindings",description:"bind manages bindings.\n\nIt can add bindings if given a SEQUENCE of characters to bind to.\nThese should be written as fish escape sequences. The most important\nof these are \\c for the control key, and \\e for escape, and because\nof historical reasons also the Alt key (sometimes also called\n\"Meta\").\n\nFor example, Alt+W can be written as \\ew, and Control+X (^X) can be\nwritten as \\cx. Note that Alt-based key bindings are case sensitive\nand Control-based key bindings are not. This is a constraint of\ntext-based terminals, not fish.\n\nThe generic key binding that matches if no other binding does can be\nset by specifying a SEQUENCE of the empty string (that is, '' ). For\nmost key bindings, it makes sense to bind this to the self-insert\nfunction (i.e. bind '' self-insert). This will insert any keystrokes\nnot specifically bound to into the editor. Non-printable characters\nare ignored by the editor, so this will not result in control\nsequences being inserted.\n\nIf the -k switch is used, the name of a key (such as 'down', 'up' or\n'backspace') is used instead of a sequence. The names used are the\nsame as the corresponding curses variables, but without the 'key'\nprefix. (See terminfo(5) for more information, or use bind\n--key-names for a list of all available named keys). Normally this\nwill print an error if the current $TERM entry doesn't have a given\nkey, unless the -s switch is given.\n\nTo find out what sequence a key combination sends, you can use\nfish_key_reader.\n\nCOMMAND can be any fish command, but it can also be one of a set of\nspecial input functions. These include functions for moving the\ncursor, operating on the kill-ring, performing tab completion, etc.\nUse bind --function-names for a complete list of these input\nfunctions.\n\nWhen COMMAND is a shellscript command, it is a good practice to put\nthe actual code into a function and simply bind to the function name.\nThis way it becomes significantly easier to test the function while\nediting, and the result is usually more readable as well.\n\nNOTE:\n Special input functions cannot be combined with ordinary shell\n script commands. The commands must be entirely a sequence of\n special input functions (from bind -f) or all shell script\n commands (i.e., valid fish script). To run special input functions\n from regular fish script, use commandline -f (see also\n commandline). If a script produces output, it should finish by\n calling commandline -f repaint to tell fish that a repaint is in\n order.\n\nIf no SEQUENCE is provided, all bindings (or just the bindings in the\ngiven MODE) are printed. If SEQUENCE is provided but no COMMAND, just\nthe binding matching that sequence is printed.\n\nTo save custom key bindings, put the bind statements into\nconfig.fish. Alternatively, fish also automatically executes a\nfunction called fish_user_key_bindings if it exists.\n\nKey bindings may use \"modes\", which mimics Vi's modal input behavior.\nThe default mode is \"default\". Every key binding applies to a single\nmode; you can specify which one with -M MODE. If the key binding\nshould change the mode, you can specify the new mode with -m\nNEW_MODE. The mode can be viewed and changed via the $fish_bind_mode\nvariable. If you want to change the mode from inside a fish function,\nuse set fish_bind_mode MODE.\n\nOPTIONS\nThe following options are available:\n\n-k or --key\n Specify a key name, such as 'left' or 'backspace' instead of a\n character sequence\n\n-K or --key-names\n Display a list of available key names. Specifying -a or --all\n includes keys that don't have a known mapping\n\n-f or --function-names\n Display a list of available input functions\n\n-L or --list-modes\n Display a list of defined bind modes\n\n-M MODE or --mode MODE\n Specify a bind mode that the bind is used in. Defaults to\n \"default\"\n\n-m NEW_MODE or --sets-mode NEW_MODE\n Change the current mode to NEW_MODE after this binding is\n executed\n\n-e or --erase\n Erase the binding with the given sequence and mode instead of\n defining a new one. Multiple sequences can be specified with\n this flag. Specifying -a or --all with -M or --mode erases\n all binds in the given mode regardless of sequence.\n Specifying -a or --all without -M or --mode erases all binds\n in all modes regardless of sequence.\n\n-a or --all\n See --erase and --key-names\n\n--preset and --user\n Specify if bind should operate on user or preset bindings.\n User bindings take precedence over preset bindings when fish\n looks up mappings. By default, all bind invocations work on\n the \"user\" level except for listing, which will show both\n levels. All invocations except for inserting new bindings can\n operate on both levels at the same time (if both --preset and\n --user are given). --preset should only be used in full\n binding sets (like when working on fish_vi_key_bindings).\n\n-s or --silent\n Silences some of the error messages, including for unknown key\n names and unbound sequences.\n\n-h or --help\n Displays help about using this command.\n\nSPECIAL INPUT FUNCTIONS\nThe following special input functions are available:\n\nand only execute the next function if the previous succeeded\n (note: only some functions report success)\n\naccept-autosuggestion\n accept the current autosuggestion\n\nbackward-char\n move one character to the left. If the completion pager is\n active, select the previous completion instead.\n\nbackward-bigword\n move one whitespace-delimited word to the left\n\nbackward-delete-char\n deletes one character of input to the left of the cursor\n\nbackward-kill-bigword\n move the whitespace-delimited word to the left of the cursor\n to the killring\n\nbackward-kill-line\n move everything from the beginning of the line to the cursor\n to the killring\n\nbackward-kill-path-component\n move one path component to the left of the cursor to the\n killring. A path component is everything likely to belong to a\n path component, i.e. not any of the following: /={,}'\":@\n |;<>&, plus newlines and tabs.\n\nbackward-kill-word\n move the word to the left of the cursor to the killring. The\n \"word\" here is everything up to punctuation or whitespace.\n\nbackward-word\n move one word to the left\n\nbeginning-of-buffer\n moves to the beginning of the buffer, i.e. the start of the\n first line\n\nbeginning-of-history\n move to the beginning of the history\n\nbeginning-of-line\n move to the beginning of the line\n\nbegin-selection\n start selecting text\n\ncancel cancel the current commandline and replace it with a new empty\n one\n\ncancel-commandline\n cancel the current commandline and replace it with a new empty\n one, leaving the old one in place with a marker to show that\n it was cancelled\n\ncapitalize-word\n make the current word begin with a capital letter\n\nclear-screen\n clears the screen and redraws the prompt. if the terminal\n doesn't support clearing the screen it is the same as repaint.\n\ncomplete\n guess the remainder of the current token\n\ncomplete-and-search\n invoke the searchable pager on completion options (for\n convenience, this also moves backwards in the completion\n pager)\n\ndelete-char\n delete one character to the right of the cursor\n\ndelete-or-exit\n delete one character to the right of the cursor, or exit the\n shell if the commandline is empty\n\ndown-line\n move down one line\n\ndowncase-word\n make the current word lowercase\n\nend-of-buffer\n moves to the end of the buffer, i.e. the end of the first line\n\nend-of-history\n move to the end of the history\n\nend-of-line\n move to the end of the line\n\nend-selection\n end selecting text\n\nexpand-abbr\n expands any abbreviation currently under the cursor\n\nexecute\n run the current commandline\n\nexit exit the shell\n\nforward-bigword\n move one whitespace-delimited word to the right\n\nforward-char\n move one character to the right; or if at the end of the\n commandline, accept the current autosuggestion. If the\n completion pager is active, select the next completion\n instead.\n\nforward-single-char\n move one character to the right; or if at the end of the\n commandline, accept a single char from the current\n autosuggestion.\n\nforward-word\n move one word to the right; or if at the end of the\n commandline, accept one word from the current autosuggestion.\n\nhistory-pager\n invoke the searchable pager on history (incremental search);\n or if the history pager is already active, search further\n backwards in time.\n\nhistory-pager-delete\n permanently delete the history item selected in the history\n pager\n\nhistory-search-backward\n search the history for the previous match\n\nhistory-search-forward\n search the history for the next match\n\nhistory-prefix-search-backward\n search the history for the previous prefix match\n\nhistory-prefix-search-forward\n search the history for the next prefix match\n\nhistory-token-search-backward\n search the history for the previous matching argument\n\nhistory-token-search-forward\n search the history for the next matching argument\n\nforward-jump and backward-jump\n read another character and jump to its next occurence\n after/before the cursor\n\nforward-jump-till and backward-jump-till\n jump to right before the next occurence\n\nrepeat-jump and repeat-jump-reverse\n redo the last jump in the same/opposite direction\n\nkill-bigword\n move the next whitespace-delimited word to the killring\n\nkill-line\n move everything from the cursor to the end of the line to the\n killring\n\nkill-selection\n move the selected text to the killring\n\nkill-whole-line\n move the line (including the following newline) to the\n killring. If the line is the last line, its preceeding newline\n is also removed\n\nkill-inner-line\n move the line (without the following newline) to the killring\n\nkill-word\n move the next word to the killring\n\nnextd-or-forward-word\n if the commandline is empty, then move forward in the\n directory history, otherwise move one word to the right; or if\n at the end of the commandline, accept one word from the\n current autosuggestion.\n\nor only execute the next function if the previous did not succeed\n (note: only some functions report failure)\n\npager-toggle-search\n toggles the search field if the completions pager is visible;\n or if used after history-pager, search forwards in time.\n\nprevd-or-backward-word\n if the commandline is empty, then move backward in the\n directory history, otherwise move one word to the left\n\nrepaint\n reexecutes the prompt functions and redraws the prompt (also\n force-repaint for backwards-compatibility)\n\nrepaint-mode\n reexecutes the fish_mode_prompt and redraws the prompt. This\n is useful for vi-mode. If no fish_mode_prompt exists or it\n prints nothing, it acts like a normal repaint.\n\nself-insert\n inserts the matching sequence into the command line\n\nself-insert-notfirst\n inserts the matching sequence into the command line, unless\n the cursor is at the beginning\n\nsuppress-autosuggestion\n remove the current autosuggestion. Returns true if there was a\n suggestion to remove.\n\nswap-selection-start-stop\n go to the other end of the highlighted text without changing\n the selection\n\ntranspose-chars\n transpose two characters to the left of the cursor\n\ntranspose-words\n transpose two words to the left of the cursor\n\ntogglecase-char\n toggle the capitalisation (case) of the character under the\n cursor\n\ntogglecase-selection\n toggle the capitalisation (case) of the selection\n\ninsert-line-under\n add a new line under the current line\n\ninsert-line-over\n add a new line over the current line\n\nup-line\n move up one line\n\nundo and redo\n revert or redo the most recent edits on the command line\n\nupcase-word\n make the current word uppercase\n\nyank insert the latest entry of the killring into the buffer\n\nyank-pop\n rotate to the previous entry of the killring\n\nADDITIONAL FUNCTIONS\nThe following functions are included as normal functions, but are\nparticularly useful for input editing:\n\nup-or-search and down-or-search\n move the cursor or search the history depending on the cursor\n position and current mode\n\nedit_command_buffer\n open the visual editor (controlled by the VISUAL or EDITOR\n environment variables) with the current command-line contents\n\nfish_clipboard_copy\n copy the current selection to the system clipboard\n\nfish_clipboard_paste\n paste the current selection from the system clipboard before\n the cursor\n\nfish_commandline_append\n append the argument to the command-line. If the command-line\n already ends with the argument, this removes the suffix\n instead. Starts with the last command from history if the\n command-line is empty.\n\nfish_commandline_prepend\n prepend the argument to the command-line. If the command-line\n already starts with the argument, this removes the prefix\n instead. Starts with the last command from history if the\n command-line is empty.\n\nEXAMPLES\nExit the shell when Control+D is pressed:\n\n bind \\cd 'exit'\n\nPerform a history search when Page Up is pressed:\n\n bind -k ppage history-search-backward\n\nTurn on Vi key bindings and rebind Control+C to clear the input line:\n\n set -g fish_key_bindings fish_vi_key_bindings\n bind -M insert \\cc kill-whole-line repaint\n\nLaunch git diff and repaint the commandline afterwards when Control+G\nis pressed:\n\n bind \\cg 'git diff; commandline -f repaint'\n\nTERMINAL LIMITATIONS\nUnix terminals, like the ones fish operates in, are at heart 70s\ntechnology. They have some limitations that applications running\ninside them can't workaround.\n\nFor instance, the control key modifies a character by setting the top\nthree bits to 0. This means:\n\n• Many characters + control are indistinguishable from other keys.\n Control+I is tab, Control+J is newline (\\n).\n\n• Control and shift don't work simultaneously\n\nOther keys don't have a direct encoding, and are sent as escape\nsequences. For example → (Right) often sends \\e\\[C. These can differ\nfrom terminal to terminal, and the mapping is typically available in\nterminfo(5). Sometimes however a terminal identifies as e.g.\nxterm-256color for compatibility, but then implements xterm's\nsequences incorrectly.\n\nSPECIAL CASE: THE ESCAPE CHARACTER\nThe escape key can be used standalone, for example, to switch from\ninsertion mode to normal mode when using Vi keybindings. Escape can\nalso be used as a \"meta\" key, to indicate the start of an escape\nsequence, like for function or arrow keys. Custom bindings can also\nbe defined that begin with an escape character.\n\nHolding alt and something else also typically sends escape, for\nexample holding alt+a will send an escape character and then an \"a\".\n\nfish waits for a period after receiving the escape character, to\ndetermine whether it is standalone or part of an escape sequence.\nWhile waiting, additional key presses make the escape key behave as a\nmeta key. If no other key presses come in, it is handled as a\nstandalone escape. The waiting period is set to 30 milliseconds (0.03\nseconds). It can be configured by setting the fish_escape_delay_ms\nvariable to a value between 10 and 5000 ms. This can be a universal\nvariable that you set once from an interactive session. So the\nescape character has its own timeout configured with\nfish_escape_delay_ms.\n\nSee also Key sequences.",args:"bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE] [--preset | --user] [-s | --silent] [-k | --key] SEQUENCE COMMAND ...\nbind [(-M | --mode) MODE] [-k | --key] [--preset] [--user] SEQUENCE\nbind (-K | --key-names) [-a | --all] [--preset] [--user]\nbind (-f | --function-names)\nbind (-L | --list-modes)\nbind (-e | --erase) [(-M | --mode) MODE] [--preset] [--user] [-a | --all] | [-k | --key] SEQUENCE ..."},block:{shortDescription:"temporarily block delivery of events",description:"block prevents events triggered by fish or the emit command from\nbeing delivered and acted upon while the block is in place.\n\nIn functions, block can be useful while performing work that should\nnot be interrupted by the shell.\n\nThe block can be removed. Any events which triggered while the block\nwas in place will then be delivered.\n\nEvent blocks should not be confused with code blocks, which are\ncreated with begin, if, while or for\n\nWithout options, the block command acts with function scope.\n\nThe following options are available:\n\n-l or --local\n Release the block automatically at the end of the current\n innermost code block scope.\n\n-g or --global\n Never automatically release the lock.\n\n-e or --erase\n Release global block.\n\n-h or --help\n Displays help about using this command.\n\nEXAMPLE\n\n # Create a function that listens for events\n function --on-event foo foo; echo 'foo fired'; end\n\n # Block the delivery of events\n block -g\n\n emit foo\n # No output will be produced\n\n block -e\n # 'foo fired' will now be printed\n\nNOTES\nEvents are only received from the current fish process as there is no\nway to send events from one fish process to another (yet).",args:"block [(--local | --global)]\nblock --erase"},break:{shortDescription:"Exit the current loop",description:"Terminate the execution of the nearest enclosing `while` or `for` loop and proceed with the next command after the loop."},breakpoint:{shortDescription:"Launch debug mode",description:"Pause execution and launch an interactive debug prompt. This is useful for inspecting the state of a script at a specific point."},builtin:{shortDescription:"run a builtin command",description:"builtin forces the shell to use a builtin command named BUILTIN,\nrather than a function or external program.\n\nThe following options are available:\n\n-n or --names\n Lists the names of all defined builtins.\n\n-q or --query BUILTIN\n Tests if any of the specified builtins exist. If any exist, it\n returns 0, 1 otherwise.\n\n-h or --help\n Displays help about using this command.\n\nEXAMPLE\n\n builtin jobs\n # executes the jobs builtin, even if a function named jobs exists",args:"builtin [OPTIONS] BUILTINNAME\nbuiltin --query BUILTINNAME ...\nbuiltin --names"},case:{shortDescription:"Match a value against patterns",description:"Within a `switch` block, the `case` command specifies patterns to match against the given value, executing the associated block if a match is found.",args:"PATTERN..."},cd:{shortDescription:"change directory",description:"cd changes the current working directory.\n\nIf DIRECTORY is given, it will become the new directory. If no\nparameter is given, the HOME environment variable will be used.\n\nIf DIRECTORY is a relative path, all the paths in the CDPATH will be\ntried as prefixes for it, in addition to PWD. It is recommended to\nkeep . as the first element of CDPATH, or PWD will be tried last.\n\nFish will also try to change directory if given a command that looks\nlike a directory (starting with ., / or ~, or ending with /), without\nexplicitly requiring cd.\n\nFish also ships a wrapper function around the builtin cd that\nunderstands cd - as changing to the previous directory. See also\nprevd. This wrapper function maintains a history of the 25 most\nrecently visited directories in the $dirprev and $dirnext global\nvariables. If you make those universal variables your cd history is\nshared among all fish instances.\n\nAs a special case, cd . is equivalent to cd $PWD, which is useful in\ncases where a mountpoint has been recycled or a directory has been\nremoved and recreated.\n\nThe --help or -h option displays help about using this command, and\ndoes not change the directory.\n\nEXAMPLES\n\n cd\n # changes the working directory to your home directory.\n\n cd /usr/src/fish-shell\n # changes the working directory to /usr/src/fish-shell\n\nSEE ALSO\nNavigate directories using the directory history or the directory\nstack",args:"cd [DIRECTORY]"},command:{shortDescription:"run a program",description:"command forces the shell to execute the program COMMANDNAME and\nignore any functions or builtins with the same name.\n\nThe following options are available:\n\n-a or --all\n Prints all COMMAND found in PATH, in the order found.\n\n-q or --query\n Silence output and print nothing, setting only exit status.\n Implies --search. For compatibility, this is also --quiet\n (deprecated).\n\n-v (or -s or --search)\n Prints the external command that would be executed, or prints\n nothing if no file with the specified name could be found in\n PATH.\n\n-h or --help\n Displays help about using this command.\n\nWith the -v option, command treats every argument as a separate\ncommand to look up and sets the exit status to 0 if any of the\nspecified commands were found, or 127 if no commands could be found.\n--quiet used with -v prevents commands being printed, like type -q.\n\nEXAMPLES\ncommand ls executes the ls program, even if an ls function also exists.\ncommand -s ls prints the path to the ls program.\ncommand -q git; and command git log runs git log only if git exists.",args:"command [OPTIONS] [COMMANDNAME [ARG ...]]"},commandline:{shortDescription:"set or get the current command line buffer",description:'commandline can be used to set or get the current contents of the\ncommand line buffer.\n\nWith no parameters, commandline returns the current value of the\ncommand line.\n\nWith CMD specified, the command line buffer is erased and replaced\nwith the contents of CMD.\n\nThe following options are available:\n\n-C or --cursor\n Set or get the current cursor position, not the contents of\n the buffer. If no argument is given, the current cursor\n position is printed, otherwise the argument is interpreted as\n the new cursor position. If one of the options -j, -p or -t\n is given, the position is relative to the respective substring\n instead of the entire command line buffer.\n\n-B or --selection-start\n Get current position of the selection start in the buffer.\n\n-E or --selection-end\n Get current position of the selection end in the buffer.\n\n-f or --function\n Causes any additional arguments to be interpreted as input\n functions, and puts them into the queue, so that they will be\n read before any additional actual key presses are. This\n option cannot be combined with any other option. See bind for\n a list of input functions.\n\n-h or --help\n Displays help about using this command.\n\nThe following options change the way commandline updates the command\nline buffer:\n\n-a or --append\n Do not remove the current commandline, append the specified\n string at the end of it.\n\n-i or --insert\n Do not remove the current commandline, insert the specified\n string at the current cursor position\n\n-r or --replace\n Remove the current commandline and replace it with the\n specified string (default)\n\nThe following options change what part of the commandline is printed\nor updated:\n\n-b or --current-buffer\n Select the entire commandline, not including any displayed\n autosuggestion (default).\n\n-j or --current-job\n Select the current job - a job here is one pipeline. Stops at\n logical operators or terminators (;, &, and newlines).\n\n-p or --current-process\n Select the current process - a process here is one command.\n Stops at logical operators, terminators, and pipes.\n\n-s or --current-selection\n Selects the current selection\n\n-t or --current-token\n Selects the current token\n\nThe following options change the way commandline prints the current\ncommandline buffer:\n\n-c or --cut-at-cursor\n Only print selection up until the current cursor position. If\n combined with --tokenize, this will print up until the last\n completed token - excluding the token the cursor is in. This\n is typically what you would want for instance in completions.\n To get both, use both commandline --cut-at-cursor --tokenize;\n commandline --cut-at-cursor --current-token, or commandline\n -co; commandline -ct for short.\n\n-o or --tokenize\n Tokenize the selection and print one string-type token per\n line.\n\nIf commandline is called during a call to complete a given string\nusing complete -C STRING, commandline will consider the specified\nstring to be the current contents of the command line.\n\nThe following options output metadata about the commandline state:\n\n-L or --line\n Print the line that the cursor is on, with the topmost line\n starting at 1.\n\n-S or --search-mode\n Evaluates to true if the commandline is performing a history\n search.\n\n-P or --paging-mode\n Evaluates to true if the commandline is showing pager\n contents, such as tab completions.\n\n--paging-full-mode\n Evaluates to true if the commandline is showing pager\n contents, such as tab completions and all lines are shown (no\n "<n> more rows" message).\n\n--is-valid\n Returns true when the commandline is syntactically valid and\n complete. If it is, it would be executed when the execute\n bind function is called. If the commandline is incomplete,\n return 2, if erroneus, return 1.\n\nEXAMPLE\ncommandline -j $history[3] replaces the job under the cursor with the\nthird item from the command line history.\n\nIf the commandline contains\n\n > echo $flounder >&2 | less; and echo $catfish\n\n(with the cursor on the "o" of "flounder")\n\nThe echo $flounder >& is the first process, less the second and and\necho $catfish the third.\n\necho $flounder >&2 | less is the first job, and echo $catfish the\nsecond.\n\n$flounder is the current token.\n\nThe most common use for something like completions is\n\n set -l tokens (commandline -opc)\n\nwhich gives the current process (what is being completed), tokenized\ninto separate entries, up to but excluding the currently being\ncompleted token\n\nIf you are then also interested in the in-progress token, add\n\n:: set -l current (commandline -ct)\n\nNote that this makes it easy to render fish\'s infix matching moot -\nif possible it\'s best if the completions just print all possibilities\nand leave the matching to the current token up to fish\'s logic.\n\nMore examples:\n\n > commandline -t\n $flounder\n > commandline -ct\n $fl\n > commandline -b # or just commandline\n echo $flounder >&2 | less; and echo $catfish\n > commandline -p\n echo $flounder >&2\n > commandline -j\n echo $flounder >&2 | less',args:"commandline [OPTIONS] [CMD]"},complete:{shortDescription:"edit command-specific tab-completions",description:'complete defines, removes or lists completions for a command.\n\nFor an introduction to writing your own completions, see Writing your\nown completions in the fish manual.\n\nThe following options are available:\n\n-c or --command COMMAND\n Specifies that COMMAND is the name of the command. If there is\n no -c or -p, one non-option argument will be used as the\n command.\n\n-p or --path COMMAND\n Specifies that COMMAND is the absolute path of the command\n (optionally containing wildcards).\n\n-e or --erase\n Deletes the specified completion.\n\n-s or --short-option SHORT_OPTION\n Adds a short option to the completions list.\n\n-l or --long-option LONG_OPTION\n Adds a GNU-style long option to the completions list.\n\n-o or --old-option OPTION\n Adds an old-style short or long option (see below for\n details).\n\n-a or --arguments ARGUMENTS\n Adds the specified option arguments to the completions list.\n\n-k or --keep-order\n Keeps the order of ARGUMENTS instead of sorting\n alphabetically. Multiple complete calls with -k result in\n arguments of the later ones displayed first.\n\n-f or --no-files\n This completion may not be followed by a filename.\n\n-F or --force-files\n This completion may be followed by a filename, even if another\n applicable complete specified --no-files.\n\n-r or --require-parameter\n This completion must have an option argument, i.e. may not be\n followed by another option.\n\n-x or --exclusive\n Short for -r and -f.\n\n-w or --wraps WRAPPED_COMMAND\n Causes the specified command to inherit completions from\n WRAPPED_COMMAND (see below for details).\n\n-n or --condition CONDITION\n This completion should only be used if the CONDITION (a shell\n command) returns 0. This makes it possible to specify\n completions that should only be used in some cases. If\n multiple conditions are specified, fish will try them in the\n order they are specified until one fails or all succeeded.\n\n-C or --do-complete STRING\n Makes complete try to find all possible completions for the\n specified string. If there is no STRING, the current\n commandline is used instead.\n\n--escape\n When used with -C, escape special characters in completions.\n\n-h or --help\n Displays help about using this command.\n\nCommand-specific tab-completions in fish are based on the notion of\noptions and arguments. An option is a parameter which begins with a\nhyphen, such as -h, -help or --help. Arguments are parameters that do\nnot begin with a hyphen. Fish recognizes three styles of options, the\nsame styles as the GNU getopt library. These styles are:\n\n• Short options, like -a. Short options are a single character long,\n are preceded by a single hyphen and can be grouped together (like\n -la, which is equivalent to -l -a). Option arguments may be\n specified by appending the option with the value (-w32), or, if\n --require-parameter is given, in the following parameter (-w 32).\n\n• Old-style options, long like -Wall or -name or even short like -a.\n Old-style options can be more than one character long, are preceded\n by a single hyphen and may not be grouped together. Option\n arguments are specified by default following a space (-foo null) or\n after = (-foo=null).\n\n• GNU-style long options, like --colors. GNU-style long options can\n be more than one character long, are preceded by two hyphens, and\n can\'t be grouped together. Option arguments may be specified after\n a = (--quoting-style=shell), or, if --require-parameter is given,\n in the following parameter (--quoting-style shell).\n\nMultiple commands and paths can be given in one call to define the\nsame completions for multiple commands.\n\nMultiple command switches and wrapped commands can also be given to\ndefine multiple completions in one call.\n\nInvoking complete multiple times for the same command adds the new\ndefinitions on top of any existing completions defined for the\ncommand.\n\nWhen -a or --arguments is specified in conjunction with long, short,\nor old-style options, the specified arguments are only completed as\narguments for any of the specified options. If -a or --arguments is\nspecified without any long, short, or old-style options, the\nspecified arguments are used when completing non-option arguments to\nthe command (except when completing an option argument that was\nspecified with -r or --require-parameter).\n\nCommand substitutions found in ARGUMENTS should return a\nnewline-separated list of arguments, and each argument may optionally\nhave a tab character followed by the argument description.\nDescription given this way override a description given with -d or\n--description.\n\nDescriptions given with --description are also used to group options\ngiven with -s, -o or -l. Options with the same (non-empty)\ndescription will be listed as one candidate, and one of them will be\npicked. If the description is empty or no description was given this\nis skipped.\n\nThe -w or --wraps options causes the specified command to inherit\ncompletions from another command, "wrapping" the other command. The\nwrapping command can also have additional completions. A command can\nwrap multiple commands, and wrapping is transitive: if A wraps B, and\nB wraps C, then A automatically inherits all of C\'s completions.\nWrapping can be removed using the -e or --erase options. Wrapping\nonly works for completions specified with -c or --command and are\nignored when specifying completions with -p or --path.\n\nWhen erasing completions, it is possible to either erase all\ncompletions for a specific command by specifying complete -c COMMAND\n-e, or by specifying a specific completion option to delete.\n\nWhen complete is called without anything that would define or erase\ncompletions (options, arguments, wrapping, ...), it shows matching\ncompletions instead. So complete without any arguments shows all\nloaded completions, complete -c foo shows all loaded completions for\nfoo. Since completions are autoloaded, you will have to trigger them\nfirst.\n\nEXAMPLES\nThe short-style option -o for the gcc command needs a file argument:\n\n complete -c gcc -s o -r\n\nThe short-style option -d for the grep command requires one of read,\nskip or recurse:\n\n complete -c grep -s d -x -a "read skip recurse"\n\nThe su command takes any username as an argument. Usernames are given\nas the first colon-separated field in the file /etc/passwd. This can\nbe specified as:\n\n complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"\n\nThe rpm command has several different modes. If the -e or --erase\nflag has been specified, rpm should delete one or more packages, in\nwhich case several switches related to deleting packages are valid,\nlike the nodeps switch.\n\nThis can be written as:\n\n complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d "Don\'t check dependencies"\n\nwhere __fish_contains_opt is a function that checks the command line\nbuffer for the presence of a specified set of options.\n\nTo implement an alias, use the -w or --wraps option:\n\n complete -c hub -w git\n\nNow hub inherits all of the completions from git. Note this can also\nbe specified in a function declaration (function thing -w\notherthing).\n\n complete -c git\n\nShows all completions for git.\n\nAny command foo that doesn\'t support grouping multiple short options\nin one string (not supporting -xf as short for -x -f) or a short\noption and its value in one string (not supporting -d9 instead of -d\n9) should be specified as a single-character old-style option instead\nof as a short-style option; for example, complete -c foo -o s;\ncomplete -c foo -o v would never suggest foo -ov but rather foo -o\n-v.',args:"complete ((-c | --command) | (-p | --path)) COMMAND [OPTIONS]\ncomplete (-C | --do-complete) [--escape] STRING"},contains:{shortDescription:"test if a word is present in a list",description:"contains tests whether the set VALUES contains the string KEY. If\nso, contains exits with code 0; if not, it exits with code 1.\n\nThe following options are available:\n\n-i or --index\n Print the index (number of the element in the set) of the\n first matching element.\n\n-h or --help\n Displays help about using this command.\n\nNote that contains interprets all arguments starting with a - as an\noption to contains, until an -- argument is reached.\n\nSee the examples below.\n\nEXAMPLE\nIf animals is a list of animals, the following will test if animals\ncontains \"cat\":\n\n if contains cat $animals\n echo Your animal list is evil!\n end\n\nThis code will add some directories to PATH if they aren't yet\nincluded:\n\n for i in ~/bin /usr/local/bin\n if not contains $i $PATH\n set PATH $PATH $i\n end\n end\n\nWhile this will check if function hasargs is being ran with the -q\noption:\n\n function hasargs\n if contains -- -q $argv\n echo '$argv contains a -q option'\n end\n end\n\nThe -- here stops contains from treating -q to an option to itself.\nInstead it treats it as a normal string to check.",args:"contains [OPTIONS] KEY [VALUES ...]"},continue:{shortDescription:"Skip to the next iteration of a loop",description:"Within a `while` or `for` loop, `continue` skips the remaining commands in the current iteration and proceeds to the next iteration of the loop."},count:{shortDescription:"",description:""},disown:{shortDescription:"remove a process from the list of jobs",description:"disown removes the specified job from the list of jobs. The job\nitself continues to exist, but fish does not keep track of it any\nlonger.\n\nJobs in the list of jobs are sent a hang-up signal when fish\nterminates, which usually causes the job to terminate; disown allows\nthese processes to continue regardless.\n\nIf no process is specified, the most recently-used job is removed\n(like bg and fg). If one or more PIDs are specified, jobs with the\nspecified process IDs are removed from the job list. Invalid jobs are\nignored and a warning is printed.\n\nIf a job is stopped, it is sent a signal to continue running, and a\nwarning is printed. It is not possible to use the bg builtin to\ncontinue a job once it has been disowned.\n\ndisown returns 0 if all specified jobs were disowned successfully,\nand 1 if any problems were encountered.\n\nThe --help or -h option displays help about using this command.\n\nEXAMPLE\nfirefox &; disown will start the Firefox web browser in the\nbackground and remove it from the job list, meaning it will not be\nclosed when the fish process is closed.\n\ndisown (jobs -p) removes all jobs from the job list without\nterminating them.",args:"disown [PID ...]"},echo:{shortDescription:"",description:""},else:{shortDescription:"Execute commands if the previous condition was false",description:"In an `if` block, the `else` section contains commands that execute if none of the preceding `if` or `else if` conditions were true."},emit:{shortDescription:"emit a generic event",description:"emit emits, or fires, an event. Events are delivered to, or caught\nby, special functions called event handlers. The arguments are passed\nto the event handlers as function arguments.\n\nThe --help or -h option displays help about using this command.\n\nEXAMPLE\nThe following code first defines an event handler for the generic\nevent named 'test_event', and then emits an event of that type.\n\n function event_test --on-event test_event\n echo event test: $argv\n end\n\n emit test_event something\n\nNOTES\nNote that events are only sent to the current fish process as there\nis no way to send events from one fish process to another.",args:"emit EVENT_NAME [ARGUMENTS ...]"},end:{shortDescription:"Terminate a block of code",description:"Conclude a block of code initiated by constructs like `if`, `switch`, `while`, `for`, or `function`."},eval:{shortDescription:"Execute arguments as a command",description:"Concatenate all arguments into a single command and execute it. This allows for dynamic construction and execution of commands.",args:"COMMAND..."},exec:{shortDescription:"execute command in current process",description:"exec replaces the currently running shell with a new command. On\nsuccessful completion, exec never returns. exec cannot be used inside\na pipeline.\n\nThe --help or -h option displays help about using this command.\n\nEXAMPLE\nexec emacs starts up the emacs text editor, and exits fish. When\nemacs exits, the session will terminate.",args:"exec COMMAND"},exit:{shortDescription:"exit the shell",description:"exit is a special builtin that causes the shell to exit. Either 255\nor the CODE supplied is used, whichever is lesser. Otherwise, the\nexit status will be that of the last command executed.\n\nIf exit is called while sourcing a file (using the source builtin)\nthe rest of the file will be skipped, but the shell itself will not\nexit.\n\nThe --help or -h option displays help about using this command.",args:"exit [CODE]"},false:{shortDescription:"Return an unsuccessful result",description:"A command that returns a non-zero exit status, indicating failure. It is often used in scripts to represent a false condition."},fg:{shortDescription:"bring job to foreground",description:"The fg builtin brings the specified job to the foreground, resuming\nit if it is stopped. While a foreground job is executed, fish is\nsuspended. If no job is specified, the last job to be used is put in\nthe foreground. If PID is specified, the job containing a process\nwith the specified process ID is put in the foreground.\n\nFor compatibility with other shells, job expansion syntax is\nsupported for fg. A PID of the format %1 will foreground job 1. Job\nnumbers can be seen in the output of jobs.\n\nThe --help or -h option displays help about using this command.\n\nEXAMPLE\nfg will put the last job in the foreground.\n\nfg %3 will put job 3 into the foreground.",args:"fg [PID]"},for:{shortDescription:"perform a set of commands multiple times",description:"for is a loop construct. It will perform the commands specified by\nCOMMANDS multiple times. On each iteration, the local variable\nspecified by VARNAME is assigned a new value from VALUES. If VALUES\nis empty, COMMANDS will not be executed at all. The VARNAME is\nvisible when the loop terminates and will contain the last value\nassigned to it. If VARNAME does not already exist it will be set in\nthe local scope. For our purposes if the for block is inside a\nfunction there must be a local variable with the same name. If the\nfor block is not nested inside a function then global and universal\nvariables of the same name will be used if they exist.\n\nMuch like set, for does not modify $status, but the evaluation of its\nsubordinate commands can.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\n\n for i in foo bar baz; echo $i; end\n\n # would output:\n foo\n bar\n baz\n\nNOTES\nThe VARNAME was local to the for block in releases prior to 3.0.0.\nThis means that if you did something like this:\n\n for var in a b c\n if break_from_loop\n break\n end\n end\n echo $var\n\nThe last value assigned to var when the loop terminated would not be\navailable outside the loop. What echo $var would write depended on\nwhat it was set to before the loop was run. Likely nothing.",args:"for VARNAME in [VALUES ...]; COMMANDS ...; end"},function:{shortDescription:"create a function",description:'function creates a new function NAME with the body BODY.\n\nA function is a list of commands that will be executed when the name\nof the function is given as a command.\n\nThe following options are available:\n\n-a NAMES or --argument-names NAMES\n Assigns the value of successive command-line arguments to the\n names given in NAMES. These are the same arguments given in\n argv, and are still available there. See also Argument\n Handling.\n\n-d DESCRIPTION or --description DESCRIPTION\n A description of what the function does, suitable as a\n completion description.\n\n-w WRAPPED_COMMAND or --wraps WRAPPED_COMMAND\n Inherit completions from the given WRAPPED_COMMAND. See the\n documentation for complete for more information.\n\n-e EVENT_NAME or --on-event EVENT_NAME\n Run this function when the specified named event is emitted.\n Fish internally generates named events, for example, when\n showing the prompt. Custom events can be emitted using the\n emit command.\n\n-v VARIABLE_NAME or --on-variable VARIABLE_NAME\n Run this function when the variable VARIABLE_NAME changes\n value. Note that fish makes no guarantees on any particular\n timing or even that the function will be run for every single\n set. Rather it will be run when the variable has been set at\n least once, possibly skipping some values or being run when\n the variable has been set to the same value (except for\n universal variables set in other shells - only changes in the\n value will be picked up for those).\n\n-j PID or --on-job-exit PID\n Run this function when the job containing a child process with\n the given process identifier PID exits. Instead of a PID, the\n string \'caller\' can be specified. This is only allowed when in\n a command substitution, and will result in the handler being\n triggered by the exit of the job which created this command\n substitution.\n\n-p PID or --on-process-exit PID\n Run this function when the fish child process with process ID\n PID exits. Instead of a PID, for backward compatibility,\n "%self" can be specified as an alias for $fish_pid, and the\n function will be run when the current fish instance exits.\n\n-s SIGSPEC or --on-signal SIGSPEC\n Run this function when the signal SIGSPEC is delivered.\n SIGSPEC can be a signal number, or the signal name, such as\n SIGHUP (or just HUP). Note that the signal must have been\n delivered to fish; for example, Ctrl-C sends SIGINT to the\n foreground process group, which will not be fish if you are\n running another command at the time. Observing a signal will\n prevent fish from exiting in response to that signal.\n\n-S or --no-scope-shadowing\n Allows the function to access the variables of calling\n functions. Normally, any variables inside the function that\n have the same name as variables from the calling function are\n "shadowed", and their contents are independent of the calling\n function.\n\n It\'s important to note that this does not capture referenced\n variables or the scope at the time of function declaration! At\n this time, fish does not have any concept of closures, and\n variable lifetimes are never extended. In other words, by\n using --no-scope-shadowing the scope of the function each time\n it is run is shared with the scope it was called from rather\n than the scope it was defined in.\n\n-V or --inherit-variable NAME\n Snapshots the value of the variable NAME and defines a local\n variable with that same name and value when the function is\n defined. This is similar to a closure in other languages like\n Python but a bit different. Note the word "snapshot" in the\n first sentence. If you change the value of the variable after\n defining the function, even if you do so in the same scope\n (typically another function) the new value will not be used by\n the function you just created using this option. See the\n function notify example below for how this might be used.\n\nThe event handler switches (on-event, on-variable, on-job-exit,\non-process-exit and on-signal) cause a function to run automatically\nat specific events. New named events for --on-event can be fired\nusing the emit builtin. Fish already generates a few events, see\nEvent handlers for more.\n\nFunctions may not be named the same as a reserved keyword. These are\nelements of fish syntax or builtin commands which are essential for\nthe operations of the shell. Current reserved words are [, , and,\nargparse, begin, break, builtin, case, command, continue, else, end,\neval, exec, for, function, if, not, or, read, return, set, status,\nstring, switch, test, time, and while.\n\nEXAMPLE\n\n function ll\n ls -l $argv\n end\n\nwill run the ls command, using the -l option, while passing on any\nadditional files and switches to ls.\n\n function mkdir -d "Create a directory and set CWD"\n command mkdir $argv\n if test $status = 0\n switch $argv[(count $argv)]\n case \'-*\'\n\n case \'*\'\n cd $argv[(count $argv)]\n return\n end\n end\n end\n\nThis will run the mkdir command, and if it is successful, change the\ncurrent working directory to the one just created.\n\n function notify\n set -l job (jobs -l -g)\n or begin; echo "There are no jobs" >&2; return 1; end\n\n function _notify_job$job --on-job-exit $job --inherit-variable job\n echo -n \\a # beep\n functions -e _notify_job$job\n end\n end\n\nThis will beep when the most recent job completes.\n\nNOTES\nEvents are only received from the current fish process as there is no\nway to send events from one fish process to another.\n\nSEE MORE\nFor more explanation of how functions fit into fish, see Functions.',args:"function NAME [OPTIONS]; BODY; end"},functions:{shortDescription:"print or erase functions",description:"functions prints or erases functions.\n\nThe following options are available:\n\n-a or --all\n Lists all functions, even those whose name starts with an\n underscore.\n\n-c or --copy OLDNAME NEWNAME\n Creates a new function named NEWNAME, using the definition of\n the OLDNAME function.\n\n-d or --description DESCRIPTION\n Changes the description of this function.\n\n-e or --erase\n Causes the specified functions to be erased. This also means\n that it is prevented from autoloading in the current session.\n Use funcsave to remove the saved copy.\n\n-D or --details\n Reports the path name where the specified function is defined\n or could be autoloaded, stdin if the function was defined\n interactively or on the command line or by reading standard\n input, - if the function was created via source, and n/a if\n the function isn't available. (Functions created via alias\n will return -, because alias uses source internally.) If the\n --verbose option is also specified then five lines are\n written:\n\n • the pathname as already described,\n\n • autoloaded, not-autoloaded or n/a,\n\n • the line number within the file or zero if not applicable,\n\n • scope-shadowing if the function shadows the vars in the\n calling function (the normal case if it wasn't defined with\n --no-scope-shadowing), else no-scope-shadowing, or n/a if\n the function isn't defined,\n\n • the function description minimally escaped so it is a single\n line, or n/a if the function isn't defined or has no\n description.\n\n You should not assume that only five lines will be written\n since we may add additional information to the output in the\n future.\n\n--no-details\n Turns off function path reporting, so just the definition will\n be printed.\n\n-n or --names\n Lists the names of all defined functions.\n\n-q or --query\n Tests if the specified functions exist.\n\n-v or --verbose\n Make some output more verbose.\n\n-H or --handlers\n Show all event handlers.\n\n-t or --handlers-type TYPE\n Show all event handlers matching the given TYPE.\n\n-h or --help\n Displays help about using this command.\n\nThe default behavior of functions, when called with no arguments, is\nto print the names of all defined functions. Unless the -a option is\ngiven, no functions starting with underscores are included in the\noutput.\n\nIf any non-option parameters are given, the definition of the\nspecified functions are printed.\n\nCopying a function using -c copies only the body of the function, and\ndoes not attach any event notifications from the original function.\n\nOnly one function's description can be changed in a single invocation\nof functions -d.\n\nThe exit status of functions is the number of functions specified in\nthe argument list that do not exist, which can be used in concert\nwith the -q option.\n\nEXAMPLES\n\n functions -n\n # Displays a list of currently-defined functions\n\n functions -c foo bar\n # Copies the 'foo' function to a new function called 'bar'\n\n functions -e bar\n # Erases the function ``bar``\n\nSEE MORE\nFor more explanation of how functions fit into fish, see Functions.",args:"functions [-a | --all] [-n | --names]\nfunctions [-D | --details] [-v] FUNCTION\nfunctions -c OLDNAME NEWNAME\nfunctions -d DESCRIPTION FUNCTION\nfunctions [-e | -q] FUNCTION ..."},history:{shortDescription:"show and manipulate command history",description:'history is used to search, delete, and otherwise manipulate the\nhistory of interactive commands.\n\nThe following operations (sub-commands) are available:\n\nsearch Returns history items matching the search string. If no search\n string is provided it returns all history items. This is the\n default operation if no other operation is specified. You only\n have to explicitly say history search if you wish to search\n for one of the subcommands. The --contains search option will\n be used if you don\'t specify a different search option.\n Entries are ordered newest to oldest unless you use the\n --reverse flag. If stdout is attached to a tty the output will\n be piped through your pager by the history function. The\n history builtin simply writes the results to stdout.\n\ndelete Deletes history items. The --contains search option will be\n used if you don\'t specify a different search option. If you\n don\'t specify --exact a prompt will be displayed before any\n items are deleted asking you which entries are to be deleted.\n You can enter the word "all" to delete all matching entries.\n You can enter a single ID (the number in square brackets) to\n delete just that single entry. You can enter more than one ID,\n or an ID range separated by a space to delete multiple\n entries. Just press [enter] to not delete anything. Note that\n the interactive delete behavior is a feature of the history\n function. The history builtin only supports --exact\n --case-sensitive deletion.\n\nmerge Immediately incorporates history changes from other sessions.\n Ordinarily fish ignores history changes from sessions started\n after the current one. This command applies those changes\n immediately.\n\nsave Immediately writes all changes to the history file. The shell\n automatically saves the history file; this option is provided\n for internal use and should not normally need to be used by\n the user.\n\nclear Clears the history file. A prompt is displayed before the\n history is erased asking you to confirm you really want to\n clear all history unless builtin history is used.\n\nclear-session\n Clears the history file from all activity of the current\n session. Note: If history merge or builtin history merge is\n run in a session, only the history after this will be erased.\n\nThe following options are available:\n\nThese flags can appear before or immediately after one of the\nsub-commands listed above.\n\n-C or --case-sensitive\n Does a case-sensitive search. The default is case-insensitive.\n Note that prior to fish 2.4.0 the default was case-sensitive.\n\n-c or --contains\n Searches items in the history that contain the specified text\n string. This is the default for the --search flag. This is not\n currently supported by the delete subcommand.\n\n-e or --exact\n Searches or deletes items in the history that exactly match\n the specified text string. This is the default for the delete\n subcommand. Note that the match is case-insensitive by\n default. If you really want an exact match, including letter\n case, you must use the -C or --case-sensitive flag.\n\n-p or --prefix\n Searches items in the history that begin with the specified\n text string. This is not currently supported by the delete\n subcommand.\n\n-t or --show-time\n Prepends each history entry with the date and time the entry\n was recorded. By default it uses the strftime format # %c%n.\n You can specify another format; e.g., --show-time="%Y-%m-%d\n %H:%M:%S " or --show-time="%a%I%p". The short option, -t,\n doesn\'t accept a strftime format string; it only uses the\n default format. Any strftime format is allowed, including %s\n to get the raw UNIX seconds since the epoch.\n\n-z or --null\n Causes history entries written by the search operations to be\n terminated by a NUL character rather than a newline. This\n allows the output to be processed by read -z to correctly\n handle multiline history entries.\n\n-*NUMBER* -n NUMBER or --max NUMBER\n Limits the matched history items to the first NUMBER matching\n entries. This is only valid for history search.\n\n-R or --reverse\n Causes the history search results to be ordered oldest to\n newest. Which is the order used by most shells. The default is\n newest to oldest.\n\n-h or --help\n Displays help for this command.\n\nEXAMPLE\n\n history clear\n # Deletes all history items\n\n history search --contains "foo"\n # Outputs a list of all previous commands containing the string "foo".\n\n history delete --prefix "foo"\n # Interactively deletes commands which start with "foo" from the history.\n # You can select more than one entry by entering their IDs separated by a space.\n\nCUSTOMIZING THE NAME OF THE HISTORY FILE\nBy default interactive commands are logged to\n$XDG_DATA_HOME/fish/fish_history (typically\n~/.local/share/fish/fish_history).\n\nYou can set the fish_history variable to another name for the current\nshell session. The default value (when the variable is unset) is fish\nwhich corresponds to $XDG_DATA_HOME/fish/fish_history. If you set it\nto e.g. fun, the history would be written to\n$XDG_DATA_HOME/fish/fun_history. An empty string means history will\nnot be stored at all. This is similar to the private session features\nin web browsers.\n\nYou can change fish_history at any time (by using set -x fish_history\n"session_name") and it will take effect right away. If you set it to\n"default", it will use the default session name (which is "fish").\n\nOther shells such as bash and zsh use a variable named HISTFILE for a\nsimilar purpose. Fish uses a different name to avoid conflicts and\nsignal that the behavior is different (session name instead of a file\npath). Also, if you set the var to anything other than fish or\ndefault it will inhibit importing the bash history. That\'s because\nthe most common use case for this feature is to avoid leaking private\nor sensitive history when giving a presentation.\n\nNOTES\nIf you specify both --prefix and --contains the last flag seen is\nused.\n\nNote that for backwards compatibility each subcommand can also be\nspecified as a long option. For example, rather than history search\nyou can type history --search. Those long options are deprecated and\nwill be removed in a future release.',args:"history [search] [--show-time] [--case-sensitive]\n[--exact | --prefix | --contains] [--max N] [--null] [--reverse]\n [SEARCH_STRING ...]\nhistory delete [--case-sensitive]\n [--exact | --prefix | --contains] SEARCH_STRING ...\nhistory merge\nhistory save\nhistory clear\nhistory clear-session"},if:{shortDescription:"conditionally execute a command",description:'if will execute the command CONDITION. If the condition\'s exit status\nis 0, the commands COMMANDS_TRUE will execute. If the exit status is\nnot 0 and else is given, COMMANDS_FALSE will be executed.\n\nYou can use and or or in the condition. See the second example below.\n\nThe exit status of the last foreground command to exit can always be\naccessed using the $status variable.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nThe following code will print foo.txt exists if the file foo.txt\nexists and is a regular file, otherwise it will print bar.txt exists\nif the file bar.txt exists and is a regular file, otherwise it will\nprint foo.txt and bar.txt do not exist.\n\n if test -f foo.txt\n echo foo.txt exists\n else if test -f bar.txt\n echo bar.txt exists\n else\n echo foo.txt and bar.txt do not exist\n end\n\nThe following code will print "foo.txt exists and is readable" if\nfoo.txt is a regular file and readable\n\n if test -f foo.txt\n and test -r foo.txt\n echo "foo.txt exists and is readable"\n end',args:"if CONDITION; COMMANDS_TRUE ...;\n[else if CONDITION2; COMMANDS_TRUE2 ...;]\n[else; COMMANDS_FALSE ...;]\nend"},jobs:{shortDescription:"print currently running jobs",description:"jobs prints a list of the currently running jobs and their status.\n\njobs accepts the following options:\n\n-c or --command\n Prints the command name for each process in jobs.\n\n-g or --group\n Only prints the group ID of each job.\n\n-l or --last\n Prints only the last job to be started.\n\n-p or --pid\n Prints the process ID for each process in all jobs.\n\n-q or --query\n Prints no output for evaluation of jobs by exit status only.\n For compatibility with old fish versions this is also --quiet\n (but this is deprecated).\n\n-h or --help\n Displays help about using this command.\n\nOn systems that support this feature, jobs will print the CPU usage\nof each job since the last command was executed. The CPU usage is\nexpressed as a percentage of full CPU activity. Note that on\nmultiprocessor systems, the total activity may be more than 100%.\n\nArguments of the form PID or %JOBID restrict the output to jobs with\nthe selected process identifiers or job numbers respectively.\n\nIf the output of jobs is redirected or if it is part of a command\nsubstitution, the column header that is usually printed is omitted,\nmaking it easier to parse.\n\nThe exit status of jobs is 0 if there are running background jobs and\n1 otherwise.\n\nEXAMPLE\njobs outputs a summary of the current jobs, such as two long-running\ntasks in this example:\n\n Job Group State Command\n 2 26012 running nc -l 55232 < /dev/random &\n 1 26011 running python tests/test_11.py &",args:"jobs [OPTIONS] [PID | %JOBID]"},math:{shortDescription:"perform mathematics calculations",description:'math performs mathematical calculations. It supports simple\noperations such as addition, subtraction, and so on, as well as\nfunctions like abs(), sqrt() and ln().\n\nBy default, the output shows up to 6 decimal places. To change the\nnumber of decimal places, use the --scale option, including --scale=0\nfor integer output. Trailing zeroes will always be trimmed.\n\nKeep in mind that parameter expansion happens before expressions are\nevaluated. This can be very useful in order to perform calculations\ninvolving shell variables or the output of command substitutions, but\nit also means that parenthesis (()) and the asterisk (*) glob\ncharacter have to be escaped or quoted. x can also be used to denote\nmultiplication, but it needs to be followed by whitespace to\ndistinguish it from hexadecimal numbers.\n\nParentheses for functions are optional - math sin pi prints 0.\nHowever, a comma will bind to the inner function, so math pow sin 3,\n5 is an error because it tries to give sin the arguments 3 and 5.\nWhen in doubt, use parentheses.\n\nmath ignores whitespace between arguments and takes its input as\nmultiple arguments (internally joined with a space), so math 2 +2 and\nmath "2 + 2" work the same. math 2 2 is an error.\n\nThe following options are available:\n\n-s N or --scale N\n Sets the scale of the result. N must be an integer or the\n word "max" for the maximum scale. A scale of zero causes\n results to be truncated, not rounded. Any non-integer\n component is thrown away. So 3/2 returns 1 rather than 2\n which 1.5 would normally round to. This is for compatibility\n with bc which was the basis for this command prior to fish\n 3.0.0. Scale values greater than zero causes the result to be\n rounded using the usual rules to the specified number of\n decimal places.\n\n-b BASE or --base BASE\n Sets the numeric base used for output (math always understands\n hexadecimal numbers as input). It currently understands "hex"\n or "16" for hexadecimal and "octal" or "8" for octal and\n implies a scale of 0 (other scales cause an error), so it will\n truncate the result down to an integer. This might change in\n the future. Hex numbers will be printed with a 0x prefix.\n Octal numbers will have a prefix of 0 but aren\'t understood by\n math as input.\n\n-h or --help\n Displays help about using this command.\n\nRETURN VALUES\nIf the expression is successfully evaluated and doesn\'t\nover/underflow or return NaN the return status is zero (success) else\none.\n\nSYNTAX\nmath knows some operators, constants, functions and can (obviously)\nread numbers.\n\nFor numbers, . is always the radix character regardless of locale -\n2.5, not 2,5. Scientific notation (10e5) and hexadecimal (0xFF) are\nalso available.\n\nmath allows you to use underscores as visual separators for digit\ngrouping. For example, you can write 1_000_000, 0x_89_AB_CD_EF, and\n1.234_567_e89.\n\nOPERATORS\nmath knows the following operators:\n\n+ for addition\n\n- for subtraction\n\n* or x for multiplication. * is the glob character and needs to be\n quoted or escaped, x needs to be followed by whitespace or it\n looks like 0x hexadecimal notation.\n\n/ for division\n\n^ for exponentiation\n\n% for modulo\n\n( or ) for grouping. These need to be quoted or escaped because ()\n denotes a command substitution.\n\nThey are all used in an infix manner - 5 + 2, not + 5 2.\n\nCONSTANTS\nmath knows the following constants:\n\ne Euler\'s number\n\npi π, you know this one. Half of Tau\n\ntau Equivalent to 2π, or the number of radians in a circle\n\nUse them without a leading $ - pi - 3 should be about 0.\n\nFUNCTIONS\nmath supports the following functions:\n\nabs the absolute value, with positive sign\n\nacos arc cosine\n\nasin arc sine\n\natan arc tangent\n\natan2 arc tangent of two variables\n\nbitand, bitor and bitxor\n perform bitwise operations. These will throw away any\n non-integer parts and interpret the rest as an int.\n\n Note: bitnot and bitnand don\'t exist. This is because numbers\n in math don\'t really have a width in terms of bits, and these\n operations necessarily care about leading zeroes.\n\n If you need to negate a specific number you can do it with an\n xor with a mask, e.g.:\n\n > math --base=hex bitxor 0x0F, 0xFF\n 0xF0\n\n > math --base=hex bitxor 0x2, 0x3\n # Here we mask with 0x3 == 0b111, so our number is 3 bits wide\n # Only the 1 bit isn\'t set.\n 0x1\n\nceil round number up to the nearest integer\n\ncos the cosine\n\ncosh hyperbolic cosine\n\nexp the base-e exponential function\n\nfac factorial - also known as x! (x * (x - 1) * (x - 2) * ... * 1)\n\nfloor round number down to the nearest integer\n\nln the base-e logarithm\n\nlog or log10\n the base-10 logarithm\n\nlog2 the base-2 logarithm\n\nmax returns the largest of the given numbers - this takes an\n arbitrary number of arguments (but at least one)\n\nmin returns the smallest of the given numbers - this takes an\n arbitrary number of arguments (but at least one)\n\nncr "from n choose r" combination function - how many subsets of\n size r can be taken from n (order doesn\'t matter)\n\nnpr the number of subsets of size r that can be taken from a set\n of n elements (including different order)\n\npow(x,y)\n returns x to the y (and can be written as x ^ y)\n\nround rounds to the nearest integer, away from 0\n\nsin the sine function\n\nsinh the hyperbolic sine\n\nsqrt the square root - (can also be written as x ^ 0.5)\n\ntan the tangent\n\ntanh the hyperbolic tangent\n\nAll of the trigonometric functions use radians (the pi-based scale,\nnot 360°).\n\nEXAMPLES\nmath 1+1 outputs 2.\n\nmath $status - 128 outputs the numerical exit status of the last\ncommand minus 128.\n\nmath 10 / 6 outputs 1.666667.\n\nmath -s0 10.0 / 6.0 outputs 1.\n\nmath -s3 10 / 6 outputs 1.666.\n\nmath "sin(pi)" outputs 0.\n\nmath 5 \\* 2 or math "5 * 2" or math 5 "*" 2 all output 10.\n\nmath 0xFF outputs 255, math 0 x 3 outputs 0 (because it computes 0\nmultiplied by 3).\n\nmath bitand 0xFE, 0x2e outputs 46.\n\nmath "bitor(9,2)" outputs 11.\n\nmath --base=hex 192 prints 0xc0.\n\nmath \'ncr(49,6)\' prints 13983816 - that\'s the number of possible\npicks in 6-from-49 lotto.\n\nmath max 5,2,3,1 prints 5.\n\nCOMPATIBILITY NOTES\nFish 1.x and 2.x releases relied on the bc command for handling math\nexpressions. Starting with fish 3.0.0 fish uses the tinyexpr library\nand evaluates the expression without the involvement of any external\ncommands.\n\nYou don\'t need to use -- before the expression, even if it begins\nwith a minus sign which might otherwise be interpreted as an invalid\noption. If you do insert -- before the expression, it will cause\noption scanning to stop just like for every other command and it\nwon\'t be part of the expression.',args:"math [(-s | --scale) N] [(-b | --base) BASE] EXPRESSION ..."},not:{shortDescription:"negate the exit status of a job",description:"not negates the exit status of another command. If the exit status is\nzero, not returns 1. Otherwise, not returns 0.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nThe following code reports an error and exits if no file named spoon\ncan be found.\n\n if not test -f spoon\n echo There is no spoon\n exit 1\n end",args:"not COMMAND [OPTIONS ...]"},or:{shortDescription:"conditionally execute a command",description:"or is used to execute a command if the previous command was not\nsuccessful (returned a status of something other than 0).\n\nor statements may be used as part of the condition in an if or while\nblock.\n\nor does not change the current exit status itself, but the command it\nruns most likely will. The exit status of the last foreground command\nto exit can always be accessed using the $status variable.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nThe following code runs the make command to build a program. If the\nbuild succeeds, the program is installed. If either step fails, make\nclean is run, which removes the files created by the build process.\n\n make; and make install; or make clean\n\nSEE ALSO\n\n• and command",args:"COMMAND1; or COMMAND2"},path:{shortDescription:"manipulate and check paths",description:'path performs operations on paths.\n\nPATH arguments are taken from the command line unless standard input\nis connected to a pipe or a file, in which case they are read from\nstandard input, one PATH per line. It is an error to supply PATH\narguments on both the command line and on standard input.\n\nArguments starting with - are normally interpreted as switches; --\ncauses the following arguments not to be treated as switches even if\nthey begin with -. Switches and required arguments are recognized\nonly on the command line.\n\nWhen a path starts with -, path filter and path normalize will\nprepend ./ on output to avoid it being interpreted as an option\notherwise, so it\'s safe to pass path\'s output to other commands that\ncan handle relative paths.\n\nAll subcommands accept a -q or --quiet switch, which suppresses the\nusual output but exits with the documented status. In this case these\ncommands will quit early, without reading all of the available input.\n\nAll subcommands also accept a -Z or --null-out switch, which makes\nthem print output separated with NUL instead of newlines. This is for\nfurther processing, e.g. passing to another path, or xargs -0. This\nis not recommended when the output goes to the terminal or a command\nsubstitution.\n\nAll subcommands also accept a -z or --null-in switch, which makes\nthem accept arguments from stdin separated with NULL-bytes. Since\nUnix paths can\'t contain NULL, that makes it possible to handle all\npossible paths and read input from e.g. find -print0. If arguments\nare given on the commandline this has no effect. This should mostly\nbe unnecessary since path automatically starts splitting on NULL if\none appears in the first PATH_MAX bytes, PATH_MAX being the operating\nsystem\'s maximum length for a path plus a NULL byte.\n\nSome subcommands operate on the paths as strings and so work on\nnonexistent paths, while others need to access the paths themselves\nand so filter out nonexistent paths.\n\nThe following subcommands are available.\n\nBASENAME SUBCOMMAND\n\n path basename [-z | --null-in] [-Z | --null-out] [-q | --quiet] [PATH ...]\n\npath basename returns the last path component of the given path, by\nremoving the directory prefix and removing trailing slashes. In other\nwords, it is the part that is not the dirname. For files you might\ncall it the "filename".\n\nIt returns 0 if there was a basename, i.e. if the path wasn\'t empty\nor just slashes.\n\n Examples\n\n > path basename ./foo.mp4\n foo.mp4\n\n > path basename ../banana\n banana\n\n > path basename /usr/bin/\n bin\n\n > path basename /usr/bin/*\n # This prints all files in /usr/bin/\n # A selection:\n cp\n fish\n grep\n rm\n\nDIRNAME SUBCOMMAND\n\n path dirname [-z | --null-in] [-Z | --null-out] [-q | --quiet] [PATH ...]\n\npath dirname returns the dirname for the given path. This is the part\nbefore the last "/", discounting trailing slashes. In other words, it\nis the part that is not the basename (discounting superfluous\nslashes).\n\nIt returns 0 if there was a dirname, i.e. if the path wasn\'t empty or\njust slashes.\n\n Examples\n\n > path dirname ./foo.mp4\n .\n\n > path dirname ../banana\n ..\n\n > path dirname /usr/bin/\n /usr\n\nEXTENSION SUBCOMMAND\n\n path extension [-z | --null-in] [-Z | --null-out] [-q | --quiet] [PATH ...]\n\npath extension returns the extension of the given path. This is the\npart after (and including) the last ".", unless that "." followed a\n"/" or the basename is "." or "..", in which case there is no\nextension and an empty line is printed.\n\nIf the filename ends in a ".", only a "." is printed.\n\nIt returns 0 if there was an extension.\n\n Examples\n\n > path extension ./foo.mp4\n .mp4\n\n > path extension ../banana\n # an empty line, status 1\n\n > path extension ~/.config\n # an empty line, status 1\n\n > path extension ~/.config.d\n .d\n\n > path extension ~/.config.\n .\n\n > set -l path (path change-extension \'\' ./foo.mp4)\n > set -l extension (path extension ./foo.mp4)\n > echo $path$extension\n # reconstructs the original path again.\n ./foo.mp4\n\nFILTER SUBCOMMAND\n\n path filter [-z | --null-in] [-Z | --null-out] [-q | --quiet] \\\n [-d] [-f] [-l] [-r] [-w] [-x] \\\n [-v | --invert] [(-t | --type) TYPE] [(-p | --perm) PERMISSION] [PATH ...]\n\npath filter returns all of the given paths that match the given\nchecks. In all cases, the paths need to exist, nonexistent paths are\nalways filtered.\n\nThe available filters are:\n\n• -t or --type with the options: "dir", "file", "link", "block",\n "char", "fifo" and "socket", in which case the path needs to be a\n directory, file, link, block device, character device, named pipe\n or socket, respectively.\n\n• -d, -f and -l are short for --type=dir, --type=file and\n --type=link, respectively. There are no shortcuts for the other\n types.\n\n• -p or --perm with the options: "read", "write", and "exec", as well\n as "suid", "sgid", "user" (referring to the path owner) and "group"\n (referring to the path\'s group), in which case the path needs to\n have all of the given permissions for the current user.\n\n• -r, -w and -x are short for --perm=read, --perm=write and\n --perm=exec, respectively. There are no shortcuts for the other\n permissions.\n\nNote that the path needs to be any of the given types, but have all\nof the given permissions. This is because having a path that is both\nwritable and executable makes sense, but having a path that is both a\ndirectory and a file doesn\'t. Links will count as the type of the\nlinked-to file, so links to files count as files, links to\ndirectories count as directories.\n\nThe filter options can either be given as multiple options, or\ncomma-separated - path filter -t dir,file or path filter --type dir\n--type file are equivalent.\n\nWith --invert, the meaning of the filtering is inverted - any path\nthat wouldn\'t pass (including by not existing) passes, and any path\nthat would pass fails.\n\nWhen a path starts with -, path filter will prepend ./ to avoid it\nbeing interpreted as an option otherwise.\n\nIt returns 0 if at least one path passed the filter.\n\npath is is shorthand for path filter -q, i.e. just checking without\nproducing output, see The is subcommand.\n\n Examples\n\n > path filter /usr/bin /usr/argagagji\n # The (hopefully) nonexistent argagagji is filtered implicitly:\n /usr/bin\n\n > path filter --type file /usr/bin /usr/bin/fish\n # Only fish is a file\n /usr/bin/fish\n\n > path filter --type file,dir --perm exec,write /usr/bin/fish /home/me\n # fish is a file, which passes, and executable, which passes,\n # but probably not writable, which fails.\n #\n # $HOME is a directory and both writable and executable, typically.\n # So it passes.\n /home/me\n\n > path filter -fdxw /usr/bin/fish /home/me\n # This is the same as above: "-f" is "--type=file", "-d" is "--type=dir",\n # "-x" is short for "--perm=exec" and "-w" short for "--perm=write"!\n /home/me\n\n > path filter -fx $PATH/*\n # Prints all possible commands - the first entry of each name is what fish would execute!\n\nIS SUBCOMMAND\n\n path is [-z | --null-in] [-Z | --null-out] [-q | --quiet] \\\n [-d] [-f] [-l] [-r] [-w] [-x] \\\n [-v | --invert] [(-t | --type) TYPE] [(-p | --perm) PERMISSION] [PATH ...]\n\npath is is short for path filter -q. It returns true if any of the\ngiven files passes the filter, but does not produce any output.\n\n--quiet can still be passed for compatibility but is redundant. The\noptions are the same as for path filter.\n\n Examples\n\n > path is /usr/bin /usr/argagagji\n # /usr/bin exists, so this returns a status of 0 (true). It prints nothing.\n > path is /usr/argagagji\n # /usr/argagagji does not, so this returns a status of 1 (false). It also prints nothing.\n > path is -fx /bin/sh\n # /bin/sh is usually an executable file, so this returns true.\n\nMTIME SUBCOMMAND\n\n path mtime [-z | --null-in] [-Z | --null-out] [-q | --quiet] [-R | --relative] [PATH ...]\n\npath mtime returns the last modification time ("mtime" in unix\njargon) of the given paths, in seconds since the unix epoch (the\nbeginning of the 1st of January 1970).\n\nWith --relative (or -R), it prints the number of seconds since the\nmodification time. It only reads the current time once at start, so\nin case multiple paths are given the times are all relative to the\nstart of path mtime -R running.\n\nIf you want to know if a file is newer or older than another file,\nconsider using test -nt instead. See the test documentation.\n\nIt returns 0 if reading mtime for any path succeeded.\n\n Examples\n\n > date +%s\n # This prints the current time as seconds since the epoch\n 1657217847\n\n > path mtime /etc/\n 1657213796\n\n > path mtime -R /etc/\n 4078\n # So /etc/ on this system was last modified a little over an hour ago\n\n # This is the same as\n > math (date +%s) - (path mtime /etc/)\n\nNORMALIZE SUBCOMMAND\n\n path normalize [-z | --null-in] [-Z | --null-out] [-q | --quiet] [PATH ...]\n\npath normalize returns the normalized versions of all paths. That\nmeans it squashes duplicate "/" (except for two leading "//"),\ncollapses "../" with earlier components and removes "." components.\n\nUnlike realpath or path resolve, it does not make the paths absolute.\nIt also does not resolve any symlinks. As such it can operate on\nnon-existent paths.\n\nBecause it operates on paths as strings and doesn\'t resolve symlinks,\nit works sort of like pwd -L and cd. E.g. path normalize link/.. will\nreturn ., just like cd link; cd .. would return to the current\ndirectory. For a physical view of the filesystem, see path resolve.\n\nLeading "./" components are usually removed. But when a path starts\nwith -, path normalize will add it instead to avoid confusion with\noptions.\n\nIt returns 0 if any normalization was done, i.e. any given path\nwasn\'t in canonical form.\n\n Examples\n\n > path normalize /usr/bin//../../etc/fish\n # The "//" is squashed and the ".." components neutralize the components before\n /etc/fish\n\n > path normalize /bin//bash\n # The "//" is squashed, but /bin isn\'t resolved even if your system links it to /usr/bin.\n /bin/bash\n\n > path normalize ./my/subdirs/../sub2\n my/sub2\n\n > path normalize -- -/foo\n ./-/foo\n\nRESOLVE SUBCOMMAND\n\n path resolve [-z | --null-in] [-Z | --null-out] [-q | --quiet] [PATH ...]\n\npath resolve returns the normalized, physical and absolute versions\nof all paths. That means it resolves symlinks and does what path\nnormalize does: it squashes duplicate "/", collapses "../" with\nearlier components and removes "." components. Then it turns that\npath into the absolute path starting from the filesystem root "/".\n\nIt is similar to realpath, as it creates the "real", canonical\nversion of the path. However, for paths that can\'t be resolved, e.g.\nif they don\'t exist or form a symlink loop, it will resolve as far as\nit can and normalize the rest.\n\nBecause it resolves symlinks, it works sort of like pwd -P. E.g. path\nresolve link/.. will return the parent directory of what the link\npoints to, just like cd link; cd (pwd -P)/.. would go to it. For a\nlogical view of the filesystem, see path normalize.\n\nIt returns 0 if any normalization or resolution was done, i.e. any\ngiven path wasn\'t in canonical form.\n\n Examples\n\n > path resolve /bin//sh\n # The "//" is squashed, and /bin is resolved if your system links it to /usr/bin.\n # sh here is bash (this is common on linux systems)\n /usr/bin/bash\n\n > path resolve /bin/foo///bar/../baz\n # Assuming /bin exists and is a symlink to /usr/bin, but /bin/foo doesn\'t.\n # This resolves the /bin/ and normalizes the nonexistent rest:\n /usr/bin/foo/baz\n\nCHANGE-EXTENSION SUBCOMMAND\n\n path change-extension [-z | --null-in] [-Z | --null-out] \\\n [-q | --quiet] EXTENSION [PATH ...]\n\npath change-extension returns the given paths, with their extension\nchanged to the given new extension. The extension is the part after\n(and including) the last ".", unless that "." followed a "/" or the\nbasename is "." or "..", in which case there is no previous extension\nand the new one is simply added.\n\nIf the extension is empty, any previous extension is stripped, along\nwith the ".". This is, of course, the inverse of path extension.\n\nOne leading dot on the extension is ignored, so ".mp3" and "mp3" are\ntreated the same.\n\nIt returns 0 if it was given any paths.\n\n Examples\n\n > path change-extension mp4 ./foo.wmv\n ./foo.mp4\n\n > path change-extension .mp4 ./foo.wmv\n ./foo.mp4\n\n > path change-extension \'\' ../banana\n ../banana\n # but status 1, because there was no extension.\n\n > path change-extension \'\' ~/.config\n /home/alfa/.config\n # status 1\n\n > path change-extension \'\' ~/.config.d\n /home/alfa/.config\n # status 0\n\n > path change-extension \'\' ~/.config.\n /home/alfa/.config\n # status 0\n\nSORT SUBCOMMAND\n\n path sort [-z | --null-in] [-Z | --null-out] \\\n [-q | --quiet] [-r | --reverse] \\\n [--key=basename|dirname|path] [PATH ...]\n\npath sort returns the given paths in sorted order. They are sorted in\nthe same order as globs - alphabetically, but with runs of numerical\ndigits compared numerically.\n\nWith --reverse or -r the sort is reversed.\n\nWith --key= only the given part of the path is compared, e.g.\n--key=dirname causes only the dirname to be compared, --key=basename\nonly the basename and --key=path causes the entire path to be\ncompared (this is the default).\n\nWith --unique or -u the sort is deduplicated, meaning only the first\nof a run that have the same key is kept. So if you are sorting by\nbasename, then only the first of each basename is used.\n\nThe sort used is stable, so sorting first by basename and then by\ndirname works and causes the files to be grouped according to\ndirectory.\n\nIt currently returns 0 if it was given any paths.\n\n Examples\n\n > path sort 10-foo 2-bar\n 2-bar\n 10-foo\n\n > path sort --reverse 10-foo 2-bar\n 10-foo\n 2-bar\n\n > path sort --unique --key=basename $fish_function_path/*.fish\n # prints a list of all function files fish would use, sorted by name.\n\nCOMBINING PATH\npath is meant to be easy to combine with itself, other tools and\nfish.\n\nThis is why\n\n• path\'s output is automatically split by fish if it goes into a\n command substitution, so just doing (path ...) handles all paths,\n even those containing newlines, correctly\n\n• path has --null-in to handle null-delimited input (typically\n automatically detected!), and --null-out to pass on null-delimited\n output\n\nSome examples of combining path:\n\n # Expand all paths in the current directory, leave only executable files, and print their resolved path\n path filter -zZ -xf -- * | path resolve -z\n\n # The same thing, but using find (note -maxdepth needs to come first or find will scream)\n # (this also depends on your particular version of find)\n # Note the `-z` is unnecessary for any sensible version of find - if `path` sees a NULL,\n # it will split on NULL automatically.\n find . -maxdepth 1 -type f -executable -print0 | path resolve -z\n\n set -l paths (path filter -p exec $PATH/fish -Z | path resolve)',args:"path basename GENERAL_OPTIONS [PATH ...]\npath dirname GENERAL_OPTIONS [PATH ...]\npath extension GENERAL_OPTIONS [PATH ...]\npath filter GENERAL_OPTIONS [-v | --invert]\n [-d] [-f] [-l] [-r] [-w] [-x]\n [(-t | --type) TYPE] [(-p | --perm) PERMISSION] [PATH ...]\npath is GENERAL_OPTIONS [(-v | --invert)] [(-t | --type) TYPE]\n [-d] [-f] [-l] [-r] [-w] [-x]\n [(-p | --perm) PERMISSION] [PATH ...]\npath mtime GENERAL_OPTIONS [(-R | --relative)] [PATH ...]\npath normalize GENERAL_OPTIONS [PATH ...]\npath resolve GENERAL_OPTIONS [PATH ...]\npath change-extension GENERAL_OPTIONS EXTENSION [PATH ...]\npath sort GENERAL_OPTIONS [-r | --reverse]\n [-u | --unique] [--key=basename|dirname|path] [PATH ...]\n\nGENERAL_OPTIONS\n [-z | --null-in] [-Z | --null-out] [-q | --quiet]"},printf:{shortDescription:"Display formatted text",description:"The `printf` command formats and prints text according to a specified format string. Unlike `echo`, `printf` does not append a newline unless explicitly included in the format.",args:"FORMAT [ARGUMENT...]"},pwd:{shortDescription:"output the current working directory",description:"NOTE: This page documents the fish builtin pwd. To see the\ndocumentation on the pwd command you might have, use command man pwd.\n\npwd outputs (prints) the current working directory.\n\nThe following options are available:\n\n-L or --logical\n Output the logical working directory, without resolving\n symlinks (default behavior).\n\n-P or --physical\n Output the physical working directory, with symlinks resolved.\n\n-h or --help\n Displays help about using this command.\n\nSEE ALSO\nNavigate directories using the directory history or the directory\nstack",args:"pwd [-P | --physical]\npwd [-L | --logical]"},random:{shortDescription:"generate random number",description:"random generates a pseudo-random integer from a uniform distribution.\nThe range (inclusive) depends on the arguments.\n\nNo arguments indicate a range of 0 to 32767 (inclusive).\n\nIf one argument is specified, the internal engine will be seeded with\nthe argument for future invocations of random and no output will be\nproduced.\n\nTwo arguments indicate a range from START to END (both START and END\nincluded).\n\nThree arguments indicate a range from START to END with a spacing of\nSTEP between possible outputs.\n\nrandom choice will select one random item from the succeeding\narguments.\n\nThe -h or --help option displays help about using this command.\n\nNote that seeding the engine will NOT give the same result across\ndifferent systems.\n\nYou should not consider random cryptographically secure, or even\nstatistically accurate.\n\nEXAMPLE\nThe following code will count down from a random even number between\n10 and 20 to 1:\n\n for i in (seq (random 10 2 20) -1 1)\n echo $i\n end\n\nAnd this will open a random picture from any of the subdirectories:\n\n open (random choice **.jpg)\n\nOr, to only get even numbers from 2 to 20:\n\n random 2 2 20\n\nOr odd numbers from 1 to 3:\n\n random 1 2 3 # or 1 2 4",args:"random\nrandom SEED\nrandom START END\nrandom START STEP END\nrandom choice [ITEMS ...]"},read:{shortDescription:"read line of input into variables",description:"read reads from standard input and either writes the result back to\nstandard output (for use in command substitution), or stores the\nresult in one or more shell variables. By default, read reads a\nsingle line and splits it into variables on spaces or tabs.\nAlternatively, a null character or a maximum number of characters can\nbe used to terminate the input, and other delimiters can be given.\nUnlike other shells, there is no default variable (such as REPLY) for\nstoring the result - instead, it is printed on standard output.\n\nThe following options are available:\n\n-c CMD or --command CMD\n Sets the initial string in the interactive mode command buffer\n to CMD.\n\n-d or --delimiter DELIMITER\n Splits on DELIMITER. DELIMITER will be used as an entire\n string to split on, not a set of characters.\n\n-g or --global\n Makes the variables global.\n\n-s or --silent\n Masks characters written to the terminal, replacing them with\n asterisks. This is useful for reading things like passwords or\n other sensitive information.\n\n-f or --function\n Scopes the variable to the currently executing function. It is\n erased when the function ends.\n\n-l or --local\n Scopes the variable to the currently executing block. It is\n erased when the block ends. Outside of a block, this is the\n same as --function.\n\n-n or --nchars NCHARS\n Makes read return after reading NCHARS characters or the end\n of the line, whichever comes first.\n\n-p or --prompt PROMPT_CMD\n Uses the output of the shell command PROMPT_CMD as the prompt\n for the interactive mode. The default prompt command is\n set_color green; echo read; set_color normal; echo \"> \"\n\n-P or --prompt-str PROMPT_STR\n Uses the PROMPT_STR as the prompt for the interactive mode. It\n is equivalent to echo $PROMPT_STR and is provided solely to\n avoid the need to frame the prompt as a command. All special\n characters in the string are automatically escaped before\n being passed to the echo command.\n\n-R or --right-prompt RIGHT_PROMPT_CMD\n Uses the output of the shell command RIGHT_PROMPT_CMD as the\n right prompt for the interactive mode. There is no default\n right prompt command.\n\n-S or --shell\n Enables syntax highlighting, tab completions and command\n termination suitable for entering shellscript code in the\n interactive mode. NOTE: Prior to fish 3.0, the short opt for\n --shell was -s, but it has been changed for compatibility with\n bash's -s short opt for --silent.\n\n-t -or --tokenize\n Causes read to split the input into variables by the shell's\n tokenization rules. This means it will honor quotes and\n escaping. This option is of course incompatible with other\n options to control splitting like --delimiter and does not\n honor IFS (like fish's tokenizer). It saves the tokens in the\n manner they'd be passed to commands on the commandline, so\n e.g. a\\ b is stored as a b. Note that currently it leaves\n command substitutions intact along with the parentheses.\n\n-u or --unexport\n Prevents the variables from being exported to child processes\n (default behaviour).\n\n-U or --universal\n Causes the specified shell variable to be made universal.\n\n-x or --export\n Exports the variables to child processes.\n\n-a or --list\n Stores the result as a list in a single variable. This option\n is also available as --array for backwards compatibility.\n\n-z or --null\n Marks the end of the line with the NUL character, instead of\n newline. This also disables interactive mode.\n\n-L or --line\n Reads each line into successive variables, and stops after\n each variable has been filled. This cannot be combined with\n the --delimiter option.\n\nWithout the --line option, read reads a single line of input from\nstandard input, breaks it into tokens, and then assigns one token to\neach variable specified in VARIABLES. If there are more tokens than\nvariables, the complete remainder is assigned to the last variable.\n\nIf no option to determine how to split like --delimiter, --line or\n--tokenize is given, the variable IFS is used as a list of characters\nto split on. Relying on the use of IFS is deprecated and this\nbehaviour will be removed in future versions. The default value of\nIFS contains space, tab and newline characters. As a special case, if\nIFS is set to the empty string, each character of the input is\nconsidered a separate token.\n\nWith the --line option, read reads a line of input from standard\ninput into each provided variable, stopping when each variable has\nbeen filled. The line is not tokenized.\n\nIf no variable names are provided, read enters a special case that\nsimply provides redirection from standard input to standard output,\nuseful for command substitution. For instance, the fish shell command\nbelow can be used to read data that should be provided via a command\nline argument from the console instead of hardcoding it in the\ncommand itself, allowing the command to both be reused as-is in\nvarious contexts with different input values and preventing possibly\nsensitive text from being included in the shell history:\n\n mysql -uuser -p(read)\n\nWhen running in this mode, read does not split the input in any way\nand text is redirected to standard output without any further\nprocessing or manipulation.\n\nIf -a or --array is provided, only one variable name is allowed and\nthe tokens are stored as a list in this variable.\n\nSee the documentation for set for more details on the scoping rules\nfor variables.\n\nWhen read reaches the end-of-file (EOF) instead of the terminator,\nthe exit status is set to 1. Otherwise, it is set to 0.\n\nIn order to protect the shell from consuming too many system\nresources, read will only consume a maximum of 100 MiB (104857600\nbytes); if the terminator is not reached before this limit then\nVARIABLE is set to empty and the exit status is set to 122. This\nlimit can be altered with the fish_read_limit variable. If set to 0\n(zero), the limit is removed.\n\nEXAMPLE\nread has a few separate uses.\n\nThe following code stores the value 'hello' in the shell variable\nfoo.\n\n echo hello|read foo\n\nThe while command is a neat way to handle command output\nline-by-line:\n\n printf '%s\\n' line1 line2 line3 line4 | while read -l foo\n echo \"This is another line: $foo\"\n end\n\nDelimiters given via \"-d\" are taken as one string:\n\n echo a==b==c | read -d == -l a b c\n echo $a # a\n echo $b # b\n echo $c # c\n\n--tokenize honors quotes and escaping like the shell's argument\npassing:\n\n echo 'a\\ b' | read -t first second\n echo $first # outputs \"a b\", $second is empty\n\n echo 'a\"foo bar\"b (command echo wurst)*\" \"{a,b}' | read -lt -l a b c\n echo $a # outputs 'afoo barb' (without the quotes)\n echo $b # outputs '(command echo wurst)* {a,b}' (without the quotes)\n echo $c # nothing\n\nFor an example on interactive use, see Querying for user input.",args:"read [OPTIONS] [VARIABLE ...]"},realpath:{shortDescription:"Resolve and print the absolute path",description:"Convert each provided path to its absolute, canonical form by resolving symbolic links and relative path components.",args:"PATH..."},return:{shortDescription:"stop the current inner function",description:"return halts a currently running function. The exit status is set to\nN if it is given. If return is invoked outside of a function or dot\nscript it is equivalent to exit.\n\nIt is often added inside of a conditional block such as an if\nstatement or a switch statement to conditionally stop the executing\nfunction and return to the caller; it can also be used to specify the\nexit status of a function.\n\nIf at the top level of a script, it exits with the given status, like\nexit. If at the top level in an interactive session, it will set\nstatus, but not exit the shell.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\nAn implementation of the false command as a fish function:\n\n function false\n return 1\n end",args:"return [N]"},set:{shortDescription:"display and change shell variables",description:'set manipulates shell variables.\n\nIf both NAME and VALUE are provided, set assigns any values to\nvariable NAME. Variables in fish are lists, multiple values are\nallowed. One or more variable INDEX can be specified including\nranges (not for all options.)\n\nIf no VALUE is given, the variable will be set to the empty list.\n\nIf set is ran without arguments, it prints the names and values of\nall shell variables in sorted order. Passing scope or export flags\nallows filtering this to only matching variables, so set --local\nwould only show local variables.\n\nWith --erase and optionally a scope flag set will erase the matching\nvariable (or the variable of that name in the smallest possible\nscope).\n\nWith --show, set will describe the given variable names, explaining\nhow they have been defined - in which scope with which values and\noptions.\n\nThe following options control variable scope:\n\n-U or --universal\n Sets a universal variable. The variable will be immediately\n available to all the user\'s fish instances on the machine, and\n will be persisted across restarts of the shell.\n\n-f or --function\n Sets a variable scoped to the executing function. It is\n erased when the function ends.\n\n-l or --local\n Sets a locally-scoped variable in this block. It is erased\n when the block ends. Outside of a block, this is the same as\n --function.\n\n-g or --global\n Sets a globally-scoped variable. Global variables are\n available to all functions running in the same shell. They\n can be modified or erased.\n\nThese options modify how variables operate:\n\n--export or -x\n Causes the specified shell variable to be exported to child\n processes (making it an "environment variable").\n\n--unexport or -u\n Causes the specified shell variable to NOT be exported to\n child processes.\n\n--path Treat specified variable as a path variable; variable will be\n split on colons (:) and will be displayed joined by colons\n when quoted (echo "$PATH") or exported.\n\n--unpath\n Causes variable to no longer be treated as a path variable.\n Note: variables ending in "PATH" are automatically path\n variables.\n\nFurther options:\n\n-a or --append NAME VALUE ...\n Appends VALUES to the current set of values for variable NAME.\n Can be used with --prepend to both append and prepend at the\n same time. This cannot be used when assigning to a variable\n slice.\n\n-p or --prepend NAME VALUE ...\n Prepends VALUES to the current set of values for variable\n NAME. This can be used with --append to both append and\n prepend at the same time. This cannot be used when assigning\n to a variable slice.\n\n-e or --erase NAME*[*INDEX]\n Causes the specified shell variables to be erased. Supports\n erasing from multiple scopes at once. Individual items in a\n variable at INDEX in brackets can be specified.\n\n-q or --query NAME*[*INDEX]\n Test if the specified variable names are defined. If an INDEX\n is provided, check for items at that slot. Does not output\n anything, but the shell status is set to the number of\n variables specified that were not defined, up to a maximum of\n 255. If no variable was given, it also returns 255.\n\n-n or --names\n List only the names of all defined variables, not their value.\n The names are guaranteed to be sorted.\n\n-S or --show\n Shows information about the given variables. If no variable\n names are given then all variables are shown in sorted order.\n It shows the scopes the given variables are set in, along with\n the values in each and whether or not it is exported. No\n other flags can be used with this option.\n\n-L or --long\n Do not abbreviate long values when printing set variables.\n\n-h or --help\n Displays help about using this command.\n\nIf a variable is set to more than one value, the variable will be a\nlist with the specified elements. If a variable is set to zero\nelements, it will become a list with zero elements.\n\nIf the variable name is one or more list elements, such as PATH[1 3\n7], only those list elements specified will be changed. If you\nspecify a negative index when expanding or assigning to a list\nvariable, the index will be calculated from the end of the list. For\nexample, the index -1 means the last index of a list.\n\nThe scoping rules when creating or updating a variable are:\n\n• Variables may be explicitly set as universal, global, function, or\n local. Variables with the same name but in a different scope will\n not be changed.\n\n• If the scope of a variable is not explicitly set but a variable by\n that name has been previously defined, the scope of the existing\n variable is used. If the variable is already defined in multiple\n scopes, the variable with the narrowest scope will be updated.\n\n• If a variable\'s scope is not explicitly set and there is no\n existing variable by that name, the variable will be local to the\n currently executing function. Note that this is different from\n using the -l or --local flag, in which case the variable will be\n local to the most-inner currently executing block, while without\n them the variable will be local to the function as a whole. If no\n function is executing, the variable will be set in the global\n scope.\n\nThe exporting rules when creating or updating a variable are\nidentical to the scoping rules for variables:\n\n• Variables may be explicitly set to either exported or not exported.\n When an exported variable goes out of scope, it is unexported.\n\n• If a variable is not explicitly set to be exported or not exported,\n but has been previously defined, the previous exporting rule for\n the variable is kept.\n\n• If a variable is not explicitly set to be either exported or\n unexported and has never before been defined, the variable will not\n be exported.\n\nIn query mode, the scope to be examined can be specified. Whether\nthe variable has to be a path variable or exported can also be\nspecified.\n\nIn erase mode, if variable indices are specified, only the specified\nslices of the list variable will be erased.\n\nset requires all options to come before any other arguments. For\nexample, set flags -l will have the effect of setting the value of\nthe variable flags to \'-l\', not making the variable local.\n\nEXIT STATUS\nIn assignment mode, set does not modify the exit status, but passes\nalong whatever status was set, including by command substitutions.\nThis allows capturing the output and exit status of a subcommand,\nlike in if set output (command).\n\nIn query mode, the exit status is the number of variables that were\nnot found.\n\nIn erase mode, set exits with a zero exit status in case of success,\nwith a non-zero exit status if the commandline was invalid, if any of\nthe variables did not exist or was a special read-only variable.\n\nEXAMPLES\nPrint all global, exported variables:\n\n > set -gx\n\nSet the value of the variable $foo to be \'hi\'.:\n\n > set foo hi\n\nAppend the value "there" to the variable $foo:\n\n > set -a foo there\n\nRemove $smurf from the scope:\n\n > set -e smurf\n\nRemove $smurf from the global and universal scopes:\n\n > set -e -Ug smurf\n\nChange the fourth element of the $PATH list to ~/bin:\n\n > set PATH[4] ~/bin\n\nOutputs the path to Python if type -p returns true:\n\n if set python_path (type -p python)\n echo "Python is at $python_path"\n end\n\nSetting a variable doesn\'t modify $status; a command substitution\nstill will, though:\n\n > echo $status\n 0\n > false\n > set foo bar\n > echo $status\n 1\n > true\n > set foo banana (false)\n > echo $status\n 1\n\nVAR=VALUE command sets a variable for just one command, like other\nshells. This runs fish with a temporary home directory:\n\n > HOME=(mktemp -d) fish\n\n(which is essentially the same as):\n\n > begin; set -lx HOME (mktemp -d); fish; end\n\nNOTES\n\n• Fish versions prior to 3.0 supported the syntax set PATH[1] PATH[4]\n /bin /sbin, which worked like set PATH[1 4] /bin /sbin.',args:"set\nset (-f | --function) (-l | local) (-g | --global) (-U | --universal)\nset [-Uflg] NAME [VALUE ...]\nset [-Uflg] NAME[[INDEX ...]] [VALUE ...]\nset (-a | --append) [-flgU] NAME VALUE ...\nset (-q | --query) (-e | --erase) [-flgU] [NAME][[INDEX]] ...]\nset (-S | --show) [NAME ...]"},set_color:{shortDescription:"set the terminal color",description:'set_color is used to control the color and styling of text in the\nterminal. VALUE describes that styling. VALUE can be a reserved color\nname like red or an RGB color value given as 3 or 6 hexadecimal\ndigits ("F27" or "FF2277"). A special keyword normal resets text\nformatting to terminal defaults.\n\nValid colors include:\n\n • black, red, green, yellow, blue, magenta, cyan, white\n\n • brblack, brred, brgreen, bryellow, brblue, brmagenta, brcyan,\n brwhite\n\nThe br- (as in \'bright\') forms are full-brightness variants of the 8\nstandard-brightness colors on many terminals. brblack has higher\nbrightness than black - towards gray.\n\nAn RGB value with three or six hex digits, such as A0FF33 or f2f can\nbe used. Fish will choose the closest supported color. A three digit\nvalue is equivalent to specifying each digit twice; e.g., set_color\n2BC is the same as set_color 22BBCC. Hexadecimal RGB values can be in\nlower or uppercase. Depending on the capabilities of your terminal\n(and the level of support set_color has for it) the actual color may\nbe approximated by a nearby matching reserved color name or set_color\nmay not have an effect on color.\n\nA second color may be given as a desired fallback color. e.g.\nset_color 124212 brblue will instruct set_color to use brblue if a\nterminal is not capable of the exact shade of grey desired. This is\nvery useful when an 8 or 16 color terminal might otherwise not use a\ncolor.\n\nThe following options are available:\n\n-b or --background COLOR\n Sets the background color.\n\n-c or --print-colors\n Prints the given colors or a colored list of the 16 named\n colors.\n\n-o or --bold\n Sets bold mode.\n\n-d or --dim\n Sets dim mode.\n\n-i or --italics\n Sets italics mode.\n\n-r or --reverse\n Sets reverse mode.\n\n-u or --underline\n Sets underlined mode.\n\n-h or --help\n Displays help about using this command.\n\nUsing the normal keyword will reset foreground, background, and all\nformatting back to default.\n\nNOTES\n\n1. Using the normal keyword will reset both background and foreground\n colors to whatever is the default for the terminal.\n\n2. Setting the background color only affects subsequently written\n characters. Fish provides no way to set the background color for\n the entire terminal window. Configuring the window background\n color (and other attributes such as its opacity) has to be done\n using whatever mechanisms the terminal provides. Look for a config\n option.\n\n3. Some terminals use the --bold escape sequence to switch to a\n brighter color set rather than increasing the weight of text.\n\n4. set_color works by printing sequences of characters to standard\n output. If used in command substitution or a pipe, these\n characters will also be captured. This may or may not be\n desirable. Checking the exit status of isatty stdout before using\n set_color can be useful to decide not to colorize output in a\n script.\n\nEXAMPLES\n\n set_color red; echo "Roses are red"\n set_color blue; echo "Violets are blue"\n set_color 62A; echo "Eggplants are dark purple"\n set_color normal; echo "Normal is nice" # Resets the background too\n\nTERMINAL CAPABILITY DETECTION\nFish uses some heuristics to determine what colors a terminal\nsupports to avoid sending sequences that it won\'t understand.\n\nIn particular it will:\n\n• Enable 256 colors if TERM contains "xterm", except for known\n exceptions (like MacOS 10.6 Terminal.app)\n\n• Enable 24-bit ("true-color") even if the $TERM entry only reports\n 256 colors. This includes modern xterm, VTE-based terminals like\n Gnome Terminal, Konsole and iTerm2.\n\n• Detect support for italics, dim, reverse and other modes.\n\nIf terminfo reports 256 color support for a terminal, 256 color\nsupport will always be enabled.\n\nTo force true-color support on or off, set fish_term24bit to "1" for\non and 0 for off - set -g fish_term24bit 1.\n\nTo debug color palette problems, tput colors may be useful to see the\nnumber of colors in terminfo for a terminal. Fish launched as fish -d\nterm_support will include diagnostic messages that indicate the color\nsupport mode in use.\n\nThe set_color command uses the terminfo database to look up how to\nchange terminal colors on whatever terminal is in use. Some systems\nhave old and incomplete terminfo databases, and lack color\ninformation for terminals that support it. Fish assumes that all\nterminals can use the [ANSI\nX3.64](https://en.wikipedia.org/wiki/ANSI_escape_code) escape\nsequences if the terminfo definition indicates a color below 16 is\nnot supported.',args:"set_color [OPTIONS] VALUE"},source:{shortDescription:"evaluate contents of file",description:"source evaluates the commands of the specified FILE in the current\nshell as a new block of code. This is different from starting a new\nprocess to perform the commands (i.e. fish < FILE) since the commands\nwill be evaluated by the current shell, which means that changes in\nshell variables will affect the current shell. If additional\narguments are specified after the file name, they will be inserted\ninto the argv variable. The argv variable will not include the name\nof the sourced file.\n\nfish will search the working directory to resolve relative paths but\nwill not search PATH .\n\nIf no file is specified and stdin is not the terminal, or if the file\nname - is used, stdin will be read.\n\nThe exit status of source is the exit status of the last job to\nexecute. If something goes wrong while opening or reading the file,\nsource exits with a non-zero status.\n\n. (a single period) is an alias for the source command. The use of .\nis deprecated in favour of source, and . will be removed in a future\nversion of fish.\n\nsource creates a new local scope; set --local within a sourced block\nwill not affect variables in the enclosing scope.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\n\n source ~/.config/fish/config.fish\n # Causes fish to re-read its initialization file.\n\nCAVEATS\nIn fish versions prior to 2.3.0, the argv variable would have a\nsingle element (the name of the sourced file) if no arguments are\npresent. Otherwise, it would contain arguments without the name of\nthe sourced file. That behavior was very confusing and unlike other\nshells such as bash and zsh.",args:"source FILE [ARGUMENTS ...]\nSOMECOMMAND | source"},status:{shortDescription:"query fish runtime information",description:'With no arguments, status displays a summary of the current login and\njob control status of the shell.\n\nThe following operations (subcommands) are available:\n\nis-command-substitution, -c or --is-command-substitution\n Returns 0 if fish is currently executing a command\n substitution.\n\nis-block, -b or --is-block\n Returns 0 if fish is currently executing a block of code.\n\nis-breakpoint\n Returns 0 if fish is currently showing a prompt in the context\n of a breakpoint command. See also the fish_breakpoint_prompt\n function.\n\nis-interactive, -i or --is-interactive\n Returns 0 if fish is interactive - that is, connected to a\n keyboard.\n\nis-login, -l or --is-login\n Returns 0 if fish is a login shell - that is, if fish should\n perform login tasks such as setting up PATH.\n\nis-full-job-control or --is-full-job-control\n Returns 0 if full job control is enabled.\n\nis-interactive-job-control or --is-interactive-job-control\n Returns 0 if interactive job control is enabled.\n\nis-no-job-control or --is-no-job-control\n Returns 0 if no job control is enabled.\n\ncurrent-command\n Prints the name of the currently-running function or command,\n like the deprecated variable.\n\ncurrent-commandline\n Prints the entirety of the currently-running commandline,\n inclusive of all jobs and operators.\n\nfilename, current-filename, -f or --current-filename\n Prints the filename of the currently-running script. If the\n current script was called via a symlink, this will return the\n symlink. If the current script was received by piping into\n source, then this will return -.\n\nbasename\n Prints just the filename of the running script, without any\n path components before.\n\ndirname\n Prints just the path to the running script, without the actual\n filename itself. This can be relative to PWD (including just\n "."), depending on how the script was called. This is the same\n as passing the filename to dirname(3). It\'s useful if you want\n to use other files in the current script\'s directory or\n similar.\n\nfish-path\n Prints the absolute path to the currently executing instance\n of fish. This is a best-effort attempt and the exact output is\n down to what the platform gives fish. In some cases you might\n only get "fish".\n\nfunction or current-function\n Prints the name of the currently called function if able, when\n missing displays "Not a function" (or equivalent translated\n string).\n\nline-number, current-line-number, -n or --current-line-number\n Prints the line number of the currently running script.\n\nstack-trace, print-stack-trace, -t or --print-stack-trace\n Prints a stack trace of all function calls on the call stack.\n\njob-control, -j or --job-control CONTROL_TYPE\n Sets the job control type to CONTROL_TYPE, which can be none,\n full, or interactive.\n\nfeatures\n Lists all available feature flags.\n\ntest-feature FEATURE\n Returns 0 when FEATURE is enabled, 1 if it is disabled, and 2\n if it is not recognized.\n\nNOTES\nFor backwards compatibility most subcommands can also be specified as\na long or short option. For example, rather than status is-login you\ncan type status --is-login. The flag forms are deprecated and may be\nremoved in a future release (but not before fish 4.0).\n\nYou can only specify one subcommand per invocation even if you use\nthe flag form of the subcommand.',args:"status\nstatus is-login\nstatus is-interactive\nstatus is-block\nstatus is-breakpoint\nstatus is-command-substitution\nstatus is-no-job-control\nstatus is-full-job-control\nstatus is-interactive-job-control\nstatus current-command\nstatus current-commandline\nstatus filename\nstatus basename\nstatus dirname\nstatus fish-path\nstatus function\nstatus line-number\nstatus stack-trace\nstatus job-control CONTROL_TYPE\nstatus features\nstatus test-feature FEATURE"},string:{shortDescription:"manipulate strings",description:"string performs operations on strings.\n\nSTRING arguments are taken from the command line unless standard\ninput is connected to a pipe or a file, in which case they are read\nfrom standard input, one STRING per line. It is an error to supply\nSTRING arguments on the command line and on standard input.\n\nArguments beginning with - are normally interpreted as switches; --\ncauses the following arguments not to be treated as switches even if\nthey begin with -. Switches and required arguments are recognized\nonly on the command line.\n\nMost subcommands accept a -q or --quiet switch, which suppresses the\nusual output but exits with the documented status. In this case these\ncommands will quit early, without reading all of the available input.\n\nThe following subcommands are available.\n\nCOLLECT SUBCOMMAND\nstring collect [-a | --allow-empty] [-N | --no-trim-newlines] [STRING ...]\n\nstring collect collects its input into a single output argument,\nwithout splitting the output when used in a command substitution.\nThis is useful when trying to collect multiline output from another\ncommand into a variable. Exit status: 0 if any output argument is\nnon-empty, or 1 otherwise.\n\nA command like echo (cmd | string collect) is mostly equivalent to a\nquoted command substitution (echo \"$(cmd)\"). The main difference is\nthat the former evaluates to zero or one elements whereas the quoted\ncommand substitution always evaluates to one element due to string\ninterpolation.\n\nIf invoked with multiple arguments instead of input, string collect\npreserves each argument separately, where the number of output\narguments is equal to the number of arguments given to string\ncollect.\n\nAny trailing newlines on the input are trimmed, just as with \"$(cmd)\"\nsubstitution. Use --no-trim-newlines to disable this behavior, which\nmay be useful when running a command such as set contents (cat\nfilename | string collect -N).\n\nWith --allow-empty, string collect always prints one (empty)\nargument. This can be used to prevent an argument from disappearing.\n\n Examples\n\n > echo \"zero $(echo one\\ntwo\\nthree) four\"\n zero one\n two\n three four\n\n > echo \\\"(echo one\\ntwo\\nthree | string collect)\\\"\n \"one\n two\n three\"\n\n > echo \\\"(echo one\\ntwo\\nthree | string collect -N)\\\"\n \"one\n two\n three\n \"\n\n > echo foo(true | string collect --allow-empty)bar\n foobar\n\nESCAPE AND UNESCAPE SUBCOMMANDS\nstring escape [-n | --no-quoted] [--style=] [STRING ...]\nstring unescape [--style=] [STRING ...]\n\nstring escape escapes each STRING in one of three ways. The first is\n--style=script. This is the default. It alters the string such that\nit can be passed back to eval to produce the original argument again.\nBy default, all special characters are escaped, and quotes are used\nto simplify the output when possible. If -n or --no-quoted is given,\nthe simplifying quoted format is not used. Exit status: 0 if at least\none string was escaped, or 1 otherwise.\n\n--style=var ensures the string can be used as a variable name by hex\nencoding any non-alphanumeric characters. The string is first\nconverted to UTF-8 before being encoded.\n\n--style=url ensures the string can be used as a URL by hex encoding\nany character which is not legal in a URL. The string is first\nconverted to UTF-8 before being encoded.\n\n--style=regex escapes an input string for literal matching within a\nregex expression. The string is first converted to UTF-8 before being\nencoded.\n\nstring unescape performs the inverse of the string escape command. If\nthe string to be unescaped is not properly formatted it is ignored.\nFor example, doing string unescape --style=var (string escape\n--style=var $str) will return the original string. There is no\nsupport for unescaping --style=regex.\n\n Examples\n\n > echo \\x07 | string escape\n \\cg\n\n > string escape --style=var 'a1 b2'\\u6161\n a1_20_b2_E6_85_A1\n\nJOIN AND JOIN0 SUBCOMMANDS\nstring join [-q | --quiet] SEP [STRING ...]\nstring join0 [-q | --quiet] [STRING ...]\n\nstring join joins its STRING arguments into a single string separated\nby SEP, which can be an empty string. Exit status: 0 if at least one\njoin was performed, or 1 otherwise. If -n or --no-empty is specified,\nempty strings are excluded from consideration (e.g. string join -n +\na b \"\" c would expand to a+b+c not a+b++c).\n\nstring join0 joins its STRING arguments into a single string\nseparated by the zero byte (NUL), and adds a trailing NUL. This is\nmost useful in conjunction with tools that accept NUL-delimited\ninput, such as sort -z. Exit status: 0 if at least one join was\nperformed, or 1 otherwise.\n\nBecause Unix uses NUL as the string terminator, passing the output of\nstring join0 as an argument to a command (via a command substitution)\nwon't actually work. Fish will pass the correct bytes along, but the\ncommand won't be able to tell where the argument ends. This is a\nlimitation of Unix' argument passing.\n\n Examples\n\n > seq 3 | string join ...\n 1...2...3\n\n # Give a list of NUL-separated filenames to du (this is a GNU extension)\n > string join0 file1 file2 file\\nwith\\nmultiple\\nlines | du --files0-from=-\n\n # Just put the strings together without a separator\n > string join '' a b c\n abc\n\nLENGTH SUBCOMMAND\nstring length [-q | --quiet] [-V | --visible] [STRING ...]\n\nstring length reports the length of each string argument in\ncharacters. Exit status: 0 if at least one non-empty STRING was\ngiven, or 1 otherwise.\n\nWith -V or --visible, it uses the visible width of the arguments.\nThat means it will discount escape sequences fish knows about,\naccount for $fish_emoji_width and $fish_ambiguous_width. It will also\ncount each line (separated by \\n) on its own, and with a carriage\nreturn (\\r) count only the widest stretch on a line. The intent is to\nmeasure the number of columns the STRING would occupy in the current\nterminal.\n\n Examples\n\n > string length 'hello, world'\n 12\n\n > set str foo\n > string length -q $str; echo $status\n 0\n # Equivalent to test -n \"$str\"\n\n > string length --visible (set_color red)foobar\n # the set_color is discounted, so this is the width of \"foobar\"\n 6\n\n > string length --visible 🐟🐟🐟🐟\n # depending on $fish_emoji_width, this is either 4 or 8\n # in new terminals it should be\n 8\n\n > string length --visible abcdef\\r123\n # this displays as \"123def\", so the width is 6\n 6\n\n > string length --visible a\\nbc\n # counts \"a\" and \"bc\" as separate lines, so it prints width for each\n 1\n 2\n\nLOWER SUBCOMMAND\nstring lower [-q | --quiet] [STRING ...]\n\nstring lower converts each string argument to lowercase. Exit status:\n0 if at least one string was converted to lowercase, else 1. This\nmeans that in conjunction with the -q flag you can readily test\nwhether a string is already lowercase.\n\nMATCH SUBCOMMAND\nstring match [-a | --all] [-e | --entire] [-i | --ignore-case]\n [-g | --groups-only] [-r | --regex] [-n | --index]\n [-q | --quiet] [-v | --invert]\n PATTERN [STRING ...]\n\nstring match tests each STRING against PATTERN and prints matching\nsubstrings. Only the first match for each STRING is reported unless\n-a or --all is given, in which case all matches are reported.\n\nIf you specify the -e or --entire then each matching string is\nprinted including any prefix or suffix not matched by the pattern\n(equivalent to grep without the -o flag). You can, obviously, achieve\nthe same result by prepending and appending * or .* depending on\nwhether or not you have specified the --regex flag. The --entire flag\nis simply a way to avoid having to complicate the pattern in that\nfashion and make the intent of the string match clearer. Without\n--entire and --regex, a PATTERN will need to match the entire STRING\nbefore it will be reported.\n\nMatching can be made case-insensitive with --ignore-case or -i.\n\nIf --groups-only or -g is given, only the capturing groups will be\nreported - meaning the full match will be skipped. This is\nincompatible with --entire and --invert, and requires --regex. It is\nuseful as a simple cutting tool instead of string replace, so you can\nsimply choose \"this part\" of a string.\n\nIf --index or -n is given, each match is reported as a 1-based start\nposition and a length. By default, PATTERN is interpreted as a glob\npattern matched against each entire STRING argument. A glob pattern\nis only considered a valid match if it matches the entire STRING.\n\nIf --regex or -r is given, PATTERN is interpreted as a\nPerl-compatible regular expression, which does not have to match the\nentire STRING. For a regular expression containing capturing groups,\nmultiple items will be reported for each match, one for the entire\nmatch and one for each capturing group. With this, only the matching\npart of the STRING will be reported, unless --entire is given.\n\nWhen matching via regular expressions, string match automatically\nsets variables for all named capturing groups ((?<name>expression)).\nIt will create a variable with the name of the group, in the default\nscope, for each named capturing group, and set it to the value of the\ncapturing group in the first matched argument. If a named capture\ngroup matched an empty string, the variable will be set to the empty\nstring (like set var \"\"). If it did not match, the variable will be\nset to nothing (like set var). When --regex is used with --all, this\nbehavior changes. Each named variable will contain a list of matches,\nwith the first match contained in the first element, the second match\nin the second, and so on. If the group was empty or did not match,\nthe corresponding element will be an empty string.\n\nIf --invert or -v is used the selected lines will be only those which\ndo not match the given glob pattern or regular expression.\n\nExit status: 0 if at least one match was found, or 1 otherwise.\n\n Match Glob Examples\n\n > string match '?' a\n a\n\n > string match 'a*b' axxb\n axxb\n\n > string match -i 'a??B' Axxb\n Axxb\n\n > string match -- '-*' -h foo --version bar\n # To match things that look like options, we need a `--`\n # to tell string its options end there.\n -h\n --version\n\n > echo 'ok?' | string match '*\\?'\n ok?\n\n # Note that only the second STRING will match here.\n > string match 'foo' 'foo1' 'foo' 'foo2'\n foo\n\n > string match -e 'foo' 'foo1' 'foo' 'foo2'\n foo1\n foo\n foo2\n\n > string match 'foo?' 'foo1' 'foo' 'foo2'\n foo1\n foo2\n\n Match Regex Examples\n\n > string match -r 'cat|dog|fish' 'nice dog'\n dog\n\n > string match -r -v \"c.*[12]\" {cat,dog}(seq 1 4)\n dog1\n dog2\n cat3\n dog3\n cat4\n dog4\n\n > string match -r -- '-.*' -h foo --version bar\n # To match things that look like options, we need a `--`\n # to tell string its options end there.\n -h\n --version\n\n > string match -r '(\\d\\d?):(\\d\\d):(\\d\\d)' 2:34:56\n 2:34:56\n 2\n 34\n 56\n\n > string match -r '^(\\w{2,4})\\1$' papa mud murmur\n papa\n pa\n murmur\n mur\n\n > string match -r -a -n at ratatat\n 2 2\n 4 2\n 6 2\n\n > string match -r -i '0x[0-9a-f]{1,8}' 'int magic = 0xBadC0de;'\n 0xBadC0de\n\n > echo $version\n 3.1.2-1575-ga2ff32d90\n > string match -rq '(?<major>\\d+).(?<minor>\\d+).(?<revision>\\d+)' -- $version\n > echo \"You are using fish $major!\"\n You are using fish 3!\n\n > string match -raq ' *(?<sentence>[^.!?]+)(?<punctuation>[.!?])?' \"hello, friend. goodbye\"\n > printf \"%s\\n\" -- $sentence\n hello, friend\n goodbye\n > printf \"%s\\n\" -- $punctuation\n .\n\n > string match -rq '(?<word>hello)' 'hi'\n > count $word\n 0\n\nPAD AND SHORTEN SUBCOMMANDS\nstring pad [-r | --right] [(-c | --char) CHAR] [(-w | --width) INTEGER]\n [STRING ...]\n\nstring pad extends each STRING to the given visible width by adding\nCHAR to the left. That means the width of all visible characters\nadded together, excluding escape sequences and accounting for\nfish_emoji_width and fish_ambiguous_width. It is the amount of\ncolumns in a terminal the STRING occupies.\n\nThe escape sequences reflect what fish knows about, and how it\ncomputes its output. Your terminal might support more escapes, or not\nsupport escape sequences that fish knows about.\n\nIf -r or --right is given, add the padding after a string.\n\nIf -c or --char is given, pad with CHAR instead of whitespace.\n\nThe output is padded to the maximum width of all input strings. If -w\nor --width is given, use at least that.\n\n > string pad -w 10 abc abcdef\n abc\n abcdef\n\n > string pad --right --char=🐟 \"fish are pretty\" \"rich. \"\n fish are pretty\n rich. 🐟🐟🐟🐟\n\n > string pad -w$COLUMNS (date)\n # Prints the current time on the right edge of the screen.\n\nSEE ALSO\n\n• The printf command can do simple padding, for example printf %10s\\n\n works like string pad -w10.\n\n• string length with the --visible option can be used to show what\n fish thinks the width is.\nstring shorten [(-c | --char) CHARS] [(-m | --max) INTEGER]\n [-N | --no-newline] [-l | --left] [-q | --quiet] [STRING ...]\n\nstring shorten truncates each STRING to the given visible width and\nadds an ellipsis to indicate it. \"Visible width\" means the width of\nall visible characters added together, excluding escape sequences and\naccounting for fish_emoji_width and fish_ambiguous_width. It is the\namount of columns in a terminal the STRING occupies.\n\nThe escape sequences reflect what fish knows about, and how it\ncomputes its output. Your terminal might support more escapes, or not\nsupport escape sequences that fish knows about.\n\nIf -m or --max is given, truncate at the given width. Otherwise, the\nlowest non-zero width of all input strings is used. A max of 0 means\nno shortening takes place, all STRINGs are printed as-is.\n\nIf -N or --no-newline is given, only the first line (or last line\nwith --left) of each STRING is used, and an ellipsis is added if it\nwas multiline. This only works for STRINGs being given as arguments,\nmultiple lines given on stdin will be interpreted as separate STRINGs\ninstead.\n\nIf -c or --char is given, add CHAR instead of an ellipsis. This can\nalso be empty or more than one character.\n\nIf -l or --left is given, remove text from the left on instead, so\nthis prints the longest suffix of the string that fits. With\n--no-newline, this will take from the last line instead of the first.\n\nIf -q or --quiet is given, string shorten only runs for the return\nvalue - if anything would be shortened, it returns 0, else 1.\n\nThe default ellipsis is …. If fish thinks your system is incapable\nbecause of your locale, it will use ... instead.\n\nThe return value is 0 if any shortening occured, 1 otherwise.\n\n > string shorten foo foobar\n # No width was given, we infer, and \"foo\" is the shortest.\n foo\n fo…\n\n > string shorten --char=\"...\" foo foobar\n # The target width is 3 because of \"foo\",\n # and our ellipsis is 3 too, so we can't really show anything.\n # This is the default ellipsis if your locale doesn't allow \"…\".\n foo\n ...\n\n > string shorten --char=\"\" --max 4 abcdef 123456\n # Leaving the char empty makes us not add an ellipsis\n # So this truncates at 4 columns:\n abcd\n 1234\n\n > touch \"a multiline\"\\n\"file\"\n > for file in *; string shorten -N -- $file; end\n # Shorten the multiline file so we only show one line per file:\n a multiline…\n\n > ss -p | string shorten -m$COLUMNS -c \"\"\n # `ss` from Linux' iproute2 shows socket information, but prints extremely long lines.\n # This shortens input so it fits on the screen without overflowing lines.\n\n > git branch | string match -rg '^\\* (.*)' | string shorten -m20\n # Take the current git branch and shorten it at 20 columns.\n # Here the branch is \"builtin-path-with-expand\"\n builtin-path-with-e…\n\n > git branch | string match -rg '^\\* (.*)' | string shorten -m20 --left\n # Taking 20 columns from the right instead:\n …in-path-with-expand\n\nSEE ALSO\n\n• string's pad subcommand does the inverse of this command, adding\n padding to a specific width instead.\n\n• The printf command can do simple padding, for example printf %10s\\n\n works like string pad -w10.\n\n• string length with the --visible option can be used to show what\n fish thinks the width is.\n\nREPEAT SUBCOMMAND\nstring repeat [(-n | --count) COUNT] [(-m | --max) MAX] [-N | --no-newline]\n [-q | --quiet] [STRING ...]\n\nstring repeat repeats the STRING -n or --count times. The -m or --max\noption will limit the number of outputted characters (excluding the\nnewline). This option can be used by itself or in conjunction with\n--count. If both --count and --max are present, max char will be\noutputed unless the final repeated string size is less than max, in\nthat case, the string will repeat until count has been reached. Both\n--count and --max will accept a number greater than or equal to zero,\nin the case of zero, nothing will be outputed. If -N or --no-newline\nis given, the output won't contain a newline character at the end.\nExit status: 0 if yielded string is not empty, 1 otherwise.\n\n Examples\n Repeat Examples\n\n > string repeat -n 2 'foo '\n foo foo\n\n > echo foo | string repeat -n 2\n foofoo\n\n > string repeat -n 2 -m 5 'foo'\n foofo\n\n > string repeat -m 5 'foo'\n foofo\n\nREPLACE SUBCOMMAND\nstring replace [-a | --all] [-f | --filter] [-i | --ignore-case]\n [-r | --regex] [-q | --quiet] PATTERN REPLACEMENT [STRING ...]\n\nstring replace is similar to string match but replaces\nnon-overlapping matching substrings with a replacement string and\nprints the result. By default, PATTERN is treated as a literal\nsubstring to be matched.\n\nIf -r or --regex is given, PATTERN is interpreted as a\nPerl-compatible regular expression, and REPLACEMENT can contain\nC-style escape sequences like t as well as references to capturing\ngroups by number or name as $n or ${n}.\n\nIf you specify the -f or --filter flag then each input string is\nprinted only if a replacement was done. This is useful where you\nwould otherwise use this idiom: a_cmd | string match pattern | string\nreplace pattern new_pattern. You can instead just write a_cmd |\nstring replace --filter pattern new_pattern.\n\nExit status: 0 if at least one replacement was performed, or 1\notherwise.\n\n Replace Literal Examples\n\n > string replace is was 'blue is my favorite'\n blue was my favorite\n\n > string replace 3rd last 1st 2nd 3rd\n 1st\n 2nd\n last\n\n > string replace -a ' ' 'spaces to underscores'\n spaces_to_underscores\n\n Replace Regex Examples\n\n > string replace -r -a '[^\\d.]+' ' ' '0 one two 3.14 four 5x'\n 0 3.14 5\n\n > string replace -r '(\\w+)\\s+(\\w+)' '$2 $1 $$' 'left right'\n right left $\n\n > string replace -r '\\s*newline\\s*' '\\n' 'put a newline here'\n put a\n here\n\nSPLIT AND SPLIT0 SUBCOMMANDS\nstring split [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]\n [-q | --quiet] [-r | --right] SEP [STRING ...]\nstring split0 [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]\n [-q | --quiet] [-r | --right] [STRING ...]\n\nstring split splits each STRING on the separator SEP, which can be an\nempty string. If -m or --max is specified, at most MAX splits are\ndone on each STRING. If -r or --right is given, splitting is\nperformed right-to-left. This is useful in combination with -m or\n--max. With -n or --no-empty, empty results are excluded from\nconsideration (e.g. hello\\n\\nworld would expand to two strings and\nnot three). Exit status: 0 if at least one split was performed, or 1\notherwise.\n\nUse -f or --fields to print out specific fields. FIELDS is a\ncomma-separated string of field numbers and/or spans. Each field is\none-indexed, and will be printed on separate lines. If a given field\ndoes not exist, then the command exits with status 1 and does not\nprint anything, unless --allow-empty is used.\n\nSee also the --delimiter option of the read command.\n\nstring split0 splits each STRING on the zero byte (NUL). Options are\nthe same as string split except that no separator is given.\n\nsplit0 has the important property that its output is not further\nsplit when used in a command substitution, allowing for the command\nsubstitution to produce elements containing newlines. This is most\nuseful when used with Unix tools that produce zero bytes, such as\nfind -print0 or sort -z. See split0 examples below.\n\n Examples\n\n > string split . example.com\n example\n com\n\n > string split -r -m1 / /usr/local/bin/fish\n /usr/local/bin\n fish\n\n > string split '' abc\n a\n b\n c\n\n > string split --allow-empty -f1,3-4,5 '' abcd\n a\n c\n d\n\n NUL Delimited Examples\n\n > # Count files in a directory, without being confused by newlines.\n > count (find . -print0 | string split0)\n 42\n\n > # Sort a list of elements which may contain newlines\n > set foo beta alpha\\ngamma\n > set foo (string join0 $foo | sort -z | string split0)\n > string escape $foo[1]\n alpha\\ngamma\n\nSUB SUBCOMMAND\nstring sub [(-s | --start) START] [(-e | --end) END] [(-l | --length) LENGTH]\n [-q | --quiet] [STRING ...]\n\nstring sub prints a substring of each string argument. The start/end\nof the substring can be specified with -s/-e or --start/--end\nfollowed by a 1-based index value. Positive index values are relative\nto the start of the string and negative index values are relative to\nthe end of the string. The default start value is 1. The length of\nthe substring can be specified with -l or --length. If the length or\nend is not specified, the substring continues to the end of each\nSTRING. Exit status: 0 if at least one substring operation was\nperformed, 1 otherwise. --length is mutually exclusive with --end.\n\n Examples\n\n > string sub --length 2 abcde\n ab\n\n > string sub -s 2 -l 2 abcde\n bc\n\n > string sub --start=-2 abcde\n de\n\n > string sub --end=3 abcde\n abc\n\n > string sub -e -1 abcde\n abcd\n\n > string sub -s 2 -e -1 abcde\n bcd\n\n > string sub -s -3 -e -2 abcde\n c\n\nTRIM SUBCOMMAND\nstring trim [-l | --left] [-r | --right] [(-c | --chars) CHARS]\n [-q | --quiet] [STRING ...]\n\nstring trim removes leading and trailing whitespace from each STRING.\nIf -l or --left is given, only leading whitespace is removed. If -r\nor --right is given, only trailing whitespace is trimmed. The -c or\n--chars switch causes the characters in CHARS to be removed instead\nof whitespace. Exit status: 0 if at least one character was trimmed,\nor 1 otherwise.\n\n Examples\n\n > string trim ' abc '\n abc\n\n > string trim --right --chars=yz xyzzy zany\n x\n zan\n\nUPPER SUBCOMMAND\nstring upper [-q | --quiet] [STRING ...]\n\nstring upper converts each string argument to uppercase. Exit status:\n0 if at least one string was converted to uppercase, else 1. This\nmeans that in conjunction with the -q flag you can readily test\nwhether a string is already uppercase.\n\nREGULAR EXPRESSIONS\nBoth the match and replace subcommand support regular expressions\nwhen used with the -r or --regex option. The dialect is that of\nPCRE2.\n\nIn general, special characters are special by default, so a+ matches\none or more \"a\"s, while a\\+ matches an \"a\" and then a \"+\". (a+)\nmatches one or more \"a\"s in a capturing group ((?:XXXX) denotes a\nnon-capturing group). For the replacement parameter of replace, $n\nrefers to the n-th group of the match. In the match parameter, \\n\n(e.g. \\1) refers back to groups.\n\nSome features include repetitions:\n\n• * refers to 0 or more repetitions of the previous expression\n\n• + 1 or more\n\n• ? 0 or 1.\n\n• {n} to exactly n (where n is a number)\n\n• {n,m} at least n, no more than m.\n\n• {n,} n or more\n\nCharacter classes, some of the more important:\n\n• . any character except newline\n\n• \\d a decimal digit and \\D, not a decimal digit\n\n• \\s whitespace and \\S, not whitespace\n\n• \\w a \"word\" character and \\W, a \"non-word\" character\n\n• [...] (where \"...\" is some characters) is a character set\n\n• [^...] is the inverse of the given character set\n\n• [x-y] is the range of characters from x-y\n\n• [[:xxx:]] is a named character set\n\n• [[:^xxx:]] is the inverse of a named character set\n\n• [[:alnum:]] : \"alphanumeric\"\n\n• [[:alpha:]] : \"alphabetic\"\n\n• [[:ascii:]] : \"0-127\"\n\n• [[:blank:]] : \"space or tab\"\n\n• [[:cntrl:]] : \"control character\"\n\n• [[:digit:]] : \"decimal digit\"\n\n• [[:graph:]] : \"printing, excluding space\"\n\n• [[:lower:]] : \"lower case letter\"\n\n• [[:print:]] : \"printing, including space\"\n\n• [[:punct:]] : \"printing, excluding alphanumeric\"\n\n• [[:space:]] : \"white space\"\n\n• [[:upper:]] : \"upper case letter\"\n\n• [[:word:]] : \"same as w\"\n\n• [[:xdigit:]] : \"hexadecimal digit\"\n\nGroups:\n\n• (...) is a capturing group\n\n• (?:...) is a non-capturing group\n\n• \\n is a backreference (where n is the number of the group, starting\n with 1)\n\n• $n is a reference from the replacement expression to a group in the\n match expression.\n\nAnd some other things:\n\n• \\b denotes a word boundary, \\B is not a word boundary.\n\n• ^ is the start of the string or line, $ the end.\n\n• | is \"alternation\", i.e. the \"or\".\n\nCOMPARISON TO OTHER TOOLS\nMost operations string supports can also be done by external tools.\nSome of these include grep, sed and cut.\n\nIf you are familiar with these, it is useful to know how string\ndiffers from them.\n\nIn contrast to these classics, string reads input either from stdin\nor as arguments. string also does not deal with files, so it requires\nredirections to be used with them.\n\nIn contrast to grep, string's match defaults to glob-mode, while\nreplace defaults to literal matching. If set to regex-mode, they use\nPCRE regular expressions, which is comparable to grep's -P option.\nmatch defaults to printing just the match, which is like grep with -o\n(use --entire to enable grep-like behavior).\n\nLike sed's s/old/new/ command, string replace still prints strings\nthat don't match. sed's -n in combination with a /p modifier or\ncommand is like string replace -f.\n\nstring split somedelimiter is a replacement for tr somedelimiter \\n.",args:"string collect [-a | --allow-empty] [-N | --no-trim-newlines] [STRING ...]\nstring escape [-n | --no-quoted] [--style=] [STRING ...]\nstring join [-q | --quiet] [-n | --no-empty] SEP [STRING ...]\nstring join0 [-q | --quiet] [STRING ...]\nstring length [-q | --quiet] [STRING ...]\nstring lower [-q | --quiet] [STRING ...]\nstring match [-a | --all] [-e | --entire] [-i | --ignore-case]\n [-g | --groups-only] [-r | --regex] [-n | --index]\n [-q | --quiet] [-v | --invert]\n PATTERN [STRING ...]\nstring pad [-r | --right] [(-c | --char) CHAR] [(-w | --width) INTEGER]\n [STRING ...]\nstring repeat [(-n | --count) COUNT] [(-m | --max) MAX] [-N | --no-newline]\n [-q | --quiet] [STRING ...]\nstring replace [-a | --all] [-f | --filter] [-i | --ignore-case]\n [-r | --regex] [-q | --quiet] PATTERN REPLACE [STRING ...]\nstring shorten [(-c | --char) CHARS] [(-m | --max) INTEGER]\n [-N | --no-newline] [-l | --left] [-q | --quiet] [STRING ...]\nstring split [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]\n [-q | --quiet] [-r | --right] SEP [STRING ...]\nstring split0 [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]\n [-q | --quiet] [-r | --right] [STRING ...]\nstring sub [(-s | --start) START] [(-e | --end) END] [(-l | --length) LENGTH]\n [-q | --quiet] [STRING ...]\nstring trim [-l | --left] [-r | --right] [(-c | --chars) CHARS]\n [-q | --quiet] [STRING ...]\nstring unescape [--style=] [STRING ...]\nstring upper [-q | --quiet] [STRING ...]"},switch:{shortDescription:"conditionally execute a block of commands",description:"switch performs one of several blocks of commands, depending on\nwhether a specified value equals one of several globbed values. case\nis used together with the switch statement in order to determine\nwhich block should be executed.\n\nEach case command is given one or more parameters. The first case\ncommand with a parameter that matches the string specified in the\nswitch command will be evaluated. case parameters may contain globs.\nThese need to be escaped or quoted in order to avoid regular glob\nexpansion using filenames.\n\nNote that fish does not fall through on case statements. Only the\nfirst matching case is executed.\n\nNote that break cannot be used to exit a case/switch block early like\nin other languages. It can only be used in loops.\n\nNote that command substitutions in a case statement will be evaluated\neven if its body is not taken. All substitutions, including command\nsubstitutions, must be performed before the value can be compared\nagainst the parameter.\n\nEXAMPLE\nIf the variable $animal contains the name of an animal, the following\ncode would attempt to classify it:\n\n switch $animal\n case cat\n echo evil\n case wolf dog human moose dolphin whale\n echo mammal\n case duck goose albatross\n echo bird\n case shark trout stingray\n echo fish\n case '*'\n echo I have no idea what a $animal is\n end\n\nIf the above code was run with $animal set to whale, the output would\nbe mammal.",args:"switch VALUE; [case [GLOB ...]; [COMMANDS ...]; ...] end"},test:{shortDescription:"Evaluate conditional expressions",description:"The `test` command evaluates conditional expressions and sets the exit status to 0 if the expression is true, and 1 if it is false. It supports various operators to evaluate expressions related to strings, numbers, and file attributes.",args:"EXPRESSION"},time:{shortDescription:"measure how long a command or block takes",description:'NOTE: This page documents the fish keyword time. To see the\ndocumentation on the time command you might have, use command man\ntime.\n\ntime causes fish to measure how long a command takes and print the\nresults afterwards. The command can be a simple fish command or a\nblock. The results can not currently be redirected.\n\nFor checking timing after a command has completed, check\n$CMD_DURATION.\n\nYour system most likely also has a time command. To use that use\nsomething like command time, as in command time sleep 10. Because\nit\'s not inside fish, it won\'t have access to fish functions and\nwon\'t be able to time blocks and such.\n\nHOW TO INTERPRET THE OUTPUT\nTime outputs a few different values. Let\'s look at an example:\n\n > time string repeat -n 10000000 y\\n | command grep y >/dev/null\n _______________________________________________________\n Executed in 805.98 millis fish external\n usr time 798.88 millis 763.88 millis 34.99 millis\n sys time 141.22 millis 40.20 millis 101.02 millis\n\nThe time after "Executed in" is what is known as the "wall-clock\ntime". It is simply a measure of how long it took from the start of\nthe command until it finished. Typically it is reasonably close to\nCMD_DURATION, except for a slight skew because the two are taken at\nslightly different times.\n\nThe other times are all measures of CPU time. That means they measure\nhow long the CPU was used in this part, and they count multiple cores\nseparately. So a program with four threads using all CPU for a second\nwill have a time of 4 seconds.\n\nThe "usr" time is how much CPU time was spent inside the program\nitself, the "sys" time is how long was spent in the kernel on behalf\nof that program.\n\nThe "fish" time is how much CPU was spent in fish, the "external"\ntime how much was spent in external commands.\n\nSo in this example, since string is a builtin, everything that string\nrepeat did is accounted to fish. Any time it spends doing syscalls\nlike write() is accounted for in the fish/sys time.\n\nAnd grep here is explicitly invoked as an external command, so its\ntimes will be counted in the "external" column.\n\nNote that, as in this example, the CPU times can add up to more than\nthe execution time. This is because things can be done in parallel -\ngrep can match while string repeat writes.\n\nEXAMPLE\n(for obvious reasons exact results will vary on your system)\n\n > time sleep 1s\n\n _______________________________________________________\n Executed in 1,01 secs fish external\n usr time 2,32 millis 0,00 micros 2,32 millis\n sys time 0,88 millis 877,00 micros 0,00 millis\n\n > time for i in 1 2 3; sleep 1s; end\n\n _______________________________________________________\n Executed in 3,01 secs fish external\n usr time 9,16 millis 2,94 millis 6,23 millis\n sys time 0,23 millis 0,00 millis 0,23 millis\n\nInline variable assignments need to follow the time keyword:\n\n > time a_moment=1.5m sleep $a_moment\n\n _______________________________________________________\n Executed in 90.00 secs fish external\n usr time 4.62 millis 4.62 millis 0.00 millis\n sys time 2.35 millis 0.41 millis 1.95 millis',args:"time COMMAND"},true:{shortDescription:"Return a successful result",description:"The `true` command always returns a successful (zero) exit status. It is often used in scripts and conditional statements where an unconditional success result is needed."},type:{shortDescription:"locate a command and describe its type",description:"With no options, type indicates how each NAME would be interpreted if\nused as a command name.\n\nThe following options are available:\n\n-a or --all\n Prints all of possible definitions of the specified names.\n\n-s or --short\n Suppresses function expansion when used with no options or\n with -a/--all.\n\n-f or --no-functions\n Suppresses function and builtin lookup.\n\n-t or --type\n Prints function, builtin, or file if NAME is a shell function,\n builtin, or disk file, respectively.\n\n-p or --path\n Prints the path to NAME if NAME resolves to an executable file\n in PATH, the path to the script containing the definition of\n the function NAME if NAME resolves to a function loaded from a\n file on disk (i.e. not interactively defined at the prompt),\n or nothing otherwise.\n\n-P or --force-path\n Returns the path to the executable file NAME, presuming NAME\n is found in the PATH environment variable, or nothing\n otherwise. --force-path explicitly resolves only the path to\n executable files in PATH, regardless of whether NAME is\n shadowed by a function or builtin with the same name.\n\n-q or --query\n Suppresses all output; this is useful when testing the exit\n status. For compatibility with old fish versions this is also\n --quiet.\n\n-h or --help\n Displays help about using this command.\n\nThe -q, -p, -t and -P flags (and their long flag aliases) are\nmutually exclusive. Only one can be specified at a time.\n\ntype returns 0 if at least one entry was found, 1 otherwise, and 2\nfor invalid options or option combinations.\n\nEXAMPLE\n\n > type fg\n fg is a builtin",args:"type [OPTIONS] NAME [...]"},ulimit:{shortDescription:"set or get resource usage limits",description:"ulimit sets or outputs the resource usage limits of the shell and any\nprocesses spawned by it. If a new limit value is omitted, the current\nvalue of the limit of the resource is printed; otherwise, the\nspecified limit is set to the new value.\n\nUse one of the following switches to specify which resource limit to\nset or report:\n\n-b or --socket-buffers\n The maximum size of socket buffers.\n\n-c or --core-size\n The maximum size of core files created. By setting this limit\n to zero, core dumps can be disabled.\n\n-d or --data-size\n The maximum size of a process' data segment.\n\n-e or --nice\n Controls the maximum nice value; on Linux, this value is\n subtracted from 20 to give the effective value.\n\n-f or --file-size\n The maximum size of files created by a process.\n\n-i or --pending-signals\n The maximum number of signals that may be queued.\n\n-l or --lock-size\n The maximum size that may be locked into memory.\n\n-m or --resident-set-size\n The maximum resident set size.\n\n-n or --file-descriptor-count\n The maximum number of open file descriptors.\n\n-q or --queue-size\n The maximum size of data in POSIX message queues.\n\n-r or --realtime-priority\n The maximum realtime scheduling priority.\n\n-s or --stack-size\n The maximum stack size.\n\n-t or --cpu-time\n The maximum amount of CPU time in seconds.\n\n-u or --process-count\n The maximum number of processes available to the current user.\n\n-w or --swap-size\n The maximum swap space available to the current user.\n\n-v or --virtual-memory-size\n The maximum amount of virtual memory available to the shell.\n\n-y or --realtime-maxtime\n The maximum contiguous realtime CPU time in microseconds.\n\n-K or --kernel-queues\n The maximum number of kqueues (kernel queues) for the current\n user.\n\n-P or --ptys\n The maximum number of pseudo-terminals for the current user.\n\n-T or --threads\n The maximum number of simultaneous threads for the current\n user.\n\nNote that not all these limits are available in all operating\nsystems; consult the documentation for setrlimit in your operating\nsystem.\n\nThe value of limit can be a number in the unit specified for the\nresource or one of the special values hard, soft, or unlimited, which\nstand for the current hard limit, the current soft limit, and no\nlimit, respectively.\n\nIf limit is given, it is the new value of the specified resource. If\nno option is given, then -f is assumed. Values are in kilobytes,\nexcept for -t, which is in seconds and -n and -u, which are unscaled\nvalues. The exit status is 0 unless an invalid option or argument is\nsupplied, or an error occurs while setting a new limit.\n\nulimit also accepts the following options that determine what type of\nlimit to set:\n\n-H or --hard\n Sets hard resource limit.\n\n-S or --soft\n Sets soft resource limit.\n\nA hard limit can only be decreased. Once it is set it cannot be\nincreased; a soft limit may be increased up to the value of the hard\nlimit. If neither -H nor -S is specified, both the soft and hard\nlimits are updated when assigning a new limit value, and the soft\nlimit is used when reporting the current value.\n\nThe following additional options are also understood by ulimit:\n\n-a or --all\n Prints all current limits.\n\n-h or --help\n Displays help about using this command.\n\nThe fish implementation of ulimit should behave identically to the\nimplementation in bash, except for these differences:\n\n• Fish ulimit supports GNU-style long options for all switches.\n\n• Fish ulimit does not support the -p option for getting the pipe\n size. The bash implementation consists of a compile-time check that\n empirically guesses this number by writing to a pipe and waiting\n for SIGPIPE. Fish does not do this because this method of\n determining pipe size is unreliable. Depending on bash version,\n there may also be further additional limits to set in bash that do\n not exist in fish.\n\n• Fish ulimit does not support getting or setting multiple limits in\n one command, except reporting all values using the -a switch.\n\nEXAMPLE\nulimit -Hs 64 sets the hard stack size limit to 64 kB.",args:"ulimit [OPTIONS] [LIMIT]"},wait:{shortDescription:"wait for jobs to complete",description:"wait waits for child jobs to complete.\n\nIf a PID is specified, the command waits for the job that the process\nwith that process ID belongs to.\n\nIf a PROCESS_NAME is specified, the command waits for the jobs that\nthe matched processes belong to.\n\nIf neither a pid nor a process name is specified, the command waits\nfor all background jobs.\n\nIf the -n or --any flag is provided, the command returns as soon as\nthe first job completes. If it is not provided, it returns after all\njobs complete.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\n\n sleep 10 &\n wait $last_pid\n\nspawns sleep in the background, and then waits until it finishes.\n\n for i in (seq 1 5); sleep 10 &; end\n wait\n\nspawns five jobs in the background, and then waits until all of them\nfinishes.\n\n for i in (seq 1 5); sleep 10 &; end\n hoge &\n wait sleep\n\nspawns five jobs and hoge in the background, and then waits until all\nsleeps finish, and doesn't wait for hoge finishing.",args:"wait [-n | --any] [PID | PROCESS_NAME] ..."},while:{shortDescription:"perform a set of commands multiple times",description:"while repeatedly executes CONDITION, and if the exit status is 0,\nthen executes COMMANDS.\n\nThe exit status of the while loop is the exit status of the last\niteration of the COMMANDS executed, or 0 if none were executed. (This\nmatches other shells and is POSIX-compatible.)\n\nYou can use and or or for complex conditions. Even more complex\ncontrol can be achieved with while true containing a break.\n\nThe -h or --help option displays help about using this command.\n\nEXAMPLE\n\n while test -f foo.txt; or test -f bar.txt ; echo file exists; sleep 10; end\n # outputs 'file exists' at 10 second intervals,\n # as long as the file foo.txt or bar.txt exists.",args:"while CONDITION; COMMANDS; end"}}},457:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"tee",description:"Duplicate standard input",options:[{name:"-a",description:"Append the output to the files rather than overwriting them"},{name:"-i",description:"Ignore the SIGINT signal"}],args:{name:"file",description:"Pathname of an output file",isVariadic:!0,template:"filepaths"}}},487:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.codeTunnelSpecOptions=void 0;const r=o(n(2008));t.codeTunnelSpecOptions=[{name:"--cli-data-dir",description:"Directory where CLI metadata should be stored",isRepeatable:!0,args:{name:"cli_data_dir",isOptional:!0}},{name:"--log-to-file",description:"Log to a file in addition to stdout. Used when running as a service",hidden:!0,isRepeatable:!0,args:{name:"log_to_file",isOptional:!0,template:"filepaths"}},{name:"--log",description:"Log level to use",isRepeatable:!0,args:{name:"log",isOptional:!0,suggestions:["trace","debug","info","warn","error","critical","off"]}},{name:"--telemetry-level",description:"Sets the initial telemetry level",hidden:!0,isRepeatable:!0,args:{name:"telemetry_level",isOptional:!0,suggestions:["off","crash","error","all"]}},{name:"--verbose",description:"Print verbose output (implies --wait)"},{name:"--disable-telemetry",description:"Disable telemetry for the current command, even if it was previously accepted as part of the license prompt or specified in '--telemetry-level'"},{name:["-h","--help"],description:"Print help"}];const c={...r.default,name:"code-tunnel",subcommands:[...r.codeTunnelSubcommands,r.extTunnelSubcommand],options:[...r.commonOptions,...(0,r.extensionManagementOptions)("code-tunnel"),...(0,r.troubleshootingOptions)("code-tunnel"),...r.globalTunnelOptions,...r.codeTunnelOptions]};t.default=c},628:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"du",description:"Display disk usage statistics",options:[{name:"-a",description:"Display an entry for each file in a file hierarchy",exclusiveOn:["-s","-d"]},{name:"-c",description:"Display a grand total"},{name:"-H",description:"Symbolic links on the command line are followed, symbolic links in file hierarchies are not followed",exclusiveOn:["-L","-P"]},{name:"-h",description:'"Human-readable" output. Use unit suffixes: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte',exclusiveOn:["-k","-m","-g"]},{name:"-g",description:"Display block counts in 1073741824-byte (1-Gbyte) blocks",exclusiveOn:["-k","-m","-h"]},{name:"-k",description:"Display block counts in 1024-byte (1-Kbyte) blocks",exclusiveOn:["-g","-m","-h"]},{name:"-m",description:"Display block counts in 1048576-byte (1-Mbyte) blocks",exclusiveOn:["-g","-k","-h"]},{name:"-I",description:"Ignore files and directories matching the specified mask",args:{name:"mask"}},{name:"-L",description:"Symbolic links on the command line and in file hierarchies are followed",exclusiveOn:["-H","-P"]},{name:"-r",description:"Generate messages about directories that cannot be read, files that cannot be opened, and so on. This is the default case. This option exists solely for conformance with X/Open Portability Guide Issue 4 (``XPG4'')"},{name:"-P",description:"No symbolic links are followed. This is the default",exclusiveOn:["-H","-L"]},{name:"-d",description:"Display an entry for all files and directories depth directories deep",exclusiveOn:["-a","-s"],args:{name:"depth",suggestions:["0","1","2"]}},{name:"-s",description:"Display an entry for each specified file. (Equivalent to -d 0)",exclusiveOn:["-a","-d"]},{name:"-x",description:"Display an entry for each specified file. (Equivalent to -d 0)"}],args:{isOptional:!0,name:"files",isVariadic:!0,template:["filepaths","folders"]}}},785:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"nl",description:"Line numbering filter",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"-b",description:"Specify the logical page body lines to be numbered",args:{name:"type",suggestions:[{name:"a",description:"Number all lines"},{name:"t",description:"Number only non-empty lines"},{name:"pexpr",description:"Only those lines that contain the basic regular expression specified by 'expr'"}],default:"t"}},{name:"-d",description:"Specify the delimiter characters used to indicate the\nstart of a logical page section in the input file. At most two\ncharacters may be specified; if only one character is specified,\nthe first character is replaced and the second character remains unchanged",args:{name:"delim",suggestions:["\\:"],default:"\\:"}},{name:"-f",description:"Specify the same as -b type except for logical page footer lines",args:{name:"type",suggestions:["n"],default:"n"}},{name:"-h",description:"Specify the same as -b type except for logical page header lines",args:{name:"type",suggestions:["n"],default:"n"}},{name:"-i",description:"Specify the increment value used to number logical page lines",args:{name:"incr",suggestions:["1"],default:"1"}},{name:"-l",description:"If numbering of all lines is specified for the current\nlogical section using the corresponding -b a, -f a or -h a option, specify\nthe number of adjacent blank lines to be considered as one. For example,\n-l 2 results in only the second adjacent blank line being numbered",args:{name:"num",suggestions:["1"],default:"1"}},{name:"-n",description:"Specify the line numbering output format",args:{name:"format",suggestions:[{name:"ln",description:"Left justified"},{name:"rn",description:"Right justified (leading zeros suppressed)"},{name:"rz",description:"Right justified (leading zeros kept)"}],default:"rz"}},{name:"-p",description:"Specify that line numbering should not be restarted at logical page delimiters"},{name:"-s",description:"Specify the characters used in separating the line\nnumber and the corresponding text line. The default\nsep setting is a single tab character",args:{name:"sep",suggestions:["\\t"],default:"\\t"}},{name:"-v",description:"Specify the initial value used to number logical page lines; see also the description of the -p option",args:{name:"startnum",suggestions:["1","2","3"],default:"1"}},{name:"-w",description:"Specify the number of characters to be occupied by the\nline number; in case the width is insufficient to hold the line number,\nit will be truncated to its width least significant digits",args:{name:"width",suggestions:["6","5","4","3","2","1"],default:"6"}}],args:{name:"file",description:"File(s) to number",template:"filepaths"}}},857:e=>{"use strict";e.exports=require("os")},1012:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"top",description:"Display Linux tasks",options:[{name:["-h","-v"],description:"Show library version and usage prompt"},{name:"-b",description:"Starts top in Batch mode",args:{name:"operation"}},{name:"-c",description:"Starts top with last remembered c state reversed",args:{name:"toggle"}},{name:"-i",description:"Starts top with the last remembered 'i' state reversed. When this toggle is Off, tasks that are idled or zombied will not be displayed",args:{name:"toggle"}},{name:"-s",description:"Starts top with secure mode forced",args:{name:"delay"}},{name:"-pid",description:"Monitor pids",args:{name:"process ids",isVariadic:!0}}]}},1033:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"a",description:"Any single character",priority:40},{name:"\\a",description:"Alert character",priority:39},{name:"\\b",description:"Backspace character",priority:39},{name:"\\f",description:"Form feed character",priority:39},{name:"\\n",description:"Newline character",priority:39},{name:"\\r",description:"Carriage return character",priority:39},{name:"\\t",description:"Tab character",priority:39},{name:"\\v",description:"Vertical tab character",priority:39},{name:"c-c",description:"For non-octal range endpoints represents the range of characters between the range endpoints, inclusive, in ascending order, as defined by the collation sequence",priority:38},{name:"[:alnum:]",description:"Alphanumeric characters",priority:37},{name:"[:alpha:]",description:"Alphabetic characters",priority:37},{name:"[:blank:]",description:"Blank characters",priority:37},{name:"[:cntrl:]",description:"Control characters",priority:37},{name:"[:digit:]",description:"Digit characters",priority:37},{name:"[:graph:]",description:"Graphic characters",priority:37},{name:"[:ideogram:]",description:"Ideographic characters",priority:37},{name:"[:lower:]",description:"Lower-case characters",priority:37},{name:"[:phonogram:]",description:"Phonographic characters",priority:37},{name:"[:print:]",description:"Printable characters",priority:37},{name:"[:punct:]",description:"Punctuation characters",priority:37},{name:"[:rune:]",description:"Valid characters",priority:37},{name:"[:space:]",description:"Space characters",priority:37},{name:"[:special:]",description:"Special characters",priority:37},{name:"[:upper:]",description:"Upper-case characters",priority:37},{name:"[:xdigit:]",description:"Hexadecimal characters",priority:37},{name:"[=equiv=]",description:"Represents all characters belonging to the same equivalence class as 'equiv', ordered by their encoded values",priority:36},{name:"[#*n]",description:"Represents 'n' repeated occurrences of the character represented by '#'",priority:35}],i={name:"tr",description:"Translate characters",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"-C",description:"Complement the set of characters in string1, that is '-C ab' includes every character except for 'a' and 'b'"},{name:"-c",description:"Same as '-C' but complement the set of values in string1"},{name:"-d",description:"Delete characters in string1 from the input"},{name:"-s",description:"Squeeze multiple occurrences of the characters listed in the last operand (either string1 or string2) in the input into a single instance of the character. This occurs after all deletion and translation is completed"},{name:"-u",description:"Guarantee that any output is unbuffered"}],args:[{name:"string1",description:"Candidate string",suggestions:n},{name:"string2",description:"Replacment string",isOptional:!0,suggestions:n}]};t.default=i},1056:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"version",description:"Node version",suggestions:[{name:"node",description:"The latest version of node"},{name:"iojs",description:"The latest version of io.js"},{name:"system",description:"System-installed version of node"}]},i={name:"name"},a={name:"--no-colors",description:"Suppress colored output"},s={name:"--silent",description:"Silences stdout/stderr output"},o={name:"--lts",description:"Uses automatic LTS (long-term support) alias `lts/*`, if available"},r={name:"--lts",description:"Uses automatic alias for provided LTS line, if available",args:{name:"LTS name"}},c={name:"nvm",description:"Node Package Manager",subcommands:[{name:"install",description:"Download and install a <version>. Uses .nvmrc if available and version is omitted",args:{...n,isOptional:!0},options:[{name:"-s",description:"Skip binary download, install from source only"},{name:"--reinstall-packages-from",description:"When installing, reinstall packages installed in <version>",args:n},{...o,description:"When installing, only select from LTS (long-term support) versions"},{...r,description:"When installing, only select from versions for a specific LTS line"},{name:"--skip-default-packages",description:"When installing, skip the default-packages file if it exists"},{name:"--latest-npm",description:"After installing, attempt to upgrade to the latest working npm on the given node version"},{name:"--no-progress",description:"Disable the progress bar on any downloads"},{name:"--alias",description:"After installing, set the alias specified to the version specified. (same as: nvm alias <name> <version>)",args:i},{name:"--default",description:"After installing, set default alias to the version specified. (same as: nvm alias default <version>)"}]},{name:"uninstall",description:"Uninstall a version",args:n,options:[{...o,description:"Uninstall using automatic LTS (long-term support) alias `lts/*`, if available"},{...r,description:"Uninstall using automatic alias for provided LTS line, if available"}]},{name:"use",description:"Modify PATH to use <version>. Uses .nvmrc if available and version is omitted",args:{...n,isOptional:!0},options:[s,o,r]},{name:"exec",description:"Run <command> on <version>. Uses .nvmrc if available and version is omitted",args:[{...n,isOptional:!0},{name:"command",isVariadic:!0}],options:[s,o,r]},{name:"run",description:"Run `node` on <version> with <args> as arguments. Uses .nvmrc if available and version is omitted",args:[{...n,isOptional:!0},{name:"args",isVariadic:!0}],options:[s,o,r]},{name:"current",description:"Display currently activated version of Node"},{name:"ls",description:"List installed versions, matching a given <version> if provided",args:n,options:[a,{name:"--no-alias",description:"Suppress `nvm alias` output"}]},{name:"ls-remote",description:"List remote versions available for install, matching a given <version> if provided",args:n,options:[{...o,description:"When listing, only show LTS (long-term support) versions"},{...r,description:"When listing, only show versions for a specific LTS line"},a]},{name:"version",description:"Resolve the given description to a single local version",args:n},{name:"version-remote",description:"Resolve the given description to a single remote version",args:n,options:[{...o,description:"When listing, only show LTS (long-term support) versions"},{...r,description:"When listing, only show versions for a specific LTS line"}]},{name:"deactivate",description:"Undo effects of `nvm` on current shell",options:[s]},{name:"alias",description:"Show all aliases beginning with <pattern> or Set an alias named <name> pointing to <version>",args:[{name:"pattern or name",description:"Pattern or name"},{name:"version",isOptional:!0}]},{name:"unalias",description:"Deletes the alias named <name>",args:i},{name:"install-latest-npm",description:"Attempt to upgrade to the latest working `npm` on the current node version"},{name:"reinstall-packages",description:"Reinstall global `npm` packages contained in <version> to current version",args:n},{name:"unload",description:"Unload `nvm` from shell"},{name:"which",description:"Display path to installed node version. Uses .nvmrc if available and version is omitted",args:{...n,isOptional:!0},subcommands:[{name:"current"}],options:[{...s,description:"Silences stdout/stderr output when a version is omitted"}]},{name:"cache",args:{suggestions:[{name:"dir",description:"Display path to the cache directory for nvm",type:"subcommand"},{name:"clear",description:"Empty cache directory for nvm",type:"subcommand"}]}},{name:"set-colors",description:'Set five text colors using format "yMeBg". Available when supported',args:{name:"color codes",description:'Using format "yMeBg"'}}],options:[{name:"--help",description:"Show help page"},{name:"--version",description:"Print out the installed version of nvm"},a]};t.default=c},1107:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"dig",description:"Domain Information Groper",subcommands:[{name:"A",description:"Query Domain A Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"MX",description:"Query Domain MX Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"CNAME",description:"Query Domain CNAME Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"TXT",description:"Query Domain TXT Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"NS",description:"Query MX Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"SOA",description:"Query SOA Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"TTL",description:"Query TTL Record",options:[{name:["+short",""],insertValue:"+short {cursor}",description:"Only print meaningful results",args:{}}]},{name:"ANY +noall +answer",description:"Query ALL DNS Records"},{name:"+nocomments +noquestion +noauthority +noadditional +nostats",description:"Query only answer section"}]}},1121:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCWDForFilesAndFolders=t.ensureTrailingSlash=t.splitPath=t.sleep=t.longestCommonPrefix=t.TimeoutError=t.SpecLocationSource=t.SuggestionFlag=void 0,t.makeArray=r,t.firstMatchingToken=function(e,t){for(const n of e)if(t.has(n))return n},t.makeArrayIfExists=function(e){return e?r(e):null},t.isOrHasValue=function(e,t){return Array.isArray(e)?e.includes(t):e===t},t.withTimeout=c,t.findLast=function(e,t){for(let n=e.length-1;n>=0;n-=1)if(t(e[n]))return e[n]},t.compareNamedObjectsAlphabetically=function(e,t){const n=e=>"string"==typeof e?e:r(e.name)[0]||"";return n(e).localeCompare(n(t))},t.memoizeOne=function(e,t){let n,i=[],a=!1;const s=t||((e,t)=>e.every((e,n)=>e===t[n]));return(...t)=>(a&&s(i,t)||(a=!0,i=[...t],n=e(...t)),n)},t.fieldsAreEqual=function e(t,n,i){return!!(t===n||d(t)&&d(n))||!!(i.length&&t&&n)&&i.every(i=>{const a=t[i],s=n[i];return typeof a==typeof s&&(l(a)&&l(s)?Object.keys(a).length===Object.keys(s).length&&e(a,s,Object.keys(a)):a===s)})},t.localProtocol=function(e,t){let n;return n="path"===e?"":e,(0,i.osIsWindows)()?`https://fig.${n}/${t}`:`fig://${n}/${t}`},t.exponentialBackoff=async function(e,t){let n=0,i=e.baseDelay;for(;n<e.maxRetries;)try{return await c(e.attemptTimeout,t())}catch(t){n+=1,i*=2,i+=Math.floor(Math.random()*e.jitter),await new Promise(e=>{setTimeout(e,i)})}throw new Error("Failed to execute function after all retries.")};const i=n(5761),a=n(4829);var s,o;function r(e){return Array.isArray(e)?e:[e]}async function c(e,n){let i;return Promise.race([n,new Promise((n,a)=>{i=setTimeout(()=>{a(new t.TimeoutError("Function timed out"))},e)})]).finally(()=>{clearTimeout(i)})}function l(e){return"object"==typeof e&&null!==e}function d(e){return l(e)&&0===Object.keys(e).length}!function(e){e[e.None=0]="None",e[e.Subcommands=1]="Subcommands",e[e.Options=2]="Options",e[e.Args=4]="Args",e[e.Any=7]="Any"}(s||(t.SuggestionFlag=s={})),function(e){e.GLOBAL="global",e.LOCAL="local"}(o||(t.SpecLocationSource=o={})),t.TimeoutError=(0,a.createErrorInstance)("TimeoutError"),t.longestCommonPrefix=e=>{const t=e.sort(),{0:n,[t.length-1]:i}=t,a=n.length;let s=0;for(;s<a&&n.charAt(s)===i.charAt(s);)s+=1;return n.slice(0,s)},t.sleep=e=>new Promise(t=>{setTimeout(t,e)}),t.splitPath=e=>{const t=e.lastIndexOf("/")+1;return[e.slice(0,t),e.slice(t)]},t.ensureTrailingSlash=e=>e.endsWith("/")?e:`${e}/`,t.getCWDForFilesAndFolders=(e,n)=>{if(null===e)return"/";const[i]=(0,t.splitPath)(n);return""===i?(0,t.ensureTrailingSlash)(e):i.startsWith("~/")||i.startsWith("/")?i:`${e}/${i}`}},1219:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"split",description:"The split utility reads the given file and breaks it up into files of 1000 lines each (if no options are specified), leaving the file unchanged. If file is a single dash ('-') or absent, split reads from the standard input",options:[{name:"-a",description:"Use suffix_length letters to form the suffix of the file name",args:{name:"suffix_length"}},{name:"-b",description:"Create split files byte_count bytes in length. If k or K is appended to the number, the file is split into byte_count kilobyte pieces. If m or M is appended to the number, the file is split into byte_count megabyte pieces. If g or G is appended to the number, the file is split into byte_count gigabyte pieces",args:{name:"byte_count",description:"N[K|k|M|m|G|g]"},exclusiveOn:["-p"]},{name:"-d",description:"Use a numeric suffix instead of a alphabetic suffix"},{name:"-l",description:"Create split files line_count lines in length",args:{name:"line_count"},exclusiveOn:["-p"]},{name:"-p",description:"The file is split whenever an input line matches pattern, which is interpreted as an extended regular expression. The matching line will be the first line of the next output file. This option is incompatible with the -b and -l options",args:{name:"pattern"},exclusiveOn:["-b","-l"]}],args:[{name:"file",description:"The file to split",template:"filepaths",isOptional:!0},{name:"prefix",description:"Prefix for the names of the files into which the file is split",suggestions:["x"],default:"x",isOptional:!0}]}},1334:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(2008)),c={...r.default,name:"code-insiders",description:"Visual Studio Code Insiders",options:[...r.commonOptions,...(0,r.extensionManagementOptions)("code-insiders"),...(0,r.troubleshootingOptions)("code-insiders")]};t.default=c},1350:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseArguments=t.initialParserState=t.getResultFromState=t.findSubcommand=t.findOption=t.isMandatoryOrVariadic=t.getCurrentArg=t.updateArgState=t.countEqualOptions=t.optionsAreEqual=t.flattenAnnotations=t.createArgState=t.TokenType=void 0;const i=n(1121),a=n(5927),s=n(7900),o=n(4482),r=n(5317);var c;!function(e){e.None="none",e.Subcommand="subcommand",e.Option="option",e.OptionArg="option_arg",e.SubcommandArg="subcommand_arg",e.Composite="composite"}(c||(t.TokenType=c={})),t.createArgState=e=>{const t=[];for(const n of e??[]){const e=new Set;for(let t=0;t<n.generators.length;t+=1){const a=n.generators[t],s=(0,i.makeArray)(a.template??[]);let o;s.includes("filepaths")&&s.includes("folders")?o={template:["filepaths","folders"]}:s.includes("filepaths")?o={template:"filepaths"}:s.includes("folders")&&(o={template:"folders"}),o&&"string"!=typeof a&&a.filterTemplateSuggestions&&(o.filterTemplateSuggestions=a.filterTemplateSuggestions),e.add(o??a)}t.push({...n,generators:[...e]})}return{args:t.length>0?t:null,index:0}},t.flattenAnnotations=e=>{const t=[];for(let n=0;n<e.length;n+=1){const i=e[n];i.type===c.Composite?t.push(...i.subtokens):t.push(i)}return t},t.optionsAreEqual=(e,t)=>e.name.some(e=>t.name.includes(e)),t.countEqualOptions=(e,n)=>n.reduce((n,i)=>(0,t.optionsAreEqual)(e,i)?n+1:n,0),t.updateArgState=e=>{const{args:t,index:n,variadicCount:i}=e;return t&&t[n]&&t[n].isVariadic?{args:t,index:n,variadicCount:(i||0)+1}:t&&t[n]&&n<t.length-1?{args:t,index:n+1}:{args:null,index:0}},t.getCurrentArg=e=>e.args&&e.args[e.index]||null,t.isMandatoryOrVariadic=e=>!!e&&(e.isVariadic||!e.isOptional);const l=e=>(0,t.isMandatoryOrVariadic)((0,t.getCurrentArg)(e.optionArgState))||!(0,t.getCurrentArg)(e.subcommandArgState),d=e=>l(e)?e.optionArgState:e.subcommandArgState,m=e=>{const{subcommandArgState:n,optionArgState:i,isEndOfOptions:a,haveEnteredSubcommandArgs:s,completionObj:o}=e;if(s&&!0===o.parserDirectives?.optionsMustPrecedeArguments)return!1;if(a)return!1;const r=(0,t.getCurrentArg)(n),c=(0,t.getCurrentArg)(i);return(0,t.isMandatoryOrVariadic)((0,t.getCurrentArg)(i))?!(!c?.isVariadic||!i.variadicCount||!1===c.optionsCanBreakVariadicArg):!r||!n.variadicCount||!1!==r?.optionsCanBreakVariadicArg};t.findOption=(e,t)=>{const n=e.options[t]||e.persistentOptions[t];if(!n)throw new s.UpdateStateError(`Option not found: ${t}`);return n},t.findSubcommand=(e,t)=>{const n=e.subcommands[t];if(!n)throw new s.UpdateStateError("Subcommand not found");return n};const p=(e,n,i=!1)=>{const a=(0,t.findOption)(e.completionObj,n);let{isRepeatable:o}=a;if(!1===o&&(o=1),!0!==o&&void 0!==o){const n=(0,t.countEqualOptions)(a,e.passedOptions);if(n>=o)throw new s.UpdateStateError(`Cannot pass option again, already passed ${n} times, and can only be passed ${o} times`)}const r=[...e.annotations,{text:n,type:c.Option}];return i?{...e,annotations:r}:{...e,annotations:r,passedOptions:[...e.passedOptions,a],optionArgState:(0,t.createArgState)(a.args)}},h=(e,n,i=!1)=>{if(!(0,t.getCurrentArg)(e.optionArgState))throw new s.UpdateStateError("Cannot consume option arg.");const a=[...e.annotations,{text:n,type:c.OptionArg}];return i?{...e,annotations:a}:{...e,annotations:a,optionArgState:(0,t.updateArgState)(e.optionArgState)}},u=e=>!(0,t.isMandatoryOrVariadic)((0,t.getCurrentArg)(e.optionArgState))&&!e.haveEnteredSubcommandArgs;function f(e,n,a=!1){if(u(e))try{return((e,n,i=!1)=>{const{completionObj:a,haveEnteredSubcommandArgs:o}=e;if(!a.subcommands)throw new s.UpdateStateError("No subcommands");if(o)throw new s.UpdateStateError("Already entered subcommand args");const r=(0,t.findSubcommand)(e.completionObj,n),l=[...e.annotations,{text:n,type:c.Subcommand}];return i?{...e,annotations:l}:(!r.parserDirectives&&a.parserDirectives&&(r.parserDirectives=a.parserDirectives),Object.assign(r.persistentOptions,a.persistentOptions),{...e,annotations:l,completionObj:r,passedOptions:[],optionArgState:(0,t.createArgState)(),subcommandArgState:(0,t.createArgState)(r.args)})})(e,n,a)}catch(e){}if(m(e))try{return((e,n,a=!1)=>{if(a&&["-","--"].includes(n))throw new s.UpdateStateError("Final token, not consuming as option");if("--"===n)return{...e,isEndOfOptions:!0,annotations:[...e.annotations,{text:n,type:c.Option}],optionArgState:{args:null,index:0}};const{parserDirectives:o}=e.completionObj;if(o?.flagsArePosixNoncompliant||n.startsWith("--")||!n.startsWith("-")){const r=new Set(o?.optionArgSeparators||"="),l=(0,i.firstMatchingToken)(n,r);if(l){const t=l[0],[i,...o]=n.split(t),r=o.join(t),d=p(e,i);if((d.optionArgState.args?.length??0)>1)throw new s.UpdateStateError("Cannot pass argument with separator: option takes multiple args");return{...h(d,r,a),annotations:[...e.annotations,{type:c.Composite,text:n,subtokens:[{type:c.Option,text:`${i}${t}`,tokenName:i},{type:c.OptionArg,text:r}]}]}}const d=p(e,n,a),m=(0,t.findOption)(e.completionObj,n);return m.requiresEquals||m.requiresSeparator?{...d,optionArgState:{args:null,index:0}}:d}let r=e,l="";const d=[];let{passedOptions:m}=e;for(let e=1;e<n.length;e+=1){const[i,a]=[`-${n[e]}`,n.slice(e+1)];m=r.passedOptions;try{r=p(r,i)}catch(t){if(e>1){l=n.slice(e);break}throw t}if(d.push({type:c.Option,text:1===e?i:n[e],tokenName:i}),(0,t.isMandatoryOrVariadic)((0,t.getCurrentArg)(r.optionArgState))){l=a;break}}if(l){if((r.optionArgState.args?.length??0)>1)throw new s.UpdateStateError("Cannot chain option argument: option takes multiple args");r=h(r,l,a),m=r.passedOptions,d.push({type:c.OptionArg,text:l})}return{...r,annotations:[...e.annotations,{type:c.Composite,text:n,subtokens:d}],passedOptions:a?m:r.passedOptions}})(e,n,a)}catch(e){}if(l(e))try{return h(e,n,a)}catch(e){}return((e,n,i=!1)=>{if(!(0,t.getCurrentArg)(e.subcommandArgState))throw new s.UpdateStateError("Cannot consume subcommand arg.");const a=[...e.annotations,{text:n,type:c.SubcommandArg}];return i?{...e,annotations:a}:{...e,annotations:a,subcommandArgState:(0,t.updateArgState)(e.subcommandArgState),haveEnteredSubcommandArgs:!0}})(e,n,a)}const g=(e,n,i)=>({completionObj:e,passedOptions:[],annotations:n&&i?[{text:n,type:c.Subcommand,spec:e,specLocation:i}]:[],commandIndex:0,optionArgState:(0,t.createArgState)(),subcommandArgState:(0,t.createArgState)(e.args),haveEnteredSubcommandArgs:!1,isEndOfOptions:!1}),b=async()=>{throw new s.ParsingHistoryError("Cannot run shell command while parsing history")};t.getResultFromState=e=>{const{completionObj:n,passedOptions:a,commandIndex:s,annotations:o}=e,r=o[o.length-1];let l=d(e),p=r?.text??"",h=e.isEndOfOptions;if(r?.type===c.Composite){l=e.optionArgState;const t=r.subtokens[r.subtokens.length-1];t.type===c.OptionArg&&(p=t.text,h=!0)}const f=(0,t.getCurrentArg)(l);let g=i.SuggestionFlag.Args;return h||(u(e)&&(g|=i.SuggestionFlag.Subcommands),m(e)&&(g|=i.SuggestionFlag.Options)),{completionObj:n,passedOptions:a,commandIndex:s,annotations:o,currentArg:f,searchTerm:p,suggestionFlags:g}},t.initialParserState=(0,t.getResultFromState)(g({name:[""],subcommands:{},options:{},persistentOptions:{},parserDirectives:{},args:[]}));const y={name:["firstTokenSpec"],subcommands:{},options:{},persistentOptions:{},loadSpec:void 0,args:[{name:"command",generators:[{custom:async(e,t,n)=>{let i=[];n?.currentProcess.includes("fish")?i=(await w({command:'complete -C ""',executable:n.currentProcess})).split("\n").map(e=>{const t=e.indexOf("\t");return{name:e.slice(0,t+1),description:e.slice(t+1),type:"subcommand"}}):n?.currentProcess.includes("bash")?i=(await w({command:"compgen -c",executable:n.currentProcess})).split("\n").map(e=>({name:e,type:"subcommand"})):n?.currentProcess.includes("zsh")&&(i=(await w({command:"for key in ${(k)commands}; do echo $key; done && alias +r",executable:n.currentProcess})).split("\n").map(e=>({name:e,type:"subcommand"})));const a=new Set;return i.filter(e=>!a.has(e.name)&&(a.add(e.name),!0))},cache:{strategy:"stale-while-revalidate",ttl:1e4}}]}],parserDirectives:{}},w=async({command:e,executable:t})=>new Promise((n,i)=>{(0,r.exec)(`${t} -c "${e}"`,(e,t,a)=>{e?i(a):n(t)})});t.parseArguments=async(e,n,r,m,p=!1)=>{const h=e?.tokens??[];if(!e||0===h.length)throw new s.ParseArgumentsError("Invalid token array");if(1===h.length){const e=y;let n={name:"firstTokenSpec",type:i.SpecLocationSource.GLOBAL};return h[0].text.includes("/")&&(n="bin/console"===h[0].text?{name:"php/bin-console",type:i.SpecLocationSource.GLOBAL}:{name:"dotslash",type:i.SpecLocationSource.GLOBAL}),(0,t.getResultFromState)(g(e,h[0].text,n))}let u=await(async(e,n,i,r,m,p=0)=>{const h=function(e=!1,t){return e?b:t.executeCommand}(m,r);let u=e,y=u.tokens.slice(p);const w={type:"global",name:"fake"};if(!i||!w)throw new s.UpdateStateError("Failed loading spec");let v=g((0,o.convertSubcommand)(i,o.initializeDefault),y[0].text,w);const k=new Set;let x;for(let n=1;n<y.length&&n!==y.length-1;n+=1){const i=y[n].text,s=(0,t.getCurrentArg)(d(v)),o=l(v)?c.OptionArg:c.SubcommandArg,r=v;v=f(v,i),console.debug("Parser state update",{state:v});const{annotations:m}=v,g=m[m.length-1];if((g.type===c.Composite?g.subtokens[g.subtokens.length-1].type:g.type)===o&&s?.parserDirectives?.alias&&!k.has(i)){const{alias:t}=s.parserDirectives;try{const s="string"==typeof t?t:await t(i,h);try{u=(0,a.substituteAlias)(e,y[n],s),k.add(i),y=u.tokens.slice(p),v=r,n-=1;continue}catch(e){throw console.error("Error substituting alias:",e),e}}catch(e){if(0===k.size)throw e;x=e}}if(x)throw x;k.clear()}return v})(e,0,r,m,p,0);const w=h[h.length-1].text;try{u=f(u,w,!0)}catch(e){u={...u,annotations:[...u.annotations,{type:c.None,text:w}]}}return(0,t.getResultFromState)(u)}},1371:(e,t)=>{"use strict";function n(e){return e.trim().replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())}Object.defineProperty(t,"__esModule",{value:!0});const i={name:"yo",description:"Yeoman generator",args:{name:"generator",generators:{script:["yo","--generators"],postProcess:function(e){try{return e.split("\n").filter(e=>e.trim()&&"Available Generators:"!==e).map(e=>({name:e.trim(),icon:void 0,displayName:n(e),description:`${n(e)} Generator`,priority:100,options:[{name:"--help",description:`Help of "${n(e)}" generator`}]}))}catch(e){return console.error(e),[]}}},suggestions:[{name:"doctor",description:"Running sanity checks on your system",icon:"fig://icon?type=alert"},{name:"completion",description:"To enable shell completion for the yo command",icon:"fig://icon?type=asterisk"}],isCommand:!0,isOptional:!0},options:[{name:"--help",description:"Print info and generator's options and usage"},{name:["-f","--force"],description:"Overwrite files that already exist",isDangerous:!0},{name:"--version",description:"Print version"},{name:"--no-color",description:"Disable color"},{name:"--insight",description:"Enable anonymous tracking"},{name:"--no-insight",description:"Disable anonymous tracking"},{name:"--generators",description:"Print available generators"},{name:"--local-only",description:"Disable lookup of globally-installed generators"}]};t.default=i},1375:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i={name:"node",description:"Run the node interpreter",args:{name:"node script",isScript:!0,generators:(0,n(2341).filepaths)({extensions:["mjs","js","cjs"],editFileSuggestions:{priority:76}})},options:[{name:["-e","--eval=..."],insertValue:"-e '{cursor}'",description:"Evaluate script",args:{}},{name:"--watch",description:"Watch input files"},{name:"--watch-path",description:"Specify a watch directory or file",args:{name:"path",template:"filepaths"},isRepeatable:!0},{name:"--watch-preserve-output",description:"Disable the clearing of the console when watch mode restarts the process",dependsOn:["--watch","--watch-path"]},{name:"--env-file",description:"Specify a file containing environment variables",args:{name:"path",template:"filepaths"},isRepeatable:!0},{name:["-p","--print"],description:"Evaluate script and print result"},{name:["-c","--check"],description:"Syntax check script without executing"},{name:["-v","--version"],description:"Print Node.js version"},{name:["-i","--interactive"],description:"Always enter the REPL even if stdin does not appear to be a terminal"},{name:["-h","--help"],description:"Print node command line options (currently set)"},{name:"--inspect",requiresSeparator:!0,args:{name:"[host:]port",isOptional:!0},description:"Activate inspector on host:port (default: 127.0.0.1:9229)"},{name:"--preserve-symlinks",description:"Follows symlinks to directories when examining source code and templates for translation strings"}],generateSpec:async(e,t)=>{if(0===(await t({command:"bash",args:["-c","isAdonisJsonPresentCommand"]})).status)return{name:"node",subcommands:[{name:"ace",description:"Run AdonisJS command-line",options:[{name:["-h","--help"],description:"Display AdonisJS Ace help"},{name:["-v","--version"],description:"Display AdonisJS version"}],subcommands:[{name:"build",description:"Compile project from Typescript to Javascript. Also compiles the frontend assets if using webpack encore",options:[{name:["-prod","--production"],description:"Build for production"},{name:"--assets",description:"Build frontend assets when webpack encore is installed"},{name:"--no-assets",description:"Disable building assets"},{name:"--ignore-ts-errors",description:"Ignore typescript errors and complete the build process"},{name:"--tsconfig",description:"Path to the TypeScript project configuration file",args:{name:"path",description:"Path to tsconfig.json"}},{name:"--encore-args",requiresSeparator:!0,insertValue:"--encore-args='{cursor}'",description:"CLI options to pass to the encore command line"},{name:"--client",args:{name:"name"},description:"Select the package manager to decide which lock file to copy to the build folder"}]},{name:["configure","invoke"],description:"Configure a given AdonisJS package",args:{name:"name",description:"Name of the package you want to configure"},subcommands:[{name:"@adonisjs/auth",description:"Trigger auto configuring auth package"},{name:"@adonisjs/shield",description:"Trigger auto configuring shield package"},{name:"@adonisjs/redis",description:"Trigger auto configuring redis package"},{name:"@adonisjs/mail",description:"Trigger auto configuring mail package"}]},{name:"repl",description:"Start a new REPL session"},{name:"serve",description:"Start the AdonisJS HTTP server, along with the file watcher. Also starts the webpack dev server when webpack encore is installed",options:[{name:"--assets",description:"Start webpack dev server when encore is installed"},{name:"--no-assets",description:"Disable webpack dev server"},{name:["-w","--watch"],description:"Watch for file changes and re-start the HTTP server on change"},{name:["-p","--poll"],description:"Detect file changes by polling files instead of listening to filesystem events"},{name:"--node-args",requiresSeparator:!0,insertValue:"--node-args='{cursor}'",description:"CLI options to pass to the node command line"},{name:"--encore-args",requiresSeparator:!0,insertValue:"--encore-args='{cursor}'",description:"CLI options to pass to the encore command line"}]},{name:"db:seed",description:"Execute database seeder files",options:[{name:["-c","--connection"],description:"Define a custom database connection for the seeders",args:{name:"name"}},{name:["-i","--interactive"],description:"Run seeders in interactive mode"},{name:["-f","--files"],args:{name:"file",isVariadic:!0,template:"filepaths"},description:"Define a custom set of seeders files names to run"}]},{name:"dump:rcfile",description:"Dump contents of .adonisrc.json file along with defaults"},{name:"generate:key",description:"Generate a new APP_KEY secret"},{name:"generate:manifest",description:"Generate ace commands manifest file. Manifest file speeds up commands lookup"},{name:"list:routes",description:"List application routes"},{name:"make:command",description:"Make a new ace command"},{name:"make:controller",description:"Make a new HTTP controller",args:{name:"name",description:"Name of the controller class"},options:[{name:["-r","--resource"],description:"Add resourceful methods to the controller class"},{name:["-e","--exact"],description:"Create the controller with the exact name as provided"}]},{name:"make:exception",description:"Make a new custom exception class"},{name:"make:listener",description:"Make a new event listener class"},{name:"make:mailer",description:"Make a new mailer class",args:{name:"name",description:"Mailer class name"}},{name:"make:middleware",description:"Make a new middleware",args:{name:"name",description:"Middleware class name"}},{name:"make:migration",description:"Make a new migration file",args:{name:"name",description:"Name of the migration file"},options:[{name:"--connection",description:"The connection flag is used to lookup the directory for the migration file",args:{name:"name"}},{name:"--folder",description:"Pre-select a migration directory",args:{name:"name",template:"filepaths"}},{name:"--create",description:"Define the table name for creating a new table",args:{name:"name"}},{name:"--table",description:"Define the table name for altering an existing table",args:{name:"name"}}]},{name:"make:model",description:"Make a new Lucid model",args:{name:"name",description:"Name of the model class"},options:[{name:["-m","--migration"],description:"Generate the migration for the model"},{name:["-c","--controller"],description:"Generate the controller for the model"}]},{name:"make:prldfile",description:"Make a new preload file",subcommands:[{name:"events",description:"Make events preload file"}]},{name:"make:provider",description:"Make a new provider class"},{name:"make:seeder",description:"Make a new Seeder file",args:{name:"name",description:"Name of the seeder class"}},{name:"make:validator",description:"Make a new validator",args:{name:"name",description:"Name of the validator class"},options:[{name:["-e","--exact"],description:"Create the validator with the exact name as provided"}]},{name:"make:view",description:"Make a new view template",args:{name:"name",description:"Name of the view"},options:[{name:["-e","--exact"],description:"Create the template file with the exact name as provided"}]},{name:"migration:rollback",description:"Rollback migrations to a given batch number",options:[{name:["-c","--connection"],description:"Define a custom database connection",args:{name:"name"}},{name:"--force",description:"Explicitly force to run migrations in production",isDangerous:!0},{name:"--dry-run",description:"Print SQL queries, instead of running the migrations"},{name:"--batch",args:{name:"number",description:"Use 0 to rollback to initial state"},description:"Define custom batch number for rollback"}]},{name:"migration:run",description:"Run pending migrations",options:[{name:["-c","--connection"],description:"Define a custom database connection",args:{name:"name"}},{name:"--force",description:"Explicitly force to run migrations in production",isDangerous:!0},{name:"--dry-run",description:"Print SQL queries, instead of running the migrations"}]},{name:"migration:status",description:"Check migrations current status"}]}]}}};t.default=i},1380:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"fmt",description:"Simple text formatter",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"-c",description:"Center the text, line by line. In this case, most of the other\noptions are ignored; no splitting or joining of lines is done"},{name:"-m",description:"Try to format mail header lines contained in the input\nsensibly"},{name:"-n",description:"Format lines beginning with a ‘.’ (dot) character"},{name:"-p",description:"Allow indented paragraphs. Without the -p flag, any change in\nthe amount of whitespace at the start of a line results in a\nnew paragraph being begun"},{name:"-s",description:"Collapse whitespace inside lines, so that multiple whitespace\ncharacters are turned into a single space. (Or, at the end of\na sentence, a double space.)"},{name:"-d",description:"Treat the chars (and no others) as sentence-ending characters.\nBy default the sentence-ending characters are full stop (‘.’),\nquestion mark (‘?’) and exclamation mark (‘!’). Remember that\nsome characters may need to be escaped to protect them from\nyour shell",args:{name:"chars",suggestions:[".","?","!"],default:"."}},{name:"-l",description:"Replace multiple spaces with tabs at the start of each output\nline, if possible. Each number spaces will be replaced with\none tab. The default is 8. If number is 0, spaces are\npreserved",args:{name:"number",suggestions:["8"],default:"8"}},{name:"-t",description:"Assume that the input files' tabs assume number spaces per tab\nstop. The default is 8",args:{name:"number",suggestions:["8"],default:"8"}}],args:{name:"file",description:"File(s) to format",isOptional:!0,isVariadic:!0,template:"filepaths"}}},1398:e=>{"use strict";e.exports=require("vscode")},1421:e=>{"use strict";e.exports=require("node:child_process")},1485:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"nano",description:"Nano's ANOther editor, an enhanced free Pico clone",args:{template:"filepaths"}}},1525:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=void 0,a=[{name:"new",loadSpec:"dotnet/dotnet-new",icon:i},{name:"add",loadSpec:"dotnet/dotnet-add",icon:i},{name:"list",loadSpec:"dotnet/dotnet-list",icon:i},{name:"remove",loadSpec:"dotnet/dotnet-remove",icon:i},{name:"build",loadSpec:"dotnet/dotnet-build",icon:i},{name:"build-server",loadSpec:"dotnet/dotnet-build-server",icon:i},{name:"clean",loadSpec:"dotnet/dotnet-clean",icon:i},{name:"format",loadSpec:"dotnet/dotnet-format",icon:i},{name:"migrate",loadSpec:"dotnet/dotnet-migrate",icon:i},{name:"msbuild",loadSpec:"dotnet/dotnet-msbuild",icon:i},{name:"nuget",loadSpec:"dotnet/dotnet-nuget",icon:i},{name:"pack",loadSpec:"dotnet/dotnet-pack",icon:i},{name:"publish",loadSpec:"dotnet/dotnet-publish",icon:i},{name:"restore",loadSpec:"dotnet/dotnet-restore",icon:i},{name:"run",loadSpec:"dotnet/dotnet-run",icon:i},{name:"sln",loadSpec:"dotnet/dotnet-sln",icon:i},{name:"store",loadSpec:"dotnet/dotnet-store",icon:i},{name:"test",loadSpec:"dotnet/dotnet-test",icon:i},{name:"tool",loadSpec:"dotnet/dotnet-tool",icon:i}],s={name:"dotnet",description:"The dotnet cli",icon:i,args:{name:"command",isOptional:!0,generators:(0,n(2341).filepaths)({extensions:["dll"]})},options:[{name:"--version",description:"Prints out the version of the .NET SDK used by dotnet commands. Includes the effects of any global.json"},{name:"--info",description:"Prints out detailed information about a .NET installation and the machine environment, such as the current operating system, and commit SHA of the .NET version"},{name:"--list-runtimes",description:"Prints out a list of the installed .NET runtimes. An x86 version of the SDK lists only x86 runtimes, and an x64 version of the SDK lists only x64 runtimes"},{name:"--list-sdks",description:"Prints out a list of the installed .NET SDKs"},{name:["-?","-h","--help"],description:"Prints out a list of available commands"},{name:["-d","--diagnostics"],description:"Enables diagnostic output"},{name:["-v","--verbosity"],description:"Sets the verbosity level of the command. Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. Not supported in every command. See specific command page to determine if this option is available",args:{name:"verbosity",suggestions:["quiet","minimal","normal","detailed","diagnostic"]}},{name:"--additionalprobingpath",description:"Path containing probing policy and assemblies to probe",args:{name:"path",template:"folders"}},{name:"--additional-deps",description:"Path to an additional .deps.json file. A deps.json file contains a list of dependencies, compilation dependencies, and version information used to address assembly conflicts. For more information, see Runtime Configuration Files on GitHub",args:{name:"deps",template:"filepaths"}},{name:"-depsfile",description:"Path to the deps.json file. A deps.json file is a configuration file that contains information about dependencies necessary to run the application. This file is generated by the .NET SDK",args:{name:"deps",template:"filepaths"}},{name:"--runtimeconfig",description:"Path to a runtimeconfig.json file. A runtimeconfig.json file is a configuration file that contains run-time settings",args:{name:"path",template:"filepaths"}},{name:"--roll-forward",description:"Controls how roll forward is applied to the app. The SETTING can be one of the following values. If not specified, Minor is the default",args:{name:"setting",suggestions:["LatestPatch","Minor","Major","LatestMinor","LatestMajor","Disable"]}},{name:"--fx-version",description:"Version of the .NET runtime to use to run the application",args:{name:"version"}}],subcommands:a,async generateSpec(e,t){const n=/(([a-zA-Z \.\[\]#,/][^ ]{1,})+)/g,i=[],{stdout:a}=await t({command:"dotnet",args:["tool","list","--global"]}),s=a.split("\n").slice(2);for(const e of s){const[t,a,s]=e.match(n).map(e=>e.trim()),o=s.split(",").map(e=>({name:e.replace("dotnet-",""),description:e,args:{name:"args",isOptional:!0}}));i.push(...o)}return{name:"dotnet",subcommands:i}}};t.default=s},1577:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"export",description:"Export variables",hidden:!0,args:{isVariadic:!0}}},1609:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertSubcommand=function e(t,n){const{subcommands:o,options:r,args:c}=t;return{...n.subcommand(t),name:(0,i.makeArray)(t.name),subcommands:a(o?.map(t=>e(t,n))),options:a(r?.filter(e=>!e.isPersistent)?.map(e=>s(e,n))),persistentOptions:a(r?.filter(e=>e.isPersistent)?.map(e=>s(e,n))),args:c?(0,i.makeArray)(c).map(n.arg):[]}};const i=n(5095),a=e=>{const t={};if(!e)return t;for(let n=0;n<e.length;n+=1)e[n].name.forEach(i=>{t[i]=e[n]});return t};function s(e,t){return{...t.option(e),name:(0,i.makeArray)(e.name),args:e.args?(0,i.makeArray)(e.args).map(t.arg):[]}}},1616:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"fdisk",description:"Manipulate disk partition table",options:[{name:["--help","-h"],description:"Show help for fdisk"},{name:["--version","-V"],description:"Show version for lsblk"},{name:["--sector-size","-b"],description:"Specify the sector size of the disk",args:{name:"mode",description:"Valid values are 512, 1024, 2048, and 4096",suggestions:["512","1024","2048","4096"]}},{name:["--protect-boot","-B"],description:"Don't erase the beginning of the first disk sector when creating a new disk label"},{name:["--compatibility","-c"],description:"Specify the compatibility mode, 'dos' or 'nondos'",args:{name:"mode",isOptional:!0,suggestions:["dos","nondos"]}},{name:["--color","-L"],description:"Colorize the output",args:{name:"when",isOptional:!0,suggestions:["always","never","auto"]}},{name:["--list","-l"],description:"List the partition tables for the specified devices and then exit"},{name:["--list-details","-x"],description:"Like --list, but provides more details"},{name:"--lock",description:"Use exclusive BSD lock for device or file it operates",args:{name:"mode",description:"Optional argument mode can be yes, no (or 1 and 0) or nonblock",isOptional:!0,suggestions:["yes","no","nonblock"]}},{name:["--noauto-pt","-n"],description:"Don't automatically create a default partition table on empty device"},{name:["--output","-o"],description:"Desc",args:{name:"list"}},{name:["--getsz","-s"],description:"Print the size in 512-byte sectors of each given block device. This option is DEPRECATED in favour of blockdev(8)",deprecated:{description:"This option is DEPRECATED in favour of blockdev(8)"}},{name:["--type","-t"],description:"Enable support only for disklabels of the specified type, and disable support for all other types",args:{name:"type"}},{name:["--units","-u"],description:"When listing partition tables, show sizes in 'sectors' or in 'cylinders'",args:{name:"unit",isOptional:!0,suggestions:["sectors","cylinders"]}},{name:["--cylinders","-C"],description:"Specify the number of cylinders of the disk",args:{name:"number"}},{name:["--heads","-H"],description:"Specify the number of heads of the disk. (Not the physical number, of course, but the number used for partition tables.)",args:{name:"number"}},{name:["--sectors","-S"],description:"Specify the number of sectors per track of the disk. (Not the physical number, of course, but the number used for partition tables.)"},{name:["--wipe","-w"],description:"Wipe filesystem, RAID and partition-table signatures from the device, in order to avoid possible collisions",args:{name:"when",description:"The argument when can be auto, never or always",suggestions:["auto","never","always"]}},{name:["--wipe-partitions","-W"],description:"Wipe filesystem, RAID and partition-table signatures from a newly created partitions, in order to avoid possible collisions",args:{name:"when",description:"The argument when can be auto, never or always"}}],args:{name:"device",description:"Device to list",isOptional:!0,template:"filepaths"}}},1636:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"killall",description:"Kill processes by name",args:{name:"process_name",isVariadic:!0,generators:{script:["bash","-c","ps -A -o comm | sort -u"],postProcess:e=>e.trim().split("\n").map(e=>{const t=e.indexOf(".app/"),n=-1!==t,i=e.slice(e.lastIndexOf("/")+1),a=new Set(i);return{name:i,description:e,priority:!["(","_","."].some(e=>a.has(e))&&n?51:40,icon:n?"fig://"+e.slice(0,t+4):"fig://icon?type=gear"}})}},options:[{name:"-d",description:"Be verbose (dry run) and display number of user processes"},{name:"-e",description:"Use the effective user ID instead of the real user ID for matching processes with -u"},{name:"-help",description:"Display help and exit"},{name:"-I",description:"Request confirmation before killing each process"},{name:"-l",description:"List the names of the available signals and exit"},{name:"-m",description:"Match the process name as a regular expression"},{name:"-v",description:"Be verbose"},{name:"-s",description:"Be verbose (dry run)"},...["hup","int","quit","ill","trap","abrt","emt","fpe","kill","bus","segv","sys","pipe","alrm","urg","stop","tstp","cont","chld","ttin","ttou","io","xcpu","xfsz","vtalrm","prof","winch","info","usr1","usr2"].map(e=>({name:"-SIG"+e.toUpperCase(),description:`Send ${e.toUpperCase()} instead of TERM`})),{name:"-u",description:"Limit potentially matching processes to those belonging to the user",args:{name:"user",generators:{script:["bash","-c","dscl . -list /Users | grep -v '^_'"],postProcess:e=>e.trim().split("\n").map(e=>({name:e,icon:"fig://template?badge=👤"}))}}},{name:"-t",description:"Limit matching processes to those running on the specified TTY",args:{name:"tty"}},{name:"-c",description:"Limit matching processes to those matching the given name",args:{name:"name"}},{name:"-q",description:"Suppress error message if no processes are matched"},{name:"-z",description:"Do not skip zombies"}]};t.default=n},1765:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"source_file",template:["filepaths","folders"]},{name:"link_name or link_dirname",isOptional:!0}],i={name:"ln",description:"Create (default hard) symbolic links to files",args:n,options:[{name:"-s",description:"Create a symbolic link",args:n},{name:"-v",description:"Verbose"},{name:"-F",description:"If link name already exists replace it",args:n},{name:"-h",description:"Don't follow symbolic links"},{name:"-f",description:"If link name already exists unlink the old one before creating the new one",args:n},{name:"-i",description:"Prompt if proposed link already exists",args:n},{name:"-n",description:"Same as -h don't follow symbolic links"}]};t.default=i},1799:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"uname",description:"Print operating system name",options:[{name:"-a",description:"Print all available system information"},{name:"-m",description:"Print the machine hardware name"},{name:"-n",description:"Print the system hostname"},{name:"-p",description:"Print the machine processor architecture name"},{name:"-r",description:"Print the operating system release"},{name:"-s",description:"Print the operating system name"},{name:"-v",description:"Print the operating system version"}]}},1822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=["-A","-F","-G","-M","-P","-g","-p","-u"],i={name:"id",description:"The id utility displays the user and group names and numeric IDs, of the calling process, to the standard output. If the real and effective IDs are different, both are displayed, otherwise only the real ID is displayed. If a user (login name or user ID) is specified, the user and group IDs of that user are displayed. In this case, the real and effective IDs are assumed to be the same",options:[{name:"-A",description:"Display the process audit user ID and other process audit properties, which requires privilege",exclusiveOn:n},{name:"-F",description:"Display the full name of the user",exclusiveOn:n},{name:"-G",description:"Display the different group IDs (effective, real and supplementary) as white-space separated numbers, in no particular order",exclusiveOn:n},{name:"-M",description:"Display the MAC label of the current process",exclusiveOn:n},{name:"-P",description:"Display the id as a password file entry",exclusiveOn:n},{name:"-g",description:"Display the effective group ID as a number",exclusiveOn:n},{name:"-n",description:"Display the name of the user or group ID for the -G, -g and -u options instead of the number. If any of the ID numbers cannot be mapped into names the number will be displayed as usual",dependsOn:["-G","-g","-u"],exclusiveOn:n},{name:"-p",description:"Make the output human-readable",exclusiveOn:n},{name:"-u",description:"Display the effective user ID as a number",exclusiveOn:n}],args:{name:"user",isOptional:!0,generators:{script:["bash","-c","dscl . -list /Users | grep -v '^_'"],postProcess:e=>e.trim().split("\n").map(e=>({name:e,icon:"fig://template?badge=👤"}))}}};t.default=i},1847:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zshBuiltinsCommandDescriptionsCache=void 0,t.zshBuiltinsCommandDescriptionsCache={".":{shortDescription:"Source a file",description:": Read commands from *file* and execute them in the current shell environment.\n\n If *file* does not contain a slash, or if **PATH_DIRS** is set, the shell looks in the components of **\\$path** to find the directory containing *file*. Files in the current directory are not read unless `**.**` appears somewhere in **\\$path**. If a file named `*file***.zwc**` is found, is newer than *file*, and is the compiled form (created with the **zcompile** builtin) of *file*, then commands are read from that file instead of *file*.\n\n If any arguments *arg* are given, they become the positional parameters; the old positional parameters are restored when the *file* is done executing. However, if no arguments are given, the positional parameters remain those of the calling context, and no restoring is done.\n\n If *file* was not found the return status is 127; if *file* was found but contained a syntax error the return status is 126; else the return status is the exit status of the last command executed.",args:". file [ arg ... ]"},":":{shortDescription:"No effect",description:": This command does nothing, although normal argument expansions is performed which may have effects on shell parameters. A zero exit status is returned.",args:": [ arg ... ]"},alias:{shortDescription:"Define or view aliases",description:": For each *name* with a corresponding *value*, define an alias with that value. A trailing space in *value* causes the next word to be checked for alias expansion. If the **-g** flag is present, define a global alias; global aliases are expanded even if they do not occur in command position:\n\n > % perldoc --help 2>&1 | grep 'built-in functions'\n > -f Search Perl built-in functions\n > % alias -g HG='--help 2>&1 | grep'\n > % perldoc HG 'built-in functions'\n > -f Search Perl built-in functions\n\n If the **-s** flag is present, define a suffix alias: if the command word on a command line is in the form `*text***.***name*`, where *text* is any non-empty string, it is replaced by the text `*value* *text***.***name*`. Note that *name* is treated as a literal string, not a pattern. A trailing space in *value* is not special in this case. For example,\n\n > alias -s ps='gv --'\n\n will cause the command `**\\*.ps**` to be expanded to `**gv \\-- \\*.ps**`. As alias expansion is carried out earlier than globbing, the `**\\*.ps**` will then be expanded. Suffix aliases constitute a different name space from other aliases (so in the above example it is still possible to create an alias for the command **ps**) and the two sets are never listed together.\n\n For each *name* with no *value*, print the value of *name*, if any. With no arguments, print all currently defined aliases other than suffix aliases. If the **-m** flag is given the arguments are taken as patterns (they should be quoted to preserve them from being interpreted as glob patterns), and the aliases matching these patterns are printed. When printing aliases and one of the **-g**, **-r** or **-s** flags is present, restrict the printing to global, regular or suffix aliases, respectively; a regular alias is one which is neither a global nor a suffix alias. Using `**+**` instead of `**-**`, or ending the option list with a single `**+**`, prevents the values of the aliases from being printed.\n\n If the **-L** flag is present, then print each alias in a manner suitable for putting in a startup script. The exit status is nonzero if a *name* (with no *value*) is given for which no alias has been defined.\n\n For more on aliases, include common problems, see the section ALIASING in *zshmisc*(1).",args:"alias [ {+|-}gmrsL ] [ name[=value] ... ]"},autoload:{shortDescription:"Autoload a function",description:": See the section `Autoloading Functions` in *zshmisc*(1) for full details. The **fpath** parameter will be searched to find the function definition when the function is first referenced.\n\n If *name* consists of an absolute path, the function is defined to load from the file given (searching as usual for dump files in the given location). The name of the function is the basename (non-directory part) of the file. It is normally an error if the function is not found in the given location; however, if the option **-d** is given, searching for the function defaults to **\\$fpath**. If a function is loaded by absolute path, any functions loaded from it that are marked for **autoload** without an absolute path have the load path of the parent function temporarily prepended to **\\$fpath**.\n\n If the option **-r** or **-R** is given, the function is searched for immediately and the location is recorded internally for use when the function is executed; a relative path is expanded using the value of **\\$PWD**. This protects against a change to **\\$fpath** after the call to **autoload**. With **-r**, if the function is not found, it is silently left unresolved until execution; with **-R**, an error message is printed and command processing aborted immediately the search fails, i.e. at the **autoload** command rather than at function execution..\n\n The flag **-X** may be used only inside a shell function. It causes the calling function to be marked for autoloading and then immediately loaded and executed, with the current array of positional parameters as arguments. This replaces the previous definition of the function. If no function definition is found, an error is printed and the function remains undefined and marked for autoloading. If an argument is given, it is used as a directory (i.e. it does not include the name of the function) in which the function is to be found; this may be combined with the **-d** option to allow the function search to default to **\\$fpath** if it is not in the given location.\n\n The flag **+X** attempts to load each *name* as an autoloaded function, but does *not* execute it. The exit status is zero (success) if the function was not previously defined *and* a definition for it was found. This does *not* replace any existing definition of the function. The exit status is nonzero (failure) if the function was already defined or when no definition was found. In the latter case the function remains undefined and marked for autoloading. If ksh-style autoloading is enabled, the function created will contain the contents of the file plus a call to the function itself appended to it, thus giving normal ksh autoloading behaviour on the first call to the function. If the **-m** flag is also given each *name* is treated as a pattern and all functions already marked for autoload that match the pattern are loaded.\n\n With the **-t** flag, turn on execution tracing; with **-T**, turn on execution tracing only for the current function, turning it off on entry to any called functions that do not also have tracing enabled.\n\n With the **-U** flag, alias expansion is suppressed when the function is loaded.\n\n With the **-w** flag, the *name*s are taken as names of files compiled with the **zcompile** builtin, and all functions defined in them are marked for autoloading.\n\n The flags **-z** and **-k** mark the function to be autoloaded using the zsh or ksh style, as if the option **KSH_AUTOLOAD** were unset or were set, respectively. The flags override the setting of the option at the time the function is loaded.\n\n Note that the **autoload** command makes no attempt to ensure the shell options set during the loading or execution of the file have any particular value. For this, the **emulate** command can be used:\n\n > emulate zsh -c 'autoload -Uz func'\n\n arranges that when *func is loaded the shell is in native* **zsh** emulation, and this emulation is also applied when *func is run.*\n\n Some of the functions of **autoload** *are also provided by* **functions** -u *or* **functions -U***, but* **autoload** *is a more comprehensive* interface.",args:"autoload [ {+|-}RTUXdkmrtWz ] [ -w ] [ name ... ]"},bg:{shortDescription:"Put a job in the background",description:"*job \\...* **&** Put each specified *job in the background,* or the current job if none is specified.",args:"bg [ job ... ]"},bindkey:{shortDescription:"Manipulate keymap names",description:": See the section `Zle Builtins` in *zshzle(1).*",args:"bindkey"},break:{shortDescription:"Exit from a loop",description:": Exit from an enclosing **for***,* **while***,* **until***,* **select** *or* **repeat** *loop. If an arithmetic expression n* is specified, then break *n levels instead of just one.*",args:"break [ n ]"},builtin:{shortDescription:"Executes a builtin",description:": Executes the builtin *name, with the given args.*",args:"builtin name [ args ... ]"},bye:{shortDescription:"Exit the shell",description:": Same as **exit***.*",args:"bye"},cap:{shortDescription:"Manipulating POSIX capability sets",description:": See the section `The zsh/cap Module` in *zshmodules(1).*",args:"cap"},cd:{shortDescription:"Change the current directory",description:"**cd** *\\[* **-qsLP** *\\] {***+***\\|***-***}n* Change the current directory. In the first form, change the current directory to *arg, or to the value of* **\\$HOME** *if* *arg is not specified. If arg is `***-***`, change to the* previous directory.\n\n> Otherwise, if *arg begins with a slash, attempt to change to the* directory given by *arg.*\n>\n> If *arg does not begin with a slash, the behaviour depends on whether* the current directory `**.***` occurs in the list of directories contained* in the shell parameter **cdpath***. If it does not, first attempt to change* to the directory *arg under the current directory, and if that fails* but **cdpath** *is set and contains at least one element attempt to change* to the directory *arg under each component of* **cdpath** *in turn until* successful. If `**.***` occurs in* **cdpath***, then* **cdpath** *is searched* strictly in order so that `**.***` is only tried at the appropriate point.*\n>\n> The order of testing **cdpath** *is modified if the option* **POSIX_CD** is set, as described in the documentation for the option.\n>\n> If no directory is found, the option **CDABLE_VARS** *is set, and a* parameter named *arg exists whose value begins with a slash, treat its* value as the directory. In that case, the parameter is added to the named directory hash table.\n>\n> The second form of **cd** *substitutes the string new* for the string *old in the name of the current directory,* and tries to change to this new directory.\n>\n> The third form of **cd** *extracts an entry from the directory* stack, and changes to that directory. An argument of the form `**+***n` identifies a stack entry by counting from the left* of the list shown by the **dirs** *command, starting with zero.* An argument of the form `**-***n` counts from the right.* If the **PUSHD_MINUS** *option is set, the meanings of `***+***`* and `**-***` in this context are swapped.* If the **POSIX_CD** *option is set, this form of* **cd** *is not recognised* and will be interpreted as the first form.\n>\n> If the **-q** *(quiet) option is specified, the hook function* **chpwd** and the functions in the array **chpwd_functions** *are not called.* This is useful for calls to **cd** *that do not change the environment* seen by an interactive user.\n>\n> If the **-s** *option is specified,* **cd** *refuses to change the current* directory if the given pathname contains symlinks. If the **-P** *option* is given or the **CHASE_LINKS** *option is set, symbolic links are resolved* to their true values. If the **-L** *option is given symbolic links are* retained in the directory (and not resolved) regardless of the state of the **CHASE_LINKS** *option.*",args:"cd [ -qsLP ] [ arg ]\n\ncd [ -qsLP ] old new"},chdir:{shortDescription:"Change the current directory",description:": Same as **cd***.*",args:"chdir"},clone:{shortDescription:"Clone shell onto another terminal",description:": See the section `The zsh/clone Module` in *zshmodules(1).*",args:"clone"},command:{shortDescription:"Execute a command",description:": The simple command argument is taken as an external command instead of a function or builtin and is executed. If the **POSIX_BUILTINS** *option* is set, builtins will also be executed but certain special properties of them are suppressed. The **-p** *flag causes a default path to be* searched instead of that in **\\$path***. With the* **-v** *flag,* **command** is similar to **whence** *and with* **-V***, it is equivalent to* **whence** -v*.*\n\n See also the section `Precommand Modifiers` in *zshmisc(1).*",args:"command [ -pvV ] simple command"},comparguments:{shortDescription:"Complete arguments",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"comparguments"},compcall:{shortDescription:"Complete call",description:": See the section `The zsh/compctl Module` in *zshmodules(1).*",args:"compcall"},compctl:{shortDescription:"Complete control",description:": See the section `The zsh/compctl Module` in *zshmodules(1).*",args:"compctl"},compdescribe:{shortDescription:"Complete describe",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"compdescribe"},compfiles:{shortDescription:"Complete files",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"compfiles"},compgroups:{shortDescription:"Complete groups",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"compgroups"},compquote:{shortDescription:"Complete quote",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"compquote"},comptags:{shortDescription:"Complete tags",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"comptags"},comptry:{shortDescription:"Complete try",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"comptry"},compvalues:{shortDescription:"Complete values",description:": See the section `The zsh/computil Module` in *zshmodules(1).*",args:"compvalues"},continue:{shortDescription:"Resume the next loop iteration",description:": Resume the next iteration of the enclosing **for***,* **while***,* **until***,* **select** *or* **repeat** *loop. If an arithmetic expression n is specified, break out of* *n-1 loops and resume at the nth enclosing loop.*",args:"continue [ n ]"},declare:{shortDescription:"Set or display parameter attributes/values",description:": Same as **typeset***.*",args:"declare"},dirs:{shortDescription:"Interact with directory stack",description:"**dirs** *\\[* **-lpv** *\\]* With no arguments, print the contents of the directory stack. Directories are added to this stack with the **pushd** *command,* and removed with the **cd** *or* **popd** *commands.* If arguments are specified, load them onto the directory stack, replacing anything that was there, and push the current directory onto the stack.\n\n> **-c** clear the directory stack.\n>\n> **-l**\n>\n> : print directory names in full instead of using of using **\\~** *expressions (see Dynamic and Static named directories in zshexpn(1)).*\n>\n> **-p**\n>\n> : print directory entries one per line.\n>\n> **-v**\n>\n> : number the directories in the stack when printing.",args:"dirs [ -c ] [ arg ... ]"},disable:{shortDescription:"Disable shell features",description:": Temporarily disable the *named hash table elements or patterns. The default* is to disable builtin commands. This allows you to use an external command with the same name as a builtin command. The **-a** *option* causes **disable** *to act on regular or global aliases. The* **-s** option causes **disable** *to act on suffix aliases. The* **-f** *option causes* **disable** *to act on shell functions. The* **-r** *options causes* **disable** *to act on reserved words. Without arguments all disabled* hash table elements from the corresponding hash table are printed. With the **-m** *flag the arguments are taken as patterns (which should be* quoted to prevent them from undergoing filename expansion), and all hash table elements from the corresponding hash table matching these patterns are disabled. Disabled objects can be enabled with the **enable** command.\n\n With the option **-p***, name \\... refer to elements of the* shell\\'s pattern syntax as described in the section `Filename Generation`. Certain elements can be disabled separately, as given below.\n\n Note that patterns not allowed by the current settings for the options **EXTENDED_GLOB***,* **KSH_GLOB** *and* **SH_GLOB** *are never enabled, regardless of the* setting here. For example, if **EXTENDED_GLOB** *is not active,* the pattern **\\^** *is ineffective even if `***disable -p \\\"\\^\\\"***` has* not been issued. The list below indicates any option settings that restrict the use of the pattern. It should be noted that setting **SH_GLOB** *has a wider effect than merely disabling patterns* as certain expressions, in particular those involving parentheses, are parsed differently.\n\n The following patterns may be disabled; all the strings need quoting on the command line to prevent them from being interpreted immediately as patterns and the patterns are shown below in single quotes as a reminder.\n\n **\\'?\\'** The pattern character **?** *wherever it occurs, including when preceding* a parenthesis with **KSH_GLOB***.*\n\n **\\'\\*\\'**\n\n : The pattern character **\\*** *wherever it occurs, including recursive* globbing and when preceding a parenthesis with **KSH_GLOB***.*\n\n **\\'\\[\\'**\n\n : Character classes.\n\n **\\'\\<\\'** *(***NO_SH_GLOB***)*\n\n : Numeric ranges.\n\n **\\'\\|\\'** *(***NO_SH_GLOB***)*\n\n : Alternation in grouped patterns, case statements, or KSH_GLOB parenthesised expressions.\n\n **\\'(\\'** *(***NO_SH_GLOB***)*\n\n : Grouping using single parentheses. Disabling this does not disable the use of parentheses for **KSH_GLOB** *where they are introduced by a* special character, nor for glob qualifiers (use `**setopt** NO_BARE_GLOB_QUAL*` to disable glob qualifiers that use parentheses* only).\n\n **\\'\\~\\'** *(***EXTENDED_GLOB***)*\n\n : Exclusion in the form *A***\\~***B.*\n\n **\\'\\^\\'** *(***EXTENDED_GLOB***)*\n\n : Exclusion in the form *A***\\^***B.*\n\n **\\'#\\'** *(***EXTENDED_GLOB***)*\n\n : The pattern character **\\#** *wherever it occurs, both for* repetition of a previous pattern and for indicating globbing flags.\n\n **\\'?(\\'** *(***KSH_GLOB***)*\n\n : The grouping form **?(***\\...***)***. Note this is also* disabled if **\\'?\\'** *is disabled.*\n\n **\\'\\*(\\'** *(***KSH_GLOB***)*\n\n : The grouping form **\\*(***\\...***)***. Note this is also* disabled if **\\'\\*\\'** *is disabled.*\n\n **\\'+(\\'** *(***KSH_GLOB***)*\n\n : The grouping form **+(***\\...***)***.*\n\n **\\'!(\\'** *(***KSH_GLOB***)*\n\n : The grouping form **!(***\\...***)***.*\n\n **\\'@(\\'** *(***KSH_GLOB***)*\n\n : The grouping form **@(***\\...***)***.*",args:"disable [ -afmprs ] name ..."},disown:{shortDescription:"Remove job from job table",description:"*job \\...* **&\\|**\n\n*job \\...* **&!** Remove the specified *jobs from the job table; the shell will* no longer report their status, and will not complain if you try to exit an interactive shell with them running or stopped. If no *job is specified, disown the current job.*\n\n> If the *jobs are currently stopped and the* **AUTO_CONTINUE** *option* is not set, a warning is printed containing information about how to make them running after they have been disowned. If one of the latter two forms is used, the *jobs will automatically be made running,* independent of the setting of the **AUTO_CONTINUE** *option.*",args:"disown [ job ... ]"},echo:{shortDescription:"Write on standard output",description:": Write each *arg on the standard output, with a space separating* each one. If the **-n** *flag is not present, print a newline at the end.* **echo** *recognizes the following escape sequences:*\n\n **\\\\a**\n\n : bell character\n\n **\\\\b**\n\n : backspace\n\n **\\\\c**\n\n : suppress subsequent characters and final newline\n\n **\\\\e**\n\n : escape\n\n **\\\\f**\n\n : form feed\n\n **\\\\n**\n\n : linefeed (newline)\n\n **\\\\r**\n\n : carriage return\n\n **\\\\t**\n\n : horizontal tab\n\n **\\\\v**\n\n : vertical tab\n\n **\\\\\\\\**\n\n : backslash\n\n **\\\\0***NNN*\n\n : character code in octal\n\n **\\\\x***NN*\n\n : character code in hexadecimal\n\n **\\\\u***NNNN*\n\n : unicode character code in hexadecimal\n\n **\\\\U***NNNNNNNN*\n\n : unicode character code in hexadecimal\n\n The **-E** *flag, or the* **BSD_ECHO** *option, can be used to disable* these escape sequences. In the latter case, **-e** *flag can be used to* enable them.\n\n Note that for standards compliance a double dash does not terminate option processing; instead, it is printed directly. However, a single dash does terminate option processing, so the first dash, possibly following options, is not printed, but everything following it is printed as an argument. The single dash behaviour is different from other shells. For a more portable way of printing text, see **printf***, and for a more controllable way of printing text within zsh,* see **print***.*",args:"echo [ -neE ] [ arg ... ]"},echotc:{shortDescription:"Echo terminal capabilities",description:": See the section `The zsh/termcap Module` in *zshmodules(1).*",args:"echotc"},echoti:{shortDescription:"Echo terminal info",description:": See the section `The zsh/terminfo Module` in *zshmodules(1).*",args:"echoti"},emulate:{shortDescription:"Emulate a shell",description:": Without any argument print current emulation mode.\n\n With single argument set up zsh options to emulate the specified shell as much as possible. **csh** *will never be fully emulated.* If the argument is not one of the shells listed above, **zsh** will be used as a default; more precisely, the tests performed on the argument are the same as those used to determine the emulation at startup based on the shell name, see the section COMPATIBILITY in *zsh(1)* . In addition to setting shell options, the command also restores the pristine state of pattern enables, as if all patterns had been enabled using **enable -p***.*\n\n If the **emulate** *command occurs inside a function that has been* marked for execution tracing with **functions -t** *then the* **xtrace** option will be turned on regardless of emulation mode or other options. Note that code executed inside the function by the **.***,* **source***, or* **eval** *commands is not considered to be running directly from the* function, hence does not provoke this behaviour.\n\n If the **-R** *switch is given, all settable options* are reset to their default value corresponding to the specified emulation mode, except for certain options describing the interactive environment; otherwise, only those options likely to cause portability problems in scripts and functions are altered. If the **-L** *switch is given,* the options **LOCAL_OPTIONS***,* **LOCAL_PATTERNS** *and* **LOCAL_TRAPS** will be set as well, causing the effects of the **emulate** *command and any* **setopt***,* **disable -p** *or* **enable -p***, and* **trap** *commands to be local to* the immediately surrounding shell function, if any; normally these options are turned off in all emulation modes except **ksh***. The* **-L** *switch is mutually exclusive with the* use of **-c** *in flags.*\n\n If there is a single argument and the **-l** *switch is given, the* options that would be set or unset (the latter indicated with the prefix `**no***`) are listed.* **-l** *can be combined with* **-L** *or* **-R** *and* the list will be modified in the appropriate way. Note the list does not depend on the current setting of options, i.e. it includes all options that may in principle change, not just those that would actually change.\n\n The *flags may be any of the invocation-time flags described in* the section INVOCATION in *zsh(1),* except that `**-o EMACS***` and `***-o VI***` may not be used. Flags such* as `**+r***`/`***+o RESTRICTED***` may be prohibited in some circumstances.*\n\n If **-c** *arg appears in flags, arg is evaluated while the* requested emulation is temporarily in effect. In this case the emulation mode and all options are restored to their previous values before **emulate** *returns. The* **-R** *switch may precede the name of the shell* to emulate; note this has a meaning distinct from including **-R** *in* *flags.*\n\n Use of **-c** *enables `sticky` emulation mode for functions defined* within the evaluated expression: the emulation mode is associated thereafter with the function so that whenever the function is executed the emulation (respecting the **-R** *switch, if present) and all* options are set (and pattern disables cleared) before entry to the function, and the state is restored after exit. If the function is called when the sticky emulation is already in effect, either within an `**emulate** *shell* **-c***` expression or* within another function with the same sticky emulation, entry and exit from the function do not cause options to be altered (except due to standard processing such as the **LOCAL_OPTIONS** *option). This also* applies to functions marked for autoload within the sticky emulation; the appropriate set of options will be applied at the point the function is loaded as well as when it is run.\n\n For example:\n\n > emulate sh -c 'fni() { setopt cshnullglob; }\n > fno() { fni; }'\n > fno\n\n The two functions **fni** *and* **fno** *are defined with sticky* **sh** emulation. **fno** *is then executed, causing options associated* with emulations to be set to their values in **sh***.* **fno** *then* calls **fni***; because* **fni** *is also marked for sticky* **sh** emulation, no option changes take place on entry to or exit from it. Hence the option **cshnullglob***, turned off by* **sh** *emulation, will* be turned on within **fni** *and remain on return to* **fno***. On exit* from **fno***, the emulation mode and all options will be restored to the* state they were in before entry to the temporary emulation.\n\n The documentation above is typically sufficient for the intended purpose of executing code designed for other shells in a suitable environment. More detailed rules follow.\n\n 1\\.\n\n : The sticky emulation environment provided by `**emulate** *shell* **-c***` is identical to that provided by entry to* a function marked for sticky emulation as a consequence of being defined in such an environment. Hence, for example, the sticky emulation is inherited by subfunctions defined within functions with sticky emulation.\n\n 2\\.\n\n : No change of options takes place on entry to or exit from functions that are not marked for sticky emulation, other than those that would normally take place, even if those functions are called within sticky emulation.\n\n 3\\.\n\n : No special handling is provided for functions marked for **autoload** *nor for functions present in wordcode created by* the **zcompile** *command.*\n\n 4\\.\n\n : The presence or absence of the **-R** *switch to* **emulate** corresponds to different sticky emulation modes, so for example `**emulate sh -c***`, `***emulate -R sh -c***` and `***emulate csh -c***`* are treated as three distinct sticky emulations.\n\n 5\\.\n\n : Difference in shell options supplied in addition to the basic emulation also mean the sticky emulations are different, so for example `**emulate zsh -c***` and `***emulate zsh -o cbases -c***` are* treated as distinct sticky emulations.",args:"emulate [ -lLR ] [ {zsh|sh|ksh|csh} [ flags ... ] ]"},enable:{shortDescription:"Enable shell features",description:': Enable the *named hash table elements, presumably disabled* earlier with **disable***. The default is to enable builtin commands.* The **-a** *option causes* **enable** *to act on regular or global aliases.* The **-s** *option causes* **enable** *to act on suffix aliases.* The **-f** *option causes* **enable** *to act on shell functions. The* **-r** option causes **enable** *to act on reserved words. Without arguments* all enabled hash table elements from the corresponding hash table are printed. With the **-m** *flag the arguments are taken as patterns* (should be quoted) and all hash table elements from the corresponding hash table matching these patterns are enabled. Enabled objects can be disabled with the **disable** *builtin command.*\n\n **enable -p** *reenables patterns disabled with* **disable -p***. Note* that it does not override globbing options; for example, `**enable -p** \\"\\~\\"*` does not cause the pattern character* **\\~** *to be active unless* the **EXTENDED_GLOB** *option is also set. To enable all possible* patterns (so that they may be individually disabled with **disable -p***),* use `**setopt EXTENDED_GLOB KSH_GLOB NO_SH_GLOB***`.*',args:"enable [ -afmprs ] name ..."},eval:{shortDescription:"Execute arguments in shell",description:": Read the arguments as input to the shell and execute the resulting command(s) in the current shell process. The return status is the same as if the commands had been executed directly by the shell; if there are no *args or they contain no commands (i.e. are* an empty string or whitespace) the return status is zero.",args:"eval [ arg ... ]"},exec:{shortDescription:"Replace shell with command",description:": Replace the current shell with *command rather than forking.* If *command is a shell builtin command or a shell function,* the shell executes it, and exits when the command is complete.\n\n With **-c** *clear the environment; with* **-l** *prepend* **-** *to the* **argv\\[0\\]** *string of the command executed (to simulate a login shell);* with **-a** *argv0 set the* **argv\\[0\\]** *string of the command* executed. See the section `Precommand Modifiers` in *zshmisc(1).*\n\n If the option **POSIX_BUILTINS** *is set, command is never* interpreted as a shell builtin command or shell function. This means further precommand modifiers such as **builtin** *and* **noglob** *are also not interpreted within the shell. Hence* *command is always found by searching the command path.*\n\n If *command is omitted but any redirections are specified,* then the redirections will take effect in the current shell.",args:"exec [ -cl ] [ -a argv0 ] [ command [ arg ... ] ]"},exit:{shortDescription:"Exit the shell",description:": Exit the shell with the exit status specified by an arithmetic expression *n; if none* is specified, use the exit status from the last command executed. An EOF condition will also cause the shell to exit, unless the **IGNORE_EOF** *option is set.*\n\n See notes at the end of the section JOBS in *zshmisc(1) for some possibly unexpected interactions* of the **exit** *command with jobs.*",args:"exit [ n ]"},export:{shortDescription:"Export to environment",description:": The specified *names are marked for automatic export* to the environment of subsequently executed commands. Equivalent to **typeset -gx***.* If a parameter specified does not already exist, it is created in the global scope.",args:"export [ name[=value] ... ]"},false:{shortDescription:"Return exit status of 1",description:": Do nothing and return an exit status of 1.",args:"false [ arg ... ]"},fc:{shortDescription:"Fix command",description:'**fc** **-ARWI** *\\[ filename \\]* The **fc** *command controls the interactive history mechanism. Note* that reading and writing of history options is only performed if the shell is interactive. Usually this is detected automatically, but it can be forced by setting the **interactive** *option when starting the* shell.\n\n> The first two forms of this command select a range of events from *first to last from the history list. The arguments first* and *last may be specified as a number or as a string. A negative* number is used as an offset to the current history event number. A string specifies the most recent event beginning with the given string. All substitutions *old***=***new, if any, are then performed on the* text of the events.\n>\n> The range of events selected by numbers can be narrowed further by the following flags.\n>\n> **-I**\n>\n> : restricts to only internal events (not from **\\$HISTFILE***)*\n>\n> **-L**\n>\n> : restricts to only local events (not from other shells, see **SHARE_HISTORY** *in zshoptions(1) \\-- note that* **\\$HISTFILE** *is* considered local when read at startup)\n>\n> **-m**\n>\n> : takes the first argument as a pattern (which should be quoted) and only the history events matching this pattern are considered\n>\n> If *first is not specified, it will be set to -1 (the most recent* event), or to -16 if the **-l** *flag is given.* If *last is not specified, it will be set to first,* or to -1 if the **-l** *flag is given.* However, if the current event has added entries to the history with `**print -s***` or `***fc -R***`, then the default last for* **-l** includes all new history entries since the current event began.\n>\n> When the **-l** *flag is given, the resulting events are listed on* standard output. Otherwise the editor program specified by **-e** *ename* is invoked on a file containing these history events. If **-e** *is not given, the* value of the parameter **FCEDIT** *is used; if that is not set the value of* the parameter **EDITOR** *is used; if that is not set a builtin default,* usually `**vi***` is used. If ename is `***-***`, no editor is invoked.* When editing is complete, the edited command is executed.\n>\n> The flag `**-s***` is equivalent to `***-e -***`.* The flag **-r** *reverses the order of the events and the* flag **-n** *suppresses event numbers when listing.*\n>\n> Also when listing,\n>\n> **-d**\n>\n> : prints timestamps for each event\n>\n> **-f**\n>\n> : prints full time-date stamps in the US `*MM***/***DD***/***YY hh***:***mm` format*\n>\n> **-E**\n>\n> : prints full time-date stamps in the European `*dd***.***mm***.***yyyy hh***:***mm` format*\n>\n> **-i**\n>\n> : prints full time-date stamps in ISO8601 `*yyyy***-***mm***-***dd hh***:***mm` format*\n>\n> **-t** *fmt*\n>\n> : prints time and date stamps in the given format; *fmt is formatted with the strftime function with the zsh extensions* described for the **%D{***string***}** *prompt format in* the section EXPANSION OF PROMPT SEQUENCES in *zshmisc(1). The resulting formatted string must be* no more than 256 characters or will not be printed\n>\n> \x3c!-- --\x3e\n>\n> **-D**\n>\n> : prints elapsed times; may be combined with one of the options above\n>\n> `**fc -p***` pushes the current history list onto a stack and switches to a* new history list. If the **-a** *option is also specified, this history list* will be automatically popped when the current function scope is exited, which is a much better solution than creating a trap function to call `**fc -P***`* manually. If no arguments are specified, the history list is left empty, **\\$HISTFILE** *is unset, and* **\\$HISTSIZE** *&* **\\$SAVEHIST** *are set to their* default values. If one argument is given, **\\$HISTFILE** *is set to that* filename, **\\$HISTSIZE** *&* **\\$SAVEHIST** *are left unchanged, and the history* file is read in (if it exists) to initialize the new list. If a second argument is specified, **\\$HISTSIZE** *&* **\\$SAVEHIST** *are instead set to the* single specified numeric value. Finally, if a third argument is specified, **\\$SAVEHIST** *is set to a separate value from* **\\$HISTSIZE***. You are free to* change these environment values for the new history list however you desire in order to manipulate the new history list.\n>\n> `**fc -P***` pops the history list back to an older list saved by `***fc -p***`.* The current list is saved to its **\\$HISTFILE** *before it is destroyed* (assuming that **\\$HISTFILE** *and* **\\$SAVEHIST** *are set appropriately, of* course). The values of **\\$HISTFILE***,* **\\$HISTSIZE***, and* **\\$SAVEHIST** *are* restored to the values they had when `**fc -p***` was called. Note that this* restoration can conflict with making these variables \\"local\\", so your best bet is to avoid local declarations for these variables in functions that use `**fc -p***`. The one other guaranteed-safe combination is declaring these* variables to be local at the top of your function and using the automatic option (**-a***) with `***fc -p***`. Finally, note that it is legal to manually* pop a push marked for automatic popping if you need to do so before the function exits.\n>\n> `**fc -R***` reads the history from the given file,* `**fc -W***` writes the history out to the given file,* and `**fc -A***` appends the history out to the given file.* If no filename is specified, the **\\$HISTFILE** *is assumed.* If the **-I** *option is added to* **-R***, only those events that are* not already contained within the internal history list are added. If the **-I** *option is added to* **-A** *or* **-W***, only those* events that are new since last incremental append/write to the history file are appended/written. In any case, the created file will have no more than **\\$SAVEHIST** entries.',args:"fc -P"},fg:{shortDescription:"Put a job in the foreground",description:"*job \\...* Bring each specified *job in turn to the foreground.* If no *job is specified, resume the current job.*",args:"fg [ job ... ]"},float:{shortDescription:"Floating point arithmetic",description:": Equivalent to **typeset -E***, except that options irrelevant to floating* point numbers are not permitted.",args:"float [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ n ] ] [ name[=value] ... ]"},functions:{shortDescription:"List functions",description:"**functions -c** *oldfn newfn*\n\n**functions -M** *\\[***-s***\\] mathfn \\[ min \\[ max \\[ shellfn \\] \\] \\]*\n\n**functions -M** *\\[* **-m** *pattern \\... \\]*\n\n**functions +M** *\\[* **-m** *\\] mathfn \\...* Equivalent to **typeset -f***, with the exception of the* **-c***,* **-x***,* **-M** *and* **-W** *options. For* **functions -u** *and* **functions -U***,* see **autoload***, which provides additional options. For* **functions -t** and **functions -T***, see* **typeset -f***.*\n\n> The **-x** *option indicates that any functions output will have* each leading tab for indentation, added by the shell to show syntactic structure, expanded to the given number *num of spaces. num* can also be 0 to suppress all indentation.\n>\n> The **-W** *option turns on the option* **WARN_NESTED_VAR** *for the named* function or functions only. The option is turned off at the start of nested functions (apart from anonoymous functions) unless the called function also has the **-W** *attribute.*\n>\n> The **-c** *option causes oldfn to be copied to newfn. The* copy is efficiently handled internally by reference counting. If *oldfn was marked for autoload it is first loaded and if this* fails the copy fails. Either function may subsequently be redefined without affecting the other. A typical idiom is that *oldfn is the* name of a library shell function which is then redefined to call **newfn***, thereby installing a modified version of the function.*\n>\n> *The* **-M** *and* **+M** *flags*\n>\n> Use of the **-M** *option may not be combined with any of the options* handled by **typeset -f***.*\n>\n> **functions -M** *mathfn defines mathfn as the name of* a mathematical function recognised in all forms of arithmetical expressions; see the section `Arithmetic Evaluation` in *zshmisc(1). By default mathfn may take* any number of comma-separated arguments. If *min is given,* it must have exactly *min args; if min and max are* both given, it must have at least *min and at most max* args. *max may be -1 to indicate that there is no upper limit.*\n>\n> By default the function is implemented by a shell function of the same name; if *shellfn is specified it gives the name of the corresponding* shell function while *mathfn remains the name used in arithmetical* expressions. The name of the function in **\\$0** *is mathfn (not* *shellfn as would usually be the case), provided the option* **FUNCTION_ARGZERO** *is in effect. The positional parameters in the shell* function correspond to the arguments of the mathematical function call.\n>\n> The result of the last arithmetical expression evaluated inside the shell function gives the result of the mathematical function. This is not limited to arithmetic substitutions of the form **\\$((***\\...***))***,* but also includes arithmetical expressions evaluated in any other way, including by the **let** *builtin,* by **((***\\...***))** *statements,* and even by the **return** *builtin* and by array subscripts. Therefore, care must be taken not to use syntactical constructs that perform arithmetic evaluation after evaluating what is to be the result of the function. For example:\n>\n> > # WRONG\n> > zmath_cube() {\n> > (( $1 * $1 * $1 ))\n> > return 0\n> > }\n> > functions -M cube 1 1 zmath_cube\n> > print $(( cube(3) ))\n>\n> This will print `**0***` because of the* **return***.*\n>\n> Commenting the **return** *out would lead to a different problem: the* **((***\\...***))** *statement would become* the last statement in the function, so the *return status (***\\$?***) of the* function would be non-zero (indicating failure) whenever the *arithmetic* result *of the function would happen to be zero (numerically):*\n>\n> > # WRONG\n> > zmath_cube() {\n> > (( $1 * $1 * $1 ))\n> > }\n> > functions -M cube 1 1 zmath_cube\n> > print $(( cube(0) ))\n>\n> Instead, the **true** *builtin can be used:*\n>\n> > # RIGHT\n> > zmath_cube() {\n> > (( $1 * $1 * $1 ))\n> > true\n> > }\n> > functions -M cube 1 1 zmath_cube\n> > print $(( cube(3) ))\n>\n> If the additional option **-s** *is given to* **functions -M***, the* argument to the function is a single string: anything between the opening and matching closing parenthesis is passed to the function as a single argument, even if it includes commas or white space. The minimum and maximum argument specifiers must therefore be 1 if given. An empty argument list is passed as a zero-length string. Thus, the following string function takes a single argument, including the commas, and prints 11:\n>\n> > stringfn() { (( $#1 )); true }\n> > functions -Ms stringfn\n> > print $(( stringfn(foo,bar,rod) ))\n>\n> **functions -M** *with no arguments lists all such user-defined functions in* the same form as a definition. With the additional option **-m** *and* a list of arguments, all functions whose *mathfn matches one of* the pattern arguments are listed.\n>\n> **function +M** *removes the list of mathematical functions; with the* additional option **-m** *the arguments are treated as patterns and* all functions whose *mathfn matches the pattern are removed. Note* that the shell function implementing the behaviour is not removed (regardless of whether its name coincides with *mathfn).*",args:"functions [ {+|-}UkmtTuWz ] [ -x num ] [ name ... ]"},getcap:{shortDescription:"Get capabilities",description:": See the section `The zsh/cap Module` in *zshmodules(1).*",args:"getcap"},getln:{shortDescription:"Get line from buffer",description:": Read the top value from the buffer stack and put it in the shell parameter *name. Equivalent to* **read -zr***.*",args:"getln [ -AclneE ] name ..."},getopts:{shortDescription:"Parse positional parameters",description:": Checks the *args for legal options. If the args are omitted,* use the positional parameters. A valid option argument begins with a `**+***` or a `***-***`. An argument not beginning with* a `**+***` or a `***-***`, or the argument `***--***`, ends the options.* Note that a single `**-***` is not considered a valid option argument.* *optstring contains the letters that* **getopts** recognizes. If a letter is followed by a `**:***`, that option* requires an argument. The options can be separated from the argument by blanks.\n\n Each time it is invoked, **getopts** *places the option letter it finds* in the shell parameter *name, prepended with a `***+***` when* *arg begins with a `***+***`. The index of the next arg* is stored in **OPTIND***. The option argument, if any,* is stored in **OPTARG***.*\n\n The first option to be examined may be changed by explicitly assigning to **OPTIND***.* **OPTIND** *has an initial value of* **1***, and is* normally set to **1** *upon entry to a shell function and restored* upon exit. (The **POSIX_BUILTINS** *option disables this, and also changes* the way the value is calculated to match other shells.) **OPTARG** is not reset and retains its value from the most recent call to **getopts***. If either of* **OPTIND** *or* **OPTARG** *is explicitly* unset, it remains unset, and the index or option argument is not stored. The option itself is still stored in *name in this case.*\n\n A leading `**:***` in optstring causes* **getopts** *to store the* letter of any invalid option in **OPTARG***, and to set name to* `**?***` for an unknown option and to `***:***` when a required argument is* missing. Otherwise, **getopts** *sets name to `***?***` and prints* an error message when an option is invalid. The exit status is nonzero when there are no more options.",args:"getopts optstring name [ arg ... ]"},hash:{shortDescription:"Remember command locations",description:": **hash** *can be used to directly modify the contents of the command* hash table, and the named directory hash table. Normally one would modify these tables by modifying one\\'s **PATH** (for the command hash table) or by creating appropriate shell parameters (for the named directory hash table). The choice of hash table to work on is determined by the **-d** *option;* without the option the command hash table is used, and with the option the named directory hash table is used.\n\n A command *name starting with a* **/** *is never hashed, whether by* explicit use of the **hash** *command or otherwise. Such a command* is always found by direct look up in the file system.\n\n Given no arguments, and neither the **-r** *or* **-f** *options,* the selected hash table will be listed in full.\n\n The **-r** *option causes the selected hash table to be emptied.* It will be subsequently rebuilt in the normal fashion. The **-f** *option causes the selected hash table to be fully* rebuilt immediately. For the command hash table this hashes all the absolute directories in the **PATH***,* and for the named directory hash table this adds all users\\' home directories. These two options cannot be used with any arguments.\n\n The **-m** *option causes the arguments to be taken as patterns* (which should be quoted) and the elements of the hash table matching those patterns are printed. This is the only way to display a limited selection of hash table elements.\n\n For each *name with a corresponding value, put `name` in* the selected hash table, associating it with the pathname `*value`.* In the command hash table, this means that whenever `*name` is used as a command argument, the shell will try* to execute the file given by `*value`.* In the named directory hash table, this means that `*value` may be referred to as `***\\~***name`.*\n\n For each *name with no* corresponding *value, attempt to add name to the hash table,* checking what the appropriate **value** *is in the normal manner for* that hash table. If an appropriate **value** *can\\'t be found, then* the hash table will be unchanged.\n\n The **-v** *option causes hash table entries to be listed as they are* added by explicit specification. If has no effect if used with **-f***.*\n\n If the **-L** *flag is present, then each hash table entry is printed in* the form of a call to hash.",args:"hash [ -Ldfmrv ] [ name[=value] ] ..."},history:{shortDescription:"Command history",description:": Same as **fc -l***.*",args:"history"},integer:{shortDescription:"Integer arithmetic",description:": Equivalent to **typeset -i***, except that options irrelevant to* integers are not permitted.",args:"integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ n ] ] [ name[=value] ... ]"},jobs:{shortDescription:"List active jobs",description:'**jobs -Z** *string* Lists information about each given job, or all jobs if *job is omitted. The* **-l** *flag lists process* IDs, and the **-p** *flag lists process groups.* If the **-r** *flag is specified only running jobs will be listed* and if the **-s** *flag is given only stopped jobs are shown.* If the **-d** *flag is given, the directory from which the job was* started (which may not be the current directory of the job) will also be shown.\n\n> The **-Z** *option replaces the shell\\\'s argument and environment space with* the given string, truncated if necessary to fit. This will normally be visible in **ps** *(ps(1)) listings. This feature is typically* used by daemons, to indicate their state.\n>\n> Full job control is only available in the top-level interactive shell, not in commands run in the left hand side of pipelines or within the **(***\\...***)** *construct. However, a snapshot* of the job state at that point is taken, so it is still possible to use the **jobs** *builtin, or any parameter providing job information.* This gives information about the state of jobs at the point the subshell was created. If background processes are created within the subshell, then instead information about those processes is provided.\n>\n> For example,\n>\n> > sleep 10 & # Job in background\n> > ( # Shell forks\n> > jobs # Shows information about "sleep 10 &"\n> > sleep 5 & # Process in background (no job control)\n> > jobs # Shows information about "sleep 5 &"\n> > )',args:"jobs [ -dlprs ] [ job ... ]"},kill:{shortDescription:"Send a signal to a process",description:"**kill** **-l** *\\[ sig \\... \\]* Sends either **SIGTERM** *or the specified signal to the given* jobs or processes. Signals are given by number or by names, with or without the `**SIG***`* prefix. If the signal being sent is not `**KILL***` or `***CONT***`, then the job* will be sent a `**CONT***` signal if it is stopped.* The argument *job can be the process ID of a job* not in the job list. In the second form, **kill -l***, if sig is not* specified the signal names are listed. Otherwise, for each *sig that is a name, the corresponding signal number is* listed. For each *sig that is a signal number or a number* representing the exit status of a process which was terminated or stopped by a signal the name of the signal is printed.\n\n> On some systems, alternative signal names are allowed for a few signals. Typical examples are **SIGCHLD** *and* **SIGCLD** *or* **SIGPOLL** *and* **SIGIO***, assuming they correspond to the same signal number.* **kill** -l *will only list the preferred form, however* **kill -l** *alt will* show if the alternative form corresponds to a signal number. For example, under Linux **kill -l IO** *and* **kill -l POLL** *both output 29, hence* **kill -IO** *and* **kill -POLL** *have the same effect.*\n>\n> Many systems will allow process IDs to be negative to kill a process group or zero to kill the current process group.",args:"kill [ -s signal_name | -n signal_number | -sig ] job ..."},let:{shortDescription:"Evaluate arithmetic expression",description:": Evaluate each *arg as an arithmetic expression.* See the section `Arithmetic Evaluation` in *zshmisc(1)* for a description of arithmetic expressions. The exit status is 0 if the value of the last expression is nonzero, 1 if it is zero, and 2 if an error occurred.",args:"let arg ..."},limit:{shortDescription:"Set or display resource limits",description:": Set or display resource limits. Unless the **-s** *flag is given,* the limit applies only the children of the shell. If **-s** *is* given without other arguments, the resource limits of the current shell is set to the previously set resource limits of the children.\n\n If *limit is not specified, print the current limit placed* on *resource, otherwise* set the limit to the specified value. If the **-h** *flag* is given, use hard limits instead of soft limits. If no *resource is given, print all limits.*\n\n When looping over multiple resources, the shell will abort immediately if it detects a badly formed argument. However, if it fails to set a limit for some other reason it will continue trying to set the remaining limits.\n\n *resource can be one of:*\n\n **addressspace**\n\n : Maximum amount of address space used.\n\n **aiomemorylocked**\n\n : Maximum amount of memory locked in RAM for AIO operations.\n\n **aiooperations**\n\n : Maximum number of AIO operations.\n\n **cachedthreads**\n\n : Maximum number of cached threads.\n\n **coredumpsize**\n\n : Maximum size of a core dump.\n\n **cputime**\n\n : Maximum CPU seconds per process.\n\n **datasize**\n\n : Maximum data size (including stack) for each process.\n\n **descriptors**\n\n : Maximum value for a file descriptor.\n\n **filesize**\n\n : Largest single file allowed.\n\n **kqueues**\n\n : Maximum number of kqueues allocated.\n\n **maxproc**\n\n : Maximum number of processes.\n\n **maxpthreads**\n\n : Maximum number of threads per process.\n\n **memorylocked**\n\n : Maximum amount of memory locked in RAM.\n\n **memoryuse**\n\n : Maximum resident set size.\n\n **msgqueue**\n\n : Maximum number of bytes in POSIX message queues.\n\n **posixlocks**\n\n : Maximum number of POSIX locks per user.\n\n **pseudoterminals**\n\n : Maximum number of pseudo-terminals.\n\n **resident**\n\n : Maximum resident set size.\n\n **sigpending**\n\n : Maximum number of pending signals.\n\n **sockbufsize**\n\n : Maximum size of all socket buffers.\n\n **stacksize**\n\n : Maximum stack size for each process.\n\n **swapsize**\n\n : Maximum amount of swap used.\n\n **vmemorysize**\n\n : Maximum amount of virtual memory.\n\n Which of these resource limits are available depends on the system. *resource can be abbreviated to any unambiguous prefix. It* can also be an integer, which corresponds to the integer defined for the resource by the operating system.\n\n If argument corresponds to a number which is out of the range of the resources configured into the shell, the shell will try to read or write the limit anyway, and will report an error if this fails. As the shell does not store such resources internally, an attempt to set the limit will fail unless the **-s** *option is present.*\n\n *limit is a number, with an optional scaling factor, as follows:*\n\n *n***h**\n\n : hours\n\n *n***k**\n\n : kilobytes (default)\n\n *n***m**\n\n : megabytes or minutes\n\n *n***g**\n\n : gigabytes\n\n \\[*mm***:***\\]ss*\n\n : minutes and seconds\n\n The **limit** *command is not made available by default when the* shell starts in a mode emulating another shell. It can be made available with the command `**zmodload -F zsh/rlimits b:limit***`.*",args:"limit [ -hs ] [ resource [ limit ] ] ..."},local:{shortDescription:"Create a local variable",description:": Same as **typeset***, except that the options* **-g***, and* **-f** *are not permitted. In this case the* **-x** *option does not force* the use of **-g***, i.e. exported variables will be local to functions.*",args:"local [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ n ] ] [ name[=value] ... ]"},logout:{shortDescription:"Exit the shell",description:": Same as **exit***, except that it only works in a login shell.*",args:"logout [ n ]"},noglob:{shortDescription:"Disable filename expansion",description:": See the section `Precommand Modifiers` in *zshmisc(1).*",args:"noglob simple command"},popd:{shortDescription:"Remove directory from stack",description:": Remove an entry from the directory stack, and perform a **cd** *to* the new top directory. With no argument, the current top entry is removed. An argument of the form `**+***n` identifies a stack* entry by counting from the left of the list shown by the **dirs** *command,* starting with zero. An argument of the form **-***n counts from the right.* If the **PUSHD_MINUS** *option is set, the meanings of `***+***` and* `**-***` in this context are swapped.*\n\n If the **-q** *(quiet) option is specified, the hook function* **chpwd** and the functions in the array **\\$chpwd_functions** *are not called,* and the new directory stack is not printed. This is useful for calls to **popd** *that do not change the environment seen by an interactive user.*",args:"popd [ -q ] [ {+|-}n ]"},print:{shortDescription:"Print arguments",description:'*\\[* **-v** *name \\] \\[* **-xX** *tabstop \\] \\[* **-R** *\\[* **-en** *\\]\\] \\[ arg \\... \\]* With the `**-f***` option the arguments are printed as described by* **printf***.* With no flags or with the flag `**-***`, the arguments are printed on* the standard output as described by **echo***, with the following differences:* the escape sequence `**\\\\M-***x` (or `***\\\\M***x`) metafies the character* *x (sets the highest bit),* `**\\\\C-***x` (or `***\\\\C***x`) produces a control character* (`**\\\\C-@***` and `***\\\\C-?***` give the characters NULL and delete),* a character code in octal is represented by `**\\\\***NNN`* (instead of `**\\\\0***NNN`),* and `**\\\\E***` is a synonym for `***\\\\e***`.* Finally, if not in an escape sequence, `**\\\\***` escapes the following character and is not printed.*\n\n> **-a** Print arguments with the column incrementing first. Only useful with the **-c** *and* **-C** *options.*\n>\n> **-b**\n>\n> : Recognize all the escape sequences defined for the **bindkey** *command,* see the section `Zle Builtins` in *zshzle(1).*\n>\n> **-c**\n>\n> : Print the arguments in columns. Unless **-a** *is also given, arguments are* printed with the row incrementing first.\n>\n> **-C** *cols*\n>\n> : Print the arguments in *cols columns. Unless* **-a** *is also given,* arguments are printed with the row incrementing first.\n>\n> **-D**\n>\n> : Treat the arguments as paths, replacing directory prefixes with **\\~** expressions corresponding to directory names, as appropriate.\n>\n> **-i**\n>\n> : If given together with **-o** *or* **-O***, sorting is performed* case-independently.\n>\n> **-l**\n>\n> : Print the arguments separated by newlines instead of spaces. Note: if the list of arguments is empty, **print -l** *will still output one empty* line. To print a possibly-empty list of arguments one per line, use **print -C1***, as in `***print -rC1 \\-- \\"\\$list\\[@\\]\\"***`.*\n>\n> **-m**\n>\n> : Take the first argument as a pattern (should be quoted), and remove it from the argument list together with subsequent arguments that do not match this pattern.\n>\n> **-n**\n>\n> : Do not add a newline to the output.\n>\n> **-N**\n>\n> : Print the arguments separated and terminated by nulls. Again, **print -rNC1 \\-- \\"\\$list\\[@\\]\\"** *is a canonical way to print an* arbitrary list as null-delimited records.\n>\n> **-o**\n>\n> : Print the arguments sorted in ascending order.\n>\n> **-O**\n>\n> : Print the arguments sorted in descending order.\n>\n> **-p**\n>\n> : Print the arguments to the input of the coprocess.\n>\n> **-P**\n>\n> : Perform prompt expansion (see EXPANSION OF PROMPT SEQUENCES in *zshmisc(1)).* In combination with `**-f***`,* prompt escape sequences are parsed only within interpolated arguments, not within the format string.\n>\n> **-r**\n>\n> : Ignore the escape conventions of **echo***.*\n>\n> **-R**\n>\n> : Emulate the BSD **echo** *command, which does not process escape sequences* unless the **-e** *flag is given. The* **-n** *flag suppresses the trailing* newline. Only the **-e** *and* **-n** *flags are recognized after* **-R***; all other arguments and options are printed.*\n>\n> **-s**\n>\n> : Place the results in the history list instead of on the standard output. Each argument to the **print** *command is treated as a single word in the* history, regardless of its content.\n>\n> **-S**\n>\n> : Place the results in the history list instead of on the standard output. In this case only a single argument is allowed; it will be split into words as if it were a full shell command line. The effect is similar to reading the line from a history file with the **HIST_LEX_WORDS** *option active.*\n>\n> **-u** *n*\n>\n> : Print the arguments to file descriptor *n.*\n>\n> **-v** *name*\n>\n> : Store the printed arguments as the value of the parameter *name.*\n>\n> **-x** *tab-stop*\n>\n> : Expand leading tabs on each line of output in the printed string assuming a tab stop every *tab-stop characters. This is appropriate* for formatting code that may be indented with tabs. Note that leading tabs of any argument to print, not just the first, are expanded, even if **print** *is using spaces to separate arguments (the column count* is maintained across arguments but may be incorrect on output owing to previous unexpanded tabs).\n>\n> The start of the output of each print command is assumed to be aligned with a tab stop. Widths of multibyte characters are handled if the option **MULTIBYTE** *is in effect. This option is ignored if other* formatting options are in effect, namely column alignment or **printf** *style, or if output is to a special location such as shell* history or the command line editor.\n>\n> **-X** *tab-stop*\n>\n> : This is similar to **-x***, except that all tabs in the printed string* are expanded. This is appropriate if tabs in the arguments are being used to produce a table format.\n>\n> **-z**\n>\n> : Push the arguments onto the editing buffer stack, separated by spaces.\n>\n> If any of `**-m***`, `***-o***` or `***-O***` are used in combination with* `**-f***` and there are no arguments (after the removal process in the* case of `**-m***`) then nothing is printed.*',args:"print [ -abcDilmnNoOpPrsSz ] [ -u n ] [ -f format ] [ -C cols ]"},printf:{shortDescription:"Format and print data",description:": Print the arguments according to the format specification. Formatting rules are the same as used in C. The same escape sequences as for **echo** are recognised in the format. All C conversion specifications ending in one of **csdiouxXeEfgGn** *are handled. In addition to this, `***%b***` can be* used instead of `**%s***` to cause escape sequences in the argument to be* recognised and `**%q***` can be used to quote the argument in such a way* that allows it to be reused as shell input. With the numeric format specifiers, if the corresponding argument starts with a quote character, the numeric value of the following character is used as the number to print; otherwise the argument is evaluated as an arithmetic expression. See the section `Arithmetic Evaluation` in *zshmisc(1)* for a description of arithmetic expressions. With `**%n***`, the corresponding argument is taken as an* identifier which is created as an integer parameter.\n\n Normally, conversion specifications are applied to each argument in order but they can explicitly specify the *nth argument is to be used by* replacing `**%***` by `***%***n***\\$***` and `***\\****` by `***\\****n***\\$***`.* It is recommended that you do not mix references of this explicit style with the normal style and the handling of such mixed styles may be subject to future change.\n\n If arguments remain unused after formatting, the format string is reused until all arguments have been consumed. With the **print** *builtin, this* can be suppressed by using the **-r** *option. If more arguments are* required by the format than have been specified, the behaviour is as if zero or an empty string had been specified as the argument.\n\n The **-v** *option causes the output to be stored as the value of the* parameter *name, instead of printed. If name is an array and* the format string is reused when consuming arguments then one array element will be used for each use of the format string.",args:"printf [ -v name ] format [ arg ... ]"},pushd:{shortDescription:"Add directory to stack",description:"> The third form of **pushd** *changes directory by rotating the* directory list. An argument of the form `**+***n` identifies a stack* entry by counting from the left of the list shown by the **dirs** command, starting with zero. An argument of the form `**-***n` counts* from the right. If the **PUSHD_MINUS** *option is set, the meanings* of `**+***` and `***-***` in this context are swapped.*\n>\n> If the **-q** *(quiet) option is specified, the hook function* **chpwd** and the functions in the array **\\$chpwd_functions** *are not called,* and the new directory stack is not printed. This is useful for calls to **pushd** *that do not change the environment seen by an interactive user.*\n>\n> If the option **-q** *is not specified and the shell option* **PUSHD_SILENT** is not set, the directory stack will be printed after a **pushd** *is* performed.\n>\n> The options **-s***,* **-L** *and* **-P** *have the same meanings as for the* **cd** *builtin.*",args:"pushd [ -qsLP ] [ arg ]\n\npushd [ -qsLP ] old new\n\npushd [ -qsLP ] {+|-}n Change the current directory, and push the old\ncurrent directory onto the directory stack. In the first form, change\nthe current directory to arg. If arg is not specified, change to the\nsecond directory on the stack (that is, exchange the top two entries),\nor change to $HOME if the PUSHD_TO_HOME option is set or if there is\nonly one entry on the stack. Otherwise, arg is interpreted as it would\nbe by cd. The meaning of old and new in the second form is also the same\nas for cd."},pushln:{shortDescription:"Push arguments onto the buffer",description:": Equivalent to **print -nz***.*",args:"pushln [ arg ... ]"},pwd:{shortDescription:"Print working directory",description:": Print the absolute pathname of the current working directory. If the **-r** *or the* **-P** *flag is specified, or the* **CHASE_LINKS** option is set and the **-L** *flag is not given, the printed path will not* contain symbolic links.",args:"pwd [ -rLP ]"},r:{shortDescription:"Re-execute command",description:": Same as **fc -e -***.*",args:"r"},read:{shortDescription:"Read a line from input",description:"*\\[* **-u** *n \\] \\[ \\[name\\]\\[***?***prompt\\] \\] \\[ name \\... \\]* Read one line and break it into fields using the characters in **\\$IFS** *as separators, except as noted below.* The first field is assigned to the first *name, the second field* to the second *name, etc., with leftover* fields assigned to the last *name.* If *name is omitted then* **REPLY** *is used for scalars and* **reply** *for arrays.*\n\n> **-r** Raw mode: a `**\\\\***` at the end of a line does not signify line* continuation and backslashes in the line don\\'t quote the following character and are not removed.\n>\n> **-s**\n>\n> : Don\\'t echo back characters if reading from the terminal.\n>\n> **-q**\n>\n> : Read only one character from the terminal and set *name to* `**y***` if this character was `***y***` or `***Y***` and to `***n***` otherwise.* With this flag set the return status is zero only if the character was `**y***` or `***Y***`. This option may be used with a timeout (see* **-t***); if* the read times out, or encounters end of file, status 2 is returned. Input is read from the terminal unless one of **-u** *or* **-p** *is present. This option* may also be used within zle widgets.\n>\n> **-k** *\\[ num \\]*\n>\n> : Read only one (or *num) characters. All are assigned to the first* *name, without word splitting. This flag is ignored when* **-q** *is* present. Input is read from the terminal unless one of **-u** *or* **-p** is present. This option may also be used within zle widgets.\n>\n> Note that despite the mnemonic `key` this option does read full characters, which may consist of multiple bytes if the option **MULTIBYTE** *is set.*\n>\n> **-z**\n>\n> : Read one entry from the editor buffer stack and assign it to the first *name, without word splitting. Text is pushed onto the stack with* `**print -z***` or with* **push-line** *from the line editor (see* *zshzle(1)). This flag is ignored when the* **-k** *or* **-q** *flags are present.*\n>\n> **-e**\n>\n> **-E** The input read is printed (echoed) to the standard output. If the **-e** flag is used, no input is assigned to the parameters.\n>\n> **-A**\n>\n> : The first *name is taken as the name of an array and all words are* assigned to it.\n>\n> **-c**\n>\n> **-l** These flags are allowed only if called inside a function used for completion (specified with the **-K** *flag to* **compctl***). If the* **-c** *flag is given, the words of the* current command are read. If the **-l** *flag is given, the whole* line is assigned as a scalar. If both flags are present, **-l** is used and **-c** *is ignored.*\n>\n> **-n**\n>\n> : Together with **-c***, the number of the word the cursor is on is* read. With **-l***, the index of the character the cursor is on is* read. Note that the command name is word number 1, not word 0, and that when the cursor is at the end of the line, its character index is the length of the line plus one.\n>\n> **-u** *n*\n>\n> : Input is read from file descriptor *n.*\n>\n> **-p**\n>\n> : Input is read from the coprocess.\n>\n> **-d** *delim*\n>\n> : Input is terminated by the first character of *delim instead of* by newline.\n>\n> **-t** *\\[ num \\]*\n>\n> : Test if input is available before attempting to read. If *num* is present, it must begin with a digit and will be evaluated to give a number of seconds, which may be a floating point number; in this case the read times out if input is not available within this time. If *num is not present, it is taken to be zero, so that* **read** *returns immediately if no input is available.* If no input is available, return status 1 and do not set any variables. This option is not available when reading from the editor buffer with **-z***, when called from within completion with* **-c** *or* **-l***, with* **-q** *which clears the input queue before reading, or within zle where* other mechanisms should be used to test for input. Note that read does not attempt to alter the input processing mode. The default mode is canonical input, in which an entire line is read at a time, so usually `**read -t***` will not read anything until an entire line has* been typed. However, when reading from the terminal with **-k** input is processed one key at a time; in this case, only availability of the first character is tested, so that e.g. `**read -t -k 2***` can still* block on the second character. Use two instances of `**read -t -k***` if* this is not what is wanted.\n>\n> If the first argument contains a `**?***`, the remainder of this* word is used as a *prompt on standard error when the shell* is interactive.\n>\n> The value (exit status) of **read** *is 1 when an end-of-file is* encountered, or when **-c** *or* **-l** *is present and the command is* not called from a **compctl** *function, or as described for* **-q***.* Otherwise the value is 0.\n>\n> The behavior of some combinations of the **-k***,* **-p***,* **-q***,* **-u** and **-z** *flags is undefined. Presently* **-q** *cancels all the others,* **-p** *cancels* **-u***,* **-k** *cancels* **-z***, and otherwise* **-z** cancels both **-p** *and* **-u***.*\n>\n> The **-c** *or* **-l** *flags cancel any and all of* **-kpquz***.*",args:"read [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ]"},readonly:{shortDescription:"Mark variables as read-only",description:": Same as **typeset -r***. With the* **POSIX_BUILTINS** *option set, same* as **typeset -gr***.*",args:"readonly"},rehash:{shortDescription:"Recompute command hash table",description:": Same as **hash -r***.*",args:"rehash"},return:{shortDescription:"Return from a function",description:': Causes a shell function or `**.***` script to return to* the invoking script with the return status specified by an arithmetic expression *n.* For example, the following prints `**42***`:*\n\n > () { integer foo=40; return "foo + 2" }\n > echo $?\n\n If *n* is omitted, the return status is that of the last command executed.\n\n If **return** *was executed from a trap in a* **TRAP***NAL function,* the effect is different for zero and non-zero return status. With zero status (or after an implicit return at the end of the trap), the shell will return to whatever it was previously processing; with a non-zero status, the shell will behave as interrupted except that the return status of the trap is retained. Note that the numeric value of the signal which caused the trap is passed as the first argument, so the statement `**return \\"128+\\$1\\"***` will return the same status as if the signal* had not been trapped.',args:"return [ n ]"},sched:{shortDescription:"Schedule commands",description:": See the section `The zsh/sched Module` in *zshmodules(1).*",args:"sched"},set:{shortDescription:"Set shell options",description:"*\\[ arg \\... \\]* Set the options for the shell and/or set the positional parameters, or declare and set an array. If the **-s** *option is given, it causes the* specified arguments to be sorted before assigning them to the positional parameters (or to the array *name if* **-A** *is used). With* **+s** sort arguments in descending order. For the meaning of the other flags, see *zshoptions(1). Flags may be specified by name using the* **-o** *option. If no option* name is supplied with **-o***, the current option states are printed: see* the description of **setopt** *below for more information on the format.* With **+o** *they are printed in a form that can be used as input* to the shell.\n\n> If the **-A** *flag is specified, name is set to an array containing* the given *args; if no name is specified, all arrays are printed* together with their values.\n>\n> If **+A** *is used and name is an array, the* given arguments will replace the initial elements of that array; if no *name is specified, all arrays are printed without their values.*\n>\n> The behaviour of arguments after **-A** *name or* **+A** *name* depends on whether the option **KSH_ARRAYS** *is set. If it is not set, all* arguments following *name are treated as values for the array,* regardless of their form. If the option is set, normal option processing continues at that point; only regular arguments are treated as values for the array. This means that\n>\n> > set -A array -x -- foo\n>\n> sets **array** *to `***-x -- foo***` if* **KSH_ARRAYS** *is not set, but sets* the array to **foo** *and turns on the option `***-x***` if it is set.*\n>\n> If the **-A** *flag is not present, but there are arguments beyond the* options, the positional parameters are set. If the option list (if any) is terminated by `**--***`, and there are no further arguments, the* positional parameters will be unset.\n>\n> If no arguments and no `**--***` are given, then the names and values of* all parameters are printed on the standard output. If the only argument is `**+***`, the names of all parameters are printed.*\n>\n> For historical reasons, `**set -***` is treated as `***set +xv***`* and `**set -** *args` as `***set +xv \\--** *args` when in* any other emulation mode than zsh\\'s native mode.",args:"set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ]"},setcap:{shortDescription:"Set capabilities",description:": See the section `The zsh/cap Module` in *zshmodules(1).*",args:"setcap"},setopt:{shortDescription:"Set shell options",description:": Set the options for the shell. All options specified either with flags or by name are set.\n\n If no arguments are supplied, the names of all options currently set are printed. The form is chosen so as to minimize the differences from the default options for the current emulation (the default emulation being native **zsh***, shown as* **\\<Z\\>** *in* *zshoptions(1)).* Options that are on by default for the emulation are shown with the prefix **no** *only if they are off, while other options are* shown without the prefix **no** *and only if they are on. In addition to* options changed from the default state by the user, any options activated automatically by the shell (for example, **SHIN_STDIN** *or* **INTERACTIVE***)* will be shown in the list. The format is further modified by the option **KSH_OPTION_PRINT***, however the rationale for choosing options with* or without the **no** *prefix remains the same in this case.*\n\n If the **-m** *flag is given the arguments are taken as patterns* (which should be quoted to protect them from filename expansion), and all options with names matching these patterns are set.\n\n Note that a bad option name does not cause execution of subsequent shell code to be aborted; this is behaviour is different from that of `**set** -o*`. This is because* **set** *is regarded as a special builtin by the* POSIX standard, but **setopt** *is not.*",args:"setopt [ {+|-}options | {+|-}o option_name ] [ -m ] [ name ... ]"},shift:{shortDescription:"Shift positional parameters",description:": The positional parameters **\\${***n+1***}** *\\... are renamed* to **\\$1** *\\..., where n is an arithmetic expression that* defaults to 1. If any *names are given then the arrays with these names are* shifted instead of the positional parameters.\n\n If the option **-p** *is given arguments are instead removed (popped)* from the end rather than the start of the array.",args:"shift [ -p ] [ n ] [ name ... ]"},source:{shortDescription:"Source a file",description:": Same as `**.***`, except that the current directory is always searched and* is always searched first, before directories in **\\$path***.*",args:"source file [ arg ... ]"},stat:{shortDescription:"Display file status",description:": See the section `The zsh/stat Module` in *zshmodules(1).*",args:"stat"},suspend:{shortDescription:"Suspend the shell",description:": Suspend the execution of the shell (send it a **SIGTSTP***)* until it receives a **SIGCONT***.* Unless the **-f** *option is given, this will refuse to suspend a login shell.*",args:"suspend [ -f ]"},test:{shortDescription:"Evaluate a conditional expression",description:"**\\[** *\\[ arg \\... \\]* **\\]** Like the system version of **test***. Added for compatibility;* use conditional expressions instead (see the section `Conditional Expressions`). The main differences between the conditional expression syntax and the **test** *and* **\\[** *builtins are: these commands are not handled* syntactically, so for example an empty variable expansion may cause an argument to be omitted; syntax errors cause status 2 to be returned instead of a shell error; and arithmetic operators expect integer arguments rather than arithmetic expressions.\n\n> The command attempts to implement POSIX and its extensions where these are specified. Unfortunately there are intrinsic ambiguities in the syntax; in particular there is no distinction between test operators and strings that resemble them. The standard attempts to resolve these for small numbers of arguments (up to four); for five or more arguments compatibility cannot be relied on. Users are urged wherever possible to use the `**\\[\\[***` test syntax which does not have these ambiguities.*",args:"test [ arg ... ]"},times:{shortDescription:"Display shell times",description:": Print the accumulated user and system times for the shell and for processes run from the shell.",args:"times"},trap:{shortDescription:"Set signal handlers",description:": *arg is a series of commands (usually quoted to protect it from* immediate evaluation by the shell) to be read and executed when the shell receives any of the signals specified by one or more *sig args.* Each *sig can be given as a number,* or as the name of a signal either with or without the string **SIG** in front (e.g. 1, HUP, and SIGHUP are all the same signal).\n\n If *arg is `***-***`, then the specified signals are reset to their* defaults, or, if no *sig args are present, all traps are reset.*\n\n If *arg is an empty string, then the specified signals* are ignored by the shell (and by the commands it invokes).\n\n If *arg is omitted but one or more sig args are provided (i.e.* the first argument is a valid signal number or name), the effect is the same as if *arg had been specified as `***-***`.*\n\n The **trap** *command with no arguments prints a list of commands* associated with each signal.\n\n If *sig is* **ZERR** *then arg will be executed* after each command with a nonzero exit status. **ERR** *is an alias* for **ZERR** *on systems that have no* **SIGERR** *signal (this is the* usual case).\n\n If *sig is* **DEBUG** *then arg will be executed* before each command if the option **DEBUG_BEFORE_CMD** *is set* (as it is by default), else after each command. Here, a `command` is what is described as a `sublist` in the shell grammar, see the section SIMPLE COMMANDS & PIPELINES in *zshmisc(1).* If **DEBUG_BEFORE_CMD** *is set various additional features are available.* First, it is possible to skip the next command by setting the option **ERR_EXIT***; see the description of the* **ERR_EXIT** *option in* *zshoptions(1). Also, the shell parameter* **ZSH_DEBUG_CMD** *is set to the string corresponding to the command* to be executed following the trap. Note that this string is reconstructed from the internal format and may not be formatted the same way as the original text. The parameter is unset after the trap is executed.\n\n If *sig is* **0** *or* **EXIT** and the **trap** *statement is executed inside the body of a function,* then the command *arg is executed after the function completes.* The value of **\\$?** *at the start of execution is the exit status of the* shell or the return status of the function exiting. If *sig is* **0** *or* **EXIT** and the **trap** *statement is not executed inside the body of a function,* then the command *arg is executed when the shell terminates; the* trap runs before any **zshexit** *hook functions.*\n\n **ZERR***,* **DEBUG***, and* **EXIT** *traps are not executed inside other* traps. **ZERR** *and* **DEBUG** *traps are kept within subshells, while* other traps are reset.\n\n Note that traps defined with the **trap** *builtin are slightly different* from those defined as `**TRAP***NAL () { \\... }`, as the latter have* their own function environment (line numbers, local variables, etc.) while the former use the environment of the command in which they were called. For example,\n\n > trap 'print $LINENO' DEBUG\n\n will print the line number of a command executed after it has run, while\n\n > TRAPDEBUG() { print $LINENO; }\n\n will always print the number zero.\n\n Alternative signal names are allowed as described under **kill** *above.* Defining a trap under either name causes any trap under an alternative name to be removed. However, it is recommended that for consistency users stick exclusively to one name or another.",args:"trap [ arg ] [ sig ... ]"},true:{shortDescription:"Return exit status of 0",description:": Do nothing and return an exit status of 0.",args:"true [ arg ... ]"},ttyctl:{shortDescription:"Control terminal attributes",description:": The **-f** *option freezes the tty (i.e. terminal or terminal emulator), and* **-u** *unfreezes it.* When the tty is frozen, no changes made to the tty settings by external programs will be honored by the shell, except for changes in the size of the screen; the shell will simply reset the settings to their previous values as soon as each command exits or is suspended. Thus, **stty** *and similar programs have* no effect when the tty is frozen. Freezing the tty does not cause the current state to be remembered: instead, it causes future changes to the state to be blocked.\n\n Without options it reports whether the terminal is frozen or not.\n\n Note that, regardless of whether the tty is frozen or not, the shell needs to change the settings when the line editor starts, so unfreezing the tty does not guarantee settings made on the command line are preserved. Strings of commands run between editing the command line will see a consistent tty state. See also the shell variable **STTY** *for a means of initialising* the tty before running external commands and/or freezing the tty around a single command.",args:"ttyctl [ -fu ]"},type:{shortDescription:"Describe a command",description:": Equivalent to **whence -v***.*",args:"type [ -wfpamsS ] name ..."},typeset:{shortDescription:"Set or display parameter attributes/values",description:'*\\[* **+** *\\| SCALAR\\[***=***value\\] array\\[***=(***value \\...***)***\\] \\[ sep \\] \\]*\n\n**typeset** **-f** *\\[ {***+***\\|***-***}***TUkmtuz** *\\] \\[* **+** *\\] \\[ name \\... \\]* Set or display attributes and values for shell parameters.\n\n> Except as noted below for control flags that change the behavior, a parameter is created for each *name that does not already refer* to one. When inside a function, a new parameter is created for every *name (even those that already exist), and is unset again when the* function completes. See `Local Parameters` in *zshparam(1). The same rules apply to special shell parameters, which* retain their special attributes when made local.\n>\n> For each *name***=***value assignment, the parameter* *name is set to value. If the assignment is omitted and name* does *not refer to an existing parameter, a new parameter is intialized* to empty string, zero, or empty array (as appropriate), *unless the* shell option **TYPESET_TO_UNSET** *is set. When that option is set,* the parameter attributes are recorded but the parameter remains unset.\n>\n> If the shell option **TYPESET_SILENT** *is not set, for each remaining* *name that refers to a parameter that is already set, the name and* value of the parameter are printed in the form of an assignment. Nothing is printed for newly-created parameters, or when any attribute flags listed below are given along with the *name. Using* `**+***` instead of minus to introduce an attribute turns it off.*\n>\n> If no *name is present, the names and values of all parameters are* printed. In this case the attribute flags restrict the display to only those parameters that have the specified attributes, and using `**+***`* rather than `**-***` to introduce the flag suppresses printing of the values* of parameters when there is no parameter name.\n>\n> All forms of the command handle scalar assignment. Array assignment is possible if any of the reserved words **declare***,* **export***,* **float***,* **integer***,* **local***,* **readonly** *or* **typeset** *is matched when the* line is parsed (N.B. not when it is executed). In this case the arguments are parsed as assignments, except that the `**+=***` syntax and the* **GLOB_ASSIGN** *option are not supported, and scalar values after* **=** are *not split further into words, even if expanded (regardless of the* setting of the **KSH_TYPESET** *option; this option is obsolete).*\n>\n> Examples of the differences between command and reserved word parsing:\n>\n> > # Reserved word parsing\n> > typeset svar=$(echo one word) avar=(several words)\n>\n> The above creates a scalar parameter **svar** *and an array* parameter **avar** *as if the assignments had been*\n>\n> > svar="one word"\n> > avar=(several words)\n>\n> On the other hand:\n>\n> > # Normal builtin interface\n> > builtin typeset svar=$(echo two words)\n>\n> The **builtin** *keyword causes the above to use the standard builtin* interface to **typeset** *in which argument parsing is performed in the same* way as for other commands. This example creates a scalar **svar** containing the value **two** *and another scalar parameter* **words** *with* no value. An array value in this case would either cause an error or be treated as an obscure set of glob qualifiers.\n>\n> Arbitrary arguments are allowed if they take the form of assignments after command line expansion; however, these only perform scalar assignment:\n>\n> > var=\'svar=val\'\n> > typeset $var\n>\n> The above sets the scalar parameter **svar** *to the value* **val***.* Parentheses around the value within **var** *would not cause array* assignment as they will be treated as ordinary characters when **\\$var** is substituted. Any non-trivial expansion in the name part of the assignment causes the argument to be treated in this fashion:\n>\n> > typeset {var1,var2,var3}=name\n>\n> The above syntax is valid, and has the expected effect of setting the three parameters to the same value, but the command line is parsed as a set of three normal command line arguments to **typeset** *after* expansion. Hence it is not possible to assign to multiple arrays by this means.\n>\n> Note that each interface to any of the commands may be disabled separately. For example, `**disable -r typeset***` disables the reserved* word interface to **typeset***, exposing the builtin interface, while* `**disable typeset***` disables the builtin. Note that disabling the* reserved word interface for **typeset** *may cause problems with the* output of `**typeset -p***`, which assumes the reserved word interface is* available in order to restore array and associative array values.\n>\n> Unlike parameter assignment statements, **typeset***\\\'s exit status on an* assignment that involves a command substitution does not reflect the exit status of the command substitution. Therefore, to test for an error in a command substitution, separate the declaration of the parameter from its initialization:\n>\n> > # WRONG\n> > typeset var1=$(exit 1) || echo "Trouble with var1"\n> >\n> > # RIGHT\n> > typeset var1 && var1=$(exit 1) || echo "Trouble with var1"\n>\n> To initialize a parameter *param to a command output and mark it readonly,* use **typeset -r** *param or* **readonly** *param after the parameter* assignment statement.\n>\n> If no attribute flags are given, and either no *name arguments are* present or the flag **+m** *is used, then each parameter name printed is* preceded by a list of the attributes of that parameter (**array***,* **association***,* **exported***,* **float***,* **integer***,* **readonly***,* or **undefined** *for autoloaded parameters not yet loaded). If* **+m** *is* used with attribute flags, and all those flags are introduced with **+***, the matching parameter names are printed but their values* are not.\n>\n> The following control flags change the behavior of **typeset***:*\n>\n> **+** If `**+***` appears by itself in a separate word as the last option,* then the names of all parameters (functions with **-f***) are printed, but* the values (function bodies) are not. No *name arguments may appear,* and it is an error for any other options to follow `**+***`. The* effect of `**+***` is as if all attribute flags which precede it were* given with a `**+***` prefix. For example, `***typeset -U +***` is* equivalent to `**typeset +U***` and displays the names of all arrays having* the uniqueness attribute, whereas `**typeset -f -U +***` displays the* names of all autoloadable functions. If **+** *is the only option,* then type information (array, readonly, etc.) is also printed for each parameter, in the same manner as `**typeset +m \\"\\*\\"***`.*\n>\n> **-g**\n>\n> : The **-g** *(global) means that any resulting parameter will not be* restricted to local scope. Note that this does not necessarily mean that the parameter will be global, as the flag will apply to any existing parameter (even if unset) from an enclosing function. This flag does not affect the parameter after creation, hence it has no effect when listing existing parameters, nor does the flag **+g** *have any effect except in* combination with **-m** *(see below).*\n>\n> **-m**\n>\n> : If the **-m** *flag is given the name arguments are taken as patterns* (use quoting to prevent these from being interpreted as file patterns). With no attribute flags, all parameters (or functions with the **-f** flag) with matching names are printed (the shell option **TYPESET_SILENT** is not used in this case).\n>\n> If the **+g** *flag is combined with* **-m***, a new local parameter is* created for every matching parameter that is not already local. Otherwise **-m** *applies all other flags or assignments to the existing parameters.*\n>\n> Except when assignments are made with *name***=***value, using* **+m** *forces the matching parameters and their attributes to be printed,* even inside a function. Note that **-m** *is ignored if no patterns are* given, so `**typeset -m***` displays attributes but `***typeset -a +m***`* does not.\n>\n> **-p** *\\[ n \\]*\n>\n> : If the **-p** *option is given, parameters and values are printed in the* form of a typeset command with an assignment, regardless of other flags and options. Note that the **-H** *flag on parameters is respected; no* value will be shown for these parameters.\n>\n> **-p** *may be followed by an optional integer argument. Currently* only the value **1** *is supported. In this case arrays and associative* arrays are printed with newlines between indented elements for readability.\n>\n> **-T** *\\[ scalar\\[***=***value\\] array\\[***=(***value \\...***)***\\] \\[ sep \\] \\]*\n>\n> : This flag has a different meaning when used with **-f***; see below.* Otherwise the **-T** *option requires zero, two, or three arguments to be* present. With no arguments, the list of parameters created in this fashion is shown. With two or three arguments, the first two are the name of a scalar and of an array parameter (in that order) that will be tied together in the manner of **\\$PATH** *and* **\\$path***. The optional third* argument is a single-character separator which will be used to join the elements of the array to form the scalar; if absent, a colon is used, as with **\\$PATH***. Only the first character of the separator is significant;* any remaining characters are ignored. Multibyte characters are not yet supported.\n>\n> Only one of the scalar and array parameters may be assigned an initial value (the restrictions on assignment forms described above also apply).\n>\n> Both the scalar and the array may be manipulated as normal. If one is unset, the other will automatically be unset too. There is no way of untying the variables without unsetting them, nor of converting the type of one of them with another **typeset** *command;* **+T** *does not work,* assigning an array to *scalar is an error, and assigning a scalar to* *array sets it to be a single-element array.*\n>\n> Note that both `**typeset -xT \\...***` and `***export -T \\...***` work, but* only the scalar will be marked for export. Setting the value using the scalar version causes a split on all separators (which cannot be quoted). It is possible to apply **-T** *to two previously tied variables but with a* different separator character, in which case the variables remain joined as before but the separator is changed.\n>\n> When an existing scalar is tied to a new array, the value of the scalar is preserved but no attribute other than export will be preserved.\n>\n> Attribute flags that transform the final value (**-L***,* **-R***,* **-Z***,* **-l***,* **-u***) are only applied to the expanded value at the point* of a parameter expansion expression using `**\\$***`. They are not applied* when a parameter is retrieved internally by the shell for any purpose.\n>\n> The following attribute flags may be specified:\n>\n> **-A** The names refer to associative array parameters; see `Array Parameters` in *zshparam(1).*\n>\n> **-L** *\\[ n \\]*\n>\n> : Left justify and remove leading blanks from the value when the parameter is expanded. If *n is nonzero, it defines the width of the field.* If *n is zero, the width is determined by the width of the value of* the first assignment. In the case of numeric parameters, the length of the complete value assigned to the parameter is used to determine the width, not the value that would be output.\n>\n> The width is the count of characters, which may be multibyte characters if the **MULTIBYTE** *option is in effect. Note that the screen* width of the character is not taken into account; if this is required, use padding with parameter expansion flags **\\${(ml***\\...***)***\\...***}** *as described in* `Parameter Expansion Flags` in *zshexpn(1).*\n>\n> When the parameter is expanded, it is filled on the right with blanks or truncated if necessary to fit the field. Note truncation can lead to unexpected results with numeric parameters. Leading zeros are removed if the **-Z** *flag is also set.*\n>\n> **-R** *\\[ n \\]*\n>\n> : Similar to **-L***, except that right justification is used;* when the parameter is expanded, the field is left filled with blanks or truncated from the end. May not be combined with the **-Z** flag.\n>\n> **-U**\n>\n> : For arrays (but not for associative arrays), keep only the first occurrence of each duplicated value. This may also be set for tied parameters (see **-T***) or colon-separated special parameters like* **PATH** *or* **FIGNORE***, etc. Note the flag takes effect on assignment,* and the type of the variable being assigned to is determinative; for variables with shared values it is therefore recommended to set the flag for all interfaces, e.g. `**typeset -U PATH path***`.*\n>\n> This flag has a different meaning when used with **-f***; see below.*\n>\n> **-Z** *\\[ n \\]*\n>\n> : Specially handled if set along with the **-L** *flag.* Otherwise, similar to **-R***, except that leading zeros are used for* padding instead of blanks if the first non-blank character is a digit. Numeric parameters are specially handled: they are always eligible for padding with zeroes, and the zeroes are inserted at an appropriate place in the output.\n>\n> **-a**\n>\n> : The names refer to array parameters. An array parameter may be created this way, but it may be assigned to in the **typeset** statement only if the reserved word form of **typeset** *is enabled* (as it is by default). When displaying, both normal and associative arrays are shown.\n>\n> **-f**\n>\n> : The names refer to functions rather than parameters. No assignments can be made, and the only other valid flags are **-t***,* **-T***,* **-k***,* **-u***,* **-U** *and* **-z***. The flag* **-t** *turns on execution tracing* for this function; the flag **-T** *does the same, but turns off tracing* for any named (not anonymous) function called from the present one, unless that function also has the **-t** *or* **-T** *flag. The* **-u** *and* **-U** *flags cause the* function to be marked for autoloading; **-U** *also causes alias* expansion to be suppressed when the function is loaded. See the description of the `**autoload***` builtin for details.*\n>\n> Note that the builtin **functions** *provides the same basic capabilities* as **typeset -f** *but gives access to a few extra options;* **autoload** gives further additional options for the case **typeset -fu** *and* **typeset -fU***.*\n>\n> **-h**\n>\n> : Hide: only useful for special parameters (those marked `\\<S\\>` in the table in *zshparam(1)), and for local parameters with the same name as a special parameter,* though harmless for others. A special parameter with this attribute will not retain its special effect when made local. Thus after `**typeset -h** PATH*`, a function containing `***typeset PATH***` will create an ordinary* local parameter without the usual behaviour of **PATH***. Alternatively,* the local parameter may itself be given this attribute; hence inside a function `**typeset -h PATH***` creates an ordinary local parameter and the* special **PATH** *parameter is not altered in any way. It is also possible* to create a local parameter using `**typeset +h** *special`, where the* local copy of *special will retain its special properties regardless of* having the **-h** *attribute. Global special parameters loaded from shell* modules (currently those in **zsh/mapfile** *and* **zsh/parameter***) are* automatically given the **-h** *attribute to avoid name clashes.*\n>\n> **-H**\n>\n> : Hide value: specifies that **typeset** *will not display the value of the* parameter when listing parameters; the display for such parameters is always as if the `**+***` flag had been given. Use of the parameter is* in other respects normal, and the option does not apply if the parameter is specified by name, or by pattern with the **-m** *option. This is on by* default for the parameters in the **zsh/parameter** *and* **zsh/mapfile** modules. Note, however, that unlike the **-h** *flag this is also useful* for non-special parameters.\n>\n> **-i** *\\[ n \\]*\n>\n> : Use an internal integer representation. If *n is nonzero it* defines the output arithmetic base, otherwise it is determined by the first assignment. Bases from 2 to 36 inclusive are allowed.\n>\n> **-E** *\\[ n \\]*\n>\n> : Use an internal double-precision floating point representation. On output the variable will be converted to scientific notation. If *n is* nonzero it defines the number of significant figures to display; the default is ten.\n>\n> **-F** *\\[ n \\]*\n>\n> : Use an internal double-precision floating point representation. On output the variable will be converted to fixed-point decimal notation. If *n* is nonzero it defines the number of digits to display after the decimal point; the default is ten.\n>\n> **-l**\n>\n> : Convert the result to lower case whenever the parameter is expanded. The value is *not converted when assigned.*\n>\n> **-r**\n>\n> : The given *names are marked readonly. Note that if name is a* special parameter, the readonly attribute can be turned on, but cannot then be turned off.\n>\n> If the **POSIX_BUILTINS** *option is set, the readonly attribute is* more restrictive: unset variables can be marked readonly and cannot then be set; furthermore, the readonly attribute cannot be removed from any variable.\n>\n> It is still possible to change other attributes of the variable though, some of which like **-U** *or* **-Z** *would affect the value. More generally,* the readonly attribute should not be relied on as a security mechanism.\n>\n> Note that in zsh (like in pdksh but unlike most other shells) it is still possible to create a local variable of the same name as this is considered a different variable (though this variable, too, can be marked readonly). Special variables that have been made readonly retain their value and readonly attribute when made local.\n>\n> **-t**\n>\n> : Tags the named parameters. Tags have no special meaning to the shell. This flag has a different meaning when used with **-f***; see above.*\n>\n> **-u**\n>\n> : Convert the result to upper case whenever the parameter is expanded. The value is *not converted when assigned.* This flag has a different meaning when used with **-f***; see above.*\n>\n> **-x**\n>\n> : Mark for automatic export to the environment of subsequently executed commands. If the option **GLOBAL_EXPORT** *is set, this implies* the option **-g***, unless* **+g** *is also explicitly given; in other words* the parameter is not made local to the enclosing function. This is for compatibility with previous versions of zsh.',args:"typeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ n ] ]"},ulimit:{shortDescription:"Set or display resource limits",description:": Set or display resource limits of the shell and the processes started by the shell. The value of *limit can be a number in the unit specified* below or one of the values `**unlimited***`, which removes the limit on the* resource, or `**hard***`, which uses the current value of the hard limit on* the resource.\n\n By default, only soft limits are manipulated. If the **-H** *flag* is given use hard limits instead of soft limits. If the **-S** *flag is given* together with the **-H** *flag set both hard and soft limits.*\n\n If no options are used, the file size limit (**-f***) is assumed.*\n\n If *limit is omitted the current value of the specified resources are* printed. When more than one resource value is printed, the limit name and unit is printed before each value.\n\n When looping over multiple resources, the shell will abort immediately if it detects a badly formed argument. However, if it fails to set a limit for some other reason it will continue trying to set the remaining limits.\n\n Not all the following resources are supported on all systems. Running **ulimit -a** *will show which are supported.*\n\n **-a**\n\n : Lists all of the current resource limits.\n\n **-b**\n\n : Socket buffer size in bytes (N.B. not kilobytes)\n\n **-c**\n\n : 512-byte blocks on the size of core dumps.\n\n **-d**\n\n : Kilobytes on the size of the data segment.\n\n **-f**\n\n : 512-byte blocks on the size of files written.\n\n **-i**\n\n : The number of pending signals.\n\n **-k**\n\n : The number of kqueues allocated.\n\n **-l**\n\n : Kilobytes on the size of locked-in memory.\n\n **-m**\n\n : Kilobytes on the size of physical memory.\n\n **-n**\n\n : open file descriptors.\n\n **-p**\n\n : The number of pseudo-terminals.\n\n **-q**\n\n : Bytes in POSIX message queues.\n\n **-r**\n\n : Maximum real time priority. On some systems where this is not available, such as NetBSD, this has the same effect as **-T** for compatibility with **sh***.*\n\n **-s**\n\n : Kilobytes on the size of the stack.\n\n **-T**\n\n : The number of simultaneous threads available to the user.\n\n **-t**\n\n : CPU seconds to be used.\n\n **-u**\n\n : The number of processes available to the user.\n\n **-v**\n\n : Kilobytes on the size of virtual memory. On some systems this refers to the limit called `address space`.\n\n **-w**\n\n : Kilobytes on the size of swapped out memory.\n\n **-x**\n\n : The number of locks on files.\n\n A resource may also be specified by integer in the form `**-N** *resource`, where resource corresponds to the integer defined for* the resource by the operating system. This may be used to set the limits for resources known to the shell which do not correspond to option letters. Such limits will be shown by number in the output of `**ulimit -a***`.*\n\n The number may alternatively be out of the range of limits compiled into the shell. The shell will try to read or write the limit anyway, and will report an error if this fails.",args:"ulimit [ -HSa ] [ { -bcdfiklmnpqrsTtvwx | -N resource } [ limit ] ... ]"},umask:{shortDescription:"Set file creation mask",description:": The umask is set to *mask. mask can be either* an octal number or a symbolic value as described in the *chmod(1) man page.* If *mask is omitted, the current value is printed. The* **-S** option causes the mask to be printed as a symbolic value. Otherwise, the mask is printed as an octal number. Note that in the symbolic form the permissions you specify are those which are to be allowed (not denied) to the users specified.",args:"umask [ -S ] [ mask ]"},unalias:{shortDescription:"Removes aliases",description:": Removes aliases. This command works the same as **unhash -a***, except that* the **-a** *option removes all regular or global aliases, or with* **-s** all suffix aliases: in this case no *name arguments may appear. The* options **-m** *(remove by pattern) and* **-s** *without* **-a** *(remove* listed suffix aliases) behave as for **unhash -a***. Note that* the meaning of **-a** *is different between* **unalias** *and* **unhash***.*",args:"unalias [ -ams ] name ..."},unfunction:{shortDescription:"Remove function definition",description:": Same as **unhash -f***.*",args:"unfunction"},unhash:{shortDescription:"Remove command from hash table",description:": Remove the element named *name from an internal hash table. The* default is remove elements from the command hash table. The **-a** option causes **unhash** *to remove regular or global aliases; note* when removing a global aliases that the argument must be quoted to prevent it from being expanded before being passed to the command. The **-s** *option causes* **unhash** *to remove suffix aliases.* The **-f** *option causes* **unhash** *to remove shell functions. The* **-d** *options causes* **unhash** *to remove named directories. If the* **-m** *flag is given* the arguments are taken as patterns (should be quoted) and all elements of the corresponding hash table with matching names will be removed.",args:"unhash [ -adfms ] name ..."},unlimit:{shortDescription:"Remove resource limits",description:": The resource limit for each *resource is set to the hard limit.* If the **-h** *flag is given and the shell has appropriate privileges,* the hard resource limit for each *resource is removed.* The resources of the shell process are only changed if the **-s** flag is given.\n\n The **unlimit** *command is not made available by default when the* shell starts in a mode emulating another shell. It can be made available with the command `**zmodload -F zsh/rlimits b:unlimit***`.*",args:"unlimit [ -hs ] resource ..."},unset:{shortDescription:"Unset values and attributes of variables",description:": Each named parameter is unset. Local parameters remain local even if unset; they appear unset within scope, but the previous value will still reappear when the scope ends.\n\n Individual elements of associative array parameters may be unset by using subscript syntax on *name, which should be quoted (or the entire command* prefixed with **noglob***) to protect the subscript from filename generation.*\n\n If the **-m** *flag is specified the arguments are taken as patterns (should* be quoted) and all parameters with matching names are unset. Note that this cannot be used when unsetting associative array elements, as the subscript will be treated as part of the pattern.\n\n The **-v** *flag specifies that name refers to parameters. This is the* default behaviour.\n\n **unset -f** *is equivalent to* **unfunction***.*",args:"unset [ -fmv ] name ..."},unsetopt:{shortDescription:"Unset shell options",description:": Unset the options for the shell. All options specified either with flags or by name are unset. If no arguments are supplied, the names of all options currently unset are printed. If the **-m** *flag is given the arguments are taken as patterns* (which should be quoted to preserve them from being interpreted as glob patterns), and all options with names matching these patterns are unset.",args:"unsetopt [ {+|-}options | {+|-}o option_name ] [ name ... ]"},vared:{shortDescription:"Edit shell variables",description:": See the section `Zle Builtins` in *zshzle(1).*",args:"vared"},wait:{shortDescription:"Wait for a process",description:": Wait for the specified jobs or processes. If *job is not given* then all currently active child processes are waited for. Each *job can be either a job specification or the process ID* of a job in the job table. The exit status from this command is that of the job waited for. If *job represents an unknown job or process ID, a warning is printed* (unless the **POSIX_BUILTINS** *option is set) and the exit status is 127.*\n\n It is possible to wait for recent processes (specified by process ID, not by job) that were running in the background even if the process has exited. Typically the process ID will be recorded by capturing the value of the variable **\\$!** *immediately after the process has been* started. There is a limit on the number of process IDs remembered by the shell; this is given by the value of the system configuration parameter **CHILD_MAX***. When this limit is reached, older process IDs* are discarded, least recently started processes first.\n\n Note there is no protection against the process ID wrapping, i.e. if the wait is not executed soon enough there is a chance the process waited for is the wrong one. A conflict implies both process IDs have been generated by the shell, as other processes are not recorded, and that the user is potentially interested in both, so this problem is intrinsic to process IDs.",args:"wait [ job ... ]"},whence:{shortDescription:"Locate a command",description:": For each *name, indicate how it would be interpreted if used as a* command name.\n\n If *name is not an alias, built-in command, external command, shell* function, hashed command, or a reserved word, the exit status shall be non-zero, and \\-- if **-v***,* **-c***, or* **-w** *was passed \\-- a message* will be written to standard output. (This is different from other shells that write that message to standard error.)\n\n **whence** *is most useful when name is only the last path component* of a command, i.e. does not include a `**/***`; in particular, pattern* matching only succeeds if just the non-directory component of the command is passed.\n\n **-v** Produce a more verbose report.\n\n **-c**\n\n : Print the results in a **csh***-like format.* This takes precedence over **-v***.*\n\n **-w**\n\n : For each *name, print `name***:** *word` where word* is one of **alias***,* **builtin***,* **command***,* **function***,* **hashed***,* **reserved** *or* **none***, according as name* corresponds to an alias, a built-in command, an external command, a shell function, a command defined with the **hash** *builtin, a* reserved word, or is not recognised. This takes precedence over **-v** *and* **-c***.*\n\n **-f**\n\n : Causes the contents of a shell function to be displayed, which would otherwise not happen unless the **-c** flag were used.\n\n **-p**\n\n : Do a path search for *name* even if it is an alias, reserved word, shell function or builtin.\n\n **-a**\n\n : Do a search for all occurrences of *name* throughout the command path. Normally only the first occurrence is printed.\n\n **-m**\n\n : The arguments are taken as patterns (pattern characters should be quoted), and the information is displayed for each command matching one of these patterns.\n\n **-s**\n\n : If a pathname contains symlinks, print the symlink-free pathname as well.\n\n **-S**\n\n : As **-s***, but if the pathname had to be resolved by following* multiple symlinks, the intermediate steps are printed, too. The symlink resolved at each step might be anywhere in the path.\n\n **-x** *num*\n\n : Expand tabs when outputting shell functions using the **-c** *option.* This has the same effect as the **-x** *option to the* **functions** builtin.",args:"whence [ -vcwfpamsS ] [ -x num ] name ..."},where:{shortDescription:"Locate a command",description:": Equivalent to **whence -ca***.*",args:"where [ -wpmsS ] [ -x num ] name ..."},which:{shortDescription:"Locate a command",description:": Equivalent to **whence -c***.*",args:"which [ -wpamsS ] [ -x num ] name ..."},zcompile:{shortDescription:"Compile functions",description:"**zcompile -t** *file \\[ name \\... \\]* This builtin command can be used to compile functions or scripts, storing the compiled form in a file, and to examine files containing the compiled form. This allows faster autoloading of functions and sourcing of scripts by avoiding parsing of the text when the files are read.\n\n> The first form (without the **-c***,* **-a** *or* **-t** *options) creates a* compiled file. If only the *file argument is given, the* output file has the name `*file***.zwc***` and will be placed in* the same directory as the *file. The shell will load the compiled* file instead of the normal function file when the function is autoloaded; see the section `Autoloading Functions` in *zshmisc(1)* for a description of how autoloaded functions are searched. The extension **.zwc** *stands for `zsh word code`.*\n>\n> If there is at least one *name argument, all the named files* are compiled into the output *file given as the first argument. If* *file does not end in* **.zwc***, this extension is automatically* appended. Files containing multiple compiled functions are called `digest` files, and are intended to be used as elements of the **FPATH***/***fpath** special array.\n>\n> The second form, with the **-c** *or* **-a** *options, writes the compiled* definitions for all the named functions into *file. For* **-c***, the* names must be functions currently defined in the shell, not those marked for autoloading. Undefined functions that are marked for autoloading may be written by using the **-a** *option, in which case the* **fpath** is searched and the contents of the definition files for those functions, if found, are compiled into *file. If both* **-c** *and* **-a** *are given, names of both defined functions and functions marked* for autoloading may be given. In either case, the functions in files written with the **-c** *or* **-a** *option will be autoloaded as if the* **KSH_AUTOLOAD** *option were unset.*\n>\n> The reason for handling loaded and not-yet-loaded functions with different options is that some definition files for autoloading define multiple functions, including the function with the same name as the file, and, at the end, call that function. In such cases the output of `**zcompile -c***` does not include the additional functions defined in* the file, and any other initialization code in the file is lost. Using `**zcompile -a***` captures all this extra information.*\n>\n> If the **-m** *option is combined with* **-c** *or* **-a***,* the *names are used as patterns and all functions whose names* match one of these patterns will be written. If no *name is given,* the definitions of all functions currently defined or marked as autoloaded will be written.\n>\n> Note the second form cannot be used for compiling functions that include redirections as part of the definition rather than within the body of the function; for example\n>\n> > fn1() { { ... } >~/logfile }\n>\n> can be compiled but\n>\n> > fn1() { ... } >~/logfile\n>\n> cannot. It is possible to use the first form of **zcompile** *to compile* autoloadable functions that include the full function definition instead of just the body of the function.\n>\n> The third form, with the **-t** *option, examines an existing* compiled file. Without further arguments, the names of the original files compiled into it are listed. The first line of output shows the version of the shell which compiled the file and how the file will be used (i.e. by reading it directly or by mapping it into memory). With arguments, nothing is output and the return status is set to zero if definitions for *all names were found in the compiled* file, and non-zero if the definition for at least one *name was not* found.\n>\n> Other options:\n>\n> **-U** Aliases are not expanded when compiling the *named files.*\n>\n> **-R**\n>\n> : When the compiled file is read, its contents are copied into the shell\\'s memory, rather than memory-mapped (see **-M***). This* happens automatically on systems that do not support memory mapping.\n>\n> When compiling scripts instead of autoloadable functions, it is often desirable to use this option; otherwise the whole file, including the code to define functions which have already been defined, will remain mapped, consequently wasting memory.\n>\n> **-M**\n>\n> : The compiled file is mapped into the shell\\'s memory when read. This is done in such a way that multiple instances of the shell running on the same host will share this mapped file. If neither **-R** *nor* **-M** *is given, the* **zcompile** *builtin decides what to do based* on the size of the compiled file.\n>\n> **-k**\n>\n> **-z** These options are used when the compiled file contains functions which are to be autoloaded. If **-z** *is given, the* function will be autoloaded as if the **KSH_AUTOLOAD** *option is* *not set, even if it is set at the time the compiled file is* read, while if the **-k** *is given, the function will be loaded as if* **KSH_AUTOLOAD** *is set. These options also take precedence over* any **-k** *or* **-z** *options specified to the* **autoload** *builtin. If* neither of these options is given, the function will be loaded as determined by the setting of the **KSH_AUTOLOAD** *option at the time* the compiled file is read. These options may also appear as many times as necessary between the listed *names to specify the loading style of all following functions, up to* the next **-k** *or* **-z***.*\n>\n> The created file always contains two versions of the compiled format, one for big-endian machines and one for small-endian machines. The upshot of this is that the compiled file is machine independent and if it is read or mapped, only one half of the file is actually used (and mapped).",args:"zcompile [ -U ] [ -z | -k ] [ -R | -M ] file [ name ... ]\n\nzcompile -ca [ -m ] [ -R | -M ] file [ name ... ]"},zformat:{shortDescription:"Format strings",description:": See the section `The zsh/zutil Module` in *zshmodules(1).*",args:"zformat"},zftp:{shortDescription:"Zsh FTP client",description:": See the section `The zsh/zftp Module` in *zshmodules(1).*",args:"zftp"},zle:{shortDescription:"Zsh line editor",description:": See the section `Zle Builtins` in *zshzle(1).*",args:"zle"},zmodload:{shortDescription:"Load a module",description:"**zmodload** **-R** *modalias \\...* Performs operations relating to zsh\\'s loadable modules. Loading of modules while the shell is running (`dynamical loading`) is not available on all operating systems, or on all installations on a particular operating system, although the **zmodload** *command itself is always* available and can be used to manipulate modules built into versions of the shell executable without dynamical loading.\n\n> Without arguments the names of all currently loaded binary modules are printed. The **-L** *option causes this list to be in the form of a* series of **zmodload** *commands. Forms with arguments are:*\n>\n> **zmodload** *\\[* **-is** *\\] name \\...*\n>\n> **zmodload** **-u** *\\[* **-i** *\\] name \\...* In the simplest case, **zmodload** *loads a binary module. The module must* be in a file with a name consisting of the specified *name followed by* a standard suffix, usually `**.so***` (`***.sl***` on HPUX).* If the module to be loaded is already loaded the duplicate module is ignored. If **zmodload** *detects an inconsistency, such as an* invalid module name or circular dependency list, the current code block is aborted. If it is available, the module is loaded if necessary, while if it is not available, non-zero status is silently returned. The option **-i** *is accepted for compatibility but has no effect.*\n>\n> > The *named module is searched for in the same way a command is, using* **\\$module_path** *instead of* **\\$path***. However, the path search is* performed even when the module name contains a `**/***`, which it usually does.* There is no way to prevent the path search.\n> >\n> > If the module supports features (see below), **zmodload** *tries to* enable all features when loading a module. If the module was successfully loaded but not all features could be enabled, **zmodload** *returns status 2.*\n> >\n> > If the option **-s** *is given, no error is printed if the module was not* available (though other errors indicating a problem with the module are printed). The return status indicates if the module was loaded. This is appropriate if the caller considers the module optional.\n> >\n> > With **-u***,* **zmodload** *unloads modules. The same name* must be given that was given when the module was loaded, but it is not necessary for the module to exist in the file system. The **-i** *option suppresses the error if the module is already* unloaded (or was never loaded).\n> >\n> > Each module has a boot and a cleanup function. The module will not be loaded if its boot function fails. Similarly a module can only be unloaded if its cleanup function runs successfully.\n>\n> **zmodload -F** *\\[* **-almLe** **-P** *param \\] module \\[ \\[***+-***\\]feature \\... \\]*\n>\n> : **zmodload -F** *allows more selective control over the features provided* by modules. With no options apart from **-F***, the module named* *module is loaded, if it was not already loaded, and the list of* *features is set to the required state. If no* *features are specified, the module is loaded, if it was not already* loaded, but the state of features is unchanged. Each feature may be preceded by a **+** *to turn the feature on, or* **-** *to turn it* off; the **+** *is assumed if neither character is present.* Any feature not explicitly mentioned is left in its current state; if the module was not previously loaded this means any such features will remain disabled. The return status is zero if all features were set, 1 if the module failed to load, and 2 if some features could not be set (for example, a parameter couldn\\'t be added because there was a different parameter of the same name) but the module was loaded.\n>\n> The standard features are builtins, conditions, parameters and math functions; these are indicated by the prefix `**b:***`, `***c:***`* (`**C:***` for an infix condition), `***p:***` and `***f:***`, respectively,* followed by the name that the corresponding feature would have in the shell. For example, `**b:strftime***` indicates a builtin named* **strftime** *and* **p:EPOCHSECONDS** *indicates a parameter named* **EPOCHSECONDS***. The module may provide other (`abstract`) features of* its own as indicated by its documentation; these have no prefix.\n>\n> With **-l** *or* **-L***, features provided by the module are listed. With* **-l** *alone, a list of features together with their states is shown, one* feature per line. With **-L** *alone, a* **zmodload -F** *command that would* cause enabled features of the module to be turned on is shown. With **-lL***, a* **zmodload -F** *command that would cause all the features to be* set to their current state is shown. If one of these combinations is given with the option **-P** *param then the parameter param is set to an* array of features, either features together with their state or (if **-L** *alone is given) enabled features.*\n>\n> With the option **-L** *the module name may be omitted; then a list* of all enabled features for all modules providing features is printed in the form of **zmodload -F** *commands. If* **-l** *is also given,* the state of both enabled and disabled features is output in that form.\n>\n> A set of features may be provided together with **-l** *or* **-L** *and a* module name; in that case only the state of those features is considered. Each feature may be preceded by **+** *or* **-** *but the* character has no effect. If no set of features is provided, all features are considered.\n>\n> With **-e***, the command first tests that the module is loaded;* if it is not, status 1 is returned. If the module is loaded, the list of features given as an argument is examined. Any feature given with no prefix is simply tested to see if the module provides it; any feature given with a prefix **+** *or* **-** *is tested to* see if is provided and in the given state. If the tests on all features in the list succeed, status 0 is returned, else status 1.\n>\n> With **-m***, each entry in the given list of features is taken* as a pattern to be matched against the list of features provided by the module. An initial **+** *or* **-** *must be given explicitly.* This may not be combined with the **-a** *option as autoloads must* be specified explicitly.\n>\n> With **-a***, the given list of features is marked for autoload from* the specified module, which may not yet be loaded. An optional **+** may appear before the feature name. If the feature is prefixed with **-***, any existing autoload is removed. The options* **-l** *and* **-L** may be used to list autoloads. Autoloading is specific to individual features; when the module is loaded only the requested feature is enabled. Autoload requests are preserved if the module is subsequently unloaded until an explicit `**zmodload -Fa** *module* **-***feature` is issued. It is not an error to request an autoload* for a feature of a module that is already loaded.\n>\n> When the module is loaded each autoload is checked against the features actually provided by the module; if the feature is not provided the autoload request is deleted. A warning message is output; if the module is being loaded to provide a different feature, and that autoload is successful, there is no effect on the status of the current command. If the module is already loaded at the time when **zmodload -Fa** *is* run, an error message is printed and status 1 returned.\n>\n> **zmodload -Fa** *can be used with the* **-l***,* **-L***,* **-e** *and* **-P** *options for listing and testing the existence of autoloadable* features. In this case **-l** *is ignored if* **-L** *is specified.* **zmodload -FaL** *with no module name lists autoloads for all modules.*\n>\n> Note that only standard features as described above can be autoloaded; other features require the module to be loaded before enabling.\n>\n> **zmodload** **-d** *\\[* **-L** *\\] \\[ name \\]*\n>\n> **zmodload** **-d** *name dep \\...*\n>\n> **zmodload** **-ud** *name \\[ dep \\... \\]* The **-d** *option can be used to specify module dependencies. The modules* named in the second and subsequent arguments will be loaded before the module named in the first argument.\n>\n> > With **-d** *and one argument, all dependencies for that module are listed.* With **-d** *and no arguments, all module dependencies are listed. This* listing is by default in a Makefile-like format. The **-L** *option* changes this format to a list of **zmodload -d** *commands.*\n> >\n> > If **-d** *and* **-u** *are both used, dependencies are removed. If only one* argument is given, all dependencies for that module are removed.\n>\n> **zmodload** **-ab** *\\[* **-L** *\\]*\n>\n> **zmodload** **-ab** *\\[* **-i** *\\] name \\[ builtin \\... \\]*\n>\n> **zmodload** **-ub** *\\[* **-i** *\\] builtin \\...* The **-ab** *option defines autoloaded builtins. It defines the specified* *builtins. When any of those builtins is called, the module specified* in the first argument is loaded and all its features are enabled (for selective control of features use `**zmodload -F -a***` as described* above). If only the *name is given, one builtin is defined, with* the same name as the module. **-i** *suppresses the error if the builtin* is already defined or autoloaded, but not if another builtin of the same name is already defined.\n>\n> > With **-ab** *and no arguments, all autoloaded builtins are listed, with the* module name (if different) shown in parentheses after the builtin name. The **-L** *option changes this format to a list of* **zmodload -a** commands.\n> >\n> > If **-b** *is used together with the* **-u** *option, it removes builtins* previously defined with **-ab***. This is only possible if the builtin is* not yet loaded. **-i** *suppresses the error if the builtin is already* removed (or never existed).\n> >\n> > Autoload requests are retained if the module is subsequently unloaded until an explicit `**zmodload -ub** *builtin` is issued.*\n>\n> **zmodload** **-ac** *\\[* **-IL** *\\]*\n>\n> **zmodload** **-ac** *\\[* **-iI** *\\] name \\[ cond \\... \\]*\n>\n> **zmodload** **-uc** *\\[* **-iI** *\\] cond \\...* The **-ac** *option is used to define autoloaded condition codes. The* *cond strings give the names of the conditions defined by the* module. The optional **-I** *option is used to define infix condition* names. Without this option prefix condition names are defined.\n>\n> > If given no condition names, all defined names are listed (as a series of **zmodload** *commands if the* **-L** *option is given).*\n> >\n> > The **-uc** *option removes definitions for autoloaded conditions.*\n>\n> **zmodload** **-ap** *\\[* **-L** *\\]*\n>\n> **zmodload** **-ap** *\\[* **-i** *\\] name \\[ parameter \\... \\]*\n>\n> **zmodload** **-up** *\\[* **-i** *\\] parameter \\...* The **-p** *option is like the* **-b** *and* **-c** *options, but makes* **zmodload** *work on autoloaded parameters instead.*\n>\n> **zmodload** **-af** *\\[* **-L** *\\]*\n>\n> **zmodload** **-af** *\\[* **-i** *\\] name \\[ function \\... \\]*\n>\n> **zmodload** **-uf** *\\[* **-i** *\\] function \\...* The **-f** *option is like the* **-b***,* **-p***, and* **-c** *options, but* makes **zmodload** *work on autoloaded math functions instead.*\n>\n> **zmodload** **-a** *\\[* **-L** *\\]*\n>\n> **zmodload** **-a** *\\[* **-i** *\\] name \\[ builtin \\... \\]*\n>\n> **zmodload** **-ua** *\\[* **-i** *\\] builtin \\...* Equivalent to **-ab** *and* **-ub***.*\n>\n> **zmodload -e** *\\[* **-A** *\\] \\[ string \\... \\]*\n>\n> : The **-e** *option without arguments lists all loaded modules; if the* **-A** option is also given, module aliases corresponding to loaded modules are also shown. If arguments are provided, nothing is printed; the return status is set to zero if all *strings given as arguments* are names of loaded modules and to one if at least on *string is not* the name of a loaded module. This can be used to test for the availability of things implemented by modules. In this case, any aliases are automatically resolved and the **-A** *flag is not used.*\n>\n> **zmodload** **-A** *\\[* **-L** *\\] \\[ modalias\\[***=***module\\] \\... \\]*\n>\n> : For each argument, if both *modalias and module are given,* define *modalias to be an alias for the module module.* If the module *modalias is ever subsequently requested, either via a* call to **zmodload** *or implicitly, the shell will attempt to load* *module instead. If module is not given, show the definition of* *modalias. If no arguments are given, list all defined module aliases.* When listing, if the **-L** *flag was also given, list the definition as a* **zmodload** *command to recreate the alias.*\n>\n> The existence of aliases for modules is completely independent of whether the name resolved is actually loaded as a module: while the alias exists, loading and unloading the module under any alias has exactly the same effect as using the resolved name, and does not affect the connection between the alias and the resolved name which can be removed either by **zmodload -R** *or by redefining the alias. Chains of aliases (i.e. where* the first resolved name is itself an alias) are valid so long as these are not circular. As the aliases take the same format as module names, they may include path separators: in this case, there is no requirement for any part of the path named to exist as the alias will be resolved first. For example, `**any/old/alias***` is always a valid alias.*\n>\n> Dependencies added to aliased modules are actually added to the resolved module; these remain if the alias is removed. It is valid to create an alias whose name is one of the standard shell modules and which resolves to a different module. However, if a module has dependencies, it will not be possible to use the module name as an alias as the module will already be marked as a loadable module in its own right.\n>\n> Apart from the above, aliases can be used in the **zmodload** *command* anywhere module names are required. However, aliases will not be shown in lists of loaded modules with a bare `**zmodload***`.*\n>\n> **zmodload** **-R** *modalias \\...* \n>\n> : For each *modalias argument that was previously defined as a module* alias via **zmodload -A***, delete the alias. If any was not defined, an* error is caused and the remainder of the line is ignored.\n>\n> Note that **zsh** *makes no distinction between modules that were linked* into the shell and modules that are loaded dynamically. In both cases this builtin command has to be used to make available the builtins and other things defined by modules (unless the module is autoloaded on these definitions). This is true even for systems that don\\'t support dynamic loading of modules.",args:"zmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ...\n\nzmodload -u [ -abcdpf [ -I ] ] [ -iL ] ...\n\nzmodload -A [ -L ] [ modalias[=module] ... ]"},zparseopts:{shortDescription:"Parse options",description:": See the section `The zsh/zutil Module` in *zshmodules(1).*",args:"zparseopts"},zprof:{shortDescription:"Zsh profiler",description:": See the section `The zsh/zprof Module` in *zshmodules(1).*",args:"zprof"},zpty:{shortDescription:"Zsh pseudo terminal",description:": See the section `The zsh/zpty Module` in *zshmodules(1).*",args:"zpty"},zregexparse:{shortDescription:"Parse regex",description:": See the section `The zsh/zutil Module` in *zshmodules(1).*",args:"zregexparse"},zsocket:{shortDescription:"Zsh socket interface",description:": See the section `The zsh/net/socket Module` in *zshmodules(1).*",args:"zsocket"},zstyle:{shortDescription:"Define styles",description:": See the section `The zsh/zutil Module` in *zshmodules(1).*",args:"zstyle"},ztcp:{shortDescription:"Manipulate TCP sockets",description:": See the section `The zsh/net/tcp Module` in *zshmodules(1).*",args:"ztcp"}}},1848:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"seq",description:"Print sequences of numbers. (Defaults to increments of 1)",args:[{name:"first",description:"Starting number in sequence"},{name:"step",description:"Increment interval",isOptional:!0},{name:"last",description:"Last number in sequence",isOptional:!0}],options:[{name:["-w","--fixed-width"],description:"Equalize the widths of all numbers by padding with zeros as necessary"},{name:["-s","--separator"],description:"String separator between numbers. Default is newline",insertValue:'-s "{cursor}"',args:{name:"string",description:"Separator"}},{name:["-f","--format"],description:"Use a printf(3) style format to print each number",insertValue:"-f %{cursor}",args:{name:"format",description:"Print all numbers using format"}},{name:["-t","--terminator"],description:"Use string to terminate sequence of numbers",insertValue:'-t "{cursor}"',args:{name:"string",description:"Terminator"}}]}},1872:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getPwshGlobals=async function(e,t){return[...await d(e),...await m(e)]},t.isObject=h;const r=o(n(1398)),c=n(4539),l=new Map([[1,r.TerminalCompletionItemKind.Alias],[2,r.TerminalCompletionItemKind.Method],[4,r.TerminalCompletionItemKind.Method],[8,r.TerminalCompletionItemKind.Method],[16,r.TerminalCompletionItemKind.Method],[32,r.TerminalCompletionItemKind.Method],[64,r.TerminalCompletionItemKind.Method],[256,r.TerminalCompletionItemKind.Argument]]);async function d(e,t){const n=await(0,c.execHelper)('Get-Command -CommandType Alias | Select-Object Name, CommandType, Definition, DisplayName, ModuleName, @{Name="Version";Expression={$_.Version.ToString()}} | ConvertTo-Json',{...e,maxBuffer:104857600});let i;try{i=JSON.parse(n)}catch(e){return console.error("Error parsing output:",e),[]}return Array.isArray(i)?i.filter(p).map(e=>{const t=e.Name!==e.DisplayName,n=[];let i;if(e.Definition&&n.push(e.Definition),e.ModuleName&&e.Version&&n.push(`${e.ModuleName} v${e.Version}`),e.Definition){let t=e.Definition.indexOf(" ");-1===t&&(t=e.Definition.length,i=e.Definition.substring(0,t))}return{label:e.Name,detail:n.join("\n\n"),kind:t?r.TerminalCompletionItemKind.Alias:r.TerminalCompletionItemKind.Method,definitionCommand:i}}):[]}async function m(e,t){const n=await(0,c.execHelper)('Get-Command -All | Select-Object Name, CommandType, Definition, ModuleName, @{Name="Version";Expression={$_.Version.ToString()}} | ConvertTo-Json',{...e,maxBuffer:104857600});let i;try{i=JSON.parse(n)}catch(e){return console.error("Error parsing pwsh output:",e),[]}return Array.isArray(i)?i.filter(p).filter(e=>1!==e.CommandType).map(e=>{const t=[];return e.Definition&&t.push(e.Definition.trim()),e.ModuleName&&e.Version&&t.push(`${e.ModuleName} v${e.Version}`),{label:e.Name,detail:t.join("\n\n"),kind:l.get(e.CommandType)}}):[]}function p(e){return h(e)&&"Name"in e&&"string"==typeof e.Name&&"CommandType"in e&&"number"==typeof e.CommandType&&(!("DisplayName"in e)||"string"==typeof e.DisplayName||null===e.DisplayName)&&(!("Definition"in e)||"string"==typeof e.Definition||null===e.Definition)&&(!("ModuleName"in e)||"string"==typeof e.ModuleName||null===e.ModuleName)&&(!("Version"in e)||"string"==typeof e.Version||null===e.Version)}function h(e){return!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof RegExp||e instanceof Date)}},1943:e=>{"use strict";e.exports=require("fs/promises")},1963:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"lsblk",description:"List block devices",options:[{name:["--help","-h"],description:"Show help for lsblk"},{name:["--version","-V"],description:"Show version for lsblk"},{name:["--all","-a"],description:"Also list empty devices and RAM disk devices"},{name:["--bytes","-b"],description:"Print the SIZE column in bytes"},{name:["--discard","-D"],description:"Print information about the discarding capabilities (TRIM, UNMAP) for each device"},{name:["--nodeps","-d"],description:"Do not print holder devices or slaves"},{name:["--dedup","-E"],description:"Use column as a de-duplication key to de-duplicate output tree",args:{name:"column"}},{name:["--exclude","-e"],description:"Exclude the devices specified by the comma-separated list of major device numbers",args:{name:"list"}},{name:["--fs","-f"],description:"Output info about filesystems"},{name:["--include","-I"],description:"Include devices specified by the comma-separated list of major device numbers",args:{name:"list"}},{name:["--ascii","-i"],description:"Use ASCII characters for tree formatting"},{name:["--json","-J"],description:"Use JSON output format"},{name:["--list","-l"],description:"Produce output in the form of a list"},{name:["--merge","-M"],description:"Group parents of sub-trees to provide more readable output for RAIDs and Multi-path devices"},{name:["--perms","-m"],description:"Output info about device owner, group and mode"},{name:["--noheadings","-n"],description:"Do not print a header line"},{name:["--output","-o"],description:"Specify which output columns to print",args:{name:"list",isVariadic:!0}},{name:["--output-all","-O"],description:"Output all available columns"},{name:["--pairs","-P"],description:"Produce output in the form of key-value pairs"},{name:["--raw","-r"],description:"Produce output in raw format"},{name:["--scsi","-S"],description:"Output info about SCSI devices only"},{name:["--inverse","-s"],description:"Print dependencies in inverse order"},{name:["--tree","-T"],description:"Force tree-like output format",args:{name:"column"}},{name:["--topology","-t"],description:"Output info about block-device topology"},{name:["--width","-w"],description:"Specifies output width as a number of characters",args:{name:"number"}},{name:["--sort","-x"],description:"Sort output lines by column",args:{name:"column"}},{name:["--zoned","-z"],description:"Print the zone model for each device"},{name:"--sysroot",description:"Gather data for a Linux instance other than the instance from which the lsblk command is issued",args:{name:"directory"}}],args:{name:"device",description:"Device to list",isOptional:!0}}},1970:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"time",description:"Time how long a command takes!",args:{isCommand:!0}}},1991:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>e.split("\n").map(e=>{try{const t=JSON.parse(e);return{name:t.Names,displayName:`${t.Names} (${t.Image})`,icon:"fig://icon?type=docker"}}catch(e){return console.error(e),null}}),i=e=>e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,description:e.ID,icon:"fig://icon?type=docker"})),a={runningDockerContainers:{script:["docker","ps","--format","{{ json . }}"],postProcess:n},allDockerContainers:{script:["docker","ps","-a","--format","{{ json . }}"],postProcess:n},pausedDockerContainers:{script:["docker","ps","--filter","status=paused","--format","{{ json . }}"],postProcess:n},allLocalImages:{script:["docker","image","ls","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:`${e.ID}`,displayName:`${e.Repository} - ${e.ID}`,icon:"fig://icon?type=docker"}))}},allLocalImagesWithRepository:{script:["docker","image","ls","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Repository,displayName:`${e.Repository} - ${e.ID}`,icon:"fig://icon?type=docker"}))}},dockerHubSearch:{script:function(e){if(""!==e[e.length-1])return["docker","search",e[e.length-1],"--format","{{ json . }}"]},postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:`${e.Name}`,icon:"fig://icon?type=docker"}))},trigger:function(){return!0}},allDockerContexts:{script:["docker","context","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,description:e.Description,icon:"fig://icon?type=docker"}))}},listDockerNetworks:{script:["docker","network","list","--format","{{ json . }}"],postProcess:i},listDockerSwarmNodes:{script:["docker","node","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.ID,displayName:`${e.ID} - ${e.Hostname}`,description:e.Status,icon:"fig://icon?type=docker"}))}},listDockerPlugins:{script:["docker","plugin","list","--format","{{ json . }}"],postProcess:i},listDockerSecrets:{script:["docker","secret","list","--format","{{ json . }}"],postProcess:i},listDockerServices:{script:["docker","service","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,description:e.Image,icon:"fig://icon?type=docker"}))}},listDockerServicesReplicas:{script:["docker","service","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:`${e.Name}=`,description:e.Image,icon:"fig://icon?type=docker"}))}},listDockerStacks:{script:["docker","stack","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,icon:"fig://icon?type=docker"}))}},listDockerVolumes:{script:["docker","volume","list","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,icon:"fig://icon?type=docker"}))}}},s={name:"container",generators:a.runningDockerContainers},o={name:"image",generators:a.allLocalImages},r=[s,{name:"command",isCommand:!0}],c={name:"CONTEXT",generators:a.allDockerContexts},l={build:{name:"build",description:"Build an image from a Dockerfile",args:{name:"path",generators:{template:"folders"}},options:[{name:"--add-host",args:{name:"list",description:"Add a custom host-to-IP mapping (host:ip)"}},{name:"--build-arg",args:{name:"list",description:"Set build-time variables"}},{name:"--cache-from",args:{name:"strings",description:"Images to consider as cache sources"}},{name:"--disable-content-trust",description:"Skip image verification (default true)"},{name:["-f","--file"],description:"Name of the Dockerfile (Default is 'PATH/Dockerfile')",args:{name:"string",generators:{template:"filepaths"}}},{name:"--iidfile",description:"Write the image ID to the file",args:{name:"string"}},{name:"--isolation",description:"Container isolation technology",args:{name:"string"}},{name:"--label",description:"Set metadata for an image",args:{name:"list"}},{name:"--network",description:'Set the networking mode for the RUN instructions during build (default "default")',args:{name:"string"}},{name:"--no-cache",description:"Do not use cache when building the image"},{name:["-o","--output"],description:"Output destination (format: type=local,dest=path)",args:{name:"stringArray"}},{name:"--platform",description:"Set platform if server is multi-platform capable",args:{name:"string"}},{name:"--progress",description:"Set type of progress output (auto, plain, tty). Use plain to show container output",args:{name:"string",suggestions:["auto","plain","tty"].map(e=>({name:e}))}},{name:"--pull",description:"Always attempt to pull a newer version of the image"},{name:["-q","--quiet"],description:"Suppress the build output and print image ID on success"},{name:"--secret",description:"Secret file to expose to the build (only if BuildKit enabled): id=mysecret,src=/local/secret",args:{name:"stringArray"}},{name:"--squash",description:"Squash newly built layers into a single new layer"},{name:"--ssh",description:"SSH agent socket or keys to expose to the build (only if BuildKit enabled) (format: default|<id>[=<socket>|<key>[,<key>]])",args:{name:"stringArray"}},{name:["-t","--tag"],description:"Name and optionally a tag in the 'name:tag' format"},{name:"--target",description:"Set the target build stage to build",args:{name:"target build stage",generators:{trigger:function(){return!0},script:function(e){let t,n;return e.includes("-f")?(t=e.indexOf("-f"),n=e[t+1]):e.includes("--file")?(t=e.indexOf("--file"),n=e[t+1]):n="Dockerfile",["grep","-iE","FROM.*AS",n]},postProcess:function(e){const t=/(?:[aA][sS]\s+)([\w:.-]+)/;return e.split("\n").map(e=>{const n=t.exec(e);if(n)return{name:n[1]}}).filter(e=>void 0!==e)}}}}]},create:{name:"create",description:"Create a new container",args:[{name:"container",generators:a.allLocalImages},{name:"command",isCommand:!0}],options:[{args:{name:"list"},description:"Add a custom host-to-IP mapping (host:ip)",name:"--add-host"},{args:{name:"list"},description:"Attach to STDIN, STDOUT or STDERR",name:["-a","--attach"]},{args:{name:"uint16"},description:"Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)",name:"--blkio-weight"},{args:{name:"list"},description:"Block IO weight (relative device weight) (default [])",name:"--blkio-weight-device"},{args:{name:"list"},description:"Add Linux capabilities",name:"--cap-add"},{args:{name:"list"},description:"Drop Linux capabilities",name:"--cap-drop"},{args:{name:"string"},description:"Optional parent cgroup for the container",name:"--cgroup-parent"},{args:{name:"string"},description:"Cgroup namespace to use (host|private)",name:"--cgroupns"},{args:{name:"string"},description:"Write the container ID to the file",name:"--cidfile"},{args:{name:"int"},description:"Limit CPU CFS (Completely Fair Scheduler) period",name:"--cpu-period"},{args:{name:"int"},description:"Limit CPU CFS (Completely Fair Scheduler) quota",name:"--cpu-quota"},{args:{name:"int"},description:"Limit CPU real-time period in microseconds",name:"--cpu-rt-period"},{args:{name:"int"},description:"Limit CPU real-time runtime in microseconds",name:"--cpu-rt-runtime"},{args:{name:"int"},description:"CPU shares (relative weight)",name:["-c","--cpu-shares"]},{args:{name:"decimal"},description:"Number of CPUs",name:"--cpus"},{args:{name:"string"},description:"CPUs in which to allow execution (0-3, 0,1)",name:"--cpuset-cpus"},{args:{name:"string"},description:"MEMs in which to allow execution (0-3, 0,1)",name:"--cpuset-mems"},{args:{name:"list"},description:"Add a host device to the container",name:"--device"},{args:{name:"list"},description:"Add a rule to the cgroup allowed devices list",name:"--device-cgroup-rule"},{args:{name:"list"},description:"Limit read rate (bytes per second) from a device (default [])",name:"--device-read-bps"},{args:{name:"list"},description:"Limit read rate (IO per second) from a device (default [])",name:"--device-read-iops"},{args:{name:"list"},description:"Limit write rate (bytes per second) to a device (default [])",name:"--device-write-bps"},{args:{name:"list"},description:"Limit write rate (IO per second) to a device (default [])",name:"--device-write-iops"},{description:"Skip image verification (default true)",name:"--disable-content-trust"},{args:{name:"list"},description:"Set custom DNS servers",name:"--dns"},{args:{name:"list"},description:"Set DNS options",name:"--dns-option"},{args:{name:"list"},description:"Set custom DNS search domains",name:"--dns-search"},{args:{name:"string"},description:"Container NIS domain name",name:"--domainname"},{args:{name:"string"},description:"Overwrite the default ENTRYPOINT of the image",name:"--entrypoint"},{args:{name:"list"},description:"Set environment variables",name:["-e","--env"]},{args:{name:"list"},description:"Read in a file of environment variables",name:"--env-file"},{args:{name:"list"},description:"Expose a port or a range of ports",name:"--expose"},{args:{name:"gpu-request"},description:"GPU devices to add to the container ('all' to pass all GPUs)",name:"--gpus"},{args:{name:"list"},description:"Add additional groups to join",name:"--group-add"},{args:{name:"string"},description:"Command to run to check health",name:"--health-cmd"},{args:{name:"duration"},description:"Time between running the check (ms|s|m|h) (default 0s)",name:"--health-interval"},{args:{name:"int"},description:"Consecutive failures needed to report unhealthy",name:"--health-retries"},{args:{name:"duration"},description:"Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)",name:"--health-start-period"},{args:{name:"duration"},description:"Maximum time to allow one check to run (ms|s|m|h) (default 0s)",name:"--health-timeout"},{description:"Print usage",name:"--help"},{args:{name:"string"},description:"Container host name",name:["-h","--hostname"]},{description:"Run an init inside the container that forwards signals and reaps processes",name:"--init"},{description:"Keep STDIN open even if not attached",name:["-i","--interactive"]},{args:{name:"string"},description:"IPv4 address (e.g., 172.30.100.104)",name:"--ip"},{args:{name:"string"},description:"IPv6 address (e.g., 2001:db8::33)",name:"--ip6"},{args:{name:"string"},description:"IPC mode to use",name:"--ipc"},{args:{name:"string"},description:"Container isolation technology",name:"--isolation"},{args:{name:"bytes"},description:"Kernel memory limit",name:"--kernel-memory"},{args:{name:"list"},description:"Set meta data on a container",name:["-l","--label"]},{args:{name:"list"},description:"Read in a line delimited file of labels",name:"--label-file"},{args:{name:"list"},description:"Add link to another container",name:"--link"},{args:{name:"list"},description:"Container IPv4/IPv6 link-local addresses",name:"--link-local-ip"},{args:{name:"string"},description:"Logging driver for the container",name:"--log-driver"},{args:{name:"list"},description:"Log driver options",name:"--log-opt"},{args:{name:"string"},description:"Container MAC address (e.g., 92:d0:c6:0a:29:33)",name:"--mac-address"},{args:{name:"bytes"},description:"Memory limit",name:["-m","--memory"]},{args:{name:"bytes"},description:"Memory soft limit",name:"--memory-reservation"},{args:{name:"bytes"},description:"Swap limit equal to memory plus swap: '-1' to enable unlimited swap",name:"--memory-swap"},{args:{name:"int"},description:"Tune container memory swappiness (0 to 100) (default -1)",name:"--memory-swappiness"},{args:{name:"mount"},description:"Attach a filesystem mount to the container",name:"--mount"},{args:{name:"string"},description:"Assign a name to the container",name:"--name"},{args:{name:"network"},description:"Connect a container to a network",name:"--network"},{args:{name:"list"},description:"Add network-scoped alias for the container",name:"--network-alias"},{description:"Disable any container-specified HEALTHCHECK",name:"--no-healthcheck"},{description:"Disable OOM Killer",name:"--oom-kill-disable"},{args:{name:"int"},description:"Tune host's OOM preferences (-1000 to 1000)",name:"--oom-score-adj"},{args:{name:"string"},description:"PID namespace to use",name:"--pid"},{args:{name:"int"},description:"Tune container pids limit (set -1 for unlimited)",name:"--pids-limit"},{args:{name:"string"},description:"Set platform if server is multi-platform capable",name:"--platform"},{description:"Give extended privileges to this container",name:"--privileged"},{args:{name:"list"},description:"Publish a container's port(s) to the host",name:["-p","--publish"]},{description:"Publish all exposed ports to random ports",name:["-P","--publish-all"]},{args:{name:"string"},description:'Pull image before creating ("always"|"missing"|"never") (default "missing")',name:"--pull"},{description:"Mount the container's root filesystem as read only",name:"--read-only"},{args:{name:"string"},description:'Restart policy to apply when a container exits (default "no")',name:"--restart"},{description:"Automatically remove the container when it exits",name:"--rm"},{args:{name:"string"},description:"Runtime to use for this container",name:"--runtime"},{args:{name:"list"},description:"Security Options",name:"--security-opt"},{args:{name:"bytes"},description:"Size of /dev/shm",name:"--shm-size"},{args:{name:"string"},description:'Signal to stop a container (default "SIGTERM")',name:"--stop-signal"},{args:{name:"int"},description:"Timeout (in seconds) to stop a container",name:"--stop-timeout"},{args:{name:"list"},description:"Storage driver options for the container",name:"--storage-opt"},{args:{name:"map"},description:"Sysctl options (default map[])",name:"--sysctl"},{args:{name:"list"},description:"Mount a tmpfs directory",name:"--tmpfs"},{description:"Allocate a pseudo-TTY",name:["-t","--tty"]},{args:{name:"ulimit"},description:"Ulimit options (default [])",name:"--ulimit"},{args:{name:"string"},description:"Username or UID (format: <name|uid>[:<group|gid>])",name:["-u","--user"]},{args:{name:"string"},description:"User namespace to use",name:"--userns"},{args:{name:"string"},description:"UTS namespace to use",name:"--uts"},{args:{name:"list"},description:"Bind mount a volume",name:["-v","--volume"]},{args:{name:"string"},description:"Optional volume driver for the container",name:"--volume-driver"},{args:{name:"list"},description:"Mount volumes from the specified container(s)",name:"--volumes-from"},{args:{name:"string"},description:"Working directory inside the container",name:["-w","--workdir"]}]},attach:{name:"attach",description:"Attach local standard input, output, and error streams to a running container,",options:[{name:"--detach-keys",description:"Override the key sequence for detaching a container",args:{name:"string"}},{name:"--no-stdin",description:"Do not attach STDIN"},{name:"--sig-proxy",description:"Proxy all received signals to the process (default true)"}]},commit:{name:"commit",description:"Create a new image from a container's changes",args:[s,{name:"[REPOSITORY[:TAG]]"}],options:[{args:{name:"string"},description:'Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")',name:["-a","--author"]},{args:{name:"list"},description:"Apply Dockerfile instruction to the created image",name:["-c","--change"]},{args:{name:"string"},description:"Commit message",name:["-m","--message"]},{description:"Pause container during commit (default true)",name:["-p","--pause"]}]},cp:{name:"cp",description:"Copy files/folders between a container and the local filesystem",args:{name:"CONTAINER:SRC_PATH DEST_PATH|- OR SRC_PATH|- CONTAINER:DEST_PATH"},options:[{description:"Archive mode (copy all uid/gid information)",name:["-a","--archive"]},{description:"Always follow symbol link in SRC_PATH",name:["-L","--follow-link"]}]},diff:{name:"diff",description:"Inspect changes to files or directories on a container's filesystem",args:s},exec:{name:"exec",description:"Run a command in a running container",options:[{name:"-it",description:"Launch an interactive session",icon:"fig://icon?type=commandkey"},{description:"Detached mode: run command in the background",name:["-d","--detach"]},{args:{name:"string"},description:"Override the key sequence for detaching a container",name:"--detach-keys"},{args:{name:"list"},description:"Set environment variables",name:["-e","--env"]},{args:{name:"list"},description:"Read in a file of environment variables",name:"--env-file"},{description:"Keep STDIN open even if not attached",name:["-i","--interactive"]},{description:"Give extended privileges to the command",name:"--privileged"},{description:"Allocate a pseudo-TTY",name:["-t","--tty"]},{args:{name:"string"},description:"Username or UID (format: <name|uid>[:<group|gid>])",name:["-u","--user"]},{args:{name:"string"},description:"Working directory inside the container",name:["-w","--workdir"]}],args:r},export:{name:"export",description:"Export a container's filesystem as a tar archive",args:s,options:[{description:"Write to a file, instead of STDOUT",name:["-o","--output"],args:{name:"string"}}]},kill:{name:"kill",description:"Kill one or more running containers",args:{...s,isVariadic:!0},options:[{description:'Signal to send to the container (default "KILL")',name:["-s","--signal"],args:{name:"string"}}]},logs:{name:"logs",description:"Fetch the logs of a container",args:s,options:[{description:"Show extra details provided to logs",name:"--details"},{description:"Follow log output",name:["-f","--follow"]},{description:"Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)",name:"--since",args:{name:"string"}},{description:'Number of lines to show from the end of the logs (default "all")',name:["-n","--tail"],args:{name:"string"}},{description:"Show timestamps",name:["-t","--timestamps"]},{description:"Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)",name:"--until",args:{name:"string"}}]},pause:{name:"pause",description:"Pause all processes within one or more containers",args:s},port:{name:"port",description:"List port mappings or a specific mapping for the container",args:[s,{name:"[PRIVATE_PORT[/PROTO]]"}]},rename:{name:"rename",description:"Rename a container",args:[s,{name:"NEW_NAME"}]},restart:{name:"restart",description:"Restart one or more containers",args:s,options:[{description:"Seconds to wait for stop before killing the container (default 10)",name:["-t","--time"],args:{name:"int"}}]},rm:{name:"rm",description:"Remove one or more containers",args:{isVariadic:!0,name:"containers",generators:a.allDockerContainers},options:[{name:["-f","--force"],description:"Force the removal of a running container (uses SIGKILL)"},{name:["-l","--link"],description:"Remove the specified link"},{name:["-v","--volumes"],description:"Remove the anonymous volumes associated with the container"}]},run:{name:"run",description:"Run a command in a new container",options:[{name:"-it",description:"Launch an interactive session",icon:"fig://icon?type=commandkey"},{name:"--add-host",description:"Add a custom host-to-IP mapping (host:ip)",args:{name:"list"}},{name:["-a","--attach"],description:"Attach to STDIN, STDOUT or STDERR",args:{name:"list"}},{name:"--blkio-weight",description:"Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)",args:{name:"uint16"}},{name:"--blkio-weight-device",description:"Block IO weight (relative device weight) (default [])",args:{name:"list"}},{name:"--cap-add",description:"Add Linux capabilities",args:{name:"list"}},{name:"--cap-drop",description:"Drop Linux capabilities",args:{name:"list"}},{name:"--cgroup-parent",description:"Optional parent cgroup for the container",args:{name:"string"}},{name:"--cgroupns",description:"Cgroup namespace to use (host|private)\n'host': Run the container in the Docker host's cgroup namespace\n'private': Run the container in its own private cgroup namespace\n'': Use the cgroup namespace as configured by the\ndefault-cgroupns-mode option on the daemon (default)",args:{name:"string"}},{name:"--cidfile",description:"Write the container ID to the file",args:{name:"string"}},{name:"--cpu-period",description:"Limit CPU CFS (Completely Fair Scheduler) period",args:{name:"int"}},{name:"--cpu-quota",description:"Limit CPU CFS (Completely Fair Scheduler) quota",args:{name:"int"}},{name:"--cpu-rt-period",description:"Limit CPU real-time period in microseconds",args:{name:"int"}},{name:"--cpu-rt-runtime",description:"Limit CPU real-time runtime in microseconds",args:{name:"int"}},{name:["-c","--cpu-shares"],description:"CPU shares (relative weight)",args:{name:"int"}},{name:"--cpus",description:"Number of CPUs",args:{name:"decimal"}},{name:"--cpuset-cpus",description:"CPUs in which to allow execution (0-3, 0,1)",args:{name:"string"}},{name:"--cpuset-mems",description:"MEMs in which to allow execution (0-3, 0,1)",args:{name:"string"}},{name:["-d","--detach"],description:"Run container in background and print container ID"},{name:"--detach-keys",description:"Override the key sequence for detaching a container",args:{name:"string"}},{name:"--device",description:"Add a host device to the container",args:{name:"list"}},{name:"--device-cgroup-rule",description:"Add a rule to the cgroup allowed devices list",args:{name:"list"}},{name:"--device-read-bps",description:"Limit read rate (bytes per second) from a device (default [])",args:{name:"list"}},{name:"--device-read-iops",description:"Limit read rate (IO per second) from a device (default [])",args:{name:"list"}},{name:"--device-write-bps",description:"Limit write rate (bytes per second) to a device (default [])",args:{name:"list"}},{name:"--device-write-iops",description:"Limit write rate (IO per second) to a device (default [])",args:{name:"list"}},{name:"--disable-content-trust",description:"Skip image verification (default true)"},{name:"--dns",description:"Set custom DNS servers",args:{name:"list"}},{name:"--dns-option",description:"Set DNS options",args:{name:"list"}},{name:"--dns-search",description:"Set custom DNS search domains",args:{name:"list"}},{name:"--domainname",description:"Container NIS domain name",args:{name:"string"}},{name:"--entrypoint",description:"Overwrite the default ENTRYPOINT of the image",args:{name:"string"}},{name:["-e","--env"],description:"Set environment variables",args:{name:"list"}},{name:"--env-file",description:"Read in a file of environment variables",args:{name:"list"}},{name:"--expose",description:"Expose a port or a range of ports",args:{name:"list"}},{name:"--gpus",description:"GPU devices to add to the container ('all' to pass all GPUs)",args:{name:"gpu-request"}},{name:"--group-add",description:"Add additional groups to join",args:{name:"list"}},{name:"--health-cmd",description:"Command to run to check health",args:{name:"string"}},{name:"--health-interval",description:"Time between running the check (ms|s|m|h) (default 0s)",args:{name:"duration"}},{name:"--health-retries",description:"Consecutive failures needed to report unhealthy",args:{name:"int"}},{name:"--health-start-period",description:"Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)",args:{name:"duration"}},{name:"--health-timeout",description:"Maximum time to allow one check to run (ms|s|m|h) (default 0s)",args:{name:"duration"}},{name:"--help",description:"Print usage"},{name:["-h","--hostname"],description:"Container host name",args:{name:"string"}},{name:"--init",description:"Run an init inside the container that forwards signals and reaps processes"},{name:["-i","--interactive"],description:"Keep STDIN open even if not attached"},{name:"--ip",description:"IPv4 address (e.g., 172.30.100.104)",args:{name:"string"}},{name:"--ip6",description:"IPv6 address (e.g., 2001:db8::33)",args:{name:"string"}},{name:"--ipc",description:"IPC mode to use",args:{name:"string"}},{name:"--isolation",description:"Container isolation technology",args:{name:"string"}},{name:"--kernel-memory",description:"Kernel memory limit",args:{name:"bytes"}},{name:["-l","--label"],description:"Set meta data on a container",args:{name:"list"}},{name:"--label-file",description:"Read in a line delimited file of labels",args:{name:"list"}},{name:"--link",description:"Add link to another container",args:{name:"list"}},{name:"--link-local-ip",description:"Container IPv4/IPv6 link-local addresses",args:{name:"list"}},{name:"--log-driver",description:"Logging driver for the container",args:{name:"string",suggestions:["json-file","syslog","journald","gelf","fluentd","awslogs","splunk","etwlogs","gcplogs","none"]}},{name:"--log-opt",description:"Log driver options",args:{name:"list"}},{name:"--mac-address",description:"Container MAC address (e.g., 92:d0:c6:0a:29:33)",args:{name:"string"}},{name:["-m","--memory"],description:"Memory limit",args:{name:"bytes"}},{name:"--memory-reservation",description:"Memory soft limit",args:{name:"bytes"}},{name:"--memory-swap",description:"Swap limit equal to memory plus swap: '-1' to enable unlimited swap",args:{name:"bytes"}},{name:"--memory-swappiness",description:"Tune container memory swappiness (0 to 100) (default -1)",args:{name:"int"}},{name:"--mount",description:"Attach a filesystem mount to the container",args:{name:"mount"}},{name:"--name",description:"Assign a name to the container",args:{name:"string"}},{name:"--network",description:"Connect a container to a network",args:{name:"network"}},{name:"--network-alias",description:"Add network-scoped alias for the container",args:{name:"list"}},{name:"--no-healthcheck",description:"Disable any container-specified HEALTHCHECK"},{name:"--oom-kill-disable",description:"Disable OOM Killer"},{name:"--oom-score-adj",description:"Tune host's OOM preferences (-1000 to 1000)",args:{name:"int"}},{name:"--pid",description:"PID namespace to use",args:{name:"string"}},{name:"--pids-limit",description:"Tune container pids limit (set -1 for unlimited)",args:{name:"int"}},{name:"--platform",description:"Set platform if server is multi-platform capable",args:{name:"string"}},{name:"--privileged",description:"Give extended privileges to this container"},{name:["-p","--publish"],description:"Publish a container's port(s) to the host",args:{name:"list"}},{name:["-P","--publish-all"],description:"Publish all exposed ports to random ports"},{name:"--pull",description:"Pull image before running ('always'|'missing'|'never') (default 'missing')",args:{name:"string"}},{name:"--read-only",description:"Mount the container's root filesystem as read only"},{name:"--restart",description:"Restart policy to apply when a container exits (default 'no')",args:{name:"string"}},{name:"--rm",description:"Automatically remove the container when it exits"},{name:"--runtime",description:"Runtime to use for this container",args:{name:"string"}},{name:"--security-opt",description:"Security Options",args:{name:"list"}},{name:"--shm-size",description:"Size of /dev/shm",args:{name:"bytes"}},{name:"--sig-proxy",description:"Proxy received signals to the process (default true)"},{name:"--stop-signal",description:"Signal to stop a container (default 'SIGTERM')",args:{name:"string"}},{name:"--stop-timeout",description:"Timeout (in seconds) to stop a container",args:{name:"int"}},{name:"--storage-opt",description:"Storage driver options for the container",args:{name:"list"}},{name:"--sysctl",description:"Sysctl options (default map[])",args:{name:"map"}},{name:"--tmpfs",description:"Mount a tmpfs directory",args:{name:"list"}},{name:["-t","--tty"],description:"Allocate a pseudo-TTY"},{name:"--ulimit",description:"Ulimit options (default [])",args:{name:"ulimit"}},{name:["-u","--user"],description:"Username or UID (format: <name|uid>[:<group|gid>])",args:{name:"string"}},{name:"--userns",description:"User namespace to use",args:{name:"string"}},{name:"--uts",description:"UTS namespace to use",args:{name:"string"}},{name:["-v","--volume"],description:"Bind mount a volume",args:{name:"list"}},{name:"--volume-driver",description:"Optional volume driver for the container",args:{name:"string"}},{name:"--volumes-from",description:"Mount volumes from the specified container(s)",args:{name:"list"}},{name:["-w","--workdir"],description:"Working directory inside the container",args:{name:"string"}}],args:[{name:"image",description:"The Docker image to use",generators:{script:["docker","images","--format","{{.Repository}} {{.Size}} {{.Tag}} {{.ID}}"],postProcess:function(e){return e.split("\n").map(e=>{const[t,n,i,a]=e.split(" ");return{name:t,description:`${a}@${i} - ${n}`,icon:"fig://icon?type=docker"}})}}},{name:"command"}]},sbom:{name:"sbom",description:"View the packaged-based Software Bill Of Materials (SBOM) for an image",args:{name:"image",generators:a.allLocalImagesWithRepository},options:[{description:"Show debug logging",name:["-D","--debug"]},{description:"Exclude paths from being scanned using a glob expression",name:"--exclude",args:{name:"paths"}},{description:"Report output format",name:"--format",args:{name:"fromat",suggestions:["syft-json","cyclonedx-xml","cyclonedx-json","github-0-json","spdx-tag-value","spdx-json","table","text"],default:"table"}},{description:"[experimental] selection of layers to catalog",name:"--layers",args:{name:"layers",suggestions:["squashed","all"],default:"squashed"}},{name:["-o","--output"],description:"File to write the default report output to (default is STDOUT)",args:{name:"file",template:["filepaths"],suggestCurrentToken:!0}},{name:"--platform",description:"An optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')",args:{name:"platform"}},{name:"--quiet",description:"Suppress all non-report output"},{name:["-v","--version"],description:"Version for sbom"}]},start:{name:"start",description:"Start one or more stopped containers",args:{name:"container",generators:a.allDockerContainers},options:[{description:"Attach STDOUT/STDERR and forward signals",name:["-a","--attach"]},{description:"Override the key sequence for detaching a container",name:"--detach-keys",args:{name:"string"}},{description:"Attach container's STDIN",name:["-i","--interactive"]}]},stats:{name:"stats",description:"Display a live stream of container(s) resource usage statistics",args:s,options:[{description:"Show all containers (default shows just running)",name:["-a","--all"]},{description:"Pretty-print images using a Go template",name:"--format",args:{name:"string"}},{description:"Disable streaming stats and only pull the first result",name:"--no-stream"},{description:"Do not truncate output",name:"--no-trunc"}]},stop:{name:"stop",description:"Stop one or more running containers",args:s,options:[{name:["-t","--t"],description:"Seconds to wait for stop before killing it (default 10)",args:{name:"int"}}]},top:{name:"top",description:"Display the running processes of a container",args:s},unpause:{name:"unpause",description:"Unpause all processes within one or more containers",args:{name:"container",generators:a.pausedDockerContainers}},update:{name:"update",description:"Update configuration of one or more containers",args:s,options:[{args:{name:"uint16"},description:"Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)",name:"--blkio-weight"},{args:{name:"int"},description:"Limit CPU CFS (Completely Fair Scheduler) period",name:"--cpu-period"},{args:{name:"int"},description:"Limit CPU CFS (Completely Fair Scheduler) quota",name:"--cpu-quota"},{args:{name:"int"},description:"Limit the CPU real-time period in microseconds",name:"--cpu-rt-period"},{args:{name:"int"},description:"Limit the CPU real-time runtime in microseconds",name:"--cpu-rt-runtime"},{args:{name:"int"},description:"CPU shares (relative weight)",name:["-c","--cpu-shares"]},{args:{name:"decimal"},description:"Number of CPUs",name:"--cpus"},{args:{name:"string"},description:"CPUs in which to allow execution (0-3, 0,1)",name:"--cpuset-cpus"},{args:{name:"string"},description:"MEMs in which to allow execution (0-3, 0,1)",name:"--cpuset-mems"},{args:{name:"bytes"},description:"Kernel memory limit",name:"--kernel-memory"},{args:{name:"bytes"},description:"Memory limit",name:["-m","--memory"]},{args:{name:"bytes"},description:"Memory soft limit",name:"--memory-reservation"},{args:{name:"bytes"},description:"Swap limit equal to memory plus swap: '-1' to enable unlimited swap",name:"--memory-swap"},{args:{name:"int"},description:"Tune container pids limit (set -1 for unlimited)",name:"--pids-limit"},{args:{name:"string"},description:"Restart policy to apply when a container exits",name:"--restart"}]},wait:{name:"wait",description:"Block until one or more containers stop, then print their exit codes",args:s},ps:{name:"ps",description:"List containers",options:[{description:"Show all containers (default shows just running)",name:["-a","--all"]},{args:{name:"filter"},description:"Filter output based on conditions provided",name:["-f","--filter"]},{args:{name:"string"},description:"Pretty-print containers using a Go template",name:"--format"},{args:{name:"int"},description:"Show n last created containers (includes all states) (default -1)",name:["-n","--last"]},{description:"Show the latest created container (includes all states)",name:["-l","--latest"]},{description:"Don't truncate output",name:"--no-trunc"},{description:"Only display container IDs",name:["-q","--quiet"]},{description:"Display total file sizes",name:["-s","--size"]}]},history:{name:"history",description:"Show the history of an image",args:o,options:[{description:"Pretty-print images using a Go template",name:"--format",args:{name:"string"}},{description:"Print sizes and dates in human readable format (default true)",name:["-H","--human"]},{description:"Don't truncate output",name:"--no-trunc"},{description:"Only show image IDs",name:["-q","--quiet"]}]},imageImport:{name:"import",description:"Import the contents from a tarball to create a filesystem image",args:{name:"file|URL|- [REPOSITORY[:TAG]]"},options:[{args:{name:"list"},description:"Apply Dockerfile instruction to the created image",name:["-c","--change"]},{args:{name:"string"},description:"Set commit message for imported image",name:["-m","--message"]},{args:{name:"string"},description:"Set platform if server is multi-platform capable",name:"--platform"}]},imageList:{name:"images",description:"List images",args:{name:"[REPOSITORY[:TAG]]"},options:[{name:["-a","--all"],description:"Show all images (default hides intermediate images)"},{name:"--digests",description:"Show digests"},{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print images using a Go template",args:{name:"string"}},{name:"--no-trunc",description:"Don't truncate output"},{name:["-q","--quiet"],description:"Only show image IDs"}]},load:{name:"load",description:"Load an image from a tar archive or STDIN",options:[{name:"-i",description:"Read from tar archive file, instead of STDIN",args:{name:"string"}},{name:["-q","--quiet"],description:"Suppress the load output"}]},pull:{name:"pull",description:"Pull an image or a repository from a registry",args:{name:"NAME[:TAG|@DIGEST]",generators:a.dockerHubSearch,debounce:!0},options:[{description:"Download all tagged images in the repository",name:["-a","--all-tags"]},{description:"Skip image verification (default true)",name:"--disable-content-trust"},{description:"Set platform if server is multi-platform capable",name:"--platform",args:{name:"string"}},{description:"Suppress verbose output",name:["-q","--quiet"]}]},push:{name:"push",description:"Push an image or a repository to a registry",args:{name:"NAME[:TAG]"},options:[{description:"Push all tagged images in the repository",name:["-a","--all-tags"]},{description:"Skip image signing (default true)",name:"--disable-content-trust"},{description:"Suppress verbose output",name:["-q","--quiet"]}]},tag:{name:"tag",description:"Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE",args:{name:"SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]"}},imageSave:{name:"save",description:"Save one or more images to a tar archive (streamed to STDOUT by default)",args:o,options:[{description:"Write to a file, instead of STDOUT",name:["-o","--output"],args:{name:"string"}}]},removeImage:{name:"rmi",description:"Remove one or more images",args:{...o,isVariadic:!0},options:[{name:["-f","--force"],description:"Force removal of the image"},{name:"--no-prune",description:"Do not delete untagged parents"}]}},d={name:"docker",description:"A self-sufficient runtime for containers",subcommands:[l.attach,l.build,l.commit,l.cp,l.create,l.diff,{name:"events",description:"Get real time events from the server",options:[{args:{name:"filter"},description:"Filter output based on conditions provided",name:["-f","--filter"]},{args:{name:"string"},description:"Format the output using the given Go template",name:"--format"},{args:{name:"string"},description:"Show all events created since timestamp",name:"--since"},{args:{name:"string"},description:"Stream events until this timestamp",name:"--until"}]},l.exec,l.export,l.history,l.imageList,l.imageImport,{name:"info",description:"Display system-wide information",options:[{args:{name:"string"},description:"Format the output using the given Go template",name:["-f","--format"]}]},{name:"inspect",description:"Return low-level information on Docker objects",args:{name:"Name or ID",generators:[{script:["docker","ps","-a","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.ID,displayName:`[con] ${e.ID} (${e.Image})`}))}},{script:["docker","images","-a","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>{let t;return"<none>"===e.Repository?t=e.ID:(t=e.Repository,"<none>"!==e.Tag&&(t+=`:${e.Tag}`)),{name:e.ID,displayName:`[img] ${t}`}})}},{script:["docker","volume","ls","--format","{{ json . }}"],postProcess:function(e){return e.split("\n").map(e=>JSON.parse(e)).map(e=>({name:e.Name,displayName:`[vol] ${e.Name}`}))}}]},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:["-s","--size"],description:"Display total file sizes if the type is container"},{name:"--type",description:"Return JSON for specified type",args:{name:"string"}}]},l.kill,l.load,{name:"login",description:"Log in to a Docker registry",args:{name:"server"},options:[{description:"Password",name:["-p","--password"],args:{name:"string"}},{description:"Take the password from stdin",name:"--password-stdin"},{description:"Username",name:["-u","--username"],args:{name:"string"}}]},{name:"logout",description:"Log out from a Docker registry",args:{name:"server"}},l.logs,l.pause,l.port,l.ps,l.pull,l.push,l.rename,l.restart,l.rm,l.removeImage,l.run,l.imageSave,{name:"search",description:"Search the Docker Hub for images",args:{name:"TERM",description:"Search term"},options:[{args:{name:"filter"},description:"Filter output based on conditions provided",name:["-f","--filter"]},{args:{name:"string"},description:"Pretty-print search using a Go template",name:"--format"},{args:{name:"int"},description:"Max number of search results (default 25)",name:"--limit"},{description:"Don't truncate output",name:"--no-trunc"}]},l.sbom,l.start,l.stats,l.stop,l.tag,l.top,l.unpause,l.update,{name:"version",description:"Show the Docker version information",options:[{description:"Format the output. Values: [pretty | json]. (Default: pretty)",name:["-f","--format"],args:{name:"string",suggestions:["pretty","json"]}},{description:"Kubernetes config file",name:"--kubeconfig",args:{name:"string"}}]},l.wait,{name:"builder",description:"Manage builds",subcommands:[l.build,{name:"prune",description:"Amount of disk space to keep for cache",options:[{name:["-a","--all"],description:"Remove all unused build cache, not just dangling ones"},{name:"--filter",description:"Provide filter values (e.g. 'until=24h')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"},{name:"--keep-storage",description:"Amount of disk space to keep for cache",args:{name:"bytes"}}]}]},{name:"config",description:"Manage Docker configs",subcommands:[{name:"create",description:"Create a config from a file or STDIN",args:{name:"file",template:"filepaths"},options:[{name:"-l",description:"Config labels",args:{name:"list"}},{name:"--template-driver",description:"Template driver",args:{name:"string"}}]},{name:"inspect",description:"Display detailed information on one or more configs",args:{name:"CONFIG",isVariadic:!0},options:[{name:"-f",description:"Format the output using the given Go template",args:{name:"string"}},{name:"--pretty",description:"Print the information in a human friendly format"}]},{name:"ls",description:"List configs",options:[{name:"-f",description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print configs using a Go template",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display IDs"}]},{name:"rm",description:"Remove one or more configs",args:{name:"CONFIG",isVariadic:!0}}]},{name:"container",description:"Manage containers",subcommands:[l.attach,l.cp,l.create,l.diff,l.exec,l.export,{name:"inspect",description:"Return low-level information on Docker objects",args:s,options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:["-s","--size"],description:"Display total file sizes if the type is container"}]},l.kill,l.logs,{...l.ps,name:"ls"},l.pause,l.port,{name:"prune",description:"Remove all stopped containers",options:[{name:"--filter",description:"Provide filter values (e.g. 'until=<timestamp>')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"}]},l.rename,l.restart,l.rm,l.run,l.start,l.stats,l.stop,l.top,l.unpause,l.update,l.wait]},{name:"context",description:"Manage contexts",subcommands:[{name:"create",description:"Create new context",subcommands:[{name:"aci",description:"Create a context for Azure Container Instances",args:{name:"CONTEXT"},options:[{name:"--description",description:"Description of the context",args:{name:"string"}},{name:["-h","--help"],description:"Help for aci"},{name:"--location",description:'Location (default "eastus")',args:{name:"string"}},{name:"--resource-group",description:"Resource group",args:{name:"string"}},{name:"--subscription-id",description:"Location",args:{name:"string"}}]},{name:"ecs",description:"Create a context for Amazon ECS",args:{name:"CONTEXT"},options:[{name:"--access-keys",description:"Use AWS access keys from file",args:{name:"string"}},{name:"--description",description:"Description of the context",args:{name:"string"}},{name:"--from-env",description:"Use AWS environment variables for profile, or credentials and region"},{name:["-h","--help"],description:"Help for ecs"},{name:"--local-simulation",description:"Create context for ECS local simulation endpoints"},{name:"--profile",description:"Use an existing AWS profile",args:{name:"string"}}]}],options:[{name:"--default-stack-orchestrator",description:"Default orchestrator for stack operations to use with this context (swarm|kubernetes|all)",args:{name:"string",suggestions:["swarm","kubernetes","all"]}},{name:"--description",description:"Description of the context",args:{name:"string"}},{name:"--docker",description:"Set the docker endpoint (default [])",args:{name:"stringToString"}},{name:"--from",description:"Create context from a named context",args:{name:"string"}},{name:["-h","--help"],description:"Help for create"},{name:"--kubernetes",description:"Set the kubernetes endpoint (default [])",args:{name:"stringToString"}}]},{name:"export",description:"Export a context to a tar or kubeconfig file",args:[c,{name:"FILE",template:"filepaths"}],options:[{name:["-h","--help"],description:"Help for export"},{name:"--kubeconfig",description:"Export as a kubeconfig file"}]},{name:"import",description:"Import a context from a tar or zip file",args:[{name:"CONTEXT"},{name:"FILE",template:"filepaths"}],options:[{name:["-h","--help"],description:"Help for export"}]},{name:"inspect",description:"Display detailed information on one or more contexts",args:{...c,isVariadic:!0},options:[{name:"-f",description:"Format the output using the given Go template",args:{name:"string"}},{name:["-h","--help"],description:"Help for inspect"}]},{name:"list",description:"List available contexts",options:[{name:"--format",description:"Format the output. Values: [pretty | json]. (Default: pretty)",args:{name:"string",suggestions:["pretty","json"]}},{name:["-h","--help"],description:"Help for list"},{name:["-q","--quiet"],description:"Only show context names"}]},{name:"rm",description:"Remove one or more contexts",args:{...c,isVariadic:!0},options:[{name:["-f","--force"],description:"Force removing current context"},{name:["-h","--help"],description:"Help for rm"}]},{name:"show",description:"Print the current context",options:[{name:["-h","--help"],description:"Help for show"}]},{name:"update",description:"Update a context",args:c,options:[{name:"--default-stack-orchestrator",description:"Default orchestrator for stack operations to use with this context (swarm|kubernetes|all)",args:{name:"string",suggestions:["swarm","kubernetes","all"]}},{name:"--description",description:"Description of the context",args:{name:"string"}},{name:"--docker",description:"Set the docker endpoint (default [])",args:{name:"stringToString"}},{name:["-h","--help"],description:"Help for update"},{name:"--kubernetes",description:"Set the kubernetes endpoint (default [])",args:{name:"stringToString"}}]},{name:"use",description:"Set the default context",args:c,options:[{name:["-h","--help"],description:"Help for use"}]}],options:[{name:["-h","--help"],description:"Help for context"}]},{name:"image",description:"Manage images",subcommands:[l.build,l.history,l.imageImport,{name:"inspect",description:"Display detailed information on one or more images",args:{...o,isVariadic:!0},options:[{name:"-f",description:"Format the output using the given Go template",args:{name:"string"}}]},l.load,{...l.imageList,name:"ls"},{name:"prune",description:"Remove unused images",options:[{name:["-a","--all"],description:"Remove all unused images, not just dangling ones"},{name:"--filter",description:"Provide filter values (e.g. 'until=<timestamp>')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"}]},l.pull,l.push,{...l.removeImage,name:"rm"},l.imageSave,l.tag]},{name:"network",description:"Manage networks",subcommands:[{name:"connect",description:"Connect a container to a network",args:[{name:"NETWORK",generators:a.listDockerNetworks},s],options:[{name:"--alias",description:"Add network-scoped alias for the container",args:{name:"strings"}},{name:"--driver-opt",description:"Driver options for the network",args:{name:"strings"}},{name:"--ip",description:"IPv4 address (e.g., 172.30.100.104)",args:{name:"string"}},{name:"--ip6",description:"IPv6 address (e.g., 2001:db8::33)",args:{name:"string"}},{name:"--link",description:"Add link to another container",args:{name:"list"}},{name:"--link-local-ip",description:"Add a link-local address for the container",args:{name:"strings"}}]},{name:"create",description:"Create a network",args:{name:"NETWORK"},options:[{name:"--attachable",description:"Enable manual container attachment"},{name:"--aux-address",description:"Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])",args:{name:"map"}},{name:"--config-from",description:"The network from which to copy the configuration",args:{name:"string"}},{name:"--config-only",description:"Create a configuration only network"},{name:["-d","--driver"],description:'Driver to manage the Network (default "bridge")',args:{name:"string"}},{name:"--gateway",description:"IPv4 or IPv6 Gateway for the master subnet",args:{name:"strings"}},{name:"--ingress",description:"Create swarm routing-mesh network"},{name:"--internal",description:"Restrict external access to the network"},{name:"--ip-range",description:"Allocate container ip from a sub-range",args:{name:"strings"}},{name:"--ipam-driver",description:'IP Address Management Driver (default "default")',args:{name:"string"}},{name:"--ipam-opt",description:"Set IPAM driver specific options (default map[])",args:{name:"map"}},{name:"--ipv6",description:"Enable IPv6 networking"},{name:"--label",description:"Set metadata on a network",args:{name:"list"}},{name:["-o","--opt"],description:"Set driver specific options (default map[])",args:{name:"map"}},{name:"--scope",description:"Control the network's scope",args:{name:"string"}},{name:"--subnet",description:"Subnet in CIDR format that represents a network segment",args:{name:"strings"}}]},{name:"disconnect",description:"Disconnect a container from a network",args:[{name:"NETWORK",generators:a.listDockerNetworks},s],options:[{name:["-f","--force"],description:"Force the container to disconnect from a network"}]},{name:"inspect",description:"Display detailed information on one or more networks",args:{name:"NETWORK",generators:a.listDockerNetworks,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:["-v","--verbose"],description:"Verbose output for diagnostics"}]},{name:"ls",description:"List networks",options:[{name:["-f","--filter"],description:"Provide filter values (e.g. 'driver=bridge')",args:{name:"filter"}},{name:"--format",description:"Pretty-print networks using a Go template",args:{name:"string"}},{name:"--no-trunc",description:"Do not truncate the output"},{name:["-q","--quiet"],description:"Only display network IDs"}]},{name:"prune",description:"Remove all unused networks",options:[{name:"--filter",description:"Provide filter values (e.g. 'until=<timestamp>')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"}]},{name:"rm",description:"Remove one or more networks",args:{name:"NETWORK",generators:a.listDockerNetworks,isVariadic:!0}}]},{name:"node",description:"Manage Swarm nodes",subcommands:[{name:"demote",description:"Demote one or more nodes from manager in the swarm",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0}},{name:"inspect",description:"Display detailed information on one or more nodes",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:"--pretty",description:"Print the information in a human friendly format"}]},{name:"ls",description:"List nodes in the swarm",options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print nodes using a Go template",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display IDs"}]},{name:"promote",description:"Promote one or more nodes to manager in the swarm",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0}},{name:"ps",description:"List tasks running on one or more nodes, defaults to current node",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0},options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print tasks using a Go template",args:{name:"string"}},{name:"--no-resolve",description:"Do not map IDs to Names"},{name:"--no-trunc",description:"Do not truncate output"},{name:["-q","--quiet"],description:"Only display task IDs"}]},{name:"rm",description:"Remove one or more nodes from the swarm",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0},options:[{name:["-f","--force"],description:"Force remove a node from the swarm"}]},{name:"update",description:"Update a node",args:{name:"NODE",generators:a.listDockerSwarmNodes,isVariadic:!0},options:[{name:"--availability",description:'Availability of the node ("active"|"pause"|"drain")',args:{name:"string"}},{name:"--label-add",description:"Add or update a node label (key=value)",args:{name:"list"}},{name:"--label-rm",description:"Remove a node label if exists",args:{name:"list"}},{name:"--role",description:'Role of the node ("worker"|"manager")',args:{name:"string"}}]}]},{name:"buildx",description:"Extended build capabilities with BuildKit",subcommands:[{name:"bake",description:"Bake is a high-level build command. Each specified target will run in parallel as part of the build",args:{name:"string"},options:[{name:["-f","--file"],description:"Build definition file",args:{name:"string",isVariadic:!0}},{name:"--load",description:"Shorthand for --set=*.output=type=docker",args:{name:"string"}},{name:"--metadata-file",description:"Write build result metadata to the file",args:{name:"string"}},{name:"--no-cache",description:"Do not use cache when building the image",args:{name:"string"}},{name:"--print",description:"Print the options without building",args:{name:"string"}},{name:"--progress",description:"Set type of progress output (auto, plain, tty). Use plain to show container output",args:{name:"progress",default:"auto",suggestions:["auto","plain","tty"]}},{name:"--pull",description:"Always attempt to pull all referenced images",args:{name:"string"}},{name:"--push",description:"Shorthand for --set=*.output=type=registry",args:{name:"string"}},{name:"--set",description:"Override target value (e.g., targetpattern.key=value)",args:{name:"string"}}]},{name:"build",description:"The buildx build command starts a build using BuildKit. This command is similar to the UI of docker build command and takes the same flags and arguments",args:{name:"string"},options:[{name:"--add-host",description:"Add a custom host-to-IP mapping",args:{name:"string"}},{name:"--allow",description:"Allow extra privileged entitlement",args:{name:"string"}},{name:"--build-arg",description:"Set build-time variables",args:{name:"string"}},{name:"--build-context",description:"Additional build contexts",args:{name:"string"}},{name:"--cache-from",description:"External cache sources",args:{name:"string"}},{name:"--cache-to",description:"Cache export destinations",args:{name:"string"}},{name:"--cgroup-parent",description:"Optional parent cgroup for the container",args:{name:"string"}},{name:"--compress",description:"Compress the build context using gzip",args:{name:"string"}},{name:"--cpu-period",description:"Limit the CPU CFS (Completely Fair Scheduler) period",args:{name:"string"}},{name:"--cpu-quota",description:"Limit the CPU CFS (Completely Fair Scheduler) quota",args:{name:"string"}},{name:["--cpu-shares","-c"],description:"CPU shares (relative weight)",args:{name:"string"}},{name:"--cpuset-cpus",description:"CPUs in which to allow execution (0-3, 0,1)",args:{name:"string"}},{name:"--cpuset-mems",description:"MEMs in which to allow execution (0-3, 0,1)",args:{name:"string"}},{name:["--file","-f"],description:"Name of the Dockerfile",args:{name:"string"}},{name:"--force-rm",description:"Always remove intermediate containers",args:{name:"string"}},{name:"--iidfile",description:"Write the image ID to the file",args:{name:"string"}},{name:"--invoke",description:"Invoke a command after the build [experimental]",args:{name:"string"}},{name:"--isolation",description:"Container isolation technology",args:{name:"string"}},{name:"--label",description:"Set metadata for an image",args:{name:"string"}},{name:"--load",description:"Shorthand for --output=type=docker",args:{name:"string"}},{name:["--memory","-m"],description:"Memory limit",args:{name:"string"}},{name:"--memory-swap",description:"Swap limit equal to memory plus swap: -1 to enable unlimited swap",args:{name:"string"}},{name:"--metadata-file",description:"Write build result metadata to the file",args:{name:"string"}},{name:"--network",description:"Set the networking mode for the RUN instructions during build",args:{name:"string"}},{name:"--no-cache",description:"Do not use cache when building the image",args:{name:"string"}},{name:"--no-cache-filter",description:"Do not cache specified stages",args:{name:"string"}},{name:["--output","-o"],description:"Output destination (format: type=local,dest=path)",args:{name:"string"}},{name:"--platform",description:"Set target platform for build",args:{name:"string"}},{name:"--print",description:"Print result of information request (e.g., outline, targets) [experimental]",args:{name:"string"}},{name:"--progress",description:"Set type of progress output (auto, plain, tty). Use plain to show container output",args:{name:"progress",default:"auto",suggestions:["auto","plain","tty"]}},{name:"--pull",description:"Always attempt to pull all referenced images",args:{name:"string"}},{name:"--push",description:"Shorthand for --output=type=registry",args:{name:"string"}},{name:["--quiet","-q"],description:"Suppress the build output and print image ID on success",args:{name:"string"}},{name:"--rm",description:"Remove intermediate containers after a successful build",args:{name:"container",default:"true"}},{name:"--secret",description:"Secret to expose to the build (format: id=mysecret[,src=/local/secret])",args:{name:"string"}},{name:"--security-opt",description:"Security options",args:{name:"string"}},{name:"--shm-size",description:"Size of /dev/shm",args:{name:"string"}},{name:"--squash",description:"Squash newly built layers into a single new layer",args:{name:"string"}},{name:"--ssh",description:"SSH agent socket or keys to expose to the build (format: default|<id>[=<socket>|<key>[,<key>]])",args:{name:"string"}},{name:["--tag","-t"],description:"Name and optionally a tag (format: name:tag)",args:{name:"string"}},{name:"--target",description:"Set the target build stage to build",args:{name:"string"}},{name:"--ulimit",description:"Ulimit options",args:{name:"string"}}]},{name:"create",description:"Create a new builder instance",args:{name:"string"},options:[{name:"--append",description:"Append a node to builder instead of changing it",args:{name:"string"}},{name:"--bootstrap",description:"Boot builder after creation",args:{name:"string"}},{name:"--buildkitd-flags",description:"Flags for buildkitd daemon",args:{name:"string"}},{name:"--config",description:"BuildKit config file",args:{name:"string"}},{name:"--driver",description:"Driver to use (available: docker-container, kubernetes, remote)",args:{name:"string"}},{name:"--driver-opt",description:"Options for the driver",args:{name:"string"}},{name:"--leave",description:"Remove a node from builder instead of changing it",args:{name:"string"}},{name:"--name",description:"Builder instance name",args:{name:"string"}},{name:"--node",description:"Create/modify node with given name",args:{name:"string"}},{name:"--platform",description:"Fixed platforms for current node",args:{name:"string"}},{name:"--use",description:"Set the current builder instance",args:{name:"string"}}]},{name:"du",description:"Disk usage",args:{name:"string"},options:[{name:"--filter",description:"Provide filter values"},{name:"--verbose",description:"Provide a more verbose output"}]},{name:"imagetools",description:"Imagetools contains commands for working with manifest lists in the registry. These commands are useful for inspecting multi-platform build results",args:{name:"string"},subcommands:[{name:"create",description:"Create a new image based on source images",args:{name:"string"},options:[{name:"--append",description:"Append to existing manifest",args:{name:"string"}},{name:"--dry-run",description:"Show final image instead of pushing",args:{name:"string"}},{name:["--file","-f"],description:"Read source descriptor from file",args:{name:"string"}},{name:"--progress",description:"Set type of progress output (auto, plain, tty). Use plain to show container output",args:{name:"progress",default:"auto",suggestions:["auto","plain","tty"]}},{name:["--tag","-t"],description:"Set reference for new image",args:{name:"string"}}]},{name:"inspect",description:"Inspect current builder instance",args:{name:"string"},options:[{name:"--format",description:"Format the output using the given Go template",args:{name:"sting",default:"{{.Manifest}}"}},{name:"--raw",description:"Show original, unformatted JSON manifest"}]}]},{name:"inspect",description:"Inspect current builder instance",args:{name:"string"},options:[{name:"--bootstrap",description:"Ensure builder has booted before inspecting",args:{name:"string"}}]},{name:"install",description:"Install buildx as a ‘docker builder’ alias"},{name:"ls",description:"List builder instances"},{name:"prune",description:"Remove build cache",args:{name:"string"},options:[{name:["--all","-a"],description:"Include internal/frontend images",args:{name:"string"}},{name:"--filter",description:"Provide filter values (e.g., until=24h)",args:{name:"string"}},{name:["--force","-f"],description:"Do not prompt for confirmation",args:{name:"string"}},{name:"--keep-storage",description:"Amount of disk space to keep for cache",args:{name:"string"}},{name:"--verbose",description:"Provide a more verbose output",args:{name:"string"}}]},{name:"rm",description:"Remove a builder instance",args:{name:"string"},options:[{name:"--all-inactive",description:"Remove all inactive builders",args:{name:"string"}},{name:["--force","-f"],description:"Do not prompt for confirmation",args:{name:"string"}},{name:"--keep-daemon",description:"Keep the buildkitd daemon running",args:{name:"string"}},{name:"--keep-state",description:"Keep BuildKit state",args:{name:"string"}}]},{name:"stop",description:"Stop builder instance",args:{name:"string"}},{name:"uninstall",description:"Uninstall the ‘docker builder’ alias"},{name:"use",description:"Set the current builder instance",args:{name:"string"},options:[{name:"--default",description:"Set builder as default for current context",args:{name:"string"}},{name:"--global",description:"Builder persists context changes",args:{name:"string"}}]},{name:"version",description:"Show buildx version information"}],options:[{name:"--builder",description:"Override the configured builder instance",isPersistent:!0,args:{name:"string"}}]},{name:"plugin",description:"Manage plugins",subcommands:[{name:"create",description:"Create a plugin from a rootfs and configuration. Plugin data directory must contain config.json and rootfs directory",args:[{name:"PLUGIN"},{name:"PLUGIN-DATA-DIR",template:"filepaths"}],options:[{name:"--compress",description:"Compress the context using gzip"}]},{name:"disable",description:"Disable a plugin",args:{name:"PLUGIN",generators:a.listDockerPlugins},options:[{name:["-f","--force"],description:"Force the disable of an active plugin"}]},{name:"enable",description:"Enable a plugin",args:{name:"PLUGIN",generators:a.listDockerPlugins},options:[{name:"--timeout",description:"HTTP client timeout (in seconds) (default 30)",args:{name:"int"}}]},{name:"inspect",description:"Display detailed information on one or more plugins",args:{name:"PLUGIN",generators:a.listDockerPlugins,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}}]},{name:"install",description:"Install a plugin",args:[{name:"PLUGIN"},{name:"KEY=VALUE",isVariadic:!0}],options:[{name:"--alias",description:"Local name for plugin",args:{name:"string"}},{name:"--disable",description:"Do not enable the plugin on install"},{name:"--disable-content-trust",description:"Skip image verification (default true)"},{name:"--grant-all-permissions",description:"Grant all permissions necessary to run the plugin"}]},{name:"ls",description:"List plugins",options:[{name:["-f","--filter"],description:"Provide filter values (e.g. 'enabled=true')",args:{name:"filter"}},{name:"--format",description:"Pretty-print plugins using a Go template",args:{name:"string"}},{name:"--no-trunc",description:"Don't truncate output"},{name:["-q","--quiet"],description:"Only display plugin IDs"}]},{name:"push",description:"Push a plugin to a registry",args:{name:"PLUGIN:[TAG]"},options:[{name:"--disable-content-trust",description:"Skip image signing (default true)"}]},{name:"rm",description:"Remove one or more plugins",args:{name:"PLUGIN",generators:a.listDockerPlugins,isVariadic:!0},options:[{name:["-f","--force"],description:"Force the removal of an active plugin"}]},{name:"set",description:"Change settings for a plugin",args:[{name:"PLUGIN",generators:a.listDockerPlugins},{name:"KEY=VALUE",isVariadic:!0}]},{name:"upgrade",description:"Upgrade an existing plugin",args:[{name:"PLUGIN",generators:a.listDockerPlugins},{name:"REMOTE"}],options:[{name:"--disable-content-trust",description:"Skip image verification (default true)"},{name:"--grant-all-permissions",description:"Grant all permissions necessary to run the plugin"},{name:"--skip-remote-check",description:"Do not check if specified remote plugin matches existing plugin image"}]}]},{name:"secret",description:"Manage Docker secrets",subcommands:[{name:"create",description:"Create a secret from a file or STDIN as content",args:[{name:"SECRET NAME"},{name:"SECRET",template:"filepaths"}],options:[{name:["-d","--driver"],description:"Secret driver",args:{name:"string"}},{name:["-l","--label"],description:"Secret labels",args:{name:"list"}},{name:"--template-driver",description:"Template driver",args:{name:"string"}}]},{name:"inspect",description:"Display detailed information on one or more secrets",args:{name:"SECRET",generators:a.listDockerSecrets,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:"--pretty",description:"Print the information in a human friendly format"}]},{name:"ls",description:"List secrets",options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print secrets using a Go template",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display IDs"}]},{name:"rm",description:"Remove one or more secrets",args:{name:"SECRET",generators:a.listDockerSecrets,isVariadic:!0}}]},{name:"service",description:"Manage services",subcommands:[{name:"create",description:"Create a new service",args:[o,{name:"COMMAND",isOptional:!0,isCommand:!0}],options:[{name:"--cap-add",description:"Add Linux capabilities",args:{name:"list"}},{name:"--cap-drop",description:"Drop Linux capabilities",args:{name:"list"}},{name:"--config",description:"Specify configurations to expose to the service",args:{name:"config"}},{name:"--constraint",description:"Placement constraints",args:{name:"list"}},{name:"--container-label",description:"Container labels",args:{name:"list"}},{name:"--credential-spec",description:"Credential spec for managed service account (Windows only)",args:{name:"credential-spec"}},{name:["-d","--detach"],description:"Exit immediately instead of waiting for the service to converge"},{name:"--dns",description:"Set custom DNS servers",args:{name:"list"}},{name:"--dns-option",description:"Set DNS options",args:{name:"list"}},{name:"--dns-search",description:"Set custom DNS search domains",args:{name:"list"}},{name:"--endpoint-mode",description:'Endpoint mode (vip or dnsrr) (default "vip")',args:{name:"string"}},{name:"--entrypoint",description:"Overwrite the default ENTRYPOINT of the image",args:{name:"command"}},{name:["-e","--env"],description:"Set environment variables",args:{name:"list"}},{name:"--env-file",description:"Read in a file of environment variables",args:{name:"list"}},{name:"--generic-resource",description:"User defined resources",args:{name:"list"}},{name:"--group",description:"Set one or more supplementary user groups for the container",args:{name:"list"}},{name:"--health-cmd",description:"Command to run to check health",args:{name:"string"}},{name:"--health-interval",description:"Time between running the check (ms|s|m|h)",args:{name:"duration"}},{name:"--health-retries",description:"Consecutive failures needed to report unhealthy",args:{name:"int"}},{name:"--health-start-period",description:"Start period for the container to initialize before counting retries towards unstable (ms|s|m|h)",args:{name:"duration"}},{name:"--health-timeout",description:"Maximum time to allow one check to run (ms|s|m|h)",args:{name:"duration"}},{name:"--host",description:"Set one or more custom host-to-IP mappings (host:ip)",args:{name:"list"}},{name:"--hostname",description:"Container hostname",args:{name:"string"}},{name:"--init",description:"Use an init inside each service container to forward signals and reap processes"},{name:"--isolation",description:"Service container isolation mode",args:{name:"string"}},{name:["-l","--label"],description:"Service labels",args:{name:"list"}},{name:"--limit-cpu",description:"Limit CPUs",args:{name:"decimal"}},{name:"--limit-memory",description:"Limit Memory",args:{name:"bytes"}},{name:"--limit-pids",description:"Limit maximum number of processes (default 0 = unlimited)",args:{name:"int"}},{name:"--log-driver",description:"Logging driver for service",args:{name:"string"}},{name:"--log-opt",description:"Logging driver options",args:{name:"list"}},{name:"--max-concurrent",description:"Number of job tasks to run concurrently (default equal to --replicas)",args:{name:"uint"}},{name:"--mode",description:'Service mode (replicated, global, replicated-job, or global-job) (default "replicated")',args:{name:"string",suggestions:["replicated","global","replicated-job","global-job"]}},{name:"--mount",description:"Attach a filesystem mount to the service",args:{name:"mount"}},{name:"--name",description:"Service name",args:{name:"string"}},{name:"--network",description:"Network attachments",args:{name:"network"}},{name:"--no-healthcheck",description:"Disable any container-specified HEALTHCHECK"},{name:"--no-resolve-image",description:"Do not query the registry to resolve image digest and supported platforms"},{name:"--placement-pref",description:"Add a placement preference",args:{name:"pref"}},{name:["-p","--publish"],description:"Publish a port as a node port",args:{name:"port"}},{name:["-q","--quiet"],description:"Suppress progress output"},{name:"--read-only",description:"Mount the container's root filesystem as read only"},{name:"--replicas",description:"Number of tasks",args:{name:"uint"}},{name:"--replicas-max-per-node",description:"Maximum number of tasks per node (default 0 = unlimited)",args:{name:"uint"}},{name:"--reserve-cpu",description:"Reserve CPUs",args:{name:"decimal"}},{name:"--reserve-memory",description:"Reserve Memory",args:{name:"bytes"}},{name:"--restart-condition",description:'Restart when condition is met ("none"|"on-failure"|"any") (default "any")',args:{name:"string"}},{name:"--restart-delay",description:"Delay between restart attempts (ns|us|ms|s|m|h) (default 5s)",args:{name:"duration"}},{name:"--restart-max-attempts",description:"Maximum number of restarts before giving up",args:{name:"uint"}},{name:"--restart-window",description:"Window used to evaluate the restart policy (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--rollback-delay",description:"Delay between task rollbacks (ns|us|ms|s|m|h) (default 0s)",args:{name:"duration"}},{name:"--rollback-failure-action",description:'Action on rollback failure ("pause"|"continue") (default "pause")',args:{name:"string"}},{name:"--rollback-max-failure-ratio",description:"Failure rate to tolerate during a rollback (default 0)",args:{name:"float"}},{name:"--rollback-monitor",description:"Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h) (default 5s)",args:{name:"duration"}},{name:"--rollback-order",description:'Rollback order ("start-first"|"stop-first") (default "stop-first")',args:{name:"string"}},{name:"--rollback-parallelism",description:"Maximum number of tasks rolled back simultaneously (0 to roll back all at once) (default 1)",args:{name:"uint"}},{name:"--secret",description:"Specify secrets to expose to the service",args:{name:"secret"}},{name:"--stop-grace-period",description:"Time to wait before force killing a container (ns|us|ms|s|m|h) (default 10s)",args:{name:"duration"}},{name:"--stop-signal",description:"Signal to stop the container",args:{name:"string"}},{name:"--sysctl",description:"Sysctl options",args:{name:"list"}},{name:["-t","--tty"],description:"Allocate a pseudo-TTY"},{name:"--ulimit",description:"Ulimit options (default [])",args:{name:"ulimit"}},{name:"--update-delay",description:"Delay between updates (ns|us|ms|s|m|h) (default 0s)",args:{name:"duration"}},{name:"--update-failure-action",description:'Action on update failure ("pause"|"continue"|"rollback") (default "pause")',args:{name:"string"}},{name:"--update-max-failure-ratio",description:"Failure rate to tolerate during an update (default 0)",args:{name:"float"}},{name:"--update-monitor",description:"Duration after each task update to monitor for failure (ns|us|ms|s|m|h) (default 5s)",args:{name:"duration"}},{name:"--update-order",description:'Update order ("start-first"|"stop-first") (default "stop-first")',args:{name:"string"}},{name:"--update-parallelism",description:"Maximum number of tasks updated simultaneously (0 to update all at once) (default 1)",args:{name:"uint"}},{name:["-u","--user"],description:"Username or UID (format: <name|uid>[:<group|gid>])",args:{name:"string"}},{name:"--with-registry-auth",description:"Send registry authentication details to swarm agents"},{name:["-w","--workdir"],description:"Working directory inside the container",args:{name:"string"}}]},{name:"inspect",description:"Display detailed information on one or more services",args:{name:"SERVICE",generators:a.listDockerServices,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}},{name:"--pretty",description:"Print the information in a human friendly format"}]},{name:"logs",description:"Fetch the logs of a service or task",args:{name:"SERVICE OR TASK",generators:a.listDockerServices},options:[{name:"--details",description:"Show extra details provided to logs"},{name:["-f","--follow"],description:"Follow log output"},{name:"--no-resolve",description:"Do not map IDs to Names in output"},{name:"--no-task-ids",description:"Do not include task IDs in output"},{name:"--no-trunc",description:"Do not truncate output"},{name:"--raw",description:"Do not neatly format logs"},{name:"--since",description:"Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)",args:{name:"string"}},{name:["-n","--tail"],description:'Number of lines to show from the end of the logs (default "all")',args:{name:"string"}},{name:["-t","--timestamps"],description:"Show timestamps"}]},{name:"ls",description:"List services",options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print services using a Go template",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display IDs"}]},{name:"ps",description:"List the tasks of one or more services",args:{name:"SERVICE",generators:a.listDockerServices,isVariadic:!0},options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print tasks using a Go template",args:{name:"string"}},{name:"--no-resolve",description:"Do not map IDs to Names"},{name:"--no-trunc",description:"Do not truncate output"},{name:["-q","--quiet"],description:"Only display task IDs"}]},{name:"rm",description:"Remove one or more services",args:{name:"SERVICE",generators:a.listDockerServices,isVariadic:!0}},{name:"rollback",description:"Revert changes to a service's configuration",args:{name:"SERVICE",generators:a.listDockerServices},options:[{name:["-d","--detach"],description:"Exit immediately instead of waiting for the service to converge"},{name:["-q","--quiet"],description:"Suppress progress output"}]},{name:"scale",description:"Scale one or multiple replicated services",args:{name:"SERVICE=REPLICAS",generators:a.listDockerServicesReplicas,isVariadic:!0},options:[{name:["-d","--detach"],description:"Exit immediately instead of waiting for the service to converge"}]},{name:"update",description:"Update a service",args:{name:"SERVICE",generators:a.listDockerServices},options:[{name:"--args",description:"Service command args",args:{name:"command"}},{name:"--cap-add",description:"Add Linux capabilities",args:{name:"list"}},{name:"--cap-drop",description:"Drop Linux capabilities",args:{name:"list"}},{name:"--config-add",description:"Add or update a config file on a service",args:{name:"config"}},{name:"--config-rm",description:"Remove a configuration file",args:{name:"list"}},{name:"--constraint-add",description:"Add or update a placement constraint",args:{name:"list"}},{name:"--constraint-rm",description:"Remove a constraint",args:{name:"list"}},{name:"--container-label-add",description:"Add or update a container label",args:{name:"list"}},{name:"--container-label-rm",description:"Remove a container label by its key",args:{name:"list"}},{name:"--credential-spec",description:"Credential spec for managed service account (Windows only)",args:{name:"credential-spec"}},{name:["-d","--detach"],description:"Exit immediately instead of waiting for the service to converge"},{name:"--dns-add",description:"Add or update a custom DNS server",args:{name:"list"}},{name:"--dns-option-add",description:"Add or update a DNS option",args:{name:"list"}},{name:"--dns-option-rm",description:"Remove a DNS option",args:{name:"list"}},{name:"--dns-rm",description:"Remove a custom DNS server",args:{name:"list"}},{name:"--dns-search-add",description:"Add or update a custom DNS search domain",args:{name:"list"}},{name:"--dns-search-rm",description:"Remove a DNS search domain",args:{name:"list"}},{name:"--endpoint-mode",description:"Endpoint mode (vip or dnsrr)",args:{name:"string"}},{name:"--entrypoint",description:"Overwrite the default ENTRYPOINT of the image",args:{name:"command"}},{name:"--env-add",description:"Add or update an environment variable",args:{name:"list"}},{name:"--env-rm",description:"Remove an environment variable",args:{name:"list"}},{name:"--force",description:"Force update even if no changes require it"},{name:"--generic-resource-add",description:"Add a Generic resource",args:{name:"list"}},{name:"--generic-resource-rm",description:"Remove a Generic resource",args:{name:"list"}},{name:"--group-add",description:"Add an additional supplementary user group to the container",args:{name:"list"}},{name:"--group-rm",description:"Remove a previously added supplementary user group from the container",args:{name:"list"}},{name:"--health-cmd",description:"Command to run to check health",args:{name:"string"}},{name:"--health-interval",description:"Time between running the check (ms|s|m|h)",args:{name:"duration"}},{name:"--health-retries",description:"Consecutive failures needed to report unhealthy",args:{name:"int"}},{name:"--health-start-period",description:"Start period for the container to initialize before counting retries towards unstable (ms|s|m|h)",args:{name:"duration"}},{name:"--health-timeout",description:"Maximum time to allow one check to run (ms|s|m|h)",args:{name:"duration"}},{name:"--host-add",description:"Add a custom host-to-IP mapping (host:ip)",args:{name:"list"}},{name:"--host-rm",description:"Remove a custom host-to-IP mapping (host:ip)",args:{name:"list"}},{name:"--hostname",description:"Container hostname",args:{name:"string"}},{name:"--image",description:"Service image tag",args:{name:"string"}},{name:"--init",description:"Use an init inside each service container to forward signals and reap processes"},{name:"--isolation",description:"Service container isolation mode",args:{name:"string"}},{name:"--label-add",description:"Add or update a service label",args:{name:"list"}},{name:"--label-rm",description:"Remove a label by its key",args:{name:"list"}},{name:"--limit-cpu",description:"Limit CPUs",args:{name:"decimal"}},{name:"--limit-memory",description:"Limit Memory",args:{name:"bytes"}},{name:"--limit-pids",description:"Limit maximum number of processes (default 0 = unlimited)",args:{name:"int"}},{name:"--log-driver",description:"Logging driver for service",args:{name:"string"}},{name:"--log-opt",description:"Logging driver options",args:{name:"list"}},{name:"--max-concurrent",description:"Number of job tasks to run concurrently (default equal to --replicas)",args:{name:"uint"}},{name:"--mount-add",description:"Add or update a mount on a service",args:{name:"mount"}},{name:"--mount-rm",description:"Remove a mount by its target path",args:{name:"list"}},{name:"--network-add",description:"Add a network",args:{name:"network"}},{name:"--network-rm",description:"Remove a network",args:{name:"list"}},{name:"--no-healthcheck",description:"Disable any container-specified HEALTHCHECK"},{name:"--no-resolve-image",description:"Do not query the registry to resolve image digest and supported platforms"},{name:"--placement-pref-add",description:"Add a placement preference",args:{name:"pref"}},{name:"--placement-pref-rm",description:"Remove a placement preference",args:{name:"pref"}},{name:"--publish-add",description:"Add or update a published port",args:{name:"port"}},{name:"--publish-rm",description:"Remove a published port by its target port",args:{name:"port"}},{name:["-q","--quiet"],description:"Suppress progress output"},{name:"--read-only",description:"Mount the container's root filesystem as read only"},{name:"--replicas",description:"Number of tasks",args:{name:"uint"}},{name:"--replicas-max-per-node",description:"Maximum number of tasks per node (default 0 = unlimited)",args:{name:"uint"}},{name:"--reserve-cpu",description:"Reserve CPUs",args:{name:"decimal"}},{name:"--reserve-memory",description:"Reserve Memory",args:{name:"bytes"}},{name:"--restart-condition",description:'Restart when condition is met ("none"|"on-failure"|"any")',args:{name:"string"}},{name:"--restart-delay",description:"Delay between restart attempts (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--restart-max-attempts",description:"Maximum number of restarts before giving up",args:{name:"uint"}},{name:"--restart-window",description:"Window used to evaluate the restart policy (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--rollback",description:"Rollback to previous specification"},{name:"--rollback-delay",description:"Delay between task rollbacks (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--rollback-failure-action",description:'Action on rollback failure ("pause"|"continue")',args:{name:"string"}},{name:"--rollback-max-failure-ratio",description:"Failure rate to tolerate during a rollback",args:{name:"float"}},{name:"--rollback-monitor",description:"Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--rollback-order",description:'Rollback order ("start-first"|"stop-first")',args:{name:"string"}},{name:"--rollback-parallelism",description:"Maximum number of tasks rolled back simultaneously (0 to roll back all at once)",args:{name:"uint"}},{name:"--secret-add",description:"Add or update a secret on a service",args:{name:"secret"}},{name:"--secret-rm",description:"Remove a secret",args:{name:"list"}},{name:"--stop-grace-period",description:"Time to wait before force killing a container (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--stop-signal",description:"Signal to stop the container",args:{name:"string"}},{name:"--sysctl-add",description:"Add or update a Sysctl option",args:{name:"list"}},{name:"--sysctl-rm",description:"Remove a Sysctl option",args:{name:"list"}},{name:["-t","--tty"],description:"Allocate a pseudo-TTY"},{name:"--ulimit-add",description:"Add or update a ulimit option (default [])",args:{name:"ulimit"}},{name:"--ulimit-rm",description:"Remove a ulimit option",args:{name:"list"}},{name:"--update-delay",description:"Delay between updates (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--update-failure-action",description:'Action on update failure ("pause"|"continue"|"rollback")',args:{name:"string"}},{name:"--update-max-failure-ratio",description:"Failure rate to tolerate during an update",args:{name:"float"}},{name:"--update-monitor",description:"Duration after each task update to monitor for failure (ns|us|ms|s|m|h)",args:{name:"duration"}},{name:"--update-order",description:'Update order ("start-first"|"stop-first")',args:{name:"string"}},{name:"--update-parallelism",description:"Maximum number of tasks updated simultaneously (0 to update all at once)",args:{name:"uint"}},{name:["-u","--user"],description:"Username or UID (format: <name|uid>[:<group|gid>])",args:{name:"string"}},{name:"--with-registry-auth",description:"Send registry authentication details to swarm agents"},{name:["-w","--workdir"],description:"Working directory inside the container",args:{name:"string"}}]}]},{name:"stack",description:"Manage Docker stacks",subcommands:[{name:"deploy",description:"Deploy a new stack or update an existing stack",args:{name:"STACK"},options:[{name:["-c","--compose-file"],description:'Path to a Compose file, or "-" to read from stdin',args:{name:"strings",template:"filepaths"}},{name:"--orchestrator",description:"Orchestrator to use (swarm|kubernetes|all)",args:{name:"string"}},{name:"--prune",description:"Prune services that are no longer referenced"},{name:"--resolve-image",description:'Query the registry to resolve image digest and supported platforms ("always"|"changed"|"never") (default "always")',args:{name:"string"}},{name:"--with-registry-auth",description:"Send registry authentication details to Swarm agents"}]},{name:"ls",description:"List stacks",options:[{name:"--format",description:"Pretty-print stacks using a Go template",args:{name:"string"}},{name:"--orchestrator",description:"Orchestrator to use (swarm|kubernetes|all)",args:{name:"string"}}]},{name:"ps",description:"List the tasks in the stack",args:{name:"STACK",generators:a.listDockerStacks},options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print tasks using a Go template",args:{name:"string"}},{name:"--no-resolve",description:"Do not map IDs to Names"},{name:"--no-trunc",description:"Do not truncate output"},{name:"--orchestrator",description:"Orchestrator to use (swarm|kubernetes|all)",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display task IDs"}]},{name:"rm",description:"Remove one or more stacks",args:{name:"STACK",generators:a.listDockerStacks,isVariadic:!0},options:[{name:"--orchestrator",description:"Orchestrator to use (swarm|kubernetes|all)",args:{name:"string"}}]},{name:"services",description:"List the services in the stack",args:{name:"STACK",generators:a.listDockerStacks},options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Pretty-print services using a Go template",args:{name:"string"}},{name:"--orchestrator",description:"Orchestrator to use (swarm|kubernetes|all)",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display IDs"}]}]},{name:"swarm",description:"Manage Swarm",subcommands:[{name:"ca",description:"Display and rotate the root CA",options:[{name:"--ca-cert",description:"Path to the PEM-formatted root CA certificate to use for the new cluster",args:{name:"pem-file",template:"filepaths"}},{name:"--ca-key",description:"Path to the PEM-formatted root CA key to use for the new cluster",args:{name:"pem-file",template:"filepaths"}},{name:"--cert-expiry",description:"Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)",args:{name:"duration"}},{name:["-d","--detach"],description:"Exit immediately instead of waiting for the root rotation to converge"},{name:"--external-ca",description:"Specifications of one or more certificate signing endpoints",args:{name:"external-ca"}},{name:["-q","--quiet"],description:"Suppress progress output"},{name:"--rotate",description:"Rotate the swarm CA - if no certificate or key are provided, new ones will be generated"}]},{name:"init",description:"Initialize a swarm",options:[{name:"--advertise-addr",description:"Advertised address (format: <ip|interface>[:port])",args:{name:"string"}},{name:"--autolock",description:"Enable manager autolocking (requiring an unlock key to start a stopped manager)"},{name:"--availability",description:'Availability of the node ("active"|"pause"|"drain") (default "active")',args:{name:"string"}},{name:"--cert-expiry",description:"Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)",args:{name:"duration"}},{name:"--data-path-addr",description:"Address or interface to use for data path traffic (format: <ip|interface>)",args:{name:"string"}},{name:"--data-path-port",description:"Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used",args:{name:"uint32"}},{name:"--default-addr-pool",description:"Default address pool in CIDR format (default [])",args:{name:"ipNetSlice"}},{name:"--default-addr-pool-mask-length",description:"Default address pool subnet mask length (default 24)",args:{name:"uint32"}},{name:"--dispatcher-heartbeat",description:"Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)",args:{name:"duration"}},{name:"--external-ca",description:"Specifications of one or more certificate signing endpoints",args:{name:"external-ca"}},{name:"--force-new-cluster",description:"Force create a new cluster from current state"},{name:"--listen-addr",description:"Listen address (format: <ip|interface>[:port]) (default 0.0.0.0:2377)",args:{name:"node-addr"}},{name:"--max-snapshots",description:"Number of additional Raft snapshots to retain",args:{name:"uint"}},{name:"--snapshot-interval",description:"Number of log entries between Raft snapshots (default 10000)",args:{name:"uint"}},{name:"--task-history-limit",description:"Task history retention limit (default 5)",args:{name:"int"}}]},{name:"join",description:"Join a swarm as a node and/or manager",args:{name:"HOST:PORT"},options:[{name:"--advertise-addr",description:"Advertised address (format: <ip|interface>[:port])",args:{name:"string"}},{name:"--availability",description:'Availability of the node ("active"|"pause"|"drain") (default "active")',args:{name:"string"}},{name:"--data-path-addr",description:"Address or interface to use for data path traffic (format: <ip|interface>)",args:{name:"string"}},{name:"--listen-addr",description:"Listen address (format: <ip|interface>[:port]) (default 0.0.0.0:2377)",args:{name:"node-addr"}},{name:"--token",description:"Token for entry into the swarm",args:{name:"string"}}]},{name:"join-token",description:"Manage join tokens",args:{name:"worker or manager",suggestions:["worker","manager"]},options:[{name:["-q","--quiet"],description:"Only display token"},{name:"--rotate",description:"Rotate join token"}]},{name:"leave",description:"Leave the swarm",options:[{name:["-f","--force"],description:"Force this node to leave the swarm, ignoring warnings"}]},{name:"unlock",description:"Unlock swarm"},{name:"unlock-key",description:"Manage the unlock key",options:[{name:["-q","--quiet"],description:"Only display token"},{name:"--rotate",description:"Rotate unlock key"}]},{name:"update",description:"Update the swarm",options:[{name:"--autolock",description:"Change manager autolocking setting (true|false)",args:{suggestions:["true","false"]}},{name:"--cert-expiry",description:"Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)",args:{name:"duration"}},{name:"--dispatcher-heartbeat",description:"Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)",args:{name:"duration"}},{name:"--external-ca",description:"Specifications of one or more certificate signing endpoints",args:{name:"external-ca"}},{name:"--max-snapshots",description:"Number of additional Raft snapshots to retain",args:{name:"uint"}},{name:"--snapshot-interval",description:"Number of log entries between Raft snapshots (default 10000)",args:{name:"uint"}},{name:"--task-history-limit",description:"Task history retention limit (default 5)",args:{name:"int"}}]}]},{name:"system",description:"Manage Docker",subcommands:[{name:"prune",description:"Remove unused data",options:[{name:["-a","--all"],description:"Remove all unused images not just dangling ones"},{name:"--filter",description:"Provide filter values (e.g. 'label=<key>=<value')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"},{name:"--volumes",description:"Prune volumes"}]},{name:"df",description:"Show docker disk usage",options:[{name:"--format",description:"Pretty-print images using a Go template",args:{name:"string"}},{name:["-v","--verbose"],description:"Show detailed information on space usage"}]},{name:"events",description:"Get real time events from the server",options:[{name:["-f","--filter"],description:"Filter output based on conditions provided",args:{name:"filter"}},{name:"--format",description:"Format the output using the given Go template",args:{name:"string"}},{name:"--since",description:"Show all events created since timestamp",args:{name:"string"}},{name:"--until",description:"Stream events until this timestamp",args:{name:"string"}}]},{name:"info",description:"Display system-wide information",options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}}]}]},{name:"trust",description:"Manage trust on Docker images",subcommands:[{name:"inspect",description:"Return low-level information about keys and signatures",args:{name:"IMAGE[:TAG]",isVariadic:!0},options:[{name:"--pretty",description:"Print the information in a human friendly format"}]},{name:"revoke",description:"Remove trust for an image",args:o,options:[{name:["-y","--yes"],description:"Do not prompt for confirmation"}]},{name:"sign",description:"Sign an image",args:o,options:[{name:"--local",description:"Sign a locally tagged image"}]}]},{name:"volume",description:"Manage volumes",subcommands:[{name:"create",description:"Create a volume",args:{name:"VOLUME"},options:[{name:["-d","--driver"],description:'Specify volume driver name (default "local")',args:{name:"string"}},{name:"--label",description:"Set metadata for a volume",args:{name:"list"}},{name:["-o","--opt"],description:"Set driver specific options (default map[])",args:{name:"map"}}]},{name:"inspect",description:"Display detailed information on one or more volumes",args:{name:"VOLUME",generators:a.listDockerVolumes,isVariadic:!0},options:[{name:["-f","--format"],description:"Format the output using the given Go template",args:{name:"string"}}]},{name:"ls",description:"List volumes",options:[{name:["-f","--filter"],description:"Provide filter values (e.g. 'dangling=true')",args:{name:"filter"}},{name:"--format",description:"Pretty-print volumes using a Go template",args:{name:"string"}},{name:["-q","--quiet"],description:"Only display volume names"}]},{name:"prune",description:"Remove all unused local volumes",options:[{name:"--filter",description:"Provide filter values (e.g. 'label=<label>')",args:{name:"filter"}},{name:["-f","--force"],description:"Do not prompt for confirmation"}]},{name:"rm",description:"Remove one or more volumes",args:{name:"VOLUME",generators:a.listDockerVolumes,isVariadic:!0},options:[{name:["-f","--force"],description:"Force the removal of one or more volumes"}]}]},{name:"compose",description:"Define and run multi-container applications with Docker",loadSpec:"docker-compose"}]};t.default=d},2008:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.codeTunnelSubcommands=t.extTunnelSubcommand=t.codeTunnelOptions=t.globalTunnelOptions=t.tunnelHelpOptions=t.commonAuthOptions=t.troubleshootingOptions=t.extensionManagementOptions=t.commonOptions=void 0,t.createCodeGenerators=a,t.parseInstalledExtensions=s;const i=n(2341);function a(e){return{script:[e,"--list-extensions","--show-versions","--enable-proposed-api"],postProcess:s}}function s(e){return e.split("\n").filter(Boolean).map(e=>{const[t,n]=e.split("@");return{name:t,type:"option",description:`Version: ${n}`}})}t.commonOptions=[{name:"-",description:"Read from stdin (e.g. 'ps aux | grep code | code -')"},{name:["-d","--diff"],description:"Compare two files with each other",args:[{name:"file",template:"filepaths"},{name:"file",template:"filepaths"}]},{name:["-m","--merge"],description:"Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions and the output file to save merge results",args:[{name:"file",template:"filepaths"},{name:"file",template:"filepaths"},{name:"base",template:"filepaths"},{name:"result",template:"filepaths"}]},{name:["-a","--add"],description:"Add folder(s) to the last active window",args:{name:"folder",template:"folders",isVariadic:!0}},{name:"--remove",description:"Remove folder(s) from the last active window",args:{name:"folder",template:"folders",isVariadic:!0}},{name:["-g","--goto"],description:"Open a file at the path on the specified line and character position",args:{name:"file:line[:character]",template:"filepaths"}},{name:["-n","--new-window"],description:"Force to open a new window"},{name:["-r","--reuse-window"],description:"Force to open a file or folder in an already opened window"},{name:["-w","--wait"],description:"Wait for the files to be closed before returning"},{name:"--locale",description:"The locale to use (e.g. en-US or zh-TW)",args:{name:"locale",suggestions:[{name:"en",icon:"🇺🇸",description:"English (US)"},{name:"zh-CN",icon:"🇨🇳",description:"Simplified Chinese"},{name:"zh-TW",icon:"🇹🇼",description:"Traditional Chinese"},{name:"fr",icon:"🇫🇷",description:"French"},{name:"de",icon:"🇩🇪",description:"German"},{name:"it",icon:"🇮🇹",description:"Italian"},{name:"es",icon:"🇪🇸",description:"Spanish"},{name:"ja",icon:"🇯🇵",description:"Japanese"},{name:"ko",icon:"🇰🇷",description:"Korean"},{name:"ru",icon:"🇷🇺",description:"Russian"},{name:"bg",icon:"🇧🇬",description:"Bulgarian"},{name:"hu",icon:"🇭🇺",description:"Hungarian"},{name:"pt-br",icon:"🇧🇷",description:"Portuguese (Brazil)"},{name:"tr",icon:"🇹🇷",description:"Turkish"}]}},{name:"--user-data-dir",description:"Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code",args:{name:"dir",template:"folders"}},{name:"--profile",description:"Opens the provided folder or workspace with the given profile and associates the profile with the workspace. If the profile does not exist, a new empty one is created. A folder or workspace must be provided for the profile to take effect",args:{name:"profileName"}},{name:["-h","--help"],description:"Print usage"},{name:"--add-mcp",description:'Adds a Model Context Protocol server definition to the user profile. Accepts JSON input in the form {"name":"server-name","command":...}',args:{name:"json",description:"JSON string for MCP server"}},{name:"--locate-shell-integration-path",description:"Print the path to the shell integration script for the provided shell",args:{isOptional:!1,name:"shell",description:"The shell to locate the integration script for",suggestions:["bash","fish","pwsh","zsh"]}}],t.extensionManagementOptions=e=>[{name:"--extensions-dir",description:"Set the root path for extensions",args:{name:"dir",template:"folders"}},{name:"--list-extensions",description:"List the installed extensions"},{name:"--show-versions",description:"Show versions of installed extensions, when using --list-extensions"},{name:"--category",description:"Filters installed extensions by provided category, when using --list-extensions",args:{name:"category",suggestions:["azure","data science","debuggers","extension packs","education","formatters","keymaps","language packs","linters","machine learning","notebooks","programming languages","scm providers","snippets","testing","themes","visualization","other"]}},{name:"--install-extension",description:"Installs or updates an extension. The argument is either an extension id or a path to a VSIX. The identifier of an extension is '${ publisher }.${ name }'. Use '--force' argument to update to latest version. To install a specific version provide '@${version}'. For example: 'vscode.csharp@1.2.3'",args:{name:"extension-id[@version] | path-to-vsix",generators:[a(e),(0,i.filepaths)({extensions:["vsix"]})]}},{name:"--pre-release",description:"Installs the pre-release version of the extension, when using --install-extension"},{name:"--uninstall-extension",description:"Uninstalls an extension",args:{name:"extension-id",generators:a(e)}},{name:"--update-extensions",description:"Update the installed extensions"},{name:"--enable-proposed-api",description:"Enables proposed API features for extensions. Can receive one or more extension IDs to enable individually",args:{name:"extension-id",generators:a(e),isVariadic:!0}}],t.troubleshootingOptions=e=>[{name:["-v","--version"],description:"Print version"},{name:"--verbose",description:"Print verbose output (implies --wait)"},{name:"--log",description:"Log level to use. Default is 'info'. Allowed values are 'critical', 'error', 'warn', 'info', 'debug', 'trace', 'off'. You can also configure the log level of an extension by passing extension id and log level in the following format: '{publisher}.{name}:{logLevel}'. For example: 'vscode.csharp:trace'. Can receive one or more such entries.",isRepeatable:!0,args:{name:"level",description:"Log level or 'publisher.name:logLevel'",default:"info",suggestions:["critical","error","warn","info","debug","trace","off"]}},{name:["-s","--status"],description:"Print process usage and diagnostics information"},{name:"--prof-startup",description:"Run CPU profiler during startup"},{name:"--disable-extensions",description:"Disable all installed extensions"},{name:"--disable-extension",description:"Disable an extension",args:{name:"extension-id",generators:a(e)}},{name:"--sync",description:"Turn sync on or off",args:{name:"sync",description:"Whether to enable sync",suggestions:["on","off"]}},{name:"--inspect-extensions",description:"Allow debugging and profiling of extensions. Check the developer tools for the connection URI",args:{name:"port"}},{name:"--inspect-brk-extensions",description:"Allow debugging and profiling of extensions with the extension host being paused after start. Check the developer tools for the connection URI",args:{name:"port"}},{name:"--disable-gpu",description:"Disable GPU hardware acceleration"},{name:"--disable-lcd-text",description:"Disable LCD font rendering"},{name:"--disable-chromium-sandbox",description:"Use this option only when there is requirement to launch the application as sudo user on Linux or when running as an elevated user in an applocker environment on Windows."},{name:"--max-memory",description:"Max memory size for a window (in Mbytes)",args:{name:"memory",description:"Memory in megabytes"}},{name:"--telemetry",description:"Shows all telemetry events which VS code collects"},{name:"--transient",description:"Run with temporary data and extension directories, as if launched for the first time."}],t.commonAuthOptions=[{name:"--access-token",description:"An access token to store for authentication",isRepeatable:!0,args:{name:"access_token",isOptional:!0}},{name:"--refresh-token",description:"An access token to store for authentication",isRepeatable:!0,args:{name:"refresh_token",isOptional:!0}},{name:"--provider",description:"The auth provider to use. If not provided, a prompt will be shown",isRepeatable:!0,args:{name:"provider",isOptional:!0,suggestions:["microsoft","github"]}}],t.tunnelHelpOptions=[{name:["-h","--help"],description:"Print help"}],t.globalTunnelOptions=[{name:"--cli-data-dir",description:"Directory where CLI metadata should be stored",args:{name:"cli_data_dir"}},{name:"--verbose",description:"Print verbose output (implies --wait)"},{name:"--log",description:"Log level to use",isRepeatable:!0,args:{name:"log",isOptional:!0,suggestions:["trace","debug","info","warn","error","critical","off"]}}],t.codeTunnelOptions=[{name:"--extensions-dir",description:"Set the root path for extensions",isRepeatable:!0,args:{name:"extensions_dir",isOptional:!0}},{name:"--user-data-dir",description:"Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of the editor",isRepeatable:!0,args:{name:"user_data_dir",isOptional:!0}},{name:"--use-version",description:"Sets the editor version to use for this command. The preferred version can be persisted with `code version use <version>`. Can be 'stable', 'insiders', a version number, or an absolute path to an existing install",isRepeatable:!0,args:{name:"use_version",isOptional:!0}}],t.extTunnelSubcommand={name:"ext",description:"Manage editor extensions",subcommands:[{name:"list",description:"List installed extensions",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions,{name:"--category",description:"Filters installed extensions by provided category, when using --list-extensions",isRepeatable:!0,args:{name:"category",isOptional:!0}},{name:"--show-versions",description:"Show versions of installed extensions, when using --list-extensions"}]},{name:"install",description:"Install an extension",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions,{name:"--pre-release",description:"Installs the pre-release version of the extension"},{name:"--donot-include-pack-and-dependencies",description:"Don't include installing pack and dependencies of the extension"},{name:"--force",description:"Update to the latest version of the extension if it's already installed"}],args:{name:"ext-id | id",isVariadic:!0,isOptional:!0}},{name:"uninstall",description:"Uninstall an extension",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions],args:{name:"ext-id | id",isVariadic:!0,isOptional:!0}},{name:"update",description:"Update the installed extensions",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]}],...t.globalTunnelOptions,...t.codeTunnelOptions},t.codeTunnelSubcommands=[{name:"tunnel",description:"Create a tunnel that's accessible on vscode.dev from anywhere. Run`code tunnel --help` for more usage info",subcommands:[{name:"prune",description:"Delete all servers which are currently not running",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"kill",description:"Stops any running tunnel on the system",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"restart",description:"Restarts any running tunnel on the system",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"status",description:"Gets whether there is a tunnel running on the current machine",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"rename",description:"Rename the name of this machine associated with port forwarding service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions],args:{name:"name"}},{name:"unregister",description:"Remove this machine's association with the port forwarding service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"user",subcommands:[{name:"login",description:"Log in to port forwarding service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions,...t.commonAuthOptions]},{name:"logout",description:"Log out of port forwarding service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"show",description:"Show the account that's logged into port forwarding service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"help",description:"Print this message or the help of the given subcommand(s)",subcommands:[{name:"login",description:"Log in to port forwarding service"},{name:"logout",description:"Log out of port forwarding service"},{name:"show",description:"Show the account that's logged into port forwarding service"},{name:"help",description:"Print this message or the help of the given subcommand(s)"}]}]},{name:"service",description:"(Preview) Manages the tunnel when installed as a system service,",subcommands:[{name:"install",description:"Installs or re-installs the tunnel service on the machine",options:[{name:"--name",description:"Sets the machine name for port forwarding service",args:{name:"name"}},{name:"--accept-server-license-terms",description:"If set, the user accepts the server license terms and the server will be started without a user prompt"},...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"uninstall",description:"Uninstalls and stops the tunnel service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"log",description:"Shows logs for the running service",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"help",description:"Print this message or the help of the given subcommand(s)",subcommands:[{name:"install",description:"Installs or re-installs the tunnel service on the machine"},{name:"uninstall",description:"Uninstalls and stops the tunnel service"},{name:"log",description:"Shows logs for the running service"},{name:"help",description:"Print this message or the help of the given subcommand(s)"}]}],options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"help",description:"Print this message or the help of the given subcommand(s)",subcommands:[{name:"prune",description:"Delete all servers which are currently not running"},{name:"kill",description:"Stops any running tunnel on the system"},{name:"restart",description:"Restarts any running tunnel on the system"},{name:"status",description:"Gets whether there is a tunnel running on the current machine"},{name:"rename",description:"Rename the name of this machine associated with port forwarding service"},{name:"unregister",description:"Remove this machine's association with the port forwarding service"},{name:"user",subcommands:[{name:"login",description:"Log in to port forwarding service"},{name:"logout",description:"Log out of port forwarding service"},{name:"show",description:"Show the account that's logged into port forwarding service"}]},{name:"service",description:"(Preview) Manages the tunnel when installed as a system service,",subcommands:[{name:"install",description:"Installs or re-installs the tunnel service on the machine"},{name:"uninstall",description:"Uninstalls and stops the tunnel service"},{name:"log",description:"Shows logs for the running service"}]},{name:"help",description:"Print this message or the help of the given subcommand(s)"}]}],options:[{name:"--install-extension",description:"Requests that extensions be preloaded and installed on connecting servers",isRepeatable:!0,args:{name:"install_extension",isOptional:!0}},{name:"--server-data-dir",description:"Specifies the directory that server data is kept in",isRepeatable:!0,args:{name:"server_data_dir",isOptional:!0}},{name:"--extensions-dir",description:"Set the root path for extensions",isRepeatable:!0,args:{name:"extensions_dir",isOptional:!0}},{name:"--user-data-dir",description:"Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of the editor",isRepeatable:!0,args:{name:"user_data_dir",isOptional:!0}},{name:"--use-version",description:"Sets the editor version to use for this command. The preferred version can be persisted with `code version use <version>`. Can be 'stable', 'insiders', a version number, or an absolute path to an existing install",isRepeatable:!0,args:{name:"use_version",isOptional:!0}},{name:"--random-name",description:"Randomly name machine for port forwarding service"},{name:"--no-sleep",description:"Prevents the machine going to sleep while this command runs"},{name:"--accept-server-license-terms",description:"If set, the user accepts the server license terms and the server will be started without a user prompt"},{name:"--name",description:"Sets the machine name for port forwarding service",isRepeatable:!0,args:{name:"name",isOptional:!0}},{name:["-h","--help"],description:"Print help"},{name:"--log",description:"Log level to use",isRepeatable:!0,args:{name:"log",isOptional:!0,suggestions:["trace","debug","info","warn","error","critical","off"]}},{name:"--verbose",description:"Print verbose output (implies --wait)"},{name:"--cli-data-dir",description:"Directory where CLI metadata should be stored",args:{name:"cli_data_dir"}}]},{name:"chat",description:"Pass in a prompt to run in a chat session in the current working directory.",args:{name:"prompt",description:"The prompt to use as chat",isVariadic:!0,isOptional:!0},options:[{name:["-m","--mode"],description:"The mode to use for the chat session. Available options: 'ask', 'edit', 'agent', or the identifier of a custom mode. Defaults to 'agent'",args:{name:"mode",suggestions:["agent","ask","edit"]}},{name:["-a","--add-file"],description:"Add files as context to the chat session",isRepeatable:!0,args:{name:"file",template:"filepaths"}},{name:["--maximize"],description:"Maximize the chat session view."},{name:["-r","--reuse-window"],description:"Force to use the last active window for the chat session"},{name:["-n","--new-window"],description:"Force to open an empty window for the chat session"},{name:["-h","--help"],description:"Print usage"}]},{name:"status",description:"Print process usage and diagnostics information",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"version",description:"Changes the version of the editor you're using",options:[...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"serve-web",description:"Runs a local web version of Code - OSS",options:[{name:"--host",description:"Host to listen on, defaults to 'localhost'",isRepeatable:!0,args:{name:"host",isOptional:!0}},{name:"--socket-path",isRepeatable:!0,args:{name:"socket_path",isOptional:!0}},{name:"--port",description:"Port to listen on. If 0 is passed a random free port is picked",isRepeatable:!0,args:{name:"port",isOptional:!0}},{name:"--connection-token",description:"A secret that must be included with all requests",isRepeatable:!0,args:{name:"connection_token",isOptional:!0}},{name:"--connection-token-file",description:"A file containing a secret that must be included with all requests",isRepeatable:!0,args:{name:"connection_token_file",isOptional:!0}},{name:"--server-base-path",description:"Specifies the path under which the web UI and the code server is provided",isRepeatable:!0,args:{name:"server_base_path",isOptional:!0}},{name:"--server-data-dir",description:"Specifies the directory that server data is kept in",isRepeatable:!0,args:{name:"server_data_dir",isOptional:!0}},{name:"--without-connection-token",description:"Run without a connection token. Only use this if the connection is secured by other means"},{name:"--accept-server-license-terms",description:"If set, the user accepts the server license terms and the server will be started without a user prompt"},...t.globalTunnelOptions,...t.tunnelHelpOptions]},{name:"help",description:"Print this message or the help of the given subcommand(s)",subcommands:[{name:"tunnel",description:"Create a tunnel that's accessible on vscode.dev from anywhere. Run`code tunnel --help` for more usage info",subcommands:[{name:"prune",description:"Delete all servers which are currently not running"},{name:"kill",description:"Stops any running tunnel on the system"},{name:"restart",description:"Restarts any running tunnel on the system"},{name:"status",description:"Gets whether there is a tunnel running on the current machine"},{name:"rename",description:"Rename the name of this machine associated with port forwarding service"},{name:"unregister",description:"Remove this machine's association with the port forwarding service"},{name:"user",subcommands:[{name:"login",description:"Log in to port forwarding service"},{name:"logout",description:"Log out of port forwarding service"},{name:"show",description:"Show the account that's logged into port forwarding service"}]},{name:"service",description:"(Preview) Manages the tunnel when installed as a system service,",subcommands:[{name:"install",description:"Installs or re-installs the tunnel service on the machine"},{name:"uninstall",description:"Uninstalls and stops the tunnel service"},{name:"log",description:"Shows logs for the running service"}]}]},{name:"chat",description:"Pass in a prompt to run in a chat session in the current working directory."},t.extTunnelSubcommand,{name:"status",description:"Print process usage and diagnostics information"},{name:"version",description:"Changes the version of the editor you're using",subcommands:[{name:"use",description:"Switches the version of the editor in use"},{name:"show",description:"Shows the currently configured editor version"}]},{name:"serve-web",description:"Runs a local web version of Code - OSS"},{name:"command-shell",description:"Runs the control server on process stdin/stdout",hidden:!0},{name:"update",description:"Updates the CLI"},{name:"help",description:"Print this message or the help of the given subcommand(s)"}]}];const o={name:"code",description:"Visual Studio Code",args:{template:["filepaths","folders"],isVariadic:!0},subcommands:t.codeTunnelSubcommands,options:[...t.commonOptions,...(0,t.extensionManagementOptions)("code"),...(0,t.troubleshootingOptions)("code")]};t.default=o},2315:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={script:["bundle","list","--name-only"],postProcess:e=>e.split("\n").map(e=>({name:e,icon:"📦",description:"Gem"}))},i={name:"bundle",description:"Ruby Dependency Management",subcommands:[{name:"install",description:"Install the gems specified by the Gemfile or Gemfile.lock",options:[{name:"--binstubs",args:{template:"folders"},description:"Create binstubs in dir"},{name:"--clean",description:"Remove unused gems after install"},{name:"--deployment",description:"For Production and CI use"},{name:["--force","--redownload"],description:"Redownload all gems"},{name:"--frozen",description:"Do not allow lock file to update"},{name:"--full-index",description:"Cache the full index locally"},{name:"--gemfile",args:{template:"filepaths"},description:"The gemfile to use"},{name:"--jobs",args:{},description:"Maximum number of parallel installs"},{name:"--local",description:"Use only gems already downloaded or cached"},{name:"--no-cache",description:"Do not use vendor/cache"},{name:"--no-prune",description:"Do not remove stale gems"},{name:"--path",args:{template:"folders"},description:"Path the install gems too"},{name:"--quiet",description:"Do not print to stdout"},{name:"--retry",args:{},description:"Retry failed network requests N times"},{name:"--shebang",args:{},description:"Uses the specified ruby executable for binstubs"},{name:"--standalone",args:{},description:"Makes a bundle that can work without depending on Rubygems or Bundler at runtime"},{name:"--system",description:"Use system Rubygems location"},{name:"--trust-policy",args:{},description:"Apply the Rubygems security policy"},{name:"--with",args:{},description:"Groups to install"},{name:"--without",args:{},description:"Groups to NOT install"}]},{name:"update",description:"Update dependencies to their latest versions",args:{name:"gem",generators:n,isOptional:!0},options:[{name:"--all",description:"Update all gems specified in Gemfile"},{name:["--group","-g"],description:"Only update the gems in the specified group",args:{}},{name:"--source",description:"The name of a :git or :path source used in the Gemfile",args:{}},{name:"--local",description:"Use only gems already downloaded or cached"},{name:"--ruby",description:"Update the locked version of Ruby to the current version of Ruby"},{name:"--bundler",description:"Update the locked version of bundler to the invoked bundler version"},{name:"--full-index",description:"Fall back to using the single-file index of all gems"},{name:["--jobs","-j"],description:"Specify the number of jobs to run in parallel. The default is 1",args:{}},{name:"--retry",description:"Retry failed network or git requests for number times",args:{}},{name:"--quiet",description:"Only output warnings and errors"},{name:["--force","--redownload"],description:"Force downloading every gem"},{name:"--patch",description:"Prefer updating only to next patch version"},{name:"--minor",description:"Prefer updating only to next minor version"},{name:"--major",description:"Prefer updating to next major version (default)"},{name:"--strict",description:"Do not allow any gem to be updated past latest --patch | --minor | --major"},{name:"--conservative",description:"Do not allow shared dependencies to be updated"}]},{name:"package",description:"Package the .gem files required by your application into the vendor/cache directory"},{name:"exec",description:"Execute a command in the context of the bundle",options:[{name:"--keep-file-descriptors",description:"Pass all file descriptors to the new process"}],args:{isCommand:!0}},{name:"config",args:{}},{name:"help"},{name:"add",description:"Add gem to the Gemfile and run bundle install",args:{},options:[{name:["--version","-v"],description:"Specify version requirements"},{name:["--group","-g"],description:"Specify the group(s) for the added gem"},{name:["--source","-s"],description:"Specify the source"},{name:"--skip-install",description:"Adds the gem to the Gemfile but does not install it"},{name:"--optimistic",description:"Adds optimistic declaration of version"},{name:"--strict",description:"Adds strict declaration of version"}]},{name:"binstubs",description:"Install the binstubs of the listed gems",args:{},options:[{name:"--force",description:"Overwrite existing binstubs"},{name:"--path",description:"The location to install the specified binstubs to"},{name:"--standalone",description:"Makes binstubs that can work without depending on Rubygems or Bundler at runtime"},{name:"--shebang",description:"Specify a different shebang executable name than the default"}]},{name:"check",description:"Determine whether the requirements for your application are installed and available to Bundler",options:[{name:"--dry-run",description:"Locks the Gemfile before running the command"},{name:"--gemfile",description:"Use the specified gemfile instead of the Gemfile"},{name:"--path",description:"Specify a different path than the system default"}]},{name:"show",description:"Show the source location of a particular gem in the bundle",args:{name:"gem",generators:n,isOptional:!0},options:[{name:"--paths",description:"List the paths of all gems that are required by your Gemfile"}]},{name:"outdated",description:"Show all of the outdated gems in the current bundle",options:[{name:"--local",description:"Do not attempt to fetch gems remotely and use the gem cache instead"},{name:"--pre",description:"Check for newer pre-release gems"},{name:"--source",description:"Check against a specific source"},{name:"--strict",description:"Only list newer versions allowed by your Gemfile requirements"},{name:["--parseable","--porcelain"],description:"Use minimal formatting for more parseable output"},{name:"--group",description:"List gems from a specific group"},{name:"--groups",description:"List gems organized by groups"},{name:"--update-strict",description:"Strict conservative resolution, do not allow any gem to be updated past latest --patch | --minor| --major"},{name:"--minor",description:"Prefer updating only to next minor version"},{name:"--major",description:"Prefer updating to next major version (default)"},{name:"--patch",description:"Prefer updating only to next patch version"},{name:"--filter-major",description:"Only list major newer versions"},{name:"--filter-minor",description:"Only list minor newer versions"},{name:"--filter-patch",description:"Only list patch newer versions"},{name:"--only-explicit",description:"Only list gems specified in your Gemfile, not their dependencies"}]},{name:"console",description:"Start an IRB session in the current bundle"},{name:"open",description:"Open an installed gem in the editor",args:{name:"gem",generators:n}},{name:"lock",description:"Generate a lockfile for your dependencies",options:[{name:"--update",description:"Ignores the existing lockfile",args:{}},{name:"--local",description:"Do not attempt to connect to rubygems.org"},{name:"--print",description:"Prints the lockfile to STDOUT instead of writing to the file\n system"},{name:"--lockfile",description:"The path where the lockfile should be written to",args:{name:"path"}},{name:"--full-index",description:"Fall back to using the single-file index of all gems"},{name:"--add-platform",description:"Add a new platform to the lockfile, re-resolving for the addi-\n tion of that platform"},{name:"--remove-platform",description:"Remove a platform from the lockfile"},{name:"--patch",description:"If updating, prefer updating only to next patch version"},{name:"--minor",description:"If updating, prefer updating only to next minor version"},{name:"--major",description:"If updating, prefer updating to next major version (default)"},{name:"--strict",description:"If updating, do not allow any gem to be updated past latest --patch | --minor | --major"},{name:"--conservative",description:"If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"}]},{name:"viz",description:"Generate a visual representation of your dependencies",options:[{name:["--file","-f"],description:"The name to use for the generated file. See --format option"},{name:["--format","-F"],description:"This is output format option"},{name:["--requirements","-R"],description:"Set to show the version of each required dependency"},{name:["--version","-v"],description:"Set to show each gem version"},{name:["--without","-W"],description:"Exclude gems that are part of the specified named group"}]},{name:"init",description:"Generate a simple Gemfile, placed in the current directory",options:[{name:"--gemspec",description:"Use the specified .gemspec to create the Gemfile"}]},{name:"gem",description:"Create a simple gem, suitable for development with Bundler",options:[{name:["--exe","-b","--bin"],description:"Specify that Bundler should create a binary executable"},{name:"--no-exe",description:"Do not create a binary"},{name:"--coc",description:"Add a CODE_OF_CONDUCT.md file to the root of the generated project"},{name:"--no-coc",description:"Do not create a CODE_OF_CONDUCT.md"},{name:"--ext",description:"Add boilerplate for C extension code to the generated project"},{name:"--no-ext",description:"Do not add C extension code"},{name:"--mit",description:"Add an MIT license"},{name:"--no-mit",description:"Do not create a LICENSE.txt"},{name:["-t","--test"],description:"Specify the test framework that Bundler should use",args:{}},{name:["-e","--edit"],description:"Open the resulting gemspec in EDITOR",args:{}}]},{name:"platform",description:"Display platform compatibility information",options:[{name:"--ruby",description:"It will display the ruby directive information so you don't have to parse it from the Gemfile"}]},{name:"clean",description:"Clean up unused gems in your Bundler directory",options:[{name:"--dry-run",description:"Print the changes, but do not clean the unused gems"},{name:"--force",description:"Force a clean even if --path is not set"}]},{name:"doctor",description:"Display warnings about common problems",options:[{name:"--quiet",description:"Only output warnings and errors"},{name:"--gemfile",description:"The location of the Gemfile which Bundler should use",args:{}}]}],options:[{name:"--no-color",description:"Print all output without color"},{name:["--retry","-r"],description:"Specify the number of times you wish to attempt network commands"},{name:["--verbose","-V"],description:"Print out additional logging information"}]};t.default=i},2341:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filepaths=function(e){return{custom:async(t,n,i)=>[{type:"file",_internal:{fileExtensions:e.extensions||[]}},{type:"folder"}],trigger:(e,t)=>!0,getQueryTerm:e=>e}}},2441:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"shred",description:"Overwrite a file to hide its contents, and optionally delete it",options:[{name:["--force","-f"],description:"Change permissions to allow writing if necessary"},{name:["--iterations","-n"],description:"Overwrite N times instead of the default (3)",args:{name:"N",suggestions:["3","5","7"],default:"3"}},{name:"--random-source",description:"Get random bytes from FILE",args:{name:"FILE",suggestions:["/dev/urandom","/dev/random"],default:"/dev/urandom",template:"filepaths"}},{name:["--size","-s"],description:"Shred this many bytes (suffixes like K, M, G accepted)",args:{name:"N",suggestions:["1K","1M","1G"]}},{name:"--remove",description:"Like -u but give control on HOW to delete",args:{name:"HOW",description:"'unlink' => use a standard unlink call, 'wipe' => also first obfuscate bytes in the name, 'wipesync' => also sync each obfuscated byte to the device",suggestions:["unlink","wipe","wipesync"],default:"wipesync"}},{name:["--verbose","-v"],description:"Show progress"},{name:["--exact","-x"],description:"Do not round file sizes up to the next full block; this is the default for non-regular files"},{name:["--zero","-z"],description:"Add a final overwrite with zeros to hide shredding"},{name:"--help",description:"Display this help and exit"},{name:"--version",description:"Output version information and exit"}],args:{name:"FILE",description:"File(s) to shred",isVariadic:!0,template:"filepaths"}}},2449:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.configHosts=t.knownHosts=void 0;const n=/(?:[a-zA-Z0-9-]+\.)+[a-zA-Z0-9]+/,i=async(e,t,n,a)=>{const s=((e,t,n)=>e.startsWith("/")||e.startsWith("~/")||"~"===e?e.replace("~",n):t.startsWith("/")||t.startsWith("~/")||"~"===t?t.replace("~",n)+(t.replace("~",n).endsWith("/")?"":"/")+e:t+(t.endsWith("/")?"":"/")+e)(e,a,n),{stdout:o}=await t({command:"cat",args:[s]}),r=o.split("\n").map(e=>e.trim()),c=r.filter(e=>e.toLowerCase().startsWith("include ")).map(e=>e.split(" ")[1]),l=await Promise.all(c.map(e=>i(e,t,n,a)));return[...r,...l.flat()]};t.knownHosts={custom:async(e,t,i)=>{const{stdout:a}=await t({command:"cat",args:[`${i.environmentVariables.HOME}/.ssh/known_hosts`]});return a.split("\n").map(e=>{const t=n.exec(e);if(t)return String(t)}).filter((e,t,n)=>e&&n.indexOf(e)===t).map(t=>({name:(e[1].endsWith("@")?e[1]:"")+t,description:"SSH host"}))},trigger:"@"},t.configHosts={custom:async(e,t,n)=>(await i("config",t,n.environmentVariables.HOME,"~/.ssh")).filter(e=>e.trim().toLowerCase().startsWith("host ")&&!e.includes("*")).map(e=>({name:e.split(" ")[1],description:"SSH host",priority:90}))};const a={name:"ssh",description:"Log into a remote machine",args:{name:"user@hostname",description:"Address of remote machine to log into",generators:[t.knownHosts,t.configHosts,{template:"history"}]},options:[{name:"-1",description:"Forces ssh to try protocol version 1 only"},{name:"-2",description:"Forces ssh to try protocol version 2 only"},{name:"-4",description:"Forces ssh to use IPv4 addresses only"},{name:"-6",description:"Forces ssh to use IPv6 addresses only"},{name:"-A",description:"Enables forwarding of the authentication agent connection"},{name:"-a",description:"Disables forwarding of the authentication agent connection"},{name:"-b",description:"Use bind_address on the local machine as the source address of the connection",args:{name:"bind address",description:"Source address of the connection"}},{name:"-C",description:"Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11 and TCP connections)"},{name:"-c",description:"Selects the cipher specification for encrypting the session",args:{name:"cipher spec",description:"The selected cipher specification"}},{name:"-D",description:"Specifies a local 'dynamic' application-level port forwarding",args:{name:"port",description:"Port of the bind address"}},{name:"-e",description:"Sets the escape character for sessions with a pty (default: '~')",args:{name:"escape char",description:"Specified escape character"}},{name:"-F",description:"Specifies an alternative per-user configuration file",args:{name:"configfile",description:"Path to alternative config file",template:"filepaths"}},{name:"-f",description:"Requests ssh to go to background just before command execution"},{name:"-g",description:"Allows remote hosts to connect to local forwarded ports"},{name:"-I",description:"Specify the PKCS#11 shared library ssh should use to communicate with a PKCS#11 token providing the user's private RSA key",args:{name:"pkcs11"}},{name:"-i",description:"Selects a file from which the identity (private key) for public key authentication is read",isRepeatable:!0,args:{name:"identity file",description:"Path to identity (private key)",template:"filepaths"}},{name:"-K",description:"Enables GSSAPI-based authentication and forwarding (delegation) of GSSAPI credentials to the server"},{name:"-k",description:"Disables forwarding (delegation) of GSSAPI credentials to the server"},{name:"-L",description:"Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side",args:{name:"port:host:hostport",description:"Local port, followed by host and host port to forward to"}},{name:"-l",description:"Specifies the user to log in as on the remote machine",args:{name:"login name",description:"Name of user logging into remote machine"}},{name:"-M",description:"Places the ssh client into ``master'' mode for connection sharing",isRepeatable:!0},{name:"-m",description:"Additionally, for protocol version 2 a comma-separated list of MAC (message authentication code) algorithms can be specified in order of preference",args:{name:"mac spec"}},{name:"-N",description:"Do not execute a remote command"},{name:"-n",description:"Redirects stdin from /dev/null (actually, prevents reading from stdin)"},{name:"-O",description:"Control an active connection multiplexing master process",args:{name:"ctl cmd",description:"Command that's passed to the master process"}},{name:"-o",description:"Can be used to give options in the format used in the configuration file",isRepeatable:!0,args:{name:"option",description:"Options that can be specified in the format of the config file",suggestions:[{name:"AddressFamily"},{name:"BatchMode"},{name:"BindAddress"},{name:"ChallengeResponseAuthentication"},{name:"CheckHostIP"},{name:"Cipher"},{name:"Ciphers"},{name:"ClearAllForwardings"},{name:"Compression"},{name:"CompressionLevel"},{name:"ConnectionAttempts"},{name:"ConnectTimeout"},{name:"ControlMaster"},{name:"ControlPath"},{name:"ControlPersist"},{name:"DynamicForward"},{name:"EscapeChar"},{name:"ExitOnForwardFailure"},{name:"ForwardAgent"},{name:"ForwardX11"},{name:"ForwardX11Timeout"},{name:"ForwardX11Trusted"},{name:"GatewayPorts"},{name:"GlobalKnownHostsFile"},{name:"GSSAPIAuthentication"},{name:"GSSAPIDelegateCredentials"},{name:"HashKnownHosts"},{name:"Host"},{name:"HostbasedAuthentication"},{name:"HostKeyAlgorithms"},{name:"HostKeyAlias"},{name:"HostName"},{name:"IdentityFile"},{name:"IdentitiesOnly"},{name:"IPQoS"},{name:"KbdInteractiveAuthentication"},{name:"KbdInteractiveDevices"},{name:"KexAlgorithms"},{name:"LocalCommand"},{name:"LocalForward"},{name:"LogLevel"},{name:"MACs"},{name:"NoHostAuthenticationForLocalhost"},{name:"NumberOfPasswordPrompts"},{name:"PasswordAuthentication"},{name:"PermitLocalCommand"},{name:"PKCS11Provider"},{name:"Port"},{name:"PreferredAuthentications"},{name:"Protocol"},{name:"ProxyCommand"},{name:"PubkeyAuthentication"},{name:"RekeyLimit"},{name:"RequestTTY"},{name:"RhostsRSAAuthentication"},{name:"RSAAuthentication"},{name:"SendEnv"},{name:"ServerAliveInterval"},{name:"ServerAliveCountMax"},{name:"StrictHostKeyChecking"},{name:"TCPKeepAlive"},{name:"Tunnel"},{name:"TunnelDevice"},{name:"UsePrivilegedPort"},{name:"User"},{name:"UserKnownHostsFile"},{name:"VerifyHostKeyDNS"},{name:"VisualHostKey"},{name:"XAuthLocation"}]}},{name:"-p",description:"Port to connect to on the remote host",args:{name:"port",description:"Port to connect to"}},{name:"-q",description:"Quiet mode. Causes most warning and diagnostic messages to be suppressed"},{name:"-R",description:"Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side",args:{name:"port:host:hostport",description:"Local port, followed by host and host port to forward to"}},{name:"-S",description:"Specifies the location of a control socket for connection sharing, or the string 'none' to disable connection sharing",args:{name:"ctl_path",description:"Location of the control socket",template:"filepaths"}},{name:"-s",description:"May be used to request invocation of a subsystem on the remote system"},{name:"-T",description:"Disable pseudo-tty allocation"},{name:"-t",description:"Force pseudo-tty allocation",isRepeatable:!0},{name:"-V",description:"Display the version number and exit"},{name:"-v",description:"Verbose mode. Causes ssh to print debugging messages about its progress",isRepeatable:3},{name:"-W",description:"Requests that standard input and output on the client be forwarded to host on port over the secure channel",args:{name:"host:port",description:"Host and port to forward to"}},{name:"-w",description:"Requests tunnel device forwarding with the specified tun(4) devices between the client (local_tun) and the server (remote_tun)",args:{name:"local tun",description:"Local device to forward to"}},{name:"-X",description:"Enables X11 forwarding"},{name:"-x",description:"Disables X11 forwarding"},{name:"-Y",description:"Enables trusted X11 forwarding"},{name:"-y",description:"Send log information using the syslog(3) system module"}]};t.default=a},2488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"whereis",description:"Locate the binary, source, and manual page files for a command",options:[{name:"-b",description:"Search only for binaries"},{name:"-m",description:"Search only for manual sections"},{name:"-s",description:"Search only for sources"},{name:"-u",description:"Search for unusual entries"},{name:"-B",description:"Search for binaries only in the specified directory",args:{name:"directory",description:"The directory to search in",template:"folders"}},{name:"-M",description:"Search for manual pages only in the specified directory",args:{name:"directory",description:"The directory to search in",template:"folders"}},{name:"-S",description:"Search for sources only in the specified directory",args:{name:"directory",description:"The directory to search in",template:"folders"}},{name:"-f",description:"Terminate the -B, -M, and -S options"}],args:{name:"Filename",description:"The file to search for"}}},2500:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"paste",description:"The paste utility concatenates the corresponding lines of the given input files, replacing all but the last file's newline characters with a single tab character, and writes the resulting lines to standard output. If end-of-file is reached on an input file while other input files still contain data, the file is treated as if it were an endless source of empty lines",options:[{name:"-d",description:"Use one or more of the provided characters to replace the newline characters instead of the default tab. The characters in list are used circularly, i.e., when list is exhausted the first character from list is reused. This continues until a line from the last input file (in default operation) or the last line in each file (using the -s option) is displayed, at which time paste begins selecting characters from the beginning of list again",args:{name:"list",suggestions:["\\t\\n","\\t","\\n","\\\\","\\0"],default:"\\n"}},{name:"-s",description:"Concatenate all of the lines of each separate input file in command line order. The newline character of every line except the last line in each input file is replaced with the tab character, unless otherwise specified by the -d option"}],args:{name:"file",template:"filepaths"}}},2682:(e,t)=>{"use strict";function n(e){return 1===e.length?e[0]:e}function i(e){const{name:t,args:i}=e;return{name:n(t),args:i}}Object.defineProperty(t,"__esModule",{value:!0}),t.revertSubcommand=function e(t,a){const{name:s,subcommands:o,options:r,persistentOptions:c,args:l}=t,d={name:n(s),subcommands:0!==Object.values(o).length?Object.values(o).map(t=>e(t,a)):void 0,options:0!==Object.values(r).length?[...Object.values(r).map(e=>i(e)),...Object.values(c).map(e=>i(e))]:void 0,args:0!==Object.values(l).length?n(Object.values(l)):void 0};return a(t,d)}},2717:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.gitGenerators=void 0;const r=o(n(1398)),c=e=>e.startsWith("warning:")||e.startsWith("error:")?e.split("\n").slice(1).join("\n"):e,l=(e,t)=>{const n=c(e);return n.startsWith("fatal:")?[]:[...n.split("\n").map(e=>{const t=e.trim().split(" ");return{working:t[0],file:t.slice(1).join(" ").trim()}}).map(e=>{const n=e.file.replace(/^"|"$/g,"");let i="";try{i=n.split(".").slice(-1)[0]}catch(e){}return n.endsWith("/")&&(i="folder"),{name:n,icon:`fig://icon?type=${i}&color=ff0000&badge=${e.working}`,description:"Changed tracked files",priority:t.some(e=>e.includes(n))?50:100}})]},d=(e={})=>t=>{const{insertWithoutRemotes:n=!1}=e,i=c(t);if(i.startsWith("fatal:"))return[];const a=new Set;return i.split("\n").filter(e=>e.trim()&&!e.trim().startsWith("HEAD")).map(e=>{const t=e.split("|");if(t.length<5){let t=e.trim();const i=e.match(/\S+/g);if(i&&i.length>1){if("*"===i[0])return e.includes("HEAD detached")?null:{name:e.replaceAll("*","").trim(),description:"Current branch",priority:100,icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`};"+"===i[0]&&(t=e.replaceAll("+","").trim())}let a="Branch";n&&t.startsWith("remotes/")&&(t=t.slice(t.indexOf("/",8)+1),a="Remote branch");const s=t.indexOf(" ");return-1!==s&&(t=t.slice(0,s)),{name:t,description:a,icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`,priority:75}}let i=t[0].trim();const a=t[1].trim(),s=t[2].trim(),o=t[3].trim(),c=`${t[4].trim()} • ${a} • ${s} • ${o}`;return n&&i.startsWith("remotes/")&&(i=i.slice(i.indexOf("/",8)+1)),{name:i,description:c,icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`,priority:75}}).filter(e=>!!e&&!a.has(e.name)&&(a.add(e.name),!0))},m=["git","--no-optional-locks","for-each-ref","--sort=-committerdate","--format=%(refname:short)|%(authorname)|%(objectname:short)|%(subject)|%(committerdate:relative)"];t.gitGenerators={commits:{script:["git","--no-optional-locks","log","--oneline","-n","1000"],postProcess:function(e){const t=c(e);if(t.startsWith("fatal:"))return[];const n=t.split("\n"),i=n.length>0?n[0]:void 0,a=i&&i.length>0?i.indexOf(" "):7,s=a+1;return n.map(e=>({name:e.substring(0,a),icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmCommit}`,description:e.substring(s)}))}},aliases:{script:["git","--no-optional-locks","config","--get-regexp","^alias."],cache:{strategy:"stale-while-revalidate"},postProcess:e=>{const t=e.split("\n").map(e=>{const[t,...n]=e.slice(6).split(" ");return{name:t,description:`Alias for '${n.join(" ")}'`,icon:"fig://icon?type=commandkey"}}),n=new Set;return t.filter(e=>!n.has(e.name)&&(n.add(e.name),!0))}},revs:{script:["git","rev-list","--all","--oneline"],postProcess:function(e){const t=c(e);return t.startsWith("fatal:")?[]:t.split("\n").map(e=>({name:e.substring(0,7),icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmCommit}`,description:e.substring(7)}))}},stashes:{script:["git","--no-optional-locks","stash","list"],postProcess:function(e){const t=c(e);return t.startsWith("fatal:")?[]:t.split("\n").map(e=>({name:e.split(":").slice(2).join(":"),insertValue:e.split(":")[0],icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmStash}`}))}},treeish:{script:["git","--no-optional-locks","diff","--cached","--name-only"],postProcess:function(e,t){const n=c(e);return n.startsWith("fatal:")?[]:n.split("\n").map(e=>({name:e,insertValue:(t.includes("--")?"":"-- ")+e,icon:"fig://icon?type=file",description:"Staged file"}))}},remoteLocalBranches:{script:[...m,"refs/heads/","refs/remotes/"],postProcess:d({insertWithoutRemotes:!0})},localBranches:{script:[...m,"refs/heads/"],postProcess:d({insertWithoutRemotes:!0})},localOrRemoteBranches:{custom:async(e,t)=>{const n=d({insertWithoutRemotes:!0}),i=e.includes("-r")?"refs/remotes/":"refs/heads/";return n?.((await t({command:m[0],args:[...m.slice(1),i]})).stdout,e)}},remotes:{script:["git","--no-optional-locks","remote","-v"],postProcess:function(e){const t=e.split("\n").reduce((e,t)=>{const n=t.split("\t"),i=n[0],a=n[1].split(" ")[0];return e[i]=a,e},{});return Object.keys(t).map(e=>({name:e,icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmRemote}`,description:"Remote"}))}},tags:{script:["git","--no-optional-locks","tag","--list","--sort=-committerdate"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmTag}`}))}},files_for_staging:{script:["git","--no-optional-locks","status","--short"],postProcess:(e,t)=>{const n=c(e);if(n.startsWith("fatal:"))return[];let i=n.split("\n").map(e=>{const t=["M","A"].includes(e.charAt(0)),n=(e=e.trim()).split(" ");return{working:n[0],file:n.slice(1).join(" ").trim(),alreadyAdded:t}});const a=n.split("\n").map(e=>e.slice(0,e.lastIndexOf("/")+1).trim().split(" ").slice(1).join(" ").trim()),s=[];if(a.length>=2){let e=a[0],t=1;for(let n=1;n<a.length;n++)a[n].includes(e)&&n+1!==a.length?t++:(t>=2&&s.push(e),t=1),e=a[n]}return i=i.filter(e=>{const n=e.file.replace(/^"|"$/g,"");return!t.some(e=>e===n||e.endsWith("*")&&n.startsWith(e.slice(0,-1))||e.startsWith("*")&&n.endsWith(e.slice(1)))}),[...s.map(e=>({name:e+"*",description:"Wildcard",icon:"fig://icon?type=asterisk"})),...i.map(e=>{const t=e.file.replace(/^"|"$/g,"");let n="";try{n=t.split(".").slice(-1)[0]}catch(e){}t.endsWith("/")&&(n="folder");const i=e.alreadyAdded?50:100;return{name:t,icon:`fig://icon?type=${n}&color=ff0000&badge=${e.working}`,description:"Changed file",priority:i}})]}},getStagedFiles:{script:["git","--no-optional-locks","status","--short"],postProcess:(e,t)=>{const n=c(e);if(n.startsWith("fatal:"))return[];const i=n.split("\n").filter(e=>e.match(/^M /)||e.match(/A /));return l(i.join("\n"),t)}},getUnstagedFiles:{script:["git","--no-optional-locks","diff","--name-only"],splitOn:"\n"},getChangedTrackedFiles:{script:["git","--no-optional-locks","status","--short"],postProcess:(e,t)=>{const n=c(e);if(n.startsWith("fatal:"))return[];let i;return i=t.includes("--staged")||t.includes("--cached")?n.split("\n").filter(e=>e.match(/^M /)||e.match(/A /)):n.split("\n").filter(e=>e.match(/M /)||e.match(/A /)),l(i.join("\n"),t)}}};const p=[{name:"add.ignore-errors",description:"Tells 'git add' to continue adding files when some files cannot be added due to indexing errors. Equivalent to the `--ignore-errors` option of git-add[1]. `add.ignore-errors` is deprecated, as it does not follow the usual naming convention for configuration variables",deprecated:!0,hidden:!0},{name:"add.interactive.useBuiltin",description:"Set to `false` to fall back to the original Perl implementation of the interactive version of git-add[1] instead of the built-in version. Is `true` by default"},{name:"advice.addEmbeddedRepo",description:"Advice on what to do when you've accidentally added one git repo inside of another"},{name:"advice.addEmptyPathspec",description:"Advice shown if a user runs the add command without providing the pathspec parameter"},{name:"advice.addIgnoredFile",description:"Advice shown if a user attempts to add an ignored file to the index"},{name:"advice.ambiguousFetchRefspec",description:"Advice shown when fetch refspec for multiple remotes map to the same remote-tracking branch namespace and causes branch tracking set-up to fail"},{name:"advice.amWorkDir",description:"Advice that shows the location of the patch file when git-am[1] fails to apply it"},{name:"advice.checkoutAmbiguousRemoteBranchName",description:"Advice shown when the argument to git-checkout[1] and git-switch[1] ambiguously resolves to a remote tracking branch on more than one remote in situations where an unambiguous argument would have otherwise caused a remote-tracking branch to be checked out. See the `checkout.defaultRemote` configuration variable for how to set a given remote to used by default in some situations where this advice would be printed"},{name:"advice.commitBeforeMerge",description:"Advice shown when git-merge[1] refuses to merge to avoid overwriting local changes"},{name:"advice.detachedHead",description:"Advice shown when you used git-switch[1] or git-checkout[1] to move to the detach HEAD state, to instruct how to create a local branch after the fact"},{name:"advice.fetchShowForcedUpdates",description:"Advice shown when git-fetch[1] takes a long time to calculate forced updates after ref updates, or to warn that the check is disabled"},{name:"advice.ignoredHook",description:"Advice shown if a hook is ignored because the hook is not set as executable"},{name:"advice.implicitIdentity",description:"Advice on how to set your identity configuration when your information is guessed from the system username and domain name"},{name:"advice.nestedTag",description:"Advice shown if a user attempts to recursively tag a tag object"},{name:"advice.pushAlreadyExists",description:"Shown when git-push[1] rejects an update that does not qualify for fast-forwarding (e.g., a tag.)"},{name:"advice.pushFetchFirst",description:"Shown when git-push[1] rejects an update that tries to overwrite a remote ref that points at an object we do not have"},{name:"advice.pushNeedsForce",description:"Shown when git-push[1] rejects an update that tries to overwrite a remote ref that points at an object that is not a commit-ish, or make the remote ref point at an object that is not a commit-ish"},{name:"advice.pushNonFFCurrent",description:"Advice shown when git-push[1] fails due to a non-fast-forward update to the current branch"},{name:"advice.pushNonFFMatching",description:"Advice shown when you ran git-push[1] and pushed 'matching refs' explicitly (i.e. you used ':', or specified a refspec that isn't your current branch) and it resulted in a non-fast-forward error"},{name:"advice.pushRefNeedsUpdate",description:"Shown when git-push[1] rejects a forced update of a branch when its remote-tracking ref has updates that we do not have locally"},{name:"advice.pushUnqualifiedRefname",description:"Shown when git-push[1] gives up trying to guess based on the source and destination refs what remote ref namespace the source belongs in, but where we can still suggest that the user push to either refs/heads/* or refs/tags/* based on the type of the source object"},{name:"advice.pushUpdateRejected",description:"Set this variable to 'false' if you want to disable 'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists', 'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate' simultaneously"},{name:"advice.resetNoRefresh",description:"Advice to consider using the `--no-refresh` option to git-reset[1] when the command takes more than 2 seconds to refresh the index after reset"},{name:"advice.resolveConflict",description:"Advice shown by various commands when conflicts prevent the operation from being performed"},{name:"advice.rmHints",description:"In case of failure in the output of git-rm[1], show directions on how to proceed from the current state"},{name:"advice.sequencerInUse",description:"Advice shown when a sequencer command is already in progress"},{name:"advice.skippedCherryPicks",description:"Shown when git-rebase[1] skips a commit that has already been cherry-picked onto the upstream branch"},{name:"advice.statusAheadBehind",description:"Shown when git-status[1] computes the ahead/behind counts for a local ref compared to its remote tracking ref, and that calculation takes longer than expected. Will not appear if `status.aheadBehind` is false or the option `--no-ahead-behind` is given"},{name:"advice.statusHints",description:"Show directions on how to proceed from the current state in the output of git-status[1], in the template shown when writing commit messages in git-commit[1], and in the help message shown by git-switch[1] or git-checkout[1] when switching branch"},{name:"advice.statusUoption",description:"Advise to consider using the `-u` option to git-status[1] when the command takes more than 2 seconds to enumerate untracked files"},{name:"advice.submoduleAlternateErrorStrategyDie",description:'Advice shown when a submodule.alternateErrorStrategy option configured to "die" causes a fatal error'},{name:"advice.submodulesNotUpdated",description:"Advice shown when a user runs a submodule command that fails because `git submodule update --init` was not run"},{name:"advice.suggestDetachingHead",description:"Advice shown when git-switch[1] refuses to detach HEAD without the explicit `--detach` option"},{name:"advice.updateSparsePath",description:"Advice shown when either git-add[1] or git-rm[1] is asked to update index entries outside the current sparse checkout"},{name:"advice.waitingForEditor",description:"Print a message to the terminal whenever Git is waiting for editor input from the user"},{name:"alias.*",insertValue:"alias.{cursor}",description:"Command aliases for the git[1] command wrapper - e.g. after defining `alias.last = cat-file commit HEAD`, the invocation `git last` is equivalent to `git cat-file commit HEAD`. To avoid confusion and troubles with script usage, aliases that hide existing Git commands are ignored. Arguments are split by spaces, the usual shell quoting and escaping is supported. A quote pair or a backslash can be used to quote them"},{name:"am.keepcr",description:"If true, git-am will call git-mailsplit for patches in mbox format with parameter `--keep-cr`. In this case git-mailsplit will not remove `\\r` from lines ending with `\\r\\n`. Can be overridden by giving `--no-keep-cr` from the command line. See git-am[1], git-mailsplit[1]"},{name:"am.threeWay",description:"By default, `git am` will fail if the patch does not apply cleanly. When set to true, this setting tells `git am` to fall back on 3-way merge if the patch records the identity of blobs it is supposed to apply to and we have those blobs available locally (equivalent to giving the `--3way` option from the command line). Defaults to `false`. See git-am[1]"},{name:"apply.ignoreWhitespace",description:"When set to 'change', tells 'git apply' to ignore changes in whitespace, in the same way as the `--ignore-space-change` option. When set to one of: no, none, never, false tells 'git apply' to respect all whitespace differences. See git-apply[1]"},{name:"apply.whitespace",description:"Tells 'git apply' how to handle whitespaces, in the same way as the `--whitespace` option. See git-apply[1]"},{name:"blame.blankBoundary",description:"Show blank commit object name for boundary commits in git-blame[1]. This option defaults to false"},{name:"blame.coloring",description:"This determines the coloring scheme to be applied to blame output. It can be 'repeatedLines', 'highlightRecent', or 'none' which is the default"},{name:"blame.date",description:"Specifies the format used to output dates in git-blame[1]. If unset the iso format is used. For supported values, see the discussion of the `--date` option at git-log[1]"},{name:"blame.ignoreRevsFile",description:"Ignore revisions listed in the file, one unabbreviated object name per line, in git-blame[1]. Whitespace and comments beginning with `#` are ignored. This option may be repeated multiple times. Empty file names will reset the list of ignored revisions. This option will be handled before the command line option `--ignore-revs-file`"},{name:"blame.markIgnoredLines",description:"Mark lines that were changed by an ignored revision that we attributed to another commit with a '?' in the output of git-blame[1]"},{name:"blame.markUnblamableLines",description:"Mark lines that were changed by an ignored revision that we could not attribute to another commit with a '*' in the output of git-blame[1]"},{name:"blame.showEmail",description:"Show the author email instead of author name in git-blame[1]. This option defaults to false"},{name:"blame.showRoot",description:"Do not treat root commits as boundaries in git-blame[1]. This option defaults to false"},{name:"branch.<name>.description",insertValue:"branch.{cursor}.description",description:"Branch description, can be edited with `git branch --edit-description`. Branch description is automatically added in the format-patch cover letter or request-pull summary"},{name:"branch.<name>.merge",insertValue:"branch.{cursor}.merge",description:"Defines, together with branch.<name>.remote, the upstream branch for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which branch to merge and can also affect 'git push' (see push.default). When in branch <name>, it tells 'git fetch' the default refspec to be marked for merging in FETCH_HEAD. The value is handled like the remote part of a refspec, and must match a ref which is fetched from the remote given by \"branch.<name>.remote\". The merge information is used by 'git pull' (which at first calls 'git fetch') to lookup the default branch for merging. Without this option, 'git pull' defaults to merge the first refspec fetched. Specify multiple values to get an octopus merge. If you wish to setup 'git pull' so that it merges into <name> from another branch in the local repository, you can point branch.<name>.merge to the desired branch, and use the relative path setting `.` (a period) for branch.<name>.remote"},{name:"branch.<name>.mergeOptions",insertValue:"branch.{cursor}.mergeOptions",description:"Sets default options for merging into branch <name>. The syntax and supported options are the same as those of git-merge[1], but option values containing whitespace characters are currently not supported"},{name:"branch.<name>.pushRemote",insertValue:"branch.{cursor}.pushRemote",description:"When on branch <name>, it overrides `branch.<name>.remote` for pushing. It also overrides `remote.pushDefault` for pushing from branch <name>. When you pull from one place (e.g. your upstream) and push to another place (e.g. your own publishing repository), you would want to set `remote.pushDefault` to specify the remote to push to for all branches, and use this option to override it for a specific branch"},{name:"branch.<name>.rebase",insertValue:"branch.{cursor}.rebase",description:'When true, rebase the branch <name> on top of the fetched branch, instead of merging the default branch from the default remote when "git pull" is run. See "pull.rebase" for doing this in a non branch-specific manner'},{name:"branch.<name>.remote",insertValue:"branch.{cursor}.remote",description:"When on branch <name>, it tells 'git fetch' and 'git push' which remote to fetch from/push to. The remote to push to may be overridden with `remote.pushDefault` (for all branches). The remote to push to, for the current branch, may be further overridden by `branch.<name>.pushRemote`. If no remote is configured, or if you are not on any branch and there is more than one remote defined in the repository, it defaults to `origin` for fetching and `remote.pushDefault` for pushing. Additionally, `.` (a period) is the current local repository (a dot-repository), see `branch.<name>.merge`'s final note below"},{name:"branch.autoSetupMerge",description:"Tells 'git branch', 'git switch' and 'git checkout' to set up new branches so that git-pull[1] will appropriately merge from the starting point branch. Note that even if this option is not set, this behavior can be chosen per-branch using the `--track` and `--no-track` options. The valid settings are: `false` -- no automatic setup is done; `true` -- automatic setup is done when the starting point is a remote-tracking branch; `always` -- automatic setup is done when the starting point is either a local branch or remote-tracking branch; `inherit` -- if the starting point has a tracking configuration, it is copied to the new branch; `simple` -- automatic setup is done only when the starting point is a remote-tracking branch and the new branch has the same name as the remote branch. This option defaults to true"},{name:"branch.autoSetupRebase",description:"When a new branch is created with 'git branch', 'git switch' or 'git checkout' that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see \"branch.<name>.rebase\"). When `never`, rebase is never automatically set to true. When `local`, rebase is set to true for tracked branches of other local branches. When `remote`, rebase is set to true for tracked branches of remote-tracking branches. When `always`, rebase will be set to true for all tracking branches. See \"branch.autoSetupMerge\" for details on how to set up a branch to track another branch. This option defaults to never"},{name:"branch.sort",description:'This variable controls the sort ordering of branches when displayed by git-branch[1]. Without the "--sort=<value>" option provided, the value of this variable will be used as the default. See git-for-each-ref[1] field names for valid values'},{name:"browser.<tool>.cmd",insertValue:"browser.{cursor}.cmd",description:"Specify the command to invoke the specified browser. The specified command is evaluated in shell with the URLs passed as arguments. (See git-web{litdd}browse[1].)"},{name:"browser.<tool>.path",insertValue:"browser.{cursor}.path",description:"Override the path for the given tool that may be used to browse HTML help (see `-w` option in git-help[1]) or a working repository in gitweb (see git-instaweb[1])"},{name:"checkout.defaultRemote",description:"When you run `git checkout <something>` or `git switch <something>` and only have one remote, it may implicitly fall back on checking out and tracking e.g. `origin/<something>`. This stops working as soon as you have more than one remote with a `<something>` reference. This setting allows for setting the name of a preferred remote that should always win when it comes to disambiguation. The typical use-case is to set this to `origin`"},{name:"checkout.guess",description:"Provides the default value for the `--guess` or `--no-guess` option in `git checkout` and `git switch`. See git-switch[1] and git-checkout[1]"},{name:"checkout.thresholdForParallelism",description:"When running parallel checkout with a small number of files, the cost of subprocess spawning and inter-process communication might outweigh the parallelization gains. This setting allows to define the minimum number of files for which parallel checkout should be attempted. The default is 100"},{name:"checkout.workers",description:"The number of parallel workers to use when updating the working tree. The default is one, i.e. sequential execution. If set to a value less than one, Git will use as many workers as the number of logical cores available. This setting and `checkout.thresholdForParallelism` affect all commands that perform checkout. E.g. checkout, clone, reset, sparse-checkout, etc"},{name:"clean.requireForce",description:"A boolean to make git-clean do nothing unless given -f, -i or -n. Defaults to true"},{name:"clone.defaultRemoteName",description:"The name of the remote to create when cloning a repository. Defaults to `origin`, and can be overridden by passing the `--origin` command-line option to git-clone[1]"},{name:"clone.filterSubmodules",description:"If a partial clone filter is provided (see `--filter` in git-rev-list[1]) and `--recurse-submodules` is used, also apply the filter to submodules"},{name:"clone.rejectShallow",description:"Reject to clone a repository if it is a shallow one, can be overridden by passing option `--reject-shallow` in command line. See git-clone[1]"},{name:"color.advice",description:"A boolean to enable/disable color in hints (e.g. when a push failed, see `advice.*` for a list). May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the error output goes to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.advice.hint",description:"Use customized color for hints"},{name:"color.blame.highlightRecent",description:"Specify the line annotation color for `git blame --color-by-age` depending upon the age of the line"},{name:"color.blame.repeatedLines",description:"Use the specified color to colorize line annotations for `git blame --color-lines`, if they come from the same commit as the preceding line. Defaults to cyan"},{name:"color.branch",description:"A boolean to enable/disable color in the output of git-branch[1]. May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the output is to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.branch.<slot>",insertValue:"color.branch.{cursor}",description:"Use customized color for branch coloration. `<slot>` is one of `current` (the current branch), `local` (a local branch), `remote` (a remote-tracking branch in refs/remotes/), `upstream` (upstream tracking branch), `plain` (other refs)"},{name:"color.decorate.<slot>",insertValue:"color.decorate.{cursor}",description:"Use customized color for 'git log --decorate' output. `<slot>` is one of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local branches, remote-tracking branches, tags, stash and HEAD, respectively and `grafted` for grafted commits"},{name:"color.diff",description:"Whether to use ANSI escape sequences to add color to patches. If this is set to `always`, git-diff[1], git-log[1], and git-show[1] will use color for all patches. If it is set to `true` or `auto`, those commands will only use color when output is to the terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.diff.<slot>",insertValue:"color.diff.{cursor}",description:"Use customized color for diff colorization. `<slot>` specifies which part of the patch to use the specified color, and is one of `context` (context text - `plain` is a historical synonym), `meta` (metainformation), `frag` (hunk header), 'func' (function in hunk header), `old` (removed lines), `new` (added lines), `commit` (commit headers), `whitespace` (highlighting whitespace errors), `oldMoved` (deleted lines), `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`, `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative` `newMovedAlternativeDimmed` (See the '<mode>' setting of '--color-moved' in git-diff[1] for details), `contextDimmed`, `oldDimmed`, `newDimmed`, `contextBold`, `oldBold`, and `newBold` (see git-range-diff[1] for details)"},{name:"color.grep",description:"When set to `always`, always highlight matches. When `false` (or `never`), never. When set to `true` or `auto`, use color only when the output is written to the terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.grep.<slot>",insertValue:"color.grep.{cursor}",description:"Use customized color for grep colorization. `<slot>` specifies which part of the line to use the specified color, and is one of"},{name:"color.interactive",description:'When set to `always`, always use colors for interactive prompts and displays (such as those used by "git-add --interactive" and "git-clean --interactive"). When false (or `never`), never. When set to `true` or `auto`, use colors only when the output is to the terminal. If unset, then the value of `color.ui` is used (`auto` by default)'},{name:"color.interactive.<slot>",insertValue:"color.interactive.{cursor}",description:"Use customized color for 'git add --interactive' and 'git clean --interactive' output. `<slot>` may be `prompt`, `header`, `help` or `error`, for four distinct types of normal output from interactive commands"},{name:"color.pager",description:"A boolean to specify whether `auto` color modes should colorize output going to the pager. Defaults to true; set this to false if your pager does not understand ANSI color codes"},{name:"color.push",description:"A boolean to enable/disable color in push errors. May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the error output goes to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.push.error",description:"Use customized color for push errors"},{name:"color.remote",description:'If set, keywords at the start of the line are highlighted. The keywords are "error", "warning", "hint" and "success", and are matched case-insensitively. May be set to `always`, `false` (or `never`) or `auto` (or `true`). If unset, then the value of `color.ui` is used (`auto` by default)'},{name:"color.remote.<slot>",insertValue:"color.remote.{cursor}",description:"Use customized color for each remote keyword. `<slot>` may be `hint`, `warning`, `success` or `error` which match the corresponding keyword"},{name:"color.showBranch",description:"A boolean to enable/disable color in the output of git-show-branch[1]. May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the output is to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.status",description:"A boolean to enable/disable color in the output of git-status[1]. May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the output is to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.status.<slot>",insertValue:"color.status.{cursor}",description:"Use customized color for status colorization. `<slot>` is one of `header` (the header text of the status message), `added` or `updated` (files which are added but not committed), `changed` (files which are changed but not added in the index), `untracked` (files which are not tracked by Git), `branch` (the current branch), `nobranch` (the color the 'no branch' warning is shown in, defaulting to red), `localBranch` or `remoteBranch` (the local and remote branch names, respectively, when branch and tracking information is displayed in the status short-format), or `unmerged` (files which have unmerged changes)"},{name:"color.transport",description:"A boolean to enable/disable color when pushes are rejected. May be set to `always`, `false` (or `never`) or `auto` (or `true`), in which case colors are used only when the error output goes to a terminal. If unset, then the value of `color.ui` is used (`auto` by default)"},{name:"color.transport.rejected",description:"Use customized color when a push was rejected"},{name:"color.ui",description:"This variable determines the default value for variables such as `color.diff` and `color.grep` that control the use of color per command family. Its scope will expand as more commands learn configuration to set a default for the `--color` option. Set it to `false` or `never` if you prefer Git commands not to use color unless enabled explicitly with some other configuration or the `--color` option. Set it to `always` if you want all output not intended for machine consumption to use color, to `true` or `auto` (this is the default since Git 1.8.4) if you want such output to use color when written to the terminal"},{name:"column.branch",description:"Specify whether to output branch listing in `git branch` in columns. See `column.ui` for details"},{name:"column.clean",description:"Specify the layout when list items in `git clean -i`, which always shows files and directories in columns. See `column.ui` for details"},{name:"column.status",description:"Specify whether to output untracked files in `git status` in columns. See `column.ui` for details"},{name:"column.tag",description:"Specify whether to output tag listing in `git tag` in columns. See `column.ui` for details"},{name:"column.ui",description:"Specify whether supported commands should output in columns. This variable consists of a list of tokens separated by spaces or commas:"},{name:"commit.cleanup",description:"This setting overrides the default of the `--cleanup` option in `git commit`. See git-commit[1] for details. Changing the default can be useful when you always want to keep lines that begin with comment character `#` in your log message, in which case you would do `git config commit.cleanup whitespace` (note that you will have to remove the help lines that begin with `#` in the commit log template yourself, if you do this)"},{name:"commit.status",description:"A boolean to enable/disable inclusion of status information in the commit message template when using an editor to prepare the commit message. Defaults to true"},{name:"commit.template",description:"Specify the pathname of a file to use as the template for new commit messages"},{name:"commit.verbose",description:"A boolean or int to specify the level of verbose with `git commit`. See git-commit[1]"},{name:"commitGraph.generationVersion",description:"Specifies the type of generation number version to use when writing or reading the commit-graph file. If version 1 is specified, then the corrected commit dates will not be written or read. Defaults to 2"},{name:"commitGraph.maxNewFilters",description:"Specifies the default value for the `--max-new-filters` option of `git commit-graph write` (c.f., git-commit-graph[1])"},{name:"commitGraph.readChangedPaths",description:"If true, then git will use the changed-path Bloom filters in the commit-graph file (if it exists, and they are present). Defaults to true. See git-commit-graph[1] for more information"},{name:"committer.email",description:"The `user.name` and `user.email` variables determine what ends up in the `author` and `committer` field of commit objects. If you need the `author` or `committer` to be different, the `author.name`, `author.email`, `committer.name` or `committer.email` variables can be set. Also, all of these can be overridden by the `GIT_AUTHOR_NAME`, `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`, `GIT_COMMITTER_EMAIL` and `EMAIL` environment variables"},{name:"completion.commands",description:"This is only used by git-completion.bash to add or remove commands from the list of completed commands. Normally only porcelain commands and a few select others are completed. You can add more commands, separated by space, in this variable. Prefixing the command with '-' will remove it from the existing list"},{name:"core.abbrev",description:'Set the length object names are abbreviated to. If unspecified or set to "auto", an appropriate value is computed based on the approximate number of packed objects in your repository, which hopefully is enough for abbreviated object names to stay unique for some time. If set to "no", no abbreviation is made and the object names are shown in their full length. The minimum length is 4'},{name:"core.alternateRefsCommand",description:"When advertising tips of available history from an alternate, use the shell to execute the specified command instead of git-for-each-ref[1]. The first argument is the absolute path of the alternate. Output must contain one hex object id per line (i.e., the same as produced by `git for-each-ref --format='%(objectname)'`)"},{name:"core.alternateRefsPrefixes",description:"When listing references from an alternate, list only references that begin with the given prefix. Prefixes match as if they were given as arguments to git-for-each-ref[1]. To list multiple prefixes, separate them with whitespace. If `core.alternateRefsCommand` is set, setting `core.alternateRefsPrefixes` has no effect"},{name:"core.askPass",description:"Some commands (e.g. svn and http interfaces) that interactively ask for a password can be told to use an external program given via the value of this variable. Can be overridden by the `GIT_ASKPASS` environment variable. If not set, fall back to the value of the `SSH_ASKPASS` environment variable or, failing that, a simple password prompt. The external program shall be given a suitable prompt as command-line argument and write the password on its STDOUT"},{name:"core.attributesFile",description:"In addition to `.gitattributes` (per-directory) and `.git/info/attributes`, Git looks into this file for attributes (see gitattributes[5]). Path expansions are made the same way as for `core.excludesFile`. Its default value is `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/attributes` is used instead"},{name:"core.autocrlf",description:'Setting this variable to "true" is the same as setting the `text` attribute to "auto" on all files and core.eol to "crlf". Set to true if you want to have `CRLF` line endings in your working directory and the repository has LF line endings. This variable can be set to \'input\', in which case no output conversion is performed'},{name:"core.bare",description:"If true this repository is assumed to be 'bare' and has no working directory associated with it. If this is the case a number of commands that require a working directory will be disabled, such as git-add[1] or git-merge[1]"},{name:"core.bigFileThreshold",description:"The size of files considered \"big\", which as discussed below changes the behavior of numerous git commands, as well as how such files are stored within the repository. The default is 512 MiB. Common unit suffixes of 'k', 'm', or 'g' are supported"},{name:"core.checkRoundtripEncoding",description:"A comma and/or whitespace separated list of encodings that Git performs UTF-8 round trip checks on if they are used in an `working-tree-encoding` attribute (see gitattributes[5]). The default value is `SHIFT-JIS`"},{name:"core.checkStat",description:"When missing or is set to `default`, many fields in the stat structure are checked to detect if a file has been modified since Git looked at it. When this configuration variable is set to `minimal`, sub-second part of mtime and ctime, the uid and gid of the owner of the file, the inode number (and the device number, if Git was compiled to use it), are excluded from the check among these fields, leaving only the whole-second part of mtime (and ctime, if `core.trustCtime` is set) and the filesize to be checked"},{name:"core.commentChar",description:"Commands such as `commit` and `tag` that let you edit messages consider a line that begins with this character commented, and removes them after the editor returns (default '#')"},{name:"core.commitGraph",description:"If true, then git will read the commit-graph file (if it exists) to parse the graph structure of commits. Defaults to true. See git-commit-graph[1] for more information"},{name:"core.compression",description:"An integer -1..9, indicating a default compression level. -1 is the zlib default. 0 means no compression, and 1..9 are various speed/size tradeoffs, 9 being slowest. If set, this provides a default to other compression variables, such as `core.looseCompression` and `pack.compression`"},{name:"core.createObject",description:"You can set this to 'link', in which case a hardlink followed by a delete of the source are used to make sure that object creation will not overwrite existing objects"},{name:"core.deltaBaseCacheLimit",description:"Maximum number of bytes per thread to reserve for caching base objects that may be referenced by multiple deltified objects. By storing the entire decompressed base objects in a cache Git is able to avoid unpacking and decompressing frequently used base objects multiple times"},{name:"core.editor",description:"Commands such as `commit` and `tag` that let you edit messages by launching an editor use the value of this variable when it is set, and the environment variable `GIT_EDITOR` is not set. See git-var[1]"},{name:"core.eol",description:"Sets the line ending type to use in the working directory for files that are marked as text (either by having the `text` attribute set, or by having `text=auto` and Git auto-detecting the contents as text). Alternatives are 'lf', 'crlf' and 'native', which uses the platform's native line ending. The default value is `native`. See gitattributes[5] for more information on end-of-line conversion. Note that this value is ignored if `core.autocrlf` is set to `true` or `input`"},{name:"core.excludesFile",description:"Specifies the pathname to the file that contains patterns to describe paths that are not meant to be tracked, in addition to `.gitignore` (per-directory) and `.git/info/exclude`. Defaults to `$XDG_CONFIG_HOME/git/ignore`. If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore` is used instead. See gitignore[5]"},{name:"core.fileMode",description:"Tells Git if the executable bit of files in the working tree is to be honored"},{name:"core.filesRefLockTimeout",description:"The length of time, in milliseconds, to retry when trying to lock an individual reference. Value 0 means not to retry at all; -1 means to try indefinitely. Default is 100 (i.e., retry for 100ms)"},{name:"core.fsmonitor",description:"If set to true, enable the built-in file system monitor daemon for this working directory (git-fsmonitor{litdd}daemon[1])"},{name:"core.fsmonitorHookVersion",description:'Sets the protocol version to be used when invoking the "fsmonitor" hook'},{name:"core.fsync",description:"A comma-separated list of components of the repository that should be hardened via the core.fsyncMethod when created or modified. You can disable hardening of any component by prefixing it with a '-'. Items that are not hardened may be lost in the event of an unclean system shutdown. Unless you have special requirements, it is recommended that you leave this option empty or pick one of `committed`, `added`, or `all`"},{name:"core.fsyncMethod",description:"A value indicating the strategy Git will use to harden repository data using fsync and related primitives"},{name:"core.fsyncObjectFiles",description:"This boolean will enable 'fsync()' when writing object files. This setting is deprecated. Use core.fsync instead"},{name:"core.gitProxy",description:'A "proxy command" to execute (as \'command host port\') instead of establishing direct connection to the remote server when using the Git protocol for fetching. If the variable value is in the "COMMAND for DOMAIN" format, the command is applied only on hostnames ending with the specified domain string. This variable may be set multiple times and is matched in the given order; the first match wins'},{name:"core.hideDotFiles",description:"(Windows-only) If true, mark newly-created directories and files whose name starts with a dot as hidden. If 'dotGitOnly', only the `.git/` directory is hidden, but no other files starting with a dot. The default mode is 'dotGitOnly'"},{name:"core.hooksPath",description:"By default Git will look for your hooks in the `$GIT_DIR/hooks` directory. Set this to different path, e.g. `/etc/git/hooks`, and Git will try to find your hooks in that directory, e.g. `/etc/git/hooks/pre-receive` instead of in `$GIT_DIR/hooks/pre-receive`"},{name:"core.ignoreCase",description:'Internal variable which enables various workarounds to enable Git to work better on filesystems that are not case sensitive, like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing finds "makefile" when Git expects "Makefile", Git will assume it is really the same file, and continue to remember it as "Makefile"'},{name:"core.ignoreStat",description:'If true, Git will avoid using lstat() calls to detect if files have changed by setting the "assume-unchanged" bit for those tracked files which it has updated identically in both the index and working tree'},{name:"core.logAllRefUpdates",description:'Enable the reflog. Updates to a ref <ref> is logged to the file "`$GIT_DIR/logs/<ref>`", by appending the new and old SHA-1, the date/time and the reason of the update, but only when the file exists. If this configuration variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`" file is automatically created for branch heads (i.e. under `refs/heads/`), remote refs (i.e. under `refs/remotes/`), note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`. If it is set to `always`, then a missing reflog is automatically created for any ref under `refs/`'},{name:"core.looseCompression",description:"An integer -1..9, indicating the compression level for objects that are not in a pack file. -1 is the zlib default. 0 means no compression, and 1..9 are various speed/size tradeoffs, 9 being slowest. If not set, defaults to core.compression. If that is not set, defaults to 1 (best speed)"},{name:"core.multiPackIndex",description:"Use the multi-pack-index file to track multiple packfiles using a single index. See git-multi-pack-index[1] for more information. Defaults to true"},{name:"core.notesRef",description:"When showing commit messages, also show notes which are stored in the given ref. The ref must be fully qualified. If the given ref does not exist, it is not an error but means that no notes should be printed"},{name:"core.packedGitLimit",description:"Maximum number of bytes to map simultaneously into memory from pack files. If Git needs to access more than this many bytes at once to complete an operation it will unmap existing regions to reclaim virtual address space within the process"},{name:"core.packedGitWindowSize",description:"Number of bytes of a pack file to map into memory in a single mapping operation. Larger window sizes may allow your system to process a smaller number of large pack files more quickly. Smaller window sizes will negatively affect performance due to increased calls to the operating system's memory manager, but may improve performance when accessing a large number of large pack files"},{name:"core.packedRefsTimeout",description:"The length of time, in milliseconds, to retry when trying to lock the `packed-refs` file. Value 0 means not to retry at all; -1 means to try indefinitely. Default is 1000 (i.e., retry for 1 second)"},{name:"core.pager",description:"Text viewer for use by Git commands (e.g., 'less'). The value is meant to be interpreted by the shell. The order of preference is the `$GIT_PAGER` environment variable, then `core.pager` configuration, then `$PAGER`, and then the default chosen at compile time (usually 'less')"},{name:"core.precomposeUnicode",description:"This option is only used by Mac OS implementation of Git. When core.precomposeUnicode=true, Git reverts the unicode decomposition of filenames done by Mac OS. This is useful when sharing a repository between Mac OS and Linux or Windows. (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7). When false, file names are handled fully transparent by Git, which is backward compatible with older versions of Git"},{name:"core.preferSymlinkRefs",description:'Instead of the default "symref" format for HEAD and other symbolic reference files, use symbolic links. This is sometimes needed to work with old scripts that expect HEAD to be a symbolic link'},{name:"core.preloadIndex",description:"Enable parallel index preload for operations like 'git diff'"},{name:"core.protectHFS",description:"If set to true, do not allow checkout of paths that would be considered equivalent to `.git` on an HFS+ filesystem. Defaults to `true` on Mac OS, and `false` elsewhere"},{name:"core.protectNTFS",description:'If set to true, do not allow checkout of paths that would cause problems with the NTFS filesystem, e.g. conflict with 8.3 "short" names. Defaults to `true` on Windows, and `false` elsewhere'},{name:"core.quotePath",description:'Commands that output paths (e.g. \'ls-files\', \'diff\'), will quote "unusual" characters in the pathname by enclosing the pathname in double-quotes and escaping those characters with backslashes in the same way C escapes control characters (e.g. `\\t` for TAB, `\\n` for LF, `\\\\` for backslash) or bytes with values larger than 0x80 (e.g. octal `\\302\\265` for "micro" in UTF-8). If this variable is set to false, bytes higher than 0x80 are not considered "unusual" any more. Double-quotes, backslash and control characters are always escaped regardless of the setting of this variable. A simple space character is not considered "unusual". Many commands can output pathnames completely verbatim using the `-z` option. The default value is true'},{name:"core.repositoryFormatVersion",description:"Internal variable identifying the repository format and layout version"},{name:"core.restrictinheritedhandles",description:"Windows-only: override whether spawned processes inherit only standard file handles (`stdin`, `stdout` and `stderr`) or all handles. Can be `auto`, `true` or `false`. Defaults to `auto`, which means `true` on Windows 7 and later, and `false` on older Windows versions"},{name:"core.safecrlf",description:'If true, makes Git check if converting `CRLF` is reversible when end-of-line conversion is active. Git will verify if a command modifies a file in the work tree either directly or indirectly. For example, committing a file followed by checking out the same file should yield the original file in the work tree. If this is not the case for the current setting of `core.autocrlf`, Git will reject the file. The variable can be set to "warn", in which case Git will only warn about an irreversible conversion but continue the operation'},{name:"core.sharedRepository",description:"When 'group' (or 'true'), the repository is made shareable between several users in a group (making sure all the files and objects are group-writable). When 'all' (or 'world' or 'everybody'), the repository will be readable by all users, additionally to being group-shareable. When 'umask' (or 'false'), Git will use permissions reported by umask(2). When '0xxx', where '0xxx' is an octal number, files in the repository will have this mode value. '0xxx' will override user's umask value (whereas the other options will only override requested parts of the user's umask value). Examples: '0660' will make the repo read/write-able for the owner and group, but inaccessible to others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a repository that is group-readable but not group-writable. See git-init[1]. False by default"},{name:"core.sparseCheckout",description:'Enable "sparse checkout" feature. See git-sparse-checkout[1] for more information'},{name:"core.sparseCheckoutCone",description:'Enables the "cone mode" of the sparse checkout feature. When the sparse-checkout file contains a limited set of patterns, this mode provides significant performance advantages. The "non-cone mode" can be requested to allow specifying more flexible patterns by setting this variable to \'false\'. See git-sparse-checkout[1] for more information'},{name:"core.splitIndex",description:"If true, the split-index feature of the index will be used. See git-update-index[1]. False by default"},{name:"core.sshCommand",description:"If this variable is set, `git fetch` and `git push` will use the specified command instead of `ssh` when they need to connect to a remote system. The command is in the same form as the `GIT_SSH_COMMAND` environment variable and is overridden when the environment variable is set"},{name:"core.symlinks",description:"If false, symbolic links are checked out as small plain files that contain the link text. git-update-index[1] and git-add[1] will not change the recorded type to regular file. Useful on filesystems like FAT that do not support symbolic links"},{name:"core.trustctime",description:"If false, the ctime differences between the index and the working tree are ignored; useful when the inode change time is regularly modified by something outside Git (file system crawlers and some backup systems). See git-update-index[1]. True by default"},{name:"core.unsetenvvars",description:"Windows-only: comma-separated list of environment variables' names that need to be unset before spawning any other process. Defaults to `PERL5LIB` to account for the fact that Git for Windows insists on using its own Perl interpreter"},{name:"core.untrackedCache",description:"Determines what to do about the untracked cache feature of the index. It will be kept, if this variable is unset or set to `keep`. It will automatically be added if set to `true`. And it will automatically be removed, if set to `false`. Before setting it to `true`, you should check that mtime is working properly on your system. See git-update-index[1]. `keep` by default, unless `feature.manyFiles` is enabled which sets this setting to `true` by default"},{name:"core.useReplaceRefs",description:"If set to `false`, behave as if the `--no-replace-objects` option was given on the command line. See git[1] and git-replace[1] for more information"},{name:"core.warnAmbiguousRefs",description:"If true, Git will warn you if the ref name you passed it is ambiguous and might match multiple refs in the repository. True by default"},{name:"core.whitespace",description:"A comma separated list of common whitespace problems to notice. 'git diff' will use `color.diff.whitespace` to highlight them, and 'git apply --whitespace=error' will consider them as errors. You can prefix `-` to disable any of them (e.g. `-trailing-space`):"},{name:"core.worktree",description:"Set the path to the root of the working tree. If `GIT_COMMON_DIR` environment variable is set, core.worktree is ignored and not used for determining the root of working tree. This can be overridden by the `GIT_WORK_TREE` environment variable and the `--work-tree` command-line option. The value can be an absolute path or relative to the path to the .git directory, which is either specified by --git-dir or GIT_DIR, or automatically discovered. If --git-dir or GIT_DIR is specified but none of --work-tree, GIT_WORK_TREE and core.worktree is specified, the current working directory is regarded as the top level of your working tree"},{name:"credential.helper",description:"Specify an external helper to be called when a username or password credential is needed; the helper may consult external storage to avoid prompting the user for the credentials. This is normally the name of a credential helper with possible arguments, but may also be an absolute path with arguments or, if preceded by `!`, shell commands"},{name:"credential.useHttpPath",description:'When acquiring credentials, consider the "path" component of an http or https URL to be important. Defaults to false. See gitcredentials[7] for more information'},{name:"credential.username",description:"If no username is set for a network authentication, use this username by default. See credential.<context>.* below, and gitcredentials[7]"},{name:"credentialCache.ignoreSIGHUP",description:"Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting"},{name:"credentialStore.lockTimeoutMS",description:"The length of time, in milliseconds, for git-credential-store to retry when trying to lock the credentials file. Value 0 means not to retry at all; -1 means to try indefinitely. Default is 1000 (i.e., retry for 1s)"},{name:"credential.<url>.helper",insertValue:"credential.{cursor}.helper",description:"Specify an external helper to be called when a username or password credential is needed; the helper may consult external storage to avoid prompting the user for the credentials. This is normally the name of a credential helper with possible arguments, but may also be an absolute path with arguments or, if preceded by `!`, shell commands"},{name:"credential.<url>.useHttpPath",insertValue:"credential.{cursor}.useHttpPath",description:'When acquiring credentials, consider the "path" component of an http or https URL to be important. Defaults to false. See gitcredentials[7] for more information'},{name:"credential.<url>.username",insertValue:"credential.{cursor}.username",description:"If no username is set for a network authentication, use this username by default. See credential.<context>.* below, and gitcredentials[7]"},{name:"credentialCache.<url>.ignoreSIGHUP",insertValue:"credentialCache.{cursor}.ignoreSIGHUP",description:"Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting"},{name:"credentialStore.<url>.lockTimeoutMS",insertValue:"credentialStore.{cursor}.lockTimeoutMS",description:"The length of time, in milliseconds, for git-credential-store to retry when trying to lock the credentials file. Value 0 means not to retry at all; -1 means to try indefinitely. Default is 1000 (i.e., retry for 1s)"},{name:"diff.<driver>.binary",insertValue:"diff.{cursor}.binary",description:"Set this option to true to make the diff driver treat files as binary. See gitattributes[5] for details"},{name:"diff.<driver>.cachetextconv",insertValue:"diff.{cursor}.cachetextconv",description:"Set this option to true to make the diff driver cache the text conversion outputs. See gitattributes[5] for details"},{name:"diff.<driver>.command",insertValue:"diff.{cursor}.command",description:"The custom diff driver command. See gitattributes[5] for details"},{name:"diff.<driver>.textconv",insertValue:"diff.{cursor}.textconv",description:"The command that the diff driver should call to generate the text-converted version of a file. The result of the conversion is used to generate a human-readable diff. See gitattributes[5] for details"},{name:"diff.<driver>.wordRegex",insertValue:"diff.{cursor}.wordRegex",description:"The regular expression that the diff driver should use to split words in a line. See gitattributes[5] for details"},{name:"diff.<driver>.xfuncname",insertValue:"diff.{cursor}.xfuncname",description:"The regular expression that the diff driver should use to recognize the hunk header. A built-in pattern may also be used. See gitattributes[5] for details"},{name:"diff.algorithm",description:"Choose a diff algorithm"},{name:"diff.autoRefreshIndex",description:"When using 'git diff' to compare with work tree files, do not consider stat-only change as changed. Instead, silently run `git update-index --refresh` to update the cached stat information for paths whose contents in the work tree match the contents in the index. This option defaults to true. Note that this affects only 'git diff' Porcelain, and not lower level 'diff' commands such as 'git diff-files'"},{name:"diff.colorMoved",description:"If set to either a valid `<mode>` or a true value, moved lines in a diff are colored differently, for details of valid modes see '--color-moved' in git-diff[1]. If simply set to true the default color mode will be used. When set to false, moved lines are not colored"},{name:"diff.colorMovedWS",description:"When moved lines are colored using e.g. the `diff.colorMoved` setting, this option controls the `<mode>` how spaces are treated for details of valid modes see '--color-moved-ws' in git-diff[1]"},{name:"diff.context",description:"Generate diffs with <n> lines of context instead of the default of 3. This value is overridden by the -U option"},{name:"diff.dirstat",description:"A comma separated list of `--dirstat` parameters specifying the default behavior of the `--dirstat` option to git-diff[1] and friends. The defaults can be overridden on the command line (using `--dirstat=<param1,param2,...>`). The fallback defaults (when not changed by `diff.dirstat`) are `changes,noncumulative,3`. The following parameters are available:"},{name:"diff.external",description:'If this config variable is set, diff generation is not performed using the internal diff machinery, but using the given command. Can be overridden with the `GIT_EXTERNAL_DIFF\' environment variable. The command is called with parameters as described under "git Diffs" in git[1]. Note: if you want to use an external diff program only on a subset of your files, you might want to use gitattributes[5] instead'},{name:"diff.guitool",description:"Controls which diff tool is used by git-difftool[1] when the -g/--gui flag is specified. This variable overrides the value configured in `merge.guitool`. The list below shows the valid built-in values. Any other value is treated as a custom diff tool and requires that a corresponding difftool.<guitool>.cmd variable is defined"},{name:"diff.ignoreSubmodules",description:"Sets the default value of --ignore-submodules. Note that this affects only 'git diff' Porcelain, and not lower level 'diff' commands such as 'git diff-files'. 'git checkout' and 'git switch' also honor this setting when reporting uncommitted changes. Setting it to 'all' disables the submodule summary normally shown by 'git commit' and 'git status' when `status.submoduleSummary` is set unless it is overridden by using the --ignore-submodules command-line option. The 'git submodule' commands are not affected by this setting. By default this is set to untracked so that any untracked submodules are ignored"},{name:"diff.indentHeuristic",description:"Set this option to `false` to disable the default heuristics that shift diff hunk boundaries to make patches easier to read"},{name:"diff.interHunkContext",description:"Show the context between diff hunks, up to the specified number of lines, thereby fusing the hunks that are close to each other. This value serves as the default for the `--inter-hunk-context` command line option"},{name:"diff.mnemonicPrefix",description:'If set, \'git diff\' uses a prefix pair that is different from the standard "a/" and "b/" depending on what is being compared. When this configuration is in effect, reverse diff output also swaps the order of the prefixes:'},{name:"diff.noprefix",description:"If set, 'git diff' does not show any source or destination prefix"},{name:"diff.orderFile",description:"File indicating how to order files within a diff. See the '-O' option to git-diff[1] for details. If `diff.orderFile` is a relative pathname, it is treated as relative to the top of the working tree"},{name:"diff.relative",description:"If set to 'true', 'git diff' does not show changes outside of the directory and show pathnames relative to the current directory"},{name:"diff.renameLimit",description:"The number of files to consider in the exhaustive portion of copy/rename detection; equivalent to the 'git diff' option `-l`. If not set, the default value is currently 1000. This setting has no effect if rename detection is turned off"},{name:"diff.renames",description:'Whether and how Git detects renames. If set to "false", rename detection is disabled. If set to "true", basic rename detection is enabled. If set to "copies" or "copy", Git will detect copies, as well. Defaults to true. Note that this affects only \'git diff\' Porcelain like git-diff[1] and git-log[1], and not lower level commands such as git-diff-files[1]'},{name:"diff.statGraphWidth",description:"Limit the width of the graph part in --stat output. If set, applies to all commands generating --stat output except format-patch"},{name:"diff.submodule",description:'Specify the format in which differences in submodules are shown. The "short" format just shows the names of the commits at the beginning and end of the range. The "log" format lists the commits in the range like git-submodule[1] `summary` does. The "diff" format shows an inline diff of the changed contents of the submodule. Defaults to "short"'},{name:"diff.suppressBlankEmpty",description:"A boolean to inhibit the standard behavior of printing a space before each empty output line. Defaults to false"},{name:"diff.tool",description:"Controls which diff tool is used by git-difftool[1]. This variable overrides the value configured in `merge.tool`. The list below shows the valid built-in values. Any other value is treated as a custom diff tool and requires that a corresponding difftool.<tool>.cmd variable is defined"},{name:"diff.wordRegex",description:'A POSIX Extended Regular Expression used to determine what is a "word" when performing word-by-word difference calculations. Character sequences that match the regular expression are "words", all other characters are *ignorable* whitespace'},{name:"diff.wsErrorHighlight",description:"Highlight whitespace errors in the `context`, `old` or `new` lines of the diff. Multiple values are separated by comma, `none` resets previous values, `default` reset the list to `new` and `all` is a shorthand for `old,new,context`. The whitespace errors are colored with `color.diff.whitespace`. The command line option `--ws-error-highlight=<kind>` overrides this setting"},{name:"difftool.<tool>.cmd",insertValue:"difftool.{cursor}.cmd",description:"Specify the command to invoke the specified diff tool. The specified command is evaluated in shell with the following variables available: 'LOCAL' is set to the name of the temporary file containing the contents of the diff pre-image and 'REMOTE' is set to the name of the temporary file containing the contents of the diff post-image"},{name:"difftool.<tool>.path",insertValue:"difftool.{cursor}.path",description:"Override the path for the given tool. This is useful in case your tool is not in the PATH"},{name:"difftool.prompt",description:"Prompt before each invocation of the diff tool"},{name:"extensions.objectFormat",description:"Specify the hash algorithm to use. The acceptable values are `sha1` and `sha256`. If not specified, `sha1` is assumed. It is an error to specify this key unless `core.repositoryFormatVersion` is 1"},{name:"extensions.worktreeConfig",description:"If enabled, then worktrees will load config settings from the `$GIT_DIR/config.worktree` file in addition to the `$GIT_COMMON_DIR/config` file. Note that `$GIT_COMMON_DIR` and `$GIT_DIR` are the same for the main working tree, while other working trees have `$GIT_DIR` equal to `$GIT_COMMON_DIR/worktrees/<id>/`. The settings in the `config.worktree` file will override settings from any other config files"},{name:"fastimport.unpackLimit",description:"If the number of objects imported by git-fast-import[1] is below this limit, then the objects will be unpacked into loose object files. However if the number of imported objects equals or exceeds this limit then the pack will be stored as a pack. Storing the pack from a fast-import can make the import operation complete faster, especially on slow filesystems. If not set, the value of `transfer.unpackLimit` is used instead"},{name:"feature.*",insertValue:"feature.{cursor}",description:"The config settings that start with `feature.` modify the defaults of a group of other config settings. These groups are created by the Git developer community as recommended defaults and are subject to change. In particular, new config options may be added with different defaults"},{name:"feature.experimental",description:"Enable config options that are new to Git, and are being considered for future defaults. Config settings included here may be added or removed with each release, including minor version updates. These settings may have unintended interactions since they are so new. Please enable this setting if you are interested in providing feedback on experimental features. The new default values are:"},{name:"feature.manyFiles",description:"Enable config options that optimize for repos with many files in the working directory. With many files, commands such as `git status` and `git checkout` may be slow and these new defaults improve performance:"},{name:"fetch.fsck.<msg-id>",insertValue:"fetch.fsck.{cursor}",description:"Acts like `fsck.<msg-id>`, but is used by git-fetch-pack[1] instead of git-fsck[1]. See the `fsck.<msg-id>` documentation for details"},{name:"fetch.fsck.skipList",description:"Acts like `fsck.skipList`, but is used by git-fetch-pack[1] instead of git-fsck[1]. See the `fsck.skipList` documentation for details"},{name:"fetch.fsckObjects",description:"If it is set to true, git-fetch-pack will check all fetched objects. See `transfer.fsckObjects` for what's checked. Defaults to false. If not set, the value of `transfer.fsckObjects` is used instead"},{name:"fetch.negotiationAlgorithm",description:'Control how information about the commits in the local repository is sent when negotiating the contents of the packfile to be sent by the server. Set to "consecutive" to use an algorithm that walks over consecutive commits checking each one. Set to "skipping" to use an algorithm that skips commits in an effort to converge faster, but may result in a larger-than-necessary packfile; or set to "noop" to not send any information at all, which will almost certainly result in a larger-than-necessary packfile, but will skip the negotiation step. Set to "default" to override settings made previously and use the default behaviour. The default is normally "consecutive", but if `feature.experimental` is true, then the default is "skipping". Unknown values will cause \'git fetch\' to error out'},{name:"fetch.output",description:"Control how ref update status is printed. Valid values are `full` and `compact`. Default value is `full`. See section OUTPUT in git-fetch[1] for detail"},{name:"fetch.parallel",description:"Specifies the maximal number of fetch operations to be run in parallel at a time (submodules, or remotes when the `--multiple` option of git-fetch[1] is in effect)"},{name:"fetch.prune",description:"If true, fetch will automatically behave as if the `--prune` option was given on the command line. See also `remote.<name>.prune` and the PRUNING section of git-fetch[1]"},{name:"fetch.pruneTags",description:"If true, fetch will automatically behave as if the `refs/tags/*:refs/tags/*` refspec was provided when pruning, if not set already. This allows for setting both this option and `fetch.prune` to maintain a 1=1 mapping to upstream refs. See also `remote.<name>.pruneTags` and the PRUNING section of git-fetch[1]"},{name:"fetch.recurseSubmodules",description:"This option controls whether `git fetch` (and the underlying fetch in `git pull`) will recursively fetch into populated submodules. This option can be set either to a boolean value or to 'on-demand'. Setting it to a boolean changes the behavior of fetch and pull to recurse unconditionally into submodules when set to true or to not recurse at all when set to false. When set to 'on-demand', fetch and pull will only recurse into a populated submodule when its superproject retrieves a commit that updates the submodule's reference. Defaults to 'on-demand', or to the value of 'submodule.recurse' if set"},{name:"fetch.showForcedUpdates",description:"Set to false to enable `--no-show-forced-updates` in git-fetch[1] and git-pull[1] commands. Defaults to true"},{name:"fetch.unpackLimit",description:"If the number of objects fetched over the Git native transfer is below this limit, then the objects will be unpacked into loose object files. However if the number of received objects equals or exceeds this limit then the received pack will be stored as a pack, after adding any missing delta bases. Storing the pack from a push can make the push operation complete faster, especially on slow filesystems. If not set, the value of `transfer.unpackLimit` is used instead"},{name:"fetch.writeCommitGraph",description:"Set to true to write a commit-graph after every `git fetch` command that downloads a pack-file from a remote. Using the `--split` option, most executions will create a very small commit-graph file on top of the existing commit-graph file(s). Occasionally, these files will merge and the write may take longer. Having an updated commit-graph file helps performance of many Git commands, including `git merge-base`, `git push -f`, and `git log --graph`. Defaults to false"},{name:"filter.<driver>.clean",insertValue:"filter.{cursor}.clean",description:"The command which is used to convert the content of a worktree file to a blob upon checkin. See gitattributes[5] for details"},{name:"filter.<driver>.smudge",insertValue:"filter.{cursor}.smudge",description:"The command which is used to convert the content of a blob object to a worktree file upon checkout. See gitattributes[5] for details"},{name:"format.attach",description:"Enable multipart/mixed attachments as the default for 'format-patch'. The value can also be a double quoted string which will enable attachments as the default and set the value as the boundary. See the --attach option in git-format-patch[1]"},{name:"format.cc",description:"Additional recipients to include in a patch to be submitted by mail. See the --to and --cc options in git-format-patch[1]"},{name:"format.coverFromDescription",description:"The default mode for format-patch to determine which parts of the cover letter will be populated using the branch's description. See the `--cover-from-description` option in git-format-patch[1]"},{name:"format.coverLetter",description:'A boolean that controls whether to generate a cover-letter when format-patch is invoked, but in addition can be set to "auto", to generate a cover-letter only when there\'s more than one patch. Default is false'},{name:"format.encodeEmailHeaders",description:'Encode email headers that have non-ASCII characters with "Q-encoding" (described in RFC 2047) for email transmission. Defaults to true'},{name:"format.filenameMaxLength",description:"The maximum length of the output filenames generated by the `format-patch` command; defaults to 64. Can be overridden by the `--filename-max-length=<n>` command line option"},{name:"format.from",description:'Provides the default value for the `--from` option to format-patch. Accepts a boolean value, or a name and email address. If false, format-patch defaults to `--no-from`, using commit authors directly in the "From:" field of patch mails. If true, format-patch defaults to `--from`, using your committer identity in the "From:" field of patch mails and including a "From:" field in the body of the patch mail if different. If set to a non-boolean value, format-patch uses that value instead of your committer identity. Defaults to false'},{name:"format.headers",description:"Additional email headers to include in a patch to be submitted by mail. See git-format-patch[1]"},{name:"format.notes",description:"Provides the default value for the `--notes` option to format-patch. Accepts a boolean value, or a ref which specifies where to get notes. If false, format-patch defaults to `--no-notes`. If true, format-patch defaults to `--notes`. If set to a non-boolean value, format-patch defaults to `--notes=<ref>`, where `ref` is the non-boolean value. Defaults to false"},{name:"format.numbered",description:'A boolean which can enable or disable sequence numbers in patch subjects. It defaults to "auto" which enables it only if there is more than one patch. It can be enabled or disabled for all messages by setting it to "true" or "false". See --numbered option in git-format-patch[1]'},{name:"format.outputDirectory",description:"Set a custom directory to store the resulting files instead of the current working directory. All directory components will be created"},{name:"format.pretty",description:"The default pretty format for log/show/whatchanged command, See git-log[1], git-show[1], git-whatchanged[1]"},{name:"format.signature",description:'The default for format-patch is to output a signature containing the Git version number. Use this variable to change that default. Set this variable to the empty string ("") to suppress signature generation'},{name:"format.signatureFile",description:"Works just like format.signature except the contents of the file specified by this variable will be used as the signature"},{name:"format.signOff",description:"A boolean value which lets you enable the `-s/--signoff` option of format-patch by default. *Note:* Adding the `Signed-off-by` trailer to a patch should be a conscious act and means that you certify you have the rights to submit this work under the same open source license. Please see the 'SubmittingPatches' document for further discussion"},{name:"format.subjectPrefix",description:"The default for format-patch is to output files with the '[PATCH]' subject prefix. Use this variable to change that prefix"},{name:"format.suffix",description:"The default for format-patch is to output files with the suffix `.patch`. Use this variable to change that suffix (make sure to include the dot if you want it)"},{name:"format.thread",description:"The default threading style for 'git format-patch'. Can be a boolean value, or `shallow` or `deep`. `shallow` threading makes every mail a reply to the head of the series, where the head is chosen from the cover letter, the `--in-reply-to`, and the first patch mail, in this order. `deep` threading makes every mail a reply to the previous one. A true boolean value is the same as `shallow`, and a false value disables threading"},{name:"format.useAutoBase",description:'A boolean value which lets you enable the `--base=auto` option of format-patch by default. Can also be set to "whenAble" to allow enabling `--base=auto` if a suitable base is available, but to skip adding base info otherwise without the format dying'},{name:"fsck.<msg-id>",insertValue:"fsck.{cursor}",description:"During fsck git may find issues with legacy data which wouldn't be generated by current versions of git, and which wouldn't be sent over the wire if `transfer.fsckObjects` was set. This feature is intended to support working with legacy repositories containing such data"},{name:"fsck.skipList",description:"The path to a list of object names (i.e. one unabbreviated SHA-1 per line) that are known to be broken in a non-fatal way and should be ignored. On versions of Git 2.20 and later comments ('#'), empty lines, and any leading and trailing whitespace is ignored. Everything but a SHA-1 per line will error out on older versions"},{name:"gc.<pattern>.reflogExpire",insertValue:"gc.{cursor}.reflogExpire",description:'\'git reflog expire\' removes reflog entries older than this time; defaults to 90 days. The value "now" expires all entries immediately, and "never" suppresses expiration altogether. With "<pattern>" (e.g. "refs/stash") in the middle the setting applies only to the refs that match the <pattern>'},{name:"gc.<pattern>.reflogExpireUnreachable",insertValue:"gc.{cursor}.reflogExpireUnreachable",description:'\'git reflog expire\' removes reflog entries older than this time and are not reachable from the current tip; defaults to 30 days. The value "now" expires all entries immediately, and "never" suppresses expiration altogether. With "<pattern>" (e.g. "refs/stash") in the middle, the setting applies only to the refs that match the <pattern>'},{name:"gc.aggressiveDepth",description:"The depth parameter used in the delta compression algorithm used by 'git gc --aggressive'. This defaults to 50, which is the default for the `--depth` option when `--aggressive` isn't in use"},{name:"gc.aggressiveWindow",description:"The window size parameter used in the delta compression algorithm used by 'git gc --aggressive'. This defaults to 250, which is a much more aggressive window size than the default `--window` of 10"},{name:"gc.auto",description:"When there are approximately more than this many loose objects in the repository, `git gc --auto` will pack them. Some Porcelain commands use this command to perform a light-weight garbage collection from time to time. The default value is 6700"},{name:"gc.autoDetach",description:"Make `git gc --auto` return immediately and run in background if the system supports it. Default is true"},{name:"gc.autoPackLimit",description:"When there are more than this many packs that are not marked with `*.keep` file in the repository, `git gc --auto` consolidates them into one larger pack. The default value is 50. Setting this to 0 disables it. Setting `gc.auto` to 0 will also disable this"},{name:"gc.bigPackThreshold",description:"If non-zero, all packs larger than this limit are kept when `git gc` is run. This is very similar to `--keep-largest-pack` except that all packs that meet the threshold are kept, not just the largest pack. Defaults to zero. Common unit suffixes of 'k', 'm', or 'g' are supported"},{name:"gc.cruftPacks",description:"Store unreachable objects in a cruft pack (see git-repack[1]) instead of as loose objects. The default is `false`"},{name:"gc.logExpiry",description:"If the file gc.log exists, then `git gc --auto` will print its content and exit with status zero instead of running unless that file is more than 'gc.logExpiry' old. Default is \"1.day\". See `gc.pruneExpire` for more ways to specify its value"},{name:"gc.packRefs",description:"Running `git pack-refs` in a repository renders it unclonable by Git versions prior to 1.5.1.2 over dumb transports such as HTTP. This variable determines whether 'git gc' runs `git pack-refs`. This can be set to `notbare` to enable it within all non-bare repos or it can be set to a boolean value. The default is `true`"},{name:"gc.pruneExpire",description:"When 'git gc' is run, it will call 'prune --expire 2.weeks.ago' (and 'repack --cruft --cruft-expiration 2.weeks.ago' if using cruft packs via `gc.cruftPacks` or `--cruft`). Override the grace period with this config variable. The value \"now\" may be used to disable this grace period and always prune unreachable objects immediately, or \"never\" may be used to suppress pruning. This feature helps prevent corruption when 'git gc' runs concurrently with another process writing to the repository; see the \"NOTES\" section of git-gc[1]"},{name:"gc.rerereResolved",description:"Records of conflicted merge you resolved earlier are kept for this many days when 'git rerere gc' is run. You can also use more human-readable \"1.month.ago\", etc. The default is 60 days. See git-rerere[1]"},{name:"gc.rerereUnresolved",description:"Records of conflicted merge you have not resolved are kept for this many days when 'git rerere gc' is run. You can also use more human-readable \"1.month.ago\", etc. The default is 15 days. See git-rerere[1]"},{name:"gc.worktreePruneExpire",description:"When 'git gc' is run, it calls 'git worktree prune --expire 3.months.ago'. This config variable can be used to set a different grace period. The value \"now\" may be used to disable the grace period and prune `$GIT_DIR/worktrees` immediately, or \"never\" may be used to suppress pruning"},{name:"gc.writeCommitGraph",description:"If true, then gc will rewrite the commit-graph file when git-gc[1] is run. When using `git gc --auto` the commit-graph will be updated if housekeeping is required. Default is true. See git-commit-graph[1] for details"},{name:"gitcvs.allBinary",description:"This is used if `gitcvs.usecrlfattr` does not resolve the correct '-kb' mode to use. If true, all unresolved files are sent to the client in mode '-kb'. This causes the client to treat them as binary files, which suppresses any newline munging it otherwise might do. Alternatively, if it is set to \"guess\", then the contents of the file are examined to decide if it is binary, similar to `core.autocrlf`"},{name:"gitcvs.commitMsgAnnotation",description:'Append this string to each commit message. Set to empty string to disable this feature. Defaults to "via git-CVS emulator"'},{name:"gitcvs.dbDriver",description:"Used Perl DBI driver. You can specify any available driver for this here, but it might not work. git-cvsserver is tested with 'DBD::SQLite', reported to work with 'DBD::Pg', and reported *not* to work with 'DBD::mysql'. Experimental feature. May not contain double colons (`:`). Default: 'SQLite'. See git-cvsserver[1]"},{name:"gitcvs.dbName",description:"Database used by git-cvsserver to cache revision information derived from the Git repository. The exact meaning depends on the used database driver, for SQLite (which is the default driver) this is a filename. Supports variable substitution (see git-cvsserver[1] for details). May not contain semicolons (`;`). Default: '%Ggitcvs.%m.sqlite'"},{name:"gitcvs.dbTableNamePrefix",description:"Database table name prefix. Prepended to the names of any database tables used, allowing a single database to be used for several repositories. Supports variable substitution (see git-cvsserver[1] for details). Any non-alphabetic characters will be replaced with underscores"},{name:"gitcvs.dbUser",description:"Database user and password. Only useful if setting `gitcvs.dbDriver`, since SQLite has no concept of database users and/or passwords. 'gitcvs.dbUser' supports variable substitution (see git-cvsserver[1] for details)"},{name:"gitcvs.enabled",description:"Whether the CVS server interface is enabled for this repository. See git-cvsserver[1]"},{name:"gitcvs.logFile",description:"Path to a log file where the CVS server interface well... logs various stuff. See git-cvsserver[1]"},{name:"gitcvs.usecrlfattr",description:"If true, the server will look up the end-of-line conversion attributes for files to determine the `-k` modes to use. If the attributes force Git to treat a file as text, the `-k` mode will be left blank so CVS clients will treat it as text. If they suppress text conversion, the file will be set with '-kb' mode, which suppresses any newline munging the client might otherwise do. If the attributes do not allow the file type to be determined, then `gitcvs.allBinary` is used. See gitattributes[5]"},{name:"gitweb.snapshot",description:"See gitweb.conf[5] for description"},{name:"gitweb.url",description:"See gitweb[1] for description"},{name:"gpg.<format>.program",insertValue:"gpg.{cursor}.program",description:'Use this to customize the program used for the signing format you chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still be used as a legacy synonym for `gpg.openpgp.program`. The default value for `gpg.x509.program` is "gpgsm" and `gpg.ssh.program` is "ssh-keygen"'},{name:"gpg.format",description:'Specifies which key format to use when signing with `--gpg-sign`. Default is "openpgp". Other possible values are "x509", "ssh"'},{name:"gpg.minTrustLevel",description:"Specifies a minimum trust level for signature verification. If this option is unset, then signature verification for merge operations require a key with at least `marginal` trust. Other operations that perform signature verification require a key with at least `undefined` trust. Setting this option overrides the required trust-level for all operations. Supported values, in increasing order of significance:"},{name:"gpg.program",description:'Use this custom program instead of "`gpg`" found on `$PATH` when making or verifying a PGP signature. The program must support the same command-line interface as GPG, namely, to verify a detached signature, "`gpg --verify $signature - <$file`" is run, and the program is expected to signal a good signature by exiting with code 0, and to generate an ASCII-armored detached signature, the standard input of "`gpg -bsau $key`" is fed with the contents to be signed, and the program is expected to send the result to its standard output'},{name:"gpg.ssh.allowedSignersFile",description:'A file containing ssh public keys which you are willing to trust. The file consists of one or more lines of principals followed by an ssh public key. e.g.: `user1@example.com,user2@example.com ssh-rsa AAAAX1...` See ssh-keygen(1) "ALLOWED SIGNERS" for details. The principal is only used to identify the key and is available when verifying a signature'},{name:"gpg.ssh.defaultKeyCommand",description:"This command that will be run when user.signingkey is not set and a ssh signature is requested. On successful exit a valid ssh public key prefixed with `key::` is expected in the first line of its output. This allows for a script doing a dynamic lookup of the correct public key when it is impractical to statically configure `user.signingKey`. For example when keys or SSH Certificates are rotated frequently or selection of the right key depends on external factors unknown to git"},{name:"gpg.ssh.revocationFile",description:'Either a SSH KRL or a list of revoked public keys (without the principal prefix). See ssh-keygen(1) for details. If a public key is found in this file then it will always be treated as having trust level "never" and signatures will show as invalid'},{name:"grep.column",description:"If set to true, enable the `--column` option by default"},{name:"grep.extendedRegexp",description:"If set to true, enable `--extended-regexp` option by default. This option is ignored when the `grep.patternType` option is set to a value other than 'default'"},{name:"grep.fallbackToNoIndex",description:"If set to true, fall back to git grep --no-index if git grep is executed outside of a git repository. Defaults to false"},{name:"grep.lineNumber",description:"If set to true, enable `-n` option by default"},{name:"grep.patternType",description:"Set the default matching behavior. Using a value of 'basic', 'extended', 'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`, `--fixed-strings`, or `--perl-regexp` option accordingly, while the value 'default' will use the `grep.extendedRegexp` option to choose between 'basic' and 'extended'"},{name:"grep.threads",description:"Number of grep worker threads to use. See `grep.threads` in git-grep[1] for more information"},{name:"gui.blamehistoryctx",description:"Specifies the radius of history context in days to show in gitk[1] for the selected commit, when the `Show History Context` menu item is invoked from 'git gui blame'. If this variable is set to zero, the whole history is shown"},{name:"gui.commitMsgWidth",description:'Defines how wide the commit message window is in the git-gui[1]. "75" is the default'},{name:"gui.copyBlameThreshold",description:"Specifies the threshold to use in 'git gui blame' original location detection, measured in alphanumeric characters. See the git-blame[1] manual for more information on copy detection"},{name:"gui.diffContext",description:'Specifies how many context lines should be used in calls to diff made by the git-gui[1]. The default is "5"'},{name:"gui.displayUntracked",description:'Determines if git-gui[1] shows untracked files in the file list. The default is "true"'},{name:"gui.encoding",description:"Specifies the default character encoding to use for displaying of file contents in git-gui[1] and gitk[1]. It can be overridden by setting the 'encoding' attribute for relevant files (see gitattributes[5]). If this option is not set, the tools default to the locale encoding"},{name:"gui.fastCopyBlame",description:"If true, 'git gui blame' uses `-C` instead of `-C -C` for original location detection. It makes blame significantly faster on huge repositories at the expense of less thorough copy detection"},{name:"gui.matchTrackingBranch",description:'Determines if new branches created with git-gui[1] should default to tracking remote branches with matching names or not. Default: "false"'},{name:"gui.newBranchTemplate",description:"Is used as suggested name when creating new branches using the git-gui[1]"},{name:"gui.pruneDuringFetch",description:'"true" if git-gui[1] should prune remote-tracking branches when performing a fetch. The default value is "false"'},{name:"gui.spellingDictionary",description:'Specifies the dictionary used for spell checking commit messages in the git-gui[1]. When set to "none" spell checking is turned off'},{name:"gui.trustmtime",description:"Determines if git-gui[1] should trust the file modification timestamp or not. By default the timestamps are not trusted"},{name:"guitool.<name>.argPrompt",insertValue:"guitool.{cursor}.argPrompt",description:"Request a string argument from the user, and pass it to the tool through the `ARGS` environment variable. Since requesting an argument implies confirmation, the 'confirm' option has no effect if this is enabled. If the option is set to 'true', 'yes', or '1', the dialog uses a built-in generic prompt; otherwise the exact value of the variable is used"},{name:"guitool.<name>.cmd",insertValue:"guitool.{cursor}.cmd",description:"Specifies the shell command line to execute when the corresponding item of the git-gui[1] `Tools` menu is invoked. This option is mandatory for every tool. The command is executed from the root of the working directory, and in the environment it receives the name of the tool as `GIT_GUITOOL`, the name of the currently selected file as 'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if the head is detached, 'CUR_BRANCH' is empty)"},{name:"guitool.<name>.confirm",insertValue:"guitool.{cursor}.confirm",description:"Show a confirmation dialog before actually running the tool"},{name:"guitool.<name>.needsFile",insertValue:"guitool.{cursor}.needsFile",description:"Run the tool only if a diff is selected in the GUI. It guarantees that 'FILENAME' is not empty"},{name:"guitool.<name>.noConsole",insertValue:"guitool.{cursor}.noConsole",description:"Run the command silently, without creating a window to display its output"},{name:"guitool.<name>.noRescan",insertValue:"guitool.{cursor}.noRescan",description:"Don't rescan the working directory for changes after the tool finishes execution"},{name:"guitool.<name>.prompt",insertValue:"guitool.{cursor}.prompt",description:"Specifies the general prompt string to display at the top of the dialog, before subsections for 'argPrompt' and 'revPrompt'. The default value includes the actual command"},{name:"guitool.<name>.revPrompt",insertValue:"guitool.{cursor}.revPrompt",description:"Request a single valid revision from the user, and set the `REVISION` environment variable. In other aspects this option is similar to 'argPrompt', and can be used together with it"},{name:"guitool.<name>.revUnmerged",insertValue:"guitool.{cursor}.revUnmerged",description:"Show only unmerged branches in the 'revPrompt' subdialog. This is useful for tools similar to merge or rebase, but not for things like checkout or reset"},{name:"guitool.<name>.title",insertValue:"guitool.{cursor}.title",description:"Specifies the title to use for the prompt dialog. The default is the tool name"},{name:"help.autoCorrect",description:"If git detects typos and can identify exactly one valid command similar to the error, git will try to suggest the correct command or even run the suggestion automatically. Possible config values are: - 0 (default): show the suggested command. - positive number: run the suggested command after specified"},{name:"help.browser",description:"Specify the browser that will be used to display help in the 'web' format. See git-help[1]"},{name:"help.format",description:"Override the default help format used by git-help[1]. Values 'man', 'info', 'web' and 'html' are supported. 'man' is the default. 'web' and 'html' are the same"},{name:"help.htmlPath",description:"Specify the path where the HTML documentation resides. File system paths and URLs are supported. HTML pages will be prefixed with this path when help is displayed in the 'web' format. This defaults to the documentation path of your Git installation"},{name:"http.cookieFile",description:"The pathname of a file containing previously stored cookie lines, which should be used in the Git http session, if they match the server. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format (see `curl(1)`). NOTE that the file specified with http.cookieFile is used only as input unless http.saveCookies is set"},{name:"http.curloptResolve",description:"Hostname resolution information that will be used first by libcurl when sending HTTP requests. This information should be in one of the following formats:"},{name:"http.delegation",description:"Control GSSAPI credential delegation. The delegation is disabled by default in libcurl since version 7.21.7. Set parameter to tell the server what it is allowed to delegate when it comes to user credentials. Used with GSS/kerberos. Possible values are:"},{name:"http.emptyAuth",description:"Attempt authentication without seeking a username or password. This can be used to attempt GSS-Negotiate authentication without specifying a username in the URL, as libcurl normally requires a username for authentication"},{name:"http.extraHeader",description:"Pass an additional HTTP header when communicating with a server. If more than one such entry exists, all of them are added as extra headers. To allow overriding the settings inherited from the system config, an empty value will reset the extra headers to the empty list"},{name:"http.followRedirects",description:"Whether git should follow HTTP redirects. If set to `true`, git will transparently follow any redirect issued by a server it encounters. If set to `false`, git will treat all redirects as errors. If set to `initial`, git will follow redirects only for the initial request to a remote, but not for subsequent follow-up HTTP requests. Since git uses the redirected URL as the base for the follow-up requests, this is generally sufficient. The default is `initial`"},{name:"http.lowSpeedLimit",description:"If the HTTP transfer speed is less than 'http.lowSpeedLimit' for longer than 'http.lowSpeedTime' seconds, the transfer is aborted. Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and `GIT_HTTP_LOW_SPEED_TIME` environment variables"},{name:"http.maxRequests",description:"How many HTTP requests to launch in parallel. Can be overridden by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5"},{name:"http.minSessions",description:"The number of curl sessions (counted across slots) to be kept across requests. They will not be ended with curl_easy_cleanup() until http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this value will be capped at 1. Defaults to 1"},{name:"http.noEPSV",description:'A boolean which disables using of EPSV ftp command by curl. This can helpful with some "poor" ftp servers which don\'t support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV` environment variable. Default is false (curl will use EPSV)'},{name:"http.pinnedPubkey",description:"Public key of the https service. It may either be the filename of a PEM or DER encoded public key file or a string starting with 'sha256//' followed by the base64 encoded sha256 hash of the public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will exit with an error if this option is set but not supported by cURL"},{name:"http.postBuffer",description:"Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system. For requests larger than this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests"},{name:"http.proxy",description:"Override the HTTP proxy, normally configured using the 'http_proxy', 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In addition to the syntax understood by curl, it is possible to specify a proxy string with a user name but no password, in which case git will attempt to acquire one in the same way it does for other credentials. See gitcredentials[7] for more information. The syntax thus is '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden on a per-remote basis; see remote.<name>.proxy"},{name:"http.proxyAuthMethod",description:"Set the method with which to authenticate against the HTTP proxy. This only takes effect if the configured proxy string contains a user name part (i.e. is of the form 'user@host' or 'user@host:port'). This can be overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`. Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment variable. Possible values are:"},{name:"http.proxySSLCAInfo",description:"Pathname to the file containing the certificate bundle that should be used to verify the proxy with when using an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CAINFO` environment variable"},{name:"http.proxySSLCert",description:"The pathname of a file that stores a client certificate to use to authenticate with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment variable"},{name:"http.proxySSLCertPasswordProtected",description:"Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted. Can be overridden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED` environment variable"},{name:"http.proxySSLKey",description:"The pathname of a file that stores a private key to use to authenticate with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment variable"},{name:"http.saveCookies",description:"If set, store cookies received during requests to the file specified by http.cookieFile. Has no effect if http.cookieFile is unset"},{name:"http.schannelCheckRevoke",description:'Used to enforce or disable certificate revocation checks in cURL when http.sslBackend is set to "schannel". Defaults to `true` if unset. Only necessary to disable this if Git consistently errors and the message is about checking the revocation status of a certificate. This option is ignored if cURL lacks support for setting the relevant SSL option at runtime'},{name:"http.schannelUseSSLCAInfo",description:"As of cURL v7.60.0, the Secure Channel backend can use the certificate bundle provided via `http.sslCAInfo`, but that would override the Windows Certificate Store. Since this is not desirable by default, Git will tell cURL not to use that bundle by default when the `schannel` backend was configured via `http.sslBackend`, unless `http.schannelUseSSLCAInfo` overrides this behavior"},{name:"http.sslBackend",description:'Name of the SSL backend to use (e.g. "openssl" or "schannel"). This option is ignored if cURL lacks support for choosing the SSL backend at runtime'},{name:"http.sslCAInfo",description:"File containing the certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CAINFO` environment variable"},{name:"http.sslCAPath",description:"Path containing files with the CA certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CAPATH` environment variable"},{name:"http.sslCert",description:"File containing the SSL certificate when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment variable"},{name:"http.sslCertPasswordProtected",description:"Enable Git's password prompt for the SSL certificate. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted. Can be overridden by the `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable"},{name:"http.sslKey",description:"File containing the SSL private key when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment variable"},{name:"http.sslTry",description:"Attempt to use AUTH SSL/TLS and encrypted data transfers when connecting via regular FTP protocol. This might be needed if the FTP server requires it for security reasons or you wish to connect securely whenever remote FTP server supports it. Default is false since it might trigger certificate verification errors on misconfigured servers"},{name:"http.sslVerify",description:"Whether to verify the SSL certificate when fetching or pushing over HTTPS. Defaults to true. Can be overridden by the `GIT_SSL_NO_VERIFY` environment variable"},{name:"http.sslVersion",description:"The SSL version to use when negotiating an SSL connection, if you want to force the default. The available and default version depend on whether libcurl was built against NSS or OpenSSL and the particular configuration of the crypto library in use. Internally this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl documentation for more details on the format of this option and for the ssl version supported. Currently the possible values of this option are:"},{name:"http.userAgent",description:"The HTTP USER_AGENT string presented to an HTTP server. The default value represents the version of the client Git such as git/1.7.1. This option allows you to override this value to a more common value such as Mozilla/4.0. This may be necessary, for instance, if connecting through a firewall that restricts HTTP connections to a set of common USER_AGENT strings (but not including those like git/1.7.1). Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable"},{name:"http.version",description:"Use the specified HTTP protocol version when communicating with a server. If you want to force the default. The available and default version depend on libcurl. Currently the possible values of this option are:"},{name:"http.<url>.cookieFile",insertValue:"http.{cursor}.cookieFile",description:"The pathname of a file containing previously stored cookie lines, which should be used in the Git http session, if they match the server. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format (see `curl(1)`). NOTE that the file specified with http.cookieFile is used only as input unless http.saveCookies is set"},{name:"http.<url>.curloptResolve",insertValue:"http.{cursor}.curloptResolve",description:"Hostname resolution information that will be used first by libcurl when sending HTTP requests. This information should be in one of the following formats:"},{name:"http.<url>.delegation",insertValue:"http.{cursor}.delegation",description:"Control GSSAPI credential delegation. The delegation is disabled by default in libcurl since version 7.21.7. Set parameter to tell the server what it is allowed to delegate when it comes to user credentials. Used with GSS/kerberos. Possible values are:"},{name:"http.<url>.emptyAuth",insertValue:"http.{cursor}.emptyAuth",description:"Attempt authentication without seeking a username or password. This can be used to attempt GSS-Negotiate authentication without specifying a username in the URL, as libcurl normally requires a username for authentication"},{name:"http.<url>.extraHeader",insertValue:"http.{cursor}.extraHeader",description:"Pass an additional HTTP header when communicating with a server. If more than one such entry exists, all of them are added as extra headers. To allow overriding the settings inherited from the system config, an empty value will reset the extra headers to the empty list"},{name:"http.<url>.followRedirects",insertValue:"http.{cursor}.followRedirects",description:"Whether git should follow HTTP redirects. If set to `true`, git will transparently follow any redirect issued by a server it encounters. If set to `false`, git will treat all redirects as errors. If set to `initial`, git will follow redirects only for the initial request to a remote, but not for subsequent follow-up HTTP requests. Since git uses the redirected URL as the base for the follow-up requests, this is generally sufficient. The default is `initial`"},{name:"http.<url>.lowSpeedLimit",insertValue:"http.{cursor}.lowSpeedLimit",description:"If the HTTP transfer speed is less than 'http.lowSpeedLimit' for longer than 'http.lowSpeedTime' seconds, the transfer is aborted. Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and `GIT_HTTP_LOW_SPEED_TIME` environment variables"},{name:"http.<url>.maxRequests",insertValue:"http.{cursor}.maxRequests",description:"How many HTTP requests to launch in parallel. Can be overridden by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5"},{name:"http.<url>.minSessions",insertValue:"http.{cursor}.minSessions",description:"The number of curl sessions (counted across slots) to be kept across requests. They will not be ended with curl_easy_cleanup() until http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this value will be capped at 1. Defaults to 1"},{name:"http.<url>.noEPSV",insertValue:"http.{cursor}.noEPSV",description:'A boolean which disables using of EPSV ftp command by curl. This can helpful with some "poor" ftp servers which don\'t support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV` environment variable. Default is false (curl will use EPSV)'},{name:"http.<url>.pinnedPubkey",insertValue:"http.{cursor}.pinnedPubkey",description:"Public key of the https service. It may either be the filename of a PEM or DER encoded public key file or a string starting with 'sha256//' followed by the base64 encoded sha256 hash of the public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will exit with an error if this option is set but not supported by cURL"},{name:"http.<url>.postBuffer",insertValue:"http.{cursor}.postBuffer",description:"Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system. For requests larger than this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests"},{name:"http.<url>.proxy",insertValue:"http.{cursor}.proxy",description:"Override the HTTP proxy, normally configured using the 'http_proxy', 'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In addition to the syntax understood by curl, it is possible to specify a proxy string with a user name but no password, in which case git will attempt to acquire one in the same way it does for other credentials. See gitcredentials[7] for more information. The syntax thus is '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden on a per-remote basis; see remote.<name>.proxy"},{name:"http.<url>.proxyAuthMethod",insertValue:"http.{cursor}.proxyAuthMethod",description:"Set the method with which to authenticate against the HTTP proxy. This only takes effect if the configured proxy string contains a user name part (i.e. is of the form 'user@host' or 'user@host:port'). This can be overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`. Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment variable. Possible values are:"},{name:"http.<url>.proxySSLCAInfo",insertValue:"http.{cursor}.proxySSLCAInfo",description:"Pathname to the file containing the certificate bundle that should be used to verify the proxy with when using an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CAINFO` environment variable"},{name:"http.<url>.proxySSLCert",insertValue:"http.{cursor}.proxySSLCert",description:"The pathname of a file that stores a client certificate to use to authenticate with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment variable"},{name:"http.<url>.proxySSLCertPasswordProtected",insertValue:"http.{cursor}.proxySSLCertPasswordProtected",description:"Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted. Can be overridden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED` environment variable"},{name:"http.<url>.proxySSLKey",insertValue:"http.{cursor}.proxySSLKey",description:"The pathname of a file that stores a private key to use to authenticate with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment variable"},{name:"http.<url>.saveCookies",insertValue:"http.{cursor}.saveCookies",description:"If set, store cookies received during requests to the file specified by http.cookieFile. Has no effect if http.cookieFile is unset"},{name:"http.<url>.schannelCheckRevoke",insertValue:"http.{cursor}.schannelCheckRevoke",description:'Used to enforce or disable certificate revocation checks in cURL when http.sslBackend is set to "schannel". Defaults to `true` if unset. Only necessary to disable this if Git consistently errors and the message is about checking the revocation status of a certificate. This option is ignored if cURL lacks support for setting the relevant SSL option at runtime'},{name:"http.<url>.schannelUseSSLCAInfo",insertValue:"http.{cursor}.schannelUseSSLCAInfo",description:"As of cURL v7.60.0, the Secure Channel backend can use the certificate bundle provided via `http.sslCAInfo`, but that would override the Windows Certificate Store. Since this is not desirable by default, Git will tell cURL not to use that bundle by default when the `schannel` backend was configured via `http.sslBackend`, unless `http.schannelUseSSLCAInfo` overrides this behavior"},{name:"http.<url>.sslBackend",insertValue:"http.{cursor}.sslBackend",description:'Name of the SSL backend to use (e.g. "openssl" or "schannel"). This option is ignored if cURL lacks support for choosing the SSL backend at runtime'},{name:"http.<url>.sslCAInfo",insertValue:"http.{cursor}.sslCAInfo",description:"File containing the certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CAINFO` environment variable"},{name:"http.<url>.sslCAPath",insertValue:"http.{cursor}.sslCAPath",description:"Path containing files with the CA certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CAPATH` environment variable"},{name:"http.<url>.sslCert",insertValue:"http.{cursor}.sslCert",description:"File containing the SSL certificate when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment variable"},{name:"http.<url>.sslCertPasswordProtected",insertValue:"http.{cursor}.sslCertPasswordProtected",description:"Enable Git's password prompt for the SSL certificate. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted. Can be overridden by the `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable"},{name:"http.<url>.sslKey",insertValue:"http.{cursor}.sslKey",description:"File containing the SSL private key when fetching or pushing over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment variable"},{name:"http.<url>.sslTry",insertValue:"http.{cursor}.sslTry",description:"Attempt to use AUTH SSL/TLS and encrypted data transfers when connecting via regular FTP protocol. This might be needed if the FTP server requires it for security reasons or you wish to connect securely whenever remote FTP server supports it. Default is false since it might trigger certificate verification errors on misconfigured servers"},{name:"http.<url>.sslVerify",insertValue:"http.{cursor}.sslVerify",description:"Whether to verify the SSL certificate when fetching or pushing over HTTPS. Defaults to true. Can be overridden by the `GIT_SSL_NO_VERIFY` environment variable"},{name:"http.<url>.sslVersion",insertValue:"http.{cursor}.sslVersion",description:"The SSL version to use when negotiating an SSL connection, if you want to force the default. The available and default version depend on whether libcurl was built against NSS or OpenSSL and the particular configuration of the crypto library in use. Internally this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl documentation for more details on the format of this option and for the ssl version supported. Currently the possible values of this option are:"},{name:"http.<url>.userAgent",insertValue:"http.{cursor}.userAgent",description:"The HTTP USER_AGENT string presented to an HTTP server. The default value represents the version of the client Git such as git/1.7.1. This option allows you to override this value to a more common value such as Mozilla/4.0. This may be necessary, for instance, if connecting through a firewall that restricts HTTP connections to a set of common USER_AGENT strings (but not including those like git/1.7.1). Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable"},{name:"http.<url>.version",insertValue:"http.{cursor}.version",description:"Use the specified HTTP protocol version when communicating with a server. If you want to force the default. The available and default version depend on libcurl. Currently the possible values of this option are:"},{name:"i18n.commitEncoding",description:"Character encoding the commit messages are stored in; Git itself does not care per se, but this information is necessary e.g. when importing commits from emails or in the gitk graphical history browser (and possibly at other places in the future or in other porcelains). See e.g. git-mailinfo[1]. Defaults to 'utf-8'"},{name:"i18n.logOutputEncoding",description:"Character encoding the commit messages are converted to when running 'git log' and friends"},{name:"imap.authMethod",description:"Specify authenticate method for authentication with IMAP server. If Git was built with the NO_CURL option, or if your curl version is older than 7.34.0, or if you're running git-imap-send with the `--no-curl` option, the only supported method is 'CRAM-MD5'. If this is not set then 'git imap-send' uses the basic IMAP plaintext LOGIN command"},{name:"imap.folder",description:'The folder to drop the mails into, which is typically the Drafts folder. For example: "INBOX.Drafts", "INBOX/Drafts" or "[Gmail]/Drafts". Required'},{name:"imap.host",description:"A URL identifying the server. Use an `imap://` prefix for non-secure connections and an `imaps://` prefix for secure connections. Ignored when imap.tunnel is set, but required otherwise"},{name:"imap.pass",description:"The password to use when logging in to the server"},{name:"imap.port",description:"An integer port number to connect to on the server. Defaults to 143 for imap:// hosts and 993 for imaps:// hosts. Ignored when imap.tunnel is set"},{name:"imap.preformattedHTML",description:"A boolean to enable/disable the use of html encoding when sending a patch. An html encoded patch will be bracketed with <pre> and have a content type of text/html. Ironically, enabling this option causes Thunderbird to send the patch as a plain/text, format=fixed email. Default is `false`"},{name:"imap.sslverify",description:"A boolean to enable/disable verification of the server certificate used by the SSL/TLS connection. Default is `true`. Ignored when imap.tunnel is set"},{name:"imap.tunnel",description:"Command used to setup a tunnel to the IMAP server through which commands will be piped instead of using a direct network connection to the server. Required when imap.host is not set"},{name:"imap.user",description:"The username to use when logging in to the server"},{name:"includeIf.<condition>.path",insertValue:"includeIf.{cursor}.path",description:'Special variables to include other configuration files. See the "CONFIGURATION FILE" section in the main git-config[1] documentation, specifically the "Includes" and "Conditional Includes" subsections'},{name:"index.recordEndOfIndexEntries",description:"Specifies whether the index file should include an \"End Of Index Entry\" section. This reduces index load time on multiprocessor machines but produces a message \"ignoring EOIE extension\" when reading the index using Git versions before 2.20. Defaults to 'true' if index.threads has been explicitly enabled, 'false' otherwise"},{name:"index.recordOffsetTable",description:"Specifies whether the index file should include an \"Index Entry Offset Table\" section. This reduces index load time on multiprocessor machines but produces a message \"ignoring IEOT extension\" when reading the index using Git versions before 2.20. Defaults to 'true' if index.threads has been explicitly enabled, 'false' otherwise"},{name:"index.sparse",description:"When enabled, write the index using sparse-directory entries. This has no effect unless `core.sparseCheckout` and `core.sparseCheckoutCone` are both enabled. Defaults to 'false'"},{name:"index.threads",description:"Specifies the number of threads to spawn when loading the index. This is meant to reduce index load time on multiprocessor machines. Specifying 0 or 'true' will cause Git to auto-detect the number of CPU's and set the number of threads accordingly. Specifying 1 or 'false' will disable multithreading. Defaults to 'true'"},{name:"index.version",description:"Specify the version with which new index files should be initialized. This does not affect existing repositories. If `feature.manyFiles` is enabled, then the default is 4"},{name:"init.defaultBranch",description:"Allows overriding the default branch name e.g. when initializing a new repository"},{name:"init.templateDir",description:'Specify the directory from which templates will be copied. (See the "TEMPLATE DIRECTORY" section of git-init[1].)'},{name:"instaweb.browser",description:"Specify the program that will be used to browse your working repository in gitweb. See git-instaweb[1]"},{name:"instaweb.httpd",description:"The HTTP daemon command-line to start gitweb on your working repository. See git-instaweb[1]"},{name:"instaweb.local",description:"If true the web server started by git-instaweb[1] will be bound to the local IP (127.0.0.1)"},{name:"instaweb.modulePath",description:"The default module path for git-instaweb[1] to use instead of /usr/lib/apache2/modules. Only used if httpd is Apache"},{name:"instaweb.port",description:"The port number to bind the gitweb httpd to. See git-instaweb[1]"},{name:"interactive.diffFilter",description:"When an interactive command (such as `git add --patch`) shows a colorized diff, git will pipe the diff through the shell command defined by this configuration variable. The command may mark up the diff further for human consumption, provided that it retains a one-to-one correspondence with the lines in the original diff. Defaults to disabled (no filtering)"},{name:"interactive.singleKey",description:"In interactive commands, allow the user to provide one-letter input with a single key (i.e., without hitting enter). Currently this is used by the `--patch` mode of git-add[1], git-checkout[1], git-restore[1], git-commit[1], git-reset[1], and git-stash[1]. Note that this setting is silently ignored if portable keystroke input is not available; requires the Perl module Term::ReadKey"},{name:"log.abbrevCommit",description:"If true, makes git-log[1], git-show[1], and git-whatchanged[1] assume `--abbrev-commit`. You may override this option with `--no-abbrev-commit`"},{name:"log.date",description:"Set the default date-time mode for the 'log' command. Setting a value for log.date is similar to using 'git log''s `--date` option. See git-log[1] for details"},{name:"log.decorate",description:"Print out the ref names of any commits that are shown by the log command. If 'short' is specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is specified, the full ref name (including prefix) will be printed. If 'auto' is specified, then if the output is going to a terminal, the ref names are shown as if 'short' were given, otherwise no ref names are shown. This is the same as the `--decorate` option of the `git log`"},{name:"log.diffMerges",description:"Set default diff format to be used for merge commits. See `--diff-merges` in git-log[1] for details. Defaults to `separate`"},{name:"log.excludeDecoration",description:"Exclude the specified patterns from the log decorations. This is similar to the `--decorate-refs-exclude` command-line option, but the config option can be overridden by the `--decorate-refs` option"},{name:"log.follow",description:"If `true`, `git log` will act as if the `--follow` option was used when a single <path> is given. This has the same limitations as `--follow`, i.e. it cannot be used to follow multiple files and does not work well on non-linear history"},{name:"log.graphColors",description:"A list of colors, separated by commas, that can be used to draw history lines in `git log --graph`"},{name:"log.initialDecorationSet",description:"By default, `git log` only shows decorations for certain known ref namespaces. If 'all' is specified, then show all refs as decorations"},{name:"log.mailmap",description:"If true, makes git-log[1], git-show[1], and git-whatchanged[1] assume `--use-mailmap`, otherwise assume `--no-use-mailmap`. True by default"},{name:"log.showRoot",description:"If true, the initial commit will be shown as a big creation event. This is equivalent to a diff against an empty tree. Tools like git-log[1] or git-whatchanged[1], which normally hide the root commit will now show it. True by default"},{name:"log.showSignature",description:"If true, makes git-log[1], git-show[1], and git-whatchanged[1] assume `--show-signature`"},{name:"lsrefs.unborn",description:'May be "advertise" (the default), "allow", or "ignore". If "advertise", the server will respond to the client sending "unborn" (as described in gitprotocol-v2[5]) and will advertise support for this feature during the protocol v2 capability advertisement. "allow" is the same as "advertise" except that the server will not advertise support for this feature; this is useful for load-balanced servers that cannot be updated atomically (for example), since the administrator could configure "allow", then after a delay, configure "advertise"'},{name:"mailinfo.scissors",description:'If true, makes git-mailinfo[1] (and therefore git-am[1]) act by default as if the --scissors option was provided on the command-line. When active, this features removes everything from the message body before a scissors line (i.e. consisting mainly of ">8", "8<" and "-")'},{name:"mailmap.blob",description:"Like `mailmap.file`, but consider the value as a reference to a blob in the repository. If both `mailmap.file` and `mailmap.blob` are given, both are parsed, with entries from `mailmap.file` taking precedence. In a bare repository, this defaults to `HEAD:.mailmap`. In a non-bare repository, it defaults to empty"},{name:"mailmap.file",description:"The location of an augmenting mailmap file. The default mailmap, located in the root of the repository, is loaded first, then the mailmap file pointed to by this variable. The location of the mailmap file may be in a repository subdirectory, or somewhere outside of the repository itself. See git-shortlog[1] and git-blame[1]"},{name:"maintenance.<task>.enabled",insertValue:"maintenance.{cursor}.enabled",description:"This boolean config option controls whether the maintenance task with name `<task>` is run when no `--task` option is specified to `git maintenance run`. These config values are ignored if a `--task` option exists. By default, only `maintenance.gc.enabled` is true"},{name:"maintenance.<task>.schedule",insertValue:"maintenance.{cursor}.schedule",description:'This config option controls whether or not the given `<task>` runs during a `git maintenance run --schedule=<frequency>` command. The value must be one of "hourly", "daily", or "weekly"'},{name:"maintenance.auto",description:"This boolean config option controls whether some commands run `git maintenance run --auto` after doing their normal work. Defaults to true"},{name:"maintenance.commit-graph.auto",description:"This integer config option controls how often the `commit-graph` task should be run as part of `git maintenance run --auto`. If zero, then the `commit-graph` task will not run with the `--auto` option. A negative value will force the task to run every time. Otherwise, a positive value implies the command should run when the number of reachable commits that are not in the commit-graph file is at least the value of `maintenance.commit-graph.auto`. The default value is 100"},{name:"maintenance.incremental-repack.auto",description:"This integer config option controls how often the `incremental-repack` task should be run as part of `git maintenance run --auto`. If zero, then the `incremental-repack` task will not run with the `--auto` option. A negative value will force the task to run every time. Otherwise, a positive value implies the command should run when the number of pack-files not in the multi-pack-index is at least the value of `maintenance.incremental-repack.auto`. The default value is 10"},{name:"maintenance.loose-objects.auto",description:"This integer config option controls how often the `loose-objects` task should be run as part of `git maintenance run --auto`. If zero, then the `loose-objects` task will not run with the `--auto` option. A negative value will force the task to run every time. Otherwise, a positive value implies the command should run when the number of loose objects is at least the value of `maintenance.loose-objects.auto`. The default value is 100"},{name:"maintenance.strategy",description:"This string config option provides a way to specify one of a few recommended schedules for background maintenance. This only affects which tasks are run during `git maintenance run --schedule=X` commands, provided no `--task=<task>` arguments are provided. Further, if a `maintenance.<task>.schedule` config value is set, then that value is used instead of the one provided by `maintenance.strategy`. The possible strategy strings are:"},{name:"man.<tool>.cmd",insertValue:"man.{cursor}.cmd",description:"Specify the command to invoke the specified man viewer. The specified command is evaluated in shell with the man page passed as argument. (See git-help[1].)"},{name:"man.<tool>.path",insertValue:"man.{cursor}.path",description:"Override the path for the given tool that may be used to display help in the 'man' format. See git-help[1]"},{name:"man.viewer",description:"Specify the programs that may be used to display help in the 'man' format. See git-help[1]"},{name:"merge.<driver>.driver",insertValue:"merge.{cursor}.driver",description:"Defines the command that implements a custom low-level merge driver. See gitattributes[5] for details"},{name:"merge.<driver>.name",insertValue:"merge.{cursor}.name",description:"Defines a human-readable name for a custom low-level merge driver. See gitattributes[5] for details"},{name:"merge.<driver>.recursive",insertValue:"merge.{cursor}.recursive",description:"Names a low-level merge driver to be used when performing an internal merge between common ancestors. See gitattributes[5] for details"},{name:"merge.autoStash",description:"When set to true, automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run merge on a dirty worktree. However, use with care: the final stash application after a successful merge might result in non-trivial conflicts. This option can be overridden by the `--no-autostash` and `--autostash` options of git-merge[1]. Defaults to false"},{name:"merge.branchdesc",description:"In addition to branch names, populate the log message with the branch description text associated with them. Defaults to false"},{name:"merge.conflictStyle",description:'Specify the style in which conflicted hunks are written out to working tree files upon merge. The default is "merge", which shows a `<<<<<<<` conflict marker, changes made by one side, a `=======` marker, changes made by the other side, and then a `>>>>>>>` marker. An alternate style, "diff3", adds a `|||||||` marker and the original text before the `=======` marker. The "merge" style tends to produce smaller conflict regions than diff3, both because of the exclusion of the original text, and because when a subset of lines match on the two sides they are just pulled out of the conflict region. Another alternate style, "zdiff3", is similar to diff3 but removes matching lines on the two sides from the conflict region when those matching lines appear near either the beginning or end of a conflict region'},{name:"merge.defaultToUpstream",description:"If merge is called without any commit argument, merge the upstream branches configured for the current branch by using their last observed values stored in their remote-tracking branches. The values of the `branch.<current branch>.merge` that name the branches at the remote named by `branch.<current branch>.remote` are consulted, and then they are mapped via `remote.<remote>.fetch` to their corresponding remote-tracking branches, and the tips of these tracking branches are merged. Defaults to true"},{name:"merge.directoryRenames",description:'Whether Git detects directory renames, affecting what happens at merge time to new files added to a directory on one side of history when that directory was renamed on the other side of history. If merge.directoryRenames is set to "false", directory rename detection is disabled, meaning that such new files will be left behind in the old directory. If set to "true", directory rename detection is enabled, meaning that such new files will be moved into the new directory. If set to "conflict", a conflict will be reported for such paths. If merge.renames is false, merge.directoryRenames is ignored and treated as false. Defaults to "conflict"'},{name:"merge.ff",description:"By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit. Instead, the tip of the current branch is fast-forwarded. When set to `false`, this variable tells Git to create an extra merge commit in such a case (equivalent to giving the `--no-ff` option from the command line). When set to `only`, only such fast-forward merges are allowed (equivalent to giving the `--ff-only` option from the command line)"},{name:"merge.guitool",description:"Controls which merge tool is used by git-mergetool[1] when the -g/--gui flag is specified. The list below shows the valid built-in values. Any other value is treated as a custom merge tool and requires that a corresponding mergetool.<guitool>.cmd variable is defined"},{name:"merge.log",description:"In addition to branch names, populate the log message with at most the specified number of one-line descriptions from the actual commits that are being merged. Defaults to false, and true is a synonym for 20"},{name:"merge.renameLimit",description:"The number of files to consider in the exhaustive portion of rename detection during a merge. If not specified, defaults to the value of diff.renameLimit. If neither merge.renameLimit nor diff.renameLimit are specified, currently defaults to 7000. This setting has no effect if rename detection is turned off"},{name:"merge.renames",description:'Whether Git detects renames. If set to "false", rename detection is disabled. If set to "true", basic rename detection is enabled. Defaults to the value of diff.renames'},{name:"merge.renormalize",description:'Tell Git that canonical representation of files in the repository has changed over time (e.g. earlier commits record text files with CRLF line endings, but recent ones use LF line endings). In such a repository, Git can convert the data recorded in commits to a canonical form before performing a merge to reduce unnecessary conflicts. For more information, see section "Merging branches with differing checkin/checkout attributes" in gitattributes[5]'},{name:"merge.stat",description:"Whether to print the diffstat between ORIG_HEAD and the merge result at the end of the merge. True by default"},{name:"merge.suppressDest",description:'By adding a glob that matches the names of integration branches to this multi-valued configuration variable, the default merge message computed for merges into these integration branches will omit "into <branch name>" from its title'},{name:"merge.tool",description:"Controls which merge tool is used by git-mergetool[1]. The list below shows the valid built-in values. Any other value is treated as a custom merge tool and requires that a corresponding mergetool.<tool>.cmd variable is defined"},{name:"merge.verbosity",description:"Controls the amount of output shown by the recursive merge strategy. Level 0 outputs nothing except a final error message if conflicts were detected. Level 1 outputs only conflicts, 2 outputs conflicts and file changes. Level 5 and above outputs debugging information. The default is level 2. Can be overridden by the `GIT_MERGE_VERBOSITY` environment variable"},{name:"merge.verifySignatures",description:"If true, this is equivalent to the --verify-signatures command line option. See git-merge[1] for details"},{name:"mergetool.<tool>.cmd",insertValue:"mergetool.{cursor}.cmd",description:"Specify the command to invoke the specified merge tool. The specified command is evaluated in shell with the following variables available: 'BASE' is the name of a temporary file containing the common base of the files to be merged, if available; 'LOCAL' is the name of a temporary file containing the contents of the file on the current branch; 'REMOTE' is the name of a temporary file containing the contents of the file from the branch being merged; 'MERGED' contains the name of the file to which the merge tool should write the results of a successful merge"},{name:"mergetool.<tool>.hideResolved",insertValue:"mergetool.{cursor}.hideResolved",description:"Allows the user to override the global `mergetool.hideResolved` value for a specific tool. See `mergetool.hideResolved` for the full description"},{name:"mergetool.<tool>.path",insertValue:"mergetool.{cursor}.path",description:"Override the path for the given tool. This is useful in case your tool is not in the PATH"},{name:"mergetool.<tool>.trustExitCode",insertValue:"mergetool.{cursor}.trustExitCode",description:"For a custom merge command, specify whether the exit code of the merge command can be used to determine whether the merge was successful. If this is not set to true then the merge target file timestamp is checked and the merge assumed to have been successful if the file has been updated, otherwise the user is prompted to indicate the success of the merge"},{name:"mergetool.hideResolved",description:"During a merge Git will automatically resolve as many conflicts as possible and write the 'MERGED' file containing conflict markers around any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally represent the versions of the file from before Git's conflict resolution. This flag causes 'LOCAL' and 'REMOTE' to be overwriten so that only the unresolved conflicts are presented to the merge tool. Can be configured per-tool via the `mergetool.<tool>.hideResolved` configuration variable. Defaults to `false`"},{name:"mergetool.keepBackup",description:"After performing a merge, the original file with conflict markers can be saved as a file with a `.orig` extension. If this variable is set to `false` then this file is not preserved. Defaults to `true` (i.e. keep the backup files)"},{name:"mergetool.keepTemporaries",description:"When invoking a custom merge tool, Git uses a set of temporary files to pass to the tool. If the tool returns an error and this variable is set to `true`, then these temporary files will be preserved, otherwise they will be removed after the tool has exited. Defaults to `false`"},{name:"mergetool.meld.hasOutput",description:"Older versions of `meld` do not support the `--output` option. Git will attempt to detect whether `meld` supports `--output` by inspecting the output of `meld --help`. Configuring `mergetool.meld.hasOutput` will make Git skip these checks and use the configured value instead. Setting `mergetool.meld.hasOutput` to `true` tells Git to unconditionally use the `--output` option, and `false` avoids using `--output`"},{name:"mergetool.meld.useAutoMerge",description:"When the `--auto-merge` is given, meld will merge all non-conflicting parts automatically, highlight the conflicting parts and wait for user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells Git to unconditionally use the `--auto-merge` option with `meld`. Setting this value to `auto` makes git detect whether `--auto-merge` is supported and will only use `--auto-merge` when available. A value of `false` avoids using `--auto-merge` altogether, and is the default value"},{name:"mergetool.prompt",description:"Prompt before each invocation of the merge resolution program"},{name:"mergetool.vimdiff.layout",description:"The vimdiff backend uses this variable to control how its split windows look like. Applies even if you are using Neovim (`nvim`) or gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section"},{name:"mergetool.writeToTemp",description:"Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of conflicting files in the worktree by default. Git will attempt to use a temporary directory for these files when set `true`. Defaults to `false`"},{name:"notes.<name>.mergeStrategy",insertValue:"notes.{cursor}.mergeStrategy",description:'Which merge strategy to choose when doing a notes merge into refs/notes/<name>. This overrides the more general "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in git-notes[1] for more information on the available strategies'},{name:"notes.displayRef",description:"The (fully qualified) refname from which to show notes when showing commit messages. The value of this variable can be set to a glob, in which case notes from all matching refs will be shown. You may also specify this configuration variable several times. A warning will be issued for refs that do not exist, but a glob that does not match any refs is silently ignored"},{name:"notes.mergeStrategy",description:'Which merge strategy to choose by default when resolving notes conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or `cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES" section of git-notes[1] for more information on each strategy'},{name:"notes.rewrite.<command>",insertValue:"notes.rewrite.{cursor}",description:'When rewriting commits with <command> (currently `amend` or `rebase`) and this variable is set to `true`, Git automatically copies your notes from the original to the rewritten commit. Defaults to `true`, but see "notes.rewriteRef" below'},{name:"notes.rewriteMode",description:'When copying notes during a rewrite (see the "notes.rewrite.<command>" option), determines what to do if the target commit already has a note. Must be one of `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`. Defaults to `concatenate`'},{name:"notes.rewriteRef",description:"When copying notes during a rewrite, specifies the (fully qualified) ref whose notes should be copied. The ref may be a glob, in which case notes in all matching refs will be copied. You may also specify this configuration several times"},{name:"pack.allowPackReuse",description:"When true, and when reachability bitmaps are enabled, pack-objects will try to send parts of the bitmapped packfile verbatim. This can reduce memory and CPU usage to serve fetches, but might result in sending a slightly larger pack. Defaults to true"},{name:"pack.compression",description:'An integer -1..9, indicating the compression level for objects in a pack file. -1 is the zlib default. 0 means no compression, and 1..9 are various speed/size tradeoffs, 9 being slowest. If not set, defaults to core.compression. If that is not set, defaults to -1, the zlib default, which is "a default compromise between speed and compression (currently equivalent to level 6)"'},{name:"pack.deltaCacheLimit",description:"The maximum size of a delta, that is cached in git-pack-objects[1]. This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found. Defaults to 1000. Maximum value is 65535"},{name:"pack.deltaCacheSize",description:"The maximum memory in bytes used for caching deltas in git-pack-objects[1] before writing them out to a pack. This cache is used to speed up the writing object phase by not having to recompute the final delta result once the best match for all objects is found. Repacking large repositories on machines which are tight with memory might be badly impacted by this though, especially if this cache pushes the system into swapping. A value of 0 means no limit. The smallest size of 1 byte may be used to virtually disable this cache. Defaults to 256 MiB"},{name:"pack.depth",description:"The maximum delta depth used by git-pack-objects[1] when no maximum depth is given on the command line. Defaults to 50. Maximum value is 4095"},{name:"pack.indexVersion",description:"Specify the default pack index version. Valid values are 1 for legacy pack index used by Git versions prior to 1.5.2, and 2 for the new pack index with capabilities for packs larger than 4 GB as well as proper protection against the repacking of corrupted packs. Version 2 is the default. Note that version 2 is enforced and this config option ignored whenever the corresponding pack is larger than 2 GB"},{name:"pack.island",description:'An extended regular expression configuring a set of delta islands. See "DELTA ISLANDS" in git-pack-objects[1] for details'},{name:"pack.islandCore",description:'Specify an island name which gets to have its objects be packed first. This creates a kind of pseudo-pack at the front of one pack, so that the objects from the specified island are hopefully faster to copy into any pack that should be served to a user requesting these objects. In practice this means that the island specified should likely correspond to what is the most commonly cloned in the repo. See also "DELTA ISLANDS" in git-pack-objects[1]'},{name:"pack.packSizeLimit",description:"The maximum size of a pack. This setting only affects packing to a file when repacking, i.e. the git:// protocol is unaffected. It can be overridden by the `--max-pack-size` option of git-repack[1]. Reaching this limit results in the creation of multiple packfiles"},{name:"pack.preferBitmapTips",description:'When selecting which commits will receive bitmaps, prefer a commit at the tip of any reference that is a suffix of any value of this configuration over any other commits in the "selection window"'},{name:"pack.threads",description:"Specifies the number of threads to spawn when searching for best delta matches. This requires that git-pack-objects[1] be compiled with pthreads otherwise this option is ignored with a warning. This is meant to reduce packing time on multiprocessor machines. The required amount of memory for the delta search window is however multiplied by the number of threads. Specifying 0 will cause Git to auto-detect the number of CPU's and set the number of threads accordingly"},{name:"pack.useBitmaps",description:"When true, git will use pack bitmaps (if available) when packing to stdout (e.g., during the server side of a fetch). Defaults to true. You should not generally need to turn this off unless you are debugging pack bitmaps"},{name:"pack.useSparse",description:"When true, git will default to using the '--sparse' option in 'git pack-objects' when the '--revs' option is present. This algorithm only walks trees that appear in paths that introduce new objects. This can have significant performance benefits when computing a pack to send a small change. However, it is possible that extra objects are added to the pack-file if the included commits contain certain types of direct renames. Default is `true`"},{name:"pack.window",description:"The size of the window used by git-pack-objects[1] when no window size is given on the command line. Defaults to 10"},{name:"pack.windowMemory",description:'The maximum size of memory that is consumed by each thread in git-pack-objects[1] for pack window memory when no limit is given on the command line. The value can be suffixed with "k", "m", or "g". When left unconfigured (or set explicitly to 0), there will be no limit'},{name:"pack.writeBitmapHashCache",description:'When true, git will include a "hash cache" section in the bitmap index (if one is written). This cache can be used to feed git\'s delta heuristics, potentially leading to better deltas between bitmapped and non-bitmapped objects (e.g., when serving a fetch between an older, bitmapped pack and objects that have been pushed since the last gc). The downside is that it consumes 4 bytes per object of disk space. Defaults to true'},{name:"pack.writeBitmapLookupTable",description:'When true, Git will include a "lookup table" section in the bitmap index (if one is written). This table is used to defer loading individual bitmaps as late as possible. This can be beneficial in repositories that have relatively large bitmap indexes. Defaults to false'},{name:"pack.writeBitmaps",description:"This is a deprecated synonym for `repack.writeBitmaps`",deprecated:!0,hidden:!0},{name:"pack.writeReverseIndex",description:"When true, git will write a corresponding .rev file (see: gitformat-pack[5]) for each new packfile that it writes in all places except for git-fast-import[1] and in the bulk checkin mechanism. Defaults to false"},{name:"pager.<cmd>",insertValue:"pager.{cursor}",description:"If the value is boolean, turns on or off pagination of the output of a particular Git subcommand when writing to a tty. Otherwise, turns on pagination for the subcommand using the pager specified by the value of `pager.<cmd>`. If `--paginate` or `--no-pager` is specified on the command line, it takes precedence over this option. To disable pagination for all commands, set `core.pager` or `GIT_PAGER` to `cat`"},{name:"pretty.<name>",insertValue:"pretty.{cursor}",description:'Alias for a --pretty= format string, as specified in git-log[1]. Any aliases defined here can be used just as the built-in pretty formats could. For example, running `git config pretty.changelog "format:* %H %s"` would cause the invocation `git log --pretty=changelog` to be equivalent to running `git log "--pretty=format:* %H %s"`. Note that an alias with the same name as a built-in format will be silently ignored'},{name:"protocol.<name>.allow",insertValue:"protocol.{cursor}.allow",description:"Set a policy to be used by protocol `<name>` with clone/fetch/push commands. See `protocol.allow` above for the available policies"},{name:"protocol.allow",description:"If set, provide a user defined default policy for all protocols which don't explicitly have a policy (`protocol.<name>.allow`). By default, if unset, known-safe protocols (http, https, git, ssh, file) have a default policy of `always`, known-dangerous protocols (ext) have a default policy of `never`, and all other protocols have a default policy of `user`. Supported policies:"},{name:"protocol.version",description:"If set, clients will attempt to communicate with a server using the specified protocol version. If the server does not support it, communication falls back to version 0. If unset, the default is `2`. Supported versions:"},{name:"pull.ff",description:"By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit. Instead, the tip of the current branch is fast-forwarded. When set to `false`, this variable tells Git to create an extra merge commit in such a case (equivalent to giving the `--no-ff` option from the command line). When set to `only`, only such fast-forward merges are allowed (equivalent to giving the `--ff-only` option from the command line). This setting overrides `merge.ff` when pulling"},{name:"pull.octopus",description:"The default merge strategy to use when pulling multiple branches at once"},{name:"pull.rebase",description:'When true, rebase branches on top of the fetched branch, instead of merging the default branch from the default remote when "git pull" is run. See "branch.<name>.rebase" for setting this on a per-branch basis'},{name:"pull.twohead",description:"The default merge strategy to use when pulling a single branch"},{name:"push.autoSetupRemote",description:"If set to \"true\" assume `--set-upstream` on default push when no upstream tracking exists for the current branch; this option takes effect with push.default options 'simple', 'upstream', and 'current'. It is useful if by default you want new branches to be pushed to the default remote (like the behavior of 'push.default=current') and you also want the upstream tracking to be set. Workflows most likely to benefit from this option are 'simple' central workflows where all branches are expected to have the same name on the remote"},{name:"push.default",description:"Defines the action `git push` should take if no refspec is given (whether from the command-line, config, or elsewhere). Different values are well-suited for specific workflows; for instance, in a purely central workflow (i.e. the fetch source is equal to the push destination), `upstream` is probably what you want. Possible values are:"},{name:"push.followTags",description:"If set to true enable `--follow-tags` option by default. You may override this configuration at time of push by specifying `--no-follow-tags`"},{name:"push.gpgSign",description:"May be set to a boolean value, or the string 'if-asked'. A true value causes all pushes to be GPG signed, as if `--signed` is passed to git-push[1]. The string 'if-asked' causes pushes to be signed if the server supports it, as if `--signed=if-asked` is passed to 'git push'. A false value may override a value from a lower-priority config file. An explicit command-line flag always overrides this config option"},{name:"push.negotiate",description:'If set to "true", attempt to reduce the size of the packfile sent by rounds of negotiation in which the client and the server attempt to find commits in common. If "false", Git will rely solely on the server\'s ref advertisement to find commits in common'},{name:"push.pushOption",description:"When no `--push-option=<option>` argument is given from the command line, `git push` behaves as if each <value> of this variable is given as `--push-option=<value>`"},{name:"push.recurseSubmodules",description:"Make sure all submodule commits used by the revisions to be pushed are available on a remote-tracking branch. If the value is 'check' then Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule. If any commits are missing, the push will be aborted and exit with non-zero status. If the value is 'on-demand' then all submodules that changed in the revisions to be pushed will be pushed. If on-demand was not able to push all necessary revisions it will also be aborted and exit with non-zero status. If the value is 'no' then default behavior of ignoring submodules when pushing is retained. You may override this configuration at time of push by specifying '--recurse-submodules=check|on-demand|no'. If not set, 'no' is used by default, unless 'submodule.recurse' is set (in which case a 'true' value means 'on-demand')"},{name:"push.useBitmaps",description:'If set to "false", disable use of bitmaps for "git push" even if `pack.useBitmaps` is "true", without preventing other git operations from using bitmaps. Default is true'},{name:"push.useForceIfIncludes",description:'If set to "true", it is equivalent to specifying `--force-if-includes` as an option to git-push[1] in the command line. Adding `--no-force-if-includes` at the time of push overrides this configuration setting'},{name:"rebase.abbreviateCommands",description:"If set to true, `git rebase` will use abbreviated command names in the todo list resulting in something like this:"},{name:"rebase.autoSquash",description:"If set to true enable `--autosquash` option by default"},{name:"rebase.autoStash",description:"When set to true, automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run rebase on a dirty worktree. However, use with care: the final stash application after a successful rebase might result in non-trivial conflicts. This option can be overridden by the `--no-autostash` and `--autostash` options of git-rebase[1]. Defaults to false"},{name:"rebase.backend",description:"Default backend to use for rebasing. Possible choices are 'apply' or 'merge'. In the future, if the merge backend gains all remaining capabilities of the apply backend, this setting may become unused"},{name:"rebase.forkPoint",description:"If set to false set `--no-fork-point` option by default"},{name:"rebase.instructionFormat",description:"A format string, as specified in git-log[1], to be used for the todo list during an interactive rebase. The format will automatically have the long commit hash prepended to the format"},{name:"rebase.missingCommitsCheck",description:'If set to "warn", git rebase -i will print a warning if some commits are removed (e.g. a line was deleted), however the rebase will still proceed. If set to "error", it will print the previous warning and stop the rebase, \'git rebase --edit-todo\' can then be used to correct the error. If set to "ignore", no checking is done. To drop a commit without warning or error, use the `drop` command in the todo list. Defaults to "ignore"'},{name:"rebase.rescheduleFailedExec",description:"Automatically reschedule `exec` commands that failed. This only makes sense in interactive mode (or when an `--exec` option was provided). This is the same as specifying the `--reschedule-failed-exec` option"},{name:"rebase.stat",description:"Whether to show a diffstat of what changed upstream since the last rebase. False by default"},{name:"rebase.updateRefs",description:"If set to true enable `--update-refs` option by default"},{name:"receive.advertiseAtomic",description:"By default, git-receive-pack will advertise the atomic push capability to its clients. If you don't want to advertise this capability, set this variable to false"},{name:"receive.advertisePushOptions",description:"When set to true, git-receive-pack will advertise the push options capability to its clients. False by default"},{name:"receive.autogc",description:'By default, git-receive-pack will run "git-gc --auto" after receiving data from git-push and updating refs. You can stop it by setting this variable to false'},{name:"receive.certNonceSeed",description:'By setting this variable to a string, `git receive-pack` will accept a `git push --signed` and verifies it by using a "nonce" protected by HMAC using this string as a secret key'},{name:"receive.certNonceSlop",description:'When a `git push --signed` sent a push certificate with a "nonce" that was issued by a receive-pack serving the same repository within this many seconds, export the "nonce" found in the certificate to `GIT_PUSH_CERT_NONCE` to the hooks (instead of what the receive-pack asked the sending side to include). This may allow writing checks in `pre-receive` and `post-receive` a bit easier. Instead of checking `GIT_PUSH_CERT_NONCE_SLOP` environment variable that records by how many seconds the nonce is stale to decide if they want to accept the certificate, they only can check `GIT_PUSH_CERT_NONCE_STATUS` is `OK`'},{name:"receive.denyCurrentBranch",description:'If set to true or "refuse", git-receive-pack will deny a ref update to the currently checked out branch of a non-bare repository. Such a push is potentially dangerous because it brings the HEAD out of sync with the index and working tree. If set to "warn", print a warning of such a push to stderr, but allow the push to proceed. If set to false or "ignore", allow such pushes with no message. Defaults to "refuse"'},{name:"receive.denyDeleteCurrent",description:"If set to true, git-receive-pack will deny a ref update that deletes the currently checked out branch of a non-bare repository"},{name:"receive.denyDeletes",description:"If set to true, git-receive-pack will deny a ref update that deletes the ref. Use this to prevent such a ref deletion via a push"},{name:"receive.denyNonFastForwards",description:"If set to true, git-receive-pack will deny a ref update which is not a fast-forward. Use this to prevent such an update via a push, even if that push is forced. This configuration variable is set when initializing a shared repository"},{name:"receive.fsck.<msg-id>",insertValue:"receive.fsck.{cursor}",description:"Acts like `fsck.<msg-id>`, but is used by git-receive-pack[1] instead of git-fsck[1]. See the `fsck.<msg-id>` documentation for details"},{name:"receive.fsck.skipList",description:"Acts like `fsck.skipList`, but is used by git-receive-pack[1] instead of git-fsck[1]. See the `fsck.skipList` documentation for details"},{name:"receive.fsckObjects",description:"If it is set to true, git-receive-pack will check all received objects. See `transfer.fsckObjects` for what's checked. Defaults to false. If not set, the value of `transfer.fsckObjects` is used instead"},{name:"receive.hideRefs",description:"This variable is the same as `transfer.hideRefs`, but applies only to `receive-pack` (and so affects pushes, but not fetches). An attempt to update or delete a hidden ref by `git push` is rejected"},{name:"receive.keepAlive",description:"After receiving the pack from the client, `receive-pack` may produce no output (if `--quiet` was specified) while processing the pack, causing some networks to drop the TCP connection. With this option set, if `receive-pack` does not transmit any data in this phase for `receive.keepAlive` seconds, it will send a short keepalive packet. The default is 5 seconds; set to 0 to disable keepalives entirely"},{name:"receive.maxInputSize",description:"If the size of the incoming pack stream is larger than this limit, then git-receive-pack will error out, instead of accepting the pack file. If not set or set to 0, then the size is unlimited"},{name:"receive.procReceiveRefs",description:'This is a multi-valued variable that defines reference prefixes to match the commands in `receive-pack`. Commands matching the prefixes will be executed by an external hook "proc-receive", instead of the internal `execute_commands` function. If this variable is not defined, the "proc-receive" hook will never be used, and all commands will be executed by the internal `execute_commands` function'},{name:"receive.shallowUpdate",description:"If set to true, .git/shallow can be updated when new refs require new shallow roots. Otherwise those refs are rejected"},{name:"receive.unpackLimit",description:"If the number of objects received in a push is below this limit then the objects will be unpacked into loose object files. However if the number of received objects equals or exceeds this limit then the received pack will be stored as a pack, after adding any missing delta bases. Storing the pack from a push can make the push operation complete faster, especially on slow filesystems. If not set, the value of `transfer.unpackLimit` is used instead"},{name:"receive.updateServerInfo",description:"If set to true, git-receive-pack will run git-update-server-info after receiving data from git-push and updating refs"},{name:"remote.<name>.fetch",insertValue:"remote.{cursor}.fetch",description:'The default set of "refspec" for git-fetch[1]. See git-fetch[1]'},{name:"remote.<name>.mirror",insertValue:"remote.{cursor}.mirror",description:"If true, pushing to this remote will automatically behave as if the `--mirror` option was given on the command line"},{name:"remote.<name>.partialclonefilter",insertValue:"remote.{cursor}.partialclonefilter",description:"The filter that will be applied when fetching from this promisor remote. Changing or clearing this value will only affect fetches for new commits. To fetch associated objects for commits already present in the local object database, use the `--refetch` option of git-fetch[1]"},{name:"remote.<name>.promisor",insertValue:"remote.{cursor}.promisor",description:"When set to true, this remote will be used to fetch promisor objects"},{name:"remote.<name>.proxy",insertValue:"remote.{cursor}.proxy",description:"For remotes that require curl (http, https and ftp), the URL to the proxy to use for that remote. Set to the empty string to disable proxying for that remote"},{name:"remote.<name>.proxyAuthMethod",insertValue:"remote.{cursor}.proxyAuthMethod",description:"For remotes that require curl (http, https and ftp), the method to use for authenticating against the proxy in use (probably set in `remote.<name>.proxy`). See `http.proxyAuthMethod`"},{name:"remote.<name>.prune",insertValue:"remote.{cursor}.prune",description:"When set to true, fetching from this remote by default will also remove any remote-tracking references that no longer exist on the remote (as if the `--prune` option was given on the command line). Overrides `fetch.prune` settings, if any"},{name:"remote.<name>.pruneTags",insertValue:"remote.{cursor}.pruneTags",description:"When set to true, fetching from this remote by default will also remove any local tags that no longer exist on the remote if pruning is activated in general via `remote.<name>.prune`, `fetch.prune` or `--prune`. Overrides `fetch.pruneTags` settings, if any"},{name:"remote.<name>.push",insertValue:"remote.{cursor}.push",description:'The default set of "refspec" for git-push[1]. See git-push[1]'},{name:"remote.<name>.pushurl",insertValue:"remote.{cursor}.pushurl",description:"The push URL of a remote repository. See git-push[1]"},{name:"remote.<name>.receivepack",insertValue:"remote.{cursor}.receivepack",description:"The default program to execute on the remote side when pushing. See option --receive-pack of git-push[1]"},{name:"remote.<name>.skipDefaultUpdate",insertValue:"remote.{cursor}.skipDefaultUpdate",description:"If true, this remote will be skipped by default when updating using git-fetch[1] or the `update` subcommand of git-remote[1]"},{name:"remote.<name>.skipFetchAll",insertValue:"remote.{cursor}.skipFetchAll",description:"If true, this remote will be skipped by default when updating using git-fetch[1] or the `update` subcommand of git-remote[1]"},{name:"remote.<name>.tagOpt",insertValue:"remote.{cursor}.tagOpt",description:"Setting this value to --no-tags disables automatic tag following when fetching from remote <name>. Setting it to --tags will fetch every tag from remote <name>, even if they are not reachable from remote branch heads. Passing these flags directly to git-fetch[1] can override this setting. See options --tags and --no-tags of git-fetch[1]"},{name:"remote.<name>.uploadpack",insertValue:"remote.{cursor}.uploadpack",description:"The default program to execute on the remote side when fetching. See option --upload-pack of git-fetch-pack[1]"},{name:"remote.<name>.url",insertValue:"remote.{cursor}.url",description:"The URL of a remote repository. See git-fetch[1] or git-push[1]"},{name:"remote.<name>.vcs",insertValue:"remote.{cursor}.vcs",description:"Setting this to a value <vcs> will cause Git to interact with the remote with the git-remote-<vcs> helper"},{name:"remote.pushDefault",description:"The remote to push to by default. Overrides `branch.<name>.remote` for all branches, and is overridden by `branch.<name>.pushRemote` for specific branches"},{name:"remotes.<group>",insertValue:"remotes.{cursor}",description:'The list of remotes which are fetched by "git remote update <group>". See git-remote[1]'},{name:"repack.cruftThreads",description:"Parameters used by git-pack-objects[1] when generating a cruft pack and the respective parameters are not given over the command line. See similarly named `pack.*` configuration variables for defaults and meaning"},{name:"repack.packKeptObjects",description:"If set to true, makes `git repack` act as if `--pack-kept-objects` was passed. See git-repack[1] for details. Defaults to `false` normally, but `true` if a bitmap index is being written (either via `--write-bitmap-index` or `repack.writeBitmaps`)"},{name:"repack.updateServerInfo",description:"If set to false, git-repack[1] will not run git-update-server-info[1]. Defaults to true. Can be overridden when true by the `-n` option of git-repack[1]"},{name:"repack.useDeltaBaseOffset",description:'By default, git-repack[1] creates packs that use delta-base offset. If you need to share your repository with Git older than version 1.4.4, either directly or via a dumb protocol such as http, then you need to set this option to "false" and repack. Access from old Git versions over the native protocol are unaffected by this option'},{name:"repack.useDeltaIslands",description:"If set to true, makes `git repack` act as if `--delta-islands` was passed. Defaults to `false`"},{name:"repack.writeBitmaps",description:'When true, git will write a bitmap index when packing all objects to disk (e.g., when `git repack -a` is run). This index can speed up the "counting objects" phase of subsequent packs created for clones and fetches, at the cost of some disk space and extra time spent on the initial repack. This has no effect if multiple packfiles are created. Defaults to true on bare repos, false otherwise'},{name:"rerere.autoUpdate",description:"When set to true, `git-rerere` updates the index with the resulting contents after it cleanly resolves conflicts using previously recorded resolution. Defaults to false"},{name:"rerere.enabled",description:'Activate recording of resolved conflicts, so that identical conflict hunks can be resolved automatically, should they be encountered again. By default, git-rerere[1] is enabled if there is an `rr-cache` directory under the `$GIT_DIR`, e.g. if "rerere" was previously used in the repository'},{name:"revert.reference",description:"Setting this variable to true makes `git revert` behave as if the `--reference` option is given"},{name:"safe.bareRepository",description:"Specifies which bare repositories Git will work with. The currently supported values are:"},{name:"safe.directory",description:"These config entries specify Git-tracked directories that are considered safe even if they are owned by someone other than the current user. By default, Git will refuse to even parse a Git config of a repository owned by someone else, let alone run its hooks, and this config setting allows users to specify exceptions, e.g. for intentionally shared repositories (see the `--shared` option in git-init[1])"},{name:"sendemail.forbidSendmailVariables",description:'To avoid common misconfiguration mistakes, git-send-email[1] will abort with a warning if any configuration options for "sendmail" exist. Set this variable to bypass the check'},{name:"sendemail.identity",description:"A configuration identity. When given, causes values in the 'sendemail.<identity>' subsection to take precedence over values in the 'sendemail' section. The default identity is the value of `sendemail.identity`"},{name:"sendemail.signedoffcc",description:"Deprecated alias for `sendemail.signedoffbycc`",deprecated:!0,hidden:!0},{name:"sendemail.smtpBatchSize",description:"Number of messages to be sent per connection, after that a relogin will happen. If the value is 0 or undefined, send all messages in one connection. See also the `--batch-size` option of git-send-email[1]"},{name:"sendemail.smtpEncryption",description:"See git-send-email[1] for description. Note that this setting is not subject to the 'identity' mechanism"},{name:"sendemail.smtpReloginDelay",description:"Seconds wait before reconnecting to smtp server. See also the `--relogin-delay` option of git-send-email[1]"},{name:"sendemail.smtpsslcertpath",description:"Path to ca-certificates (either a directory or a single file). Set it to an empty string to disable certificate verification"},{name:"sendemail.xmailer",description:"See git-send-email[1] for description"},{name:"sequence.editor",description:"Text editor used by `git rebase -i` for editing the rebase instruction file. The value is meant to be interpreted by the shell when it is used. It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable. When not configured the default commit message editor is used instead"},{name:"sendemail.<identity>.forbidSendmailVariables",insertValue:"sendemail.{cursor}.forbidSendmailVariables",description:'To avoid common misconfiguration mistakes, git-send-email[1] will abort with a warning if any configuration options for "sendmail" exist. Set this variable to bypass the check'},{name:"sendemail.<identity>.signedoffcc",insertValue:"sendemail.{cursor}.signedoffcc",description:"Deprecated alias for `sendemail.signedoffbycc`",deprecated:!0,hidden:!0},{name:"sendemail.<identity>.smtpBatchSize",insertValue:"sendemail.{cursor}.smtpBatchSize",description:"Number of messages to be sent per connection, after that a relogin will happen. If the value is 0 or undefined, send all messages in one connection. See also the `--batch-size` option of git-send-email[1]"},{name:"sendemail.<identity>.smtpEncryption",insertValue:"sendemail.{cursor}.smtpEncryption",description:"See git-send-email[1] for description. Note that this setting is not subject to the 'identity' mechanism"},{name:"sendemail.<identity>.smtpReloginDelay",insertValue:"sendemail.{cursor}.smtpReloginDelay",description:"Seconds wait before reconnecting to smtp server. See also the `--relogin-delay` option of git-send-email[1]"},{name:"sendemail.<identity>.smtpsslcertpath",insertValue:"sendemail.{cursor}.smtpsslcertpath",description:"Path to ca-certificates (either a directory or a single file). Set it to an empty string to disable certificate verification"},{name:"sendemail.<identity>.xmailer",insertValue:"sendemail.{cursor}.xmailer",description:"See git-send-email[1] for description"},{name:"sequence.<identity>.editor",insertValue:"sequence.{cursor}.editor",description:"Text editor used by `git rebase -i` for editing the rebase instruction file. The value is meant to be interpreted by the shell when it is used. It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable. When not configured the default commit message editor is used instead"},{name:"showBranch.default",description:"The default set of branches for git-show-branch[1]. See git-show-branch[1]"},{name:"sparse.expectFilesOutsideOfPatterns",description:"Typically with sparse checkouts, files not matching any sparsity patterns are marked with a SKIP_WORKTREE bit in the index and are missing from the working tree. Accordingly, Git will ordinarily check whether files with the SKIP_WORKTREE bit are in fact present in the working tree contrary to expectations. If Git finds any, it marks those paths as present by clearing the relevant SKIP_WORKTREE bits. This option can be used to tell Git that such present-despite-skipped files are expected and to stop checking for them"},{name:"splitIndex.maxPercentChange",description:"When the split index feature is used, this specifies the percent of entries the split index can contain compared to the total number of entries in both the split index and the shared index before a new shared index is written. The value should be between 0 and 100. If the value is 0 then a new shared index is always written, if it is 100 a new shared index is never written. By default the value is 20, so a new shared index is written if the number of entries in the split index would be greater than 20 percent of the total number of entries. See git-update-index[1]"},{name:"splitIndex.sharedIndexExpire",description:'When the split index feature is used, shared index files that were not modified since the time this variable specifies will be removed when a new shared index file is created. The value "now" expires all entries immediately, and "never" suppresses expiration altogether. The default value is "2.weeks.ago". Note that a shared index file is considered modified (for the purpose of expiration) each time a new split-index file is either created based on it or read from it. See git-update-index[1]'},{name:"ssh.variant",description:"By default, Git determines the command line arguments to use based on the basename of the configured SSH command (configured using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or the config setting `core.sshCommand`). If the basename is unrecognized, Git will attempt to detect support of OpenSSH options by first invoking the configured SSH command with the `-G` (print configuration) option and will subsequently use OpenSSH options (if that is successful) or no options besides the host and remote command (if it fails)"},{name:"stash.showIncludeUntracked",description:"If this is set to true, the `git stash show` command will show the untracked files of a stash entry. Defaults to false. See description of 'show' command in git-stash[1]"},{name:"stash.showPatch",description:"If this is set to true, the `git stash show` command without an option will show the stash entry in patch form. Defaults to false. See description of 'show' command in git-stash[1]"},{name:"stash.showStat",description:"If this is set to true, the `git stash show` command without an option will show diffstat of the stash entry. Defaults to true. See description of 'show' command in git-stash[1]"},{name:"status.aheadBehind",description:"Set to true to enable `--ahead-behind` and false to enable `--no-ahead-behind` by default in git-status[1] for non-porcelain status formats. Defaults to true"},{name:"status.branch",description:"Set to true to enable --branch by default in git-status[1]. The option --no-branch takes precedence over this variable"},{name:"status.displayCommentPrefix",description:"If set to true, git-status[1] will insert a comment prefix before each output line (starting with `core.commentChar`, i.e. `#` by default). This was the behavior of git-status[1] in Git 1.8.4 and previous. Defaults to false"},{name:"status.relativePaths",description:"By default, git-status[1] shows paths relative to the current directory. Setting this variable to `false` shows paths relative to the repository root (this was the default for Git prior to v1.5.4)"},{name:"status.renameLimit",description:"The number of files to consider when performing rename detection in git-status[1] and git-commit[1]. Defaults to the value of diff.renameLimit"},{name:"status.renames",description:'Whether and how Git detects renames in git-status[1] and git-commit[1] . If set to "false", rename detection is disabled. If set to "true", basic rename detection is enabled. If set to "copies" or "copy", Git will detect copies, as well. Defaults to the value of diff.renames'},{name:"status.short",description:"Set to true to enable --short by default in git-status[1]. The option --no-short takes precedence over this variable"},{name:"status.showStash",description:"If set to true, git-status[1] will display the number of entries currently stashed away. Defaults to false"},{name:"status.showUntrackedFiles",description:"By default, git-status[1] and git-commit[1] show files which are not currently tracked by Git. Directories which contain only untracked files, are shown with the directory name only. Showing untracked files means that Git needs to lstat() all the files in the whole repository, which might be slow on some systems. So, this variable controls how the commands displays the untracked files. Possible values are:"},{name:"status.submoduleSummary",description:"Defaults to false. If this is set to a non zero number or true (identical to -1 or an unlimited number), the submodule summary will be enabled and a summary of commits for modified submodules will be shown (see --summary-limit option of git-submodule[1]). Please note that the summary output command will be suppressed for all submodules when `diff.ignoreSubmodules` is set to 'all' or only for those submodules where `submodule.<name>.ignore=all`. The only exception to that rule is that status and commit will show staged submodule changes. To also view the summary for ignored submodules you can either use the --ignore-submodules=dirty command-line option or the 'git submodule summary' command, which shows a similar output but does not honor these settings"},{name:"submodule.<name>.active",insertValue:"submodule.{cursor}.active",description:"Boolean value indicating if the submodule is of interest to git commands. This config option takes precedence over the submodule.active config option. See gitsubmodules[7] for details"},{name:"submodule.<name>.branch",insertValue:"submodule.{cursor}.branch",description:"The remote branch name for a submodule, used by `git submodule update --remote`. Set this option to override the value found in the `.gitmodules` file. See git-submodule[1] and gitmodules[5] for details"},{name:"submodule.<name>.fetchRecurseSubmodules",insertValue:"submodule.{cursor}.fetchRecurseSubmodules",description:'This option can be used to control recursive fetching of this submodule. It can be overridden by using the --[no-]recurse-submodules command-line option to "git fetch" and "git pull". This setting will override that from in the gitmodules[5] file'},{name:"submodule.<name>.ignore",insertValue:"submodule.{cursor}.ignore",description:'Defines under what circumstances "git status" and the diff family show a submodule as modified. When set to "all", it will never be considered modified (but it will nonetheless show up in the output of status and commit when it has been staged), "dirty" will ignore all changes to the submodules work tree and takes only differences between the HEAD of the submodule and the commit recorded in the superproject into account. "untracked" will additionally let submodules with modified tracked files in their work tree show up. Using "none" (the default when this option is not set) also shows submodules that have untracked files in their work tree as changed. This setting overrides any setting made in .gitmodules for this submodule, both settings can be overridden on the command line by using the "--ignore-submodules" option. The \'git submodule\' commands are not affected by this setting'},{name:"submodule.<name>.update",insertValue:"submodule.{cursor}.update",description:"The method by which a submodule is updated by 'git submodule update', which is the only affected command, others such as 'git checkout --recurse-submodules' are unaffected. It exists for historical reasons, when 'git submodule' was the only command to interact with submodules; settings like `submodule.active` and `pull.rebase` are more specific. It is populated by `git submodule init` from the gitmodules[5] file. See description of 'update' command in git-submodule[1]"},{name:"submodule.<name>.url",insertValue:"submodule.{cursor}.url",description:"The URL for a submodule. This variable is copied from the .gitmodules file to the git config via 'git submodule init'. The user can change the configured URL before obtaining the submodule via 'git submodule update'. If neither submodule.<name>.active or submodule.active are set, the presence of this variable is used as a fallback to indicate whether the submodule is of interest to git commands. See git-submodule[1] and gitmodules[5] for details"},{name:"submodule.active",description:"A repeated field which contains a pathspec used to match against a submodule's path to determine if the submodule is of interest to git commands. See gitsubmodules[7] for details"},{name:"submodule.alternateErrorStrategy",description:"Specifies how to treat errors with the alternates for a submodule as computed via `submodule.alternateLocation`. Possible values are `ignore`, `info`, `die`. Default is `die`. Note that if set to `ignore` or `info`, and if there is an error with the computed alternate, the clone proceeds as if no alternate was specified"},{name:"submodule.alternateLocation",description:"Specifies how the submodules obtain alternates when submodules are cloned. Possible values are `no`, `superproject`. By default `no` is assumed, which doesn't add references. When the value is set to `superproject` the submodule to be cloned computes its alternates location relative to the superprojects alternate"},{name:"submodule.fetchJobs",description:"Specifies how many submodules are fetched/cloned at the same time. A positive integer allows up to that number of submodules fetched in parallel. A value of 0 will give some reasonable default. If unset, it defaults to 1"},{name:"submodule.propagateBranches",description:"[EXPERIMENTAL] A boolean that enables branching support when using `--recurse-submodules` or `submodule.recurse=true`. Enabling this will allow certain commands to accept `--recurse-submodules` and certain commands that already accept `--recurse-submodules` will now consider branches. Defaults to false"},{name:"submodule.recurse",description:"A boolean indicating if commands should enable the `--recurse-submodules` option by default. Defaults to false"},{name:"tag.forceSignAnnotated",description:"A boolean to specify whether annotated tags created should be GPG signed. If `--annotate` is specified on the command line, it takes precedence over this option"},{name:"tag.gpgSign",description:'A boolean to specify whether all tags should be GPG signed. Use of this option when running in an automated script can result in a large number of tags being signed. It is therefore convenient to use an agent to avoid typing your gpg passphrase several times. Note that this option doesn\'t affect tag signing behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options'},{name:"tag.sort",description:'This variable controls the sort ordering of tags when displayed by git-tag[1]. Without the "--sort=<value>" option provided, the value of this variable will be used as the default'},{name:"tar.umask",description:'This variable can be used to restrict the permission bits of tar archive entries. The default is 0002, which turns off the world write bit. The special value "user" indicates that the archiving user\'s umask will be used instead. See umask(2) and git-archive[1]'},{name:"trace2.configParams",description:'A comma-separated list of patterns of "important" config settings that should be recorded in the trace2 output. For example, `core.*,remote.*.url` would cause the trace2 output to contain events listing each configured remote. May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment variable. Unset by default'},{name:"trace2.destinationDebug",description:"Boolean. When true Git will print error messages when a trace target destination cannot be opened for writing. By default, these errors are suppressed and tracing is silently disabled. May be overridden by the `GIT_TRACE2_DST_DEBUG` environment variable"},{name:"trace2.envVars",description:'A comma-separated list of "important" environment variables that should be recorded in the trace2 output. For example, `GIT_HTTP_USER_AGENT,GIT_CONFIG` would cause the trace2 output to contain events listing the overrides for HTTP user agent and the location of the Git configuration file (assuming any are set). May be overridden by the `GIT_TRACE2_ENV_VARS` environment variable. Unset by default'},{name:"trace2.eventBrief",description:"Boolean. When true `time`, `filename`, and `line` fields are omitted from event output. May be overridden by the `GIT_TRACE2_EVENT_BRIEF` environment variable. Defaults to false"},{name:"trace2.eventNesting",description:"Integer. Specifies desired depth of nested regions in the event output. Regions deeper than this value will be omitted. May be overridden by the `GIT_TRACE2_EVENT_NESTING` environment variable. Defaults to 2"},{name:"trace2.eventTarget",description:"This variable controls the event target destination. It may be overridden by the `GIT_TRACE2_EVENT` environment variable. The following table shows possible values"},{name:"trace2.maxFiles",description:"Integer. When writing trace files to a target directory, do not write additional traces if we would exceed this many files. Instead, write a sentinel file that will block further tracing to this directory. Defaults to 0, which disables this check"},{name:"trace2.normalBrief",description:"Boolean. When true `time`, `filename`, and `line` fields are omitted from normal output. May be overridden by the `GIT_TRACE2_BRIEF` environment variable. Defaults to false"},{name:"trace2.normalTarget",description:"This variable controls the normal target destination. It may be overridden by the `GIT_TRACE2` environment variable. The following table shows possible values"},{name:"trace2.perfBrief",description:"Boolean. When true `time`, `filename`, and `line` fields are omitted from PERF output. May be overridden by the `GIT_TRACE2_PERF_BRIEF` environment variable. Defaults to false"},{name:"trace2.perfTarget",description:"This variable controls the performance target destination. It may be overridden by the `GIT_TRACE2_PERF` environment variable. The following table shows possible values"},{name:"transfer.advertiseSID",description:"Boolean. When true, client and server processes will advertise their unique session IDs to their remote counterpart. Defaults to false"},{name:"transfer.credentialsInUrl",description:"A configured URL can contain plaintext credentials in the form `<protocol>://<user>:<password>@<domain>/<path>`. You may want to warn or forbid the use of such configuration (in favor of using git-credential[1]). This will be used on git-clone[1], git-fetch[1], git-push[1], and any other direct use of the configured URL"},{name:"transfer.fsckObjects",description:"When `fetch.fsckObjects` or `receive.fsckObjects` are not set, the value of this variable is used instead. Defaults to false"},{name:"transfer.hideRefs",description:"String(s) `receive-pack` and `upload-pack` use to decide which refs to omit from their initial advertisements. Use more than one definition to specify multiple prefix strings. A ref that is under the hierarchies listed in the value of this variable is excluded, and is hidden when responding to `git push` or `git fetch`. See `receive.hideRefs` and `uploadpack.hideRefs` for program-specific versions of this config"},{name:"transfer.unpackLimit",description:"When `fetch.unpackLimit` or `receive.unpackLimit` are not set, the value of this variable is used instead. The default value is 100"},{name:"uploadarchive.allowUnreachable",description:'If true, allow clients to use `git archive --remote` to request any tree, whether reachable from the ref tips or not. See the discussion in the "SECURITY" section of git-upload-archive[1] for more details. Defaults to `false`'},{name:"uploadpack.allowAnySHA1InWant",description:"Allow `upload-pack` to accept a fetch request that asks for any object at all. Defaults to `false`"},{name:"uploadpack.allowFilter",description:"If this option is set, `upload-pack` will support partial clone and partial fetch object filtering"},{name:"uploadpack.allowReachableSHA1InWant",description:'Allow `upload-pack` to accept a fetch request that asks for an object that is reachable from any ref tip. However, note that calculating object reachability is computationally expensive. Defaults to `false`. Even if this is false, a client may be able to steal objects via the techniques described in the "SECURITY" section of the gitnamespaces[7] man page; it\'s best to keep private data in a separate repository'},{name:"uploadpack.allowRefInWant",description:"If this option is set, `upload-pack` will support the `ref-in-want` feature of the protocol version 2 `fetch` command. This feature is intended for the benefit of load-balanced servers which may not have the same view of what OIDs their refs point to due to replication delay"},{name:"uploadpack.allowTipSHA1InWant",description:'When `uploadpack.hideRefs` is in effect, allow `upload-pack` to accept a fetch request that asks for an object at the tip of a hidden ref (by default, such a request is rejected). See also `uploadpack.hideRefs`. Even if this is false, a client may be able to steal objects via the techniques described in the "SECURITY" section of the gitnamespaces[7] man page; it\'s best to keep private data in a separate repository'},{name:"uploadpack.hideRefs",description:"This variable is the same as `transfer.hideRefs`, but applies only to `upload-pack` (and so affects only fetches, not pushes). An attempt to fetch a hidden ref by `git fetch` will fail. See also `uploadpack.allowTipSHA1InWant`"},{name:"uploadpack.keepAlive",description:"When `upload-pack` has started `pack-objects`, there may be a quiet period while `pack-objects` prepares the pack. Normally it would output progress information, but if `--quiet` was used for the fetch, `pack-objects` will output nothing at all until the pack data begins. Some clients and networks may consider the server to be hung and give up. Setting this option instructs `upload-pack` to send an empty keepalive packet every `uploadpack.keepAlive` seconds. Setting this option to 0 disables keepalive packets entirely. The default is 5 seconds"},{name:"uploadpack.packObjectsHook",description:"If this option is set, when `upload-pack` would run `git pack-objects` to create a packfile for a client, it will run this shell command instead. The `pack-objects` command and arguments it _would_ have run (including the `git pack-objects` at the beginning) are appended to the shell command. The stdin and stdout of the hook are treated as if `pack-objects` itself was run. I.e., `upload-pack` will feed input intended for `pack-objects` to the hook, and expects a completed packfile on stdout"},{name:"uploadpackfilter.<filter>.allow",insertValue:"uploadpackfilter.{cursor}.allow",description:"Explicitly allow or ban the object filter corresponding to `<filter>`, where `<filter>` may be one of: `blob:none`, `blob:limit`, `object:type`, `tree`, `sparse:oid`, or `combine`. If using combined filters, both `combine` and all of the nested filter kinds must be allowed. Defaults to `uploadpackfilter.allow`"},{name:"uploadpackfilter.allow",description:"Provides a default value for unspecified object filters (see: the below configuration variable). If set to `true`, this will also enable all filters which get added in the future. Defaults to `true`"},{name:"uploadpackfilter.tree.maxDepth",description:"Only allow `--filter=tree:<n>` when `<n>` is no more than the value of `uploadpackfilter.tree.maxDepth`. If set, this also implies `uploadpackfilter.tree.allow=true`, unless this configuration variable had already been set. Has no effect if unset"},{name:"url.<base>.insteadOf",insertValue:"url.{cursor}.insteadOf",description:"Any URL that starts with this value will be rewritten to start, instead, with <base>. In cases where some site serves a large number of repositories, and serves them with multiple access methods, and some users need to use different access methods, this feature allows people to specify any of the equivalent URLs and have Git automatically rewrite the URL to the best alternative for the particular user, even for a never-before-seen repository on the site. When more than one insteadOf strings match a given URL, the longest match is used"},{name:"url.<base>.pushInsteadOf",insertValue:"url.{cursor}.pushInsteadOf",description:"Any URL that starts with this value will not be pushed to; instead, it will be rewritten to start with <base>, and the resulting URL will be pushed to. In cases where some site serves a large number of repositories, and serves them with multiple access methods, some of which do not allow push, this feature allows people to specify a pull-only URL and have Git automatically use an appropriate URL to push, even for a never-before-seen repository on the site. When more than one pushInsteadOf strings match a given URL, the longest match is used. If a remote has an explicit pushurl, Git will ignore this setting for that remote"},{name:"user.signingKey",description:'If git-tag[1] or git-commit[1] is not selecting the key you want it to automatically when creating a signed tag or commit, you can override the default selection with this variable. This option is passed unchanged to gpg\'s --local-user parameter, so you may specify a key using any method that gpg supports. If gpg.format is set to `ssh` this can contain the path to either your private ssh key or the public key when ssh-agent is used. Alternatively it can contain a public key prefixed with `key::` directly (e.g.: "key::ssh-rsa XXXXXX identifier"). The private key needs to be available via ssh-agent. If not set git will call gpg.ssh.defaultKeyCommand (e.g.: "ssh-add -L") and try to use the first key available. For backward compatibility, a raw key which begins with "ssh-", such as "ssh-rsa XXXXXX identifier", is treated as "key::ssh-rsa XXXXXX identifier", but this form is deprecated; use the `key::` form instead'},{name:"user.useConfigOnly",description:"Instruct Git to avoid trying to guess defaults for `user.email` and `user.name`, and instead retrieve the values only from the configuration. For example, if you have multiple email addresses and would like to use a different one for each repository, then with this configuration option set to `true` in the global config along with a name, Git will prompt you to set up an email before making new commits in a newly cloned repository. Defaults to `false`"},{name:"versionsort.prereleaseSuffix",description:"Deprecated alias for `versionsort.suffix`. Ignored if `versionsort.suffix` is set",deprecated:!0,hidden:!0},{name:"versionsort.suffix",description:'Even when version sort is used in git-tag[1], tagnames with the same base version but different suffixes are still sorted lexicographically, resulting e.g. in prerelease tags appearing after the main release (e.g. "1.0-rc1" after "1.0"). This variable can be specified to determine the sorting order of tags with different suffixes'},{name:"web.browser",description:"Specify a web browser that may be used by some commands. Currently only git-instaweb[1] and git-help[1] may use it"},{name:"worktree.guessRemote",description:'If no branch is specified and neither `-b` nor `-B` nor `--detach` is used, then `git worktree add` defaults to creating a new branch from HEAD. If `worktree.guessRemote` is set to true, `worktree add` tries to find a remote-tracking branch whose name uniquely matches the new branch name. If such a branch exists, it is checked out and set as "upstream" for the new branch. If no such match can be found, it falls back to creating a new branch from the current HEAD'}],h=[{name:["-n","--dry-run"],description:"Don't actually add the file(s), just show if they exist and/or will be ignored"},{name:["-v","--verbose"],description:"Be verbose"},{name:["-f","--force"],description:"Allow adding otherwise ignored files"},{name:["-i","--interactive"],description:'Add modified contents in the working tree interactively to the index. Optional path arguments may be supplied to limit operation to a subset of the working tree. See "Interactive mode" for details'},{name:["-p","--patch"],description:"Interactively choose hunks of patch between the index and the work tree and add them to the index. This gives the user a chance to review the difference before adding modified contents to the index"},{name:["-e","--edit"],description:"Open the diff vs. the index in an editor and let the user edit it. After the editor was closed, adjust the hunk headers and apply the patch to the index"},{name:["-u","--update"],description:"Update the index just where it already has an entry matching <pathspec>. This removes as well as modifies index entries to match the working tree, but adds no new files"},{name:["-A","--all","--no-ignore-removal"],description:"Update the index not only where the working tree has a file matching <pathspec> but also where the index already has an entry. This adds, modifies, and removes index entries to match the working tree"},{name:["--no-all","--ignore-removal"],description:"Update the index by adding new files that are unknown to the index and files modified in the working tree, but ignore files that have been removed from the working tree. This option is a no-op when no <pathspec> is used"},{name:["-N","--intent-to-add"],description:"Record only the fact that the path will be added later. An entry for the path is placed in the index with no content. This is useful for, among other things, showing the unstaged content of such files with git diff and committing them with git commit -a"},{name:"--refresh",description:"Don't add the file(s), but only refresh their stat() information in the index"},{name:"--ignore-errors",description:"If some files could not be added because of errors indexing them, do not abort the operation, but continue adding the others. The command shall still exit with non-zero status. The configuration variable add.ignoreErrors can be set to true to make this the default behaviour"},{name:"--ignore-missing",description:"This option can only be used together with --dry-run. By using this option the user can check if any of the given files would be ignored, no matter if they are already present in the work tree or not"},{name:"--no-warn-embedded-repo",description:"By default, git add will warn when adding an embedded repository to the index without using git submodule add to create an entry in .gitmodules. This option will suppress the warning (e.g., if you are manually performing operations on submodules)"},{name:"--renormalize",description:"Apply the 'clean' process freshly to all tracked files to forcibly add them again to the index. This is useful after changing core.autocrlf configuration or the text attribute in order to correct files added with wrong CRLF/LF line endings. This option implies -u"},{name:"--chmod",description:"Override the executable bit of the added files. The executable bit is only changed in the index, the files on disk are left unchanged",requiresSeparator:!0,args:{suggestions:["+x","-x"]}},{name:"--pathspec-from-file",description:"Pathspec is passed in <file> instead of commandline args. If <file> is exactly - then standard input is used. Pathspec elements are separated by LF or CR/LF. Pathspec elements can be quoted as explained for the configuration variable core.quotePath (see git-config[1]). See also --pathspec-file-nul and global --literal-pathspecs",args:{name:"File",description:"File with pathspec",template:"filepaths"}},{name:"--pathspec-file-nul",description:"Only meaningful with --pathspec-from-file. Pathspec elements are separated with NUL character and all other characters are taken literally (including newlines and quotes)"},{name:"--",description:"This option can be used to separate command-line options from the list of files"}],u=[{name:"HEAD",icon:"🔻",description:"The most recent commit"},{name:"HEAD~<N>",description:"A specific number of commits",insertValue:"HEAD~"}],f={open:{description:"Open in your browser",options:[{name:["-c","--commit"],description:"Open current commit"},{name:["-i","--issue"],description:"Open issues page"},{name:["-s","--suffix"],description:"Append this suffix",args:{name:"string"}},{name:["-p","--print"],description:"Just print the URL"}]},recent:{description:"Show recent local branches",options:[{name:"-n",description:"Specify a number of branches to show",args:{name:"int"}}]},flow:{description:"Extensions to follow Vincent Driessen's branching model",loadSpec:"git-flow"}},g=[{name:"upload-pack",description:"This serves git fetch-pack and git ls-remote clients. It is enabled by default, but a repository can disable it by setting daemon.uploadpack configuration item to false"},{name:"upload-archive",description:"This serves git archive --remote. It is disabled by default, but a repository can enable it by setting daemon.uploadarch configuration item to true"},{name:"receive-pack",description:"This serves git send-pack clients, allowing anonymous push. It is disabled by default, as there is no authentication in the protocol (in other words, anybody can push anything into the repository, including removal of refs). This is solely meant for a closed LAN setting where everybody is friendly. This service can be enabled by setting daemon.receivepack configuration item to true"}],b={name:"git",description:"Distributed version control system",generateSpec:async(e,t)=>{const{stdout:n}=await t({command:"git",args:["help","-a"]}),i=n.trim().split("\n"),a=[];for(let e=i.findIndex(e=>e.match(/external commands/i))+1;e<i.length;e+=1){const t=i[e].trim();if(!t)break;const n=t.split(/\s+/)[0];a.push(n)}return{name:"git",subcommands:a.map(e=>({name:e,...f[e]??{description:`Run git-${e}`}}))}},args:{name:"alias",description:"Custom user defined git alias",parserDirectives:{alias:async(e,t)=>{const{stdout:n,status:i}=await t({command:"git",args:["config","--get",`alias.${e}`]});if(0!==i)throw new Error("Failed parsing alias");return n}},isOptional:!0,generators:t.gitGenerators.aliases},options:[{name:"--version",description:"Output version"},{name:"--help",description:"Output help"},{name:"-C",args:{name:"path",template:"folders"},description:"Run as if git was started in <path>"},{name:"-c",insertValue:"-c {cursor}",description:"Pass a config parameter to the command",args:{name:"name=value"}},{name:"--exec-path",args:{name:"path",isOptional:!0,template:"folders"},description:"Get or set GIT_EXEC_PATH for core Git programs"},{name:"--html-path",description:"Print Git's HTML documentation path"},{name:"--man-path",description:"Print the manpath for this version of Git"},{name:"--info-path",description:"Print the info path documenting this version of Git"},{name:["-p","--paginate"],description:"Pipe output into `less` or custom $PAGER"},{name:"--no-pager",description:"Do not pipe Git output into a pager"},{name:"--no-replace-objects",description:"Do not use replacement refs"},{name:"--no-optional-locks",description:"Do not perform optional operations that require lock files"},{name:"--bare",description:"Treat the repository as a bare repository"},{name:"--git-dir",args:{name:"path",template:"folders"},description:"Set the path to the repository dir (`.git`)"},{name:"--work-tree",args:{name:"path",template:"folders"},description:"Set working tree path"},{name:"--namespace",args:{name:"name"},description:"Set the Git namespace"}],subcommands:[{name:"archive",description:"Create an archive of files from a named tree",args:[{name:"tree-ish",generators:t.gitGenerators.treeish},{name:"path",template:"filepaths",isVariadic:!0,isOptional:!0}],options:[{name:"--format",description:"Archive format",args:{name:"fmt",suggestions:["tar","zip"]}},{name:"--prefix",description:"Prepend prefix to each pathname in the archive",args:{name:"prefix"}},{name:"--add-file",description:"Add untracked file to archive",args:{name:"file",template:"filepaths"}},{name:["-o","--output"],description:"Write the archive to this file",args:{name:"file",template:"filepaths"}},{name:"--worktree-attributes",description:"Read .gitattributes in working directory"},{name:["-v","--verbose"],description:"Report archived files on stderr"},{name:"-NUM",insertValue:"-",description:"Set compression level"},{name:["-l","--list"],description:"List supported archive formats"},{name:"--remote",description:"Retrieve the archive from remote repository <repo>",args:{name:"repo"}},{name:"--exec",description:"Path to the remote git-upload-archive command",args:{name:"command"}}]},{name:"blame",args:{name:"file",template:"filepaths"},options:[{name:"--incremental",description:"Show blame entries as we find them, incrementally"},{name:"-b",description:"Do not show object names of boundary commits (Default: off)"},{name:"--root",description:"Do not treat root commits as boundaries (Default: off)"},{name:"--show-stats",description:"Show work cost statistics"},{name:"--progress",description:"Force progress reporting"},{name:"--score-debug",description:"Show output score for blame entries"},{name:["-f","--show-name"],description:"Show original filename (Default: auto)"},{name:["-n","--show-number"],description:"Show original linenumber (Default: off)"},{name:["-p","--porcelain"],description:"Show in a format designed for machine consumption"},{name:"--line-porcelain",description:"Show porcelain format with per-line commit information"},{name:"-c",description:"Use the same output mode as git-annotate (Default: off)"},{name:"-t",description:"Show raw timestamp (Default: off)"},{name:"-l",description:"Show long commit SHA1 (Default: off)"},{name:"-s",description:"Suppress author name and timestamp (Default: off)"},{name:["-e","--show-email"],description:"Show author email instead of name (Default: off)"},{name:"-w",description:"Ignore whitespace differences"},{name:"--ignore-rev",description:"Ignore <rev> when blaming",args:{name:"rev",generators:t.gitGenerators.revs}},{name:"--ignore-revs-file",description:"Ignore revisions from <file>",args:{name:"file",template:"filepaths"}},{name:"--color-lines",description:"Color redundant metadata from previous line differently"},{name:"--color-by-age",description:"Color lines by age"},{name:"--minimal",description:"Spend extra cycles to find better match"},{name:"-S",description:"Use revisions from <file> instead of calling git-rev-list",args:{name:"file",template:"filepaths"}},{name:"--contents",description:"Use <file>'s contents as the final image",args:{name:"file",template:"filepaths"}},{name:"-C",insertValue:"-C{cursor}",description:"Find line copies within and across files"},{name:"-M",insertValue:"-M{cursor}",description:"Find line movements within and across files"},{name:"-L",description:"Process only line range <start>,<end> or function :<funcname>",args:{name:"start,end"}},{name:"--abbrev",requiresSeparator:!0,description:"Use <n> digits to display object names",args:{name:"n",isOptional:!0}}]},{name:"commit",description:"Record changes to the repository",args:{name:"pathspec",isOptional:!0,isVariadic:!0,template:"filepaths"},options:[{name:["-m","--message"],description:"Use the given message as the commit message",args:{name:"message",generators:void 0}},{name:["-a","--all"],description:"Stage all modified and deleted paths"},{name:"-am",insertValue:"-am '{cursor}'",description:"Stage all and use given text as commit message",args:{name:"message"}},{name:["-v","--verbose"],description:"Show unified diff of all file changes"},{name:["-p","--patch"],description:"Use the interactive patch selection interface to chose which changes to commi"},{name:["-C","--reuse-message"],description:"Take an existing commit object, and reuse the log message and the authorship",args:{name:"commit",generators:t.gitGenerators.commits}},{name:["-c","--reedit-message"],description:"Like -C, but with -c the editor is invoked, so that the user can further edit",args:{name:"commit",generators:t.gitGenerators.commits}},{name:"--fixup",description:"Construct a commit message for use with rebase --autosquash. The commit messa",args:{name:"commit",generators:t.gitGenerators.commits}},{name:"--squash",description:"Construct a commit message for use with rebase --autosquash. The commit messa",args:{name:"commit",generators:t.gitGenerators.commits}},{name:"--reset-author",description:"When used with -C/-c/--amend options, or when committing after a conflicting"},{name:"--short",description:"When doing a dry-run, give the output in the short-format. See git-status[1]"},{name:"--branch",description:"Show the branch and tracking info even in short-format"},{name:"--porcelain",description:"When doing a dry-run, give the output in a porcelain-ready format. See git-st"},{name:"--long",description:"When doing a dry-run, give the output in the long-format. Implies --dry-run"},{name:["-z","--null"],description:"When showing short or porcelain status output, print the filename verbatim an"},{name:["-F","--file"],description:"Take the commit message from the given file. Use - to read the message from t",args:{name:"file",template:"filepaths"}},{name:"--author",description:"Override the commit author. Specify an explicit author using the standard A U",args:{name:"author"}},{name:"--date",description:"Override the author date used in the commit",args:{name:"date"}},{name:["-t","--template"],description:"When editing the commit message, start the editor with the contents in the gi",args:{name:"file",template:"filepaths"}},{name:["-s","--signoff"],description:"Add a Signed-off-by trailer by the committer at the end of the commit log mes"},{name:"--no-signoff",description:"Don't add a Signed-off-by trailer by the committer at the end of the commit l"},{name:["-n","--no-verify"],description:"This option bypasses the pre-commit and commit-msg hooks. See also githooks[5]"},{name:"--allow-empty",description:"Usually recording a commit that has the exact same tree as its sole parent co"},{name:"--allow-empty-message",description:"Like --allow-empty this command is primarily for use by foreign SCM interface"},{name:"--cleanup",description:"This option determines how the supplied commit message should be cleaned up b",args:{name:"mode",description:"Determines how the supplied commit messaged should be cleaned up before committing",suggestions:[{name:"strip",description:"Strip leading and trailing empty lines, trailing whitepace, commentary and collapse consecutive empty lines"},{name:"whitespace",description:"Same as strip except #commentary is not removed"},{name:"verbatim",description:"Do not change the message at all"},{name:"scissors",description:"Same as whitespace except that everything from (and including) the line found below is truncated"},{name:"default",description:"Same as strip if the message is to be edited. Otherwise whitespace"}]}},{name:["-e","--edit"],description:"The message taken from file with -F, command line with -m, and from commit ob"},{name:"--no-edit",description:"Use the selected commit message without launching an editor. For example, git"},{name:"--amend",description:"Replace the tip of the current branch by creating a new commit. The recorded"},{name:"--no-post-rewrite",description:"Bypass the post-rewrite hook"},{name:["-i","--include"],description:"Before making a commit out of staged contents so far, stage the contents of p"},{name:["-o","--only"],description:"Make a commit by taking the updated working tree contents of the paths specif"},{name:"--pathspec-from-file",description:"Pathspec is passed in instead of commandline args. If is exactly - then stand",args:{name:"file",template:"filepaths"}},{name:"--pathspec-file-nul",description:"Only meaningful with --pathspec-from-file. Pathspec elements are separated wi"},{name:["-u","--untracked-files"],description:"Show untracked files. The mode parameter is optional (defaults to all), and i",args:{name:"mode",suggestions:["no","normal","all"],isOptional:!0}},{name:["-q","--quiet"],description:"Suppress commit summary message"},{name:"--dry-run",description:"Do not create a commit, but show a list of paths that are to be committed, pa"},{name:"--status",description:"Include the output of git-status[1] in the commit message template when using"},{name:"--no-status",description:"Do not include the output of git-status[1] in the commit message template whe"},{name:["-S","--gpg-sign"],description:"GPG-sign commits. The keyid argument is optional and defaults to the committe",args:{name:"keyid",isOptional:!0}},{name:"--no-gpg-sign",description:"Dont GPG-sign commits"},{name:"--",description:"Do not interpret any more arguments as options"}]},{name:"config",description:"Change Git configuration",options:[{name:"--local",description:"Default: write to the repository .git/config file",args:{isVariadic:!0,suggestions:[{name:"user.name",description:"Set config for username",insertValue:"user.name '{cursor}'"},{name:"user.email",description:"Set config for email",insertValue:"user.email '{cursor}'"}]}},{name:"--global",description:"For writing options: write to global ~/.gitconfig file rather than the repository .git/config"},{name:"--replace-all",description:"Default behavior is to replace at most one line. This replaces all lines matc"},{name:"--add",description:"Adds a new line to the option without altering any existing values. This is t"},{name:"--get",description:"Get the value for a given key (optionally filtered by a regex matching the va"},{name:"--get-all",description:"Like get, but returns all values for a multi-valued key"},{name:"--get-regexp",description:"Like --get-all, but interprets the name as a regular expression and writes ou",args:{name:"regexp"}},{name:"--get-urlmatch",description:"When given a two-part name section.key, the value for section..key whose part",args:[{name:"name"},{name:"url"}]},{name:"--system",description:"For writing options: write to system-wide $(prefix)/etc/gitconfig rather than"},{name:"--worktree",description:"Similar to --local except that.git/config.worktree is read from or written to"},{name:["-f","--file"],description:"Use the given config file instead of the one specified by GIT_CONFIG",args:{name:"config-file",template:"filepaths"}},{name:"--blob",description:"Similar to --file but use the given blob instead of a file. E.g. you can use",args:{name:"blob"}},{name:"--remove-section",description:"Remove the given section from the configuration file"},{name:"--rename-section",description:"Rename the given section to a new name"},{name:"--unset",description:"Remove the line matching the key from config file"},{name:"--unset-all",description:"Remove all lines matching the key from config file"},{name:["-l","--list"],description:"List all variables set in config file, along with their values"},{name:"--fixed-value",description:"When used with the value-pattern argument, treat value-pattern as an exact st"},{name:"--type",description:"Git config will ensure that any input or output is valid under the given type",args:{name:"type",suggestions:["bool","int","bool-or-int","path","expiry-date","color"]}},{name:"--no-type",description:"Un-sets the previously set type specifier (if one was previously set). This o"},{name:["-z","--null"],description:"For all options that output values and/or keys, always end values with the nu"},{name:"--name-only",description:"Output only the names of config variables for --list or --get-regexp"},{name:"--show-origin",description:"Augment the output of all queried config options with the origin type (file"},{name:"--show-scope",description:"Similar to --show-origin in that it augments the output of all queried config"},{name:"--get-colorbool",description:'Find the color setting for name (e.g. color.diff) and output "true" or "false',args:{name:"name"}},{name:"--get-color",description:"Find the color configured for name (e.g. color.diff.new) and output it as the",args:[{name:"name"},{name:"default",isOptional:!0}]},{name:["-e","--edit"],description:"Opens an editor to modify the specified config file; either --system, --globa"},{name:"--includes",description:"Respect include.* directives in config files when looking up values. Defaults"},{name:"--no-includes",description:"Respect include.* directives in config files when looking up values. Defaults"},{name:"--default",description:"When using --get, and the requested variable is not found, behave as if were",args:{name:"value",isOptional:!0}}],args:[{name:"setting",suggestCurrentToken:!0,suggestions:p.map(e=>({...e,icon:"⚙️"})),generators:{script:["git","config","--get-regexp",".*"],postProcess:e=>e.trim().split("\n").map(e=>e.slice(0,e.indexOf(" "))).filter(e=>e.startsWith("alias.")||e.startsWith("branch.")||e.startsWith("remote.")||!p.find(({name:t})=>e===t)).map(e=>({name:e,icon:"⚙️"}))}},{name:"value"}]},{name:"rebase",description:"Reapply commits on top of another base tip",options:[{name:"--onto",description:"Starting point at which to create the new commits. If the --onto option is not specified, the starting point is <upstream>. May be any valid commit, and not just an existing branch name. As a special case, you may use 'A...B' as a shortcut for the merge base of A and B if there is exactly one merge base. You can leave out at most one of A and B, in which case it defaults to HEAD",args:{name:"newbase",generators:t.gitGenerators.commits}},{name:"--keep-base",description:"Set the starting point at which to create the new commits to the merge base of <upstream> <branch>. Running git rebase --keep-base <upstream> <branch> is equivalent to running git rebase --onto <upstream>...<branch> <upstream> <branch>. This option is useful in the case where one is developing a feature on top of an upstream branch. While the feature is being worked on, the upstream branch may advance and it may not be the best idea to keep rebasing on top of the upstream but to keep the base commit as-is. Although both this option and --fork-point find the merge base between <upstream> and <branch>, this option uses the merge base as the starting point on which new commits will be created, whereas --fork-point uses the merge base to determine the set of commits which will be rebased"},{name:"--continue",description:"Restart the rebasing process after having resolved a merge conflict"},{name:"--abort",description:"Abort the rebase operation and reset HEAD to the original branch. If <branch> was provided when the rebase operation was started, then HEAD will be reset to <branch>. Otherwise HEAD will be reset to where it was when the rebase operation was started"},{name:"--quit",description:"Abort the rebase operation but HEAD is not reset back to the original branch. The index and working tree are also left unchanged as a result. If a temporary stash entry was created using --autostash, it will be saved to the stash list"},{name:"--apply",description:"Use applying strategies to rebase (calling git-am internally). This option may become a no-op in the future once the merge backend handles everything the apply one does"},{name:"--empty",description:"How to handle commits that are not empty to start and are not clean cherry-picks of any upstream commit, but which become empty after rebasing (because they contain a subset of already upstream changes). With drop (the default), commits that become empty are dropped. With keep, such commits are kept. With ask (implied by --interactive), the rebase will halt when an empty commit is applied allowing you to choose whether to drop it, edit files more, or just commit the empty changes. Other options, like --exec, will use the default of drop unless -i/--interactive is explicitly specified. Note that commits which start empty are kept (unless --no-keep-empty is specified), and commits which are clean cherry-picks (as determined by git log --cherry-mark ...) are detected and dropped as a preliminary step (unless --reapply-cherry-picks is passed)",args:{isOptional:!0,suggestions:["drop","keep","ask"]}},{name:"--no-keep-empty",description:"Do not keep commits that start empty before the rebase (i.e. that do not change anything from its parent) in the result. The default is to keep commits which start empty, since creating such commits requires passing the --allow-empty override flag to git commit, signifying that a user is very intentionally creating such a commit and thus wants to keep it. Usage of this flag will probably be rare, since you can get rid of commits that start empty by just firing up an interactive rebase and removing the lines corresponding to the commits you don't want. This flag exists as a convenient shortcut, such as for cases where external tools generate many empty commits and you want them all removed. For commits which do not start empty but become empty after rebasing, see the --empty flag"},{name:"--keep-empty",description:"Keep commits that start empty before the rebase (i.e. that do not change anything from its parent) in the result. The default is to keep commits which start empty, since creating such commits requires passing the --allow-empty override flag to git commit, signifying that a user is very intentionally creating such a commit and thus wants to keep it. Usage of this flag will probably be rare, since you can get rid of commits that start empty by just firing up an interactive rebase and removing the lines corresponding to the commits you don't want. This flag exists as a convenient shortcut, such as for cases where external tools generate many empty commits and you want them all removed. For commits which do not start empty but become empty after rebasing, see the --empty flag"},{name:"--reapply-cherry-picks",description:"Reapply all clean cherry-picks of any upstream commit instead of preemptively dropping them. (If these commits then become empty after rebasing, because they contain a subset of already upstream changes, the behavior towards them is controlled by the --empty flag). By default (or if --no-reapply-cherry-picks is given), these commits will be automatically dropped. Because this necessitates reading all upstream commits, this can be expensive in repos with a large number of upstream commits that need to be read. --reapply-cherry-picks allows rebase to forgo reading all upstream commits, potentially improving performance"},{name:"--no-reapply-cherry-picks",description:"Do not reapply all clean cherry-picks of any upstream commit instead of preemptively dropping them"},{name:"--allow-empty-message",description:"No-op. Rebasing commits with an empty message used to fail and this option would override that behavior, allowing commits with empty messages to be rebased. Now commits with an empty message do not cause rebasing to halt"},{name:"--skip",description:"Restart the rebasing process by skipping the current patch"},{name:"--edit-todo",description:"Edit the todo list during an interactive rebase"},{name:"--show-current-patch",description:"Show the current patch in an interactive rebase or when rebase is stopped because of conflicts. This is the equivalent of git show REBASE_HEAD"},{name:["-m","--merge"],description:"Use merging strategies to rebase. When the recursive (default) merge strategy is used, this allows rebase to be aware of renames on the upstream side. This is the default. Note that a rebase merge works by replaying each commit from the working branch on top of the <upstream> branch. Because of this, when a merge conflict happens, the side reported as ours is the so-far rebased series, starting with <upstream>, and theirs is the working branch. In other words, the sides are swapped"},{name:["-s","--strategy"],isRepeatable:!0,description:"Use the given merge strategy. If there is no -s option git merge-recursive is used instead. This implies --merge. Because git rebase replays each commit from the working branch on top of the <upstream> branch using the given strategy, using the ours strategy simply empties all patches from the <branch>, which makes little sense",args:{name:"strategy",isVariadic:!0,suggestions:["resolve","recursive","octopus","ours","subtree"]}},{name:["-X","--strategy-option"],description:"Pass the <strategy-option> through to the merge strategy. This implies --merge and, if no strategy has been specified, -s recursive. Note the reversal of ours and theirs as noted above for the -m option",args:{name:"option",suggestions:["ours","theirs","patience","diff-algorithm","diff-algorithm=patience","diff-algorithm=minimal","diff-algorithm=histogram","diff-algorithm=myers","ignore-space-change","ignore-all-space","ignore-space-at-eol","ignore-cr-at-eol","renormalize","no-renormalize","no-renames","find-renames","subtree"]}},{name:"--rerere-autoupdate",description:"Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"},{name:"--no-rerere-autoupdate",description:"Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"},{name:["-S","--gpg-sign"],description:"GPG-sign commits. The keyid argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space. --no-gpg-sign is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign",args:{name:"keyid",isOptional:!0}},{name:"--no-gpg-sign",description:"Do not GPG-sign commits.--no-gpg-sign is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign"},{name:["-q","--quiet"],description:"Be quiet. Implies --no-stat"},{name:["-v","--verbose"],description:"Be verbose. Implies --stat"},{name:"--stat",description:"Show a diffstat of what changed upstream since the last rebase. The diffstat is also controlled by the configuration option rebase.stat"},{name:["-n","--no-stat"],description:"Do not show a diffstat as part of the rebase process"},{name:"--no-verify",description:"This option bypasses the pre-rebase hook. See also githooks[5]"},{name:"--verify",description:"Allows the pre-rebase hook to run, which is the default. This option can be used to override --no-verify. See also githooks[5]"},{name:"-C",description:"Ensure at least <n> lines of surrounding context match before and after each change. When fewer lines of surrounding context exist they all must match. By default no context is ever ignored. Implies --apply",args:{name:"n"}},{name:["--no-ff","--force-rebase","-f"],description:"Individually replay all rebased commits instead of fast-forwarding over the unchanged ones. This ensures that the entire history of the rebased branch is composed of new commits. You may find this helpful after reverting a topic branch merge, as this option recreates the topic branch with fresh commits so it can be remerged successfully without needing to 'revert the reversion' (see the revert-a-faulty-merge How-To for details)"},{name:"--fork-point",description:"Use reflog to find a better common ancestor between <upstream> and <branch> when calculating which commits have been introduced by <branch>. When --fork-point is active, fork_point will be used instead of <upstream> to calculate the set of commits to rebase, where fork_point is the result of git merge-base --fork-point <upstream> <branch> command (see git-merge-base[1]). If fork_point ends up being empty, the <upstream> will be used as a fallback. If <upstream> is given on the command line, then the default is --no-fork-point, otherwise the default is --fork-point. If your branch was based on <upstream> but <upstream> was rewound and your branch contains commits which were dropped, this option can be used with --keep-base in order to drop those commits from your branch"},{name:"--no-fork-point",description:"Do not use reflog to find a better common ancestor between <upstream> and <branch> when calculating which commits have been introduced by <branch>. When --fork-point is active, fork_point will be used instead of <upstream> to calculate the set of commits to rebase, where fork_point is the result of git merge-base --fork-point <upstream> <branch> command (see git-merge-base[1]). If fork_point ends up being empty, the <upstream> will be used as a fallback. If <upstream> is given on the command line, then the default is --no-fork-point, otherwise the default is --fork-point. If your branch was based on <upstream> but <upstream> was rewound and your branch contains commits which were dropped, this option can be used with --keep-base in order to drop those commits from your branch"},{name:"--ignore-whitespace",description:"Ignore whitespace differences when trying to reconcile differences. Currently, each backend implements an approximation of this behavior: apply backend: When applying a patch, ignore changes in whitespace in context lines. Unfortunately, this means that if the 'old' lines being replaced by the patch differ only in whitespace from the existing file, you will get a merge conflict instead of a successful patch application. merge backend: Treat lines with only whitespace changes as unchanged when merging. Unfortunately, this means that any patch hunks that were intended to modify whitespace and nothing else will be dropped, even if the other side had no changes that conflicted"},{name:"--whitespace",description:"This flag is passed to the git apply program (see git-apply[1]) that applies the patch. Implies --apply",args:{name:"option"}},{name:"--committer-date-is-author-date",description:"Instead of using the current time as the committer date, use the author date of the commit being rebased as the committer date. This option implies --force-rebase"},{name:["--ignore-date","--reset-author-date"],description:"Instead of using the author date of the original commit, use the current time as the author date of the rebased commit. This option implies --force-rebase"},{name:"--signoff",description:"Add a Signed-off-by trailer to all the rebased commits. Note that if --interactive is given then only commits marked to be picked, edited or reworded will have the trailer added"},{name:["-i","--interactive"],description:"Make a list of the commits which are about to be rebased. Let the user edit that list before rebasing. This mode can also be used to split commits (see SPLITTING COMMITS below). The commit list format can be changed by setting the configuration option rebase.instructionFormat. A customized instruction format will automatically have the long commit hash prepended to the format"},{name:["-r","--rebase-merges"],description:"By default, a rebase will simply drop merge commits from the todo list, and put the rebased commits into a single, linear branch. With --rebase-merges, the rebase will instead try to preserve the branching structure within the commits that are to be rebased, by recreating the merge commits. Any resolved merge conflicts or manual amendments in these merge commits will have to be resolved/re-applied manually. By default, or when no-rebase-cousins was specified, commits which do not have <upstream> as direct ancestor will keep their original branch point, i.e. commits that would be excluded by git-log[1]'s --ancestry-path option will keep their original ancestry by default. If the rebase-cousins mode is turned on, such commits are instead rebased onto <upstream> (or <onto>, if specified). The --rebase-merges mode is similar in spirit to the deprecated --preserve-merges but works with interactive rebases, where commits can be reordered, inserted and dropped at will. It is currently only possible to recreate the merge commits using the recursive merge strategy; Different merge strategies can be used only via explicit exec git merge -s <strategy> [...] commands",args:{name:"mode",isOptional:!0,suggestions:["rebase-cousins","no-rebase-cousins"]}},{name:["-x","--exec"],insertValue:"-x '{cursor}'",description:"Append 'exec <cmd>' after each line creating a commit in the final history. <cmd> will be interpreted as one or more shell commands. Any command that fails will interrupt the rebase, with exit code 1. You may execute several commands by either using one instance of --exec with several commands: git rebase -i --exec 'cmd1 && cmd2 && ...' or by giving more than one --exec: git rebase -i --exec 'cmd1' --exec 'cmd2' --exec ... If --autosquash is used, 'exec' lines will not be appended for the intermediate commits, and will only appear at the end of each squash/fixup series. This uses the --interactive machinery internally, but it can be run without an explicit --interactive",args:{name:"cmd"}},{name:"--root",description:"Rebase all commits reachable from <branch>, instead of limiting them with an <upstream>. This allows you to rebase the root commit(s) on a branch. When used with --onto, it will skip changes already contained in <newbase> (instead of <upstream>) whereas without --onto it will operate on every change. When used together with both --onto and --preserve-merges, all root commits will be rewritten to have <newbase> as parent instead"},{name:"--autosquash",description:"When the commit log message begins with 'squash!' (or 'fixup!'), and there is already a commit in the todo list that matches the same ..., automatically modify the todo list of rebase -i so that the commit marked for squashing comes right after the commit to be modified, and change the action of the moved commit from pick to squash (or fixup). A commit matches the ... if the commit subject matches, or if the ... refers to the commit's hash. As a fall-back, partial matches of the commit subject work, too. The recommended way to create fixup/squash commits is by using the --fixup/--squash options of git-commit[1]"},{name:"--no-autosquash",description:"When the commit log message begins with 'squash!' (or 'fixup!'), and there is already a commit in the todo list that matches the same ..., automatically modify the todo list of rebase -i so that the commit marked for squashing comes right after the commit to be modified, and change the action of the moved commit from pick to squash (or fixup). A commit matches the ... if the commit subject matches, or if the ... refers to the commit's hash. As a fall-back, partial matches of the commit subject work, too. The recommended way to create fixup/squash commits is by using the --fixup/--squash options of git-commit[1]"},{name:"--autostash",description:"Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run rebase on a dirty worktree. However, use with care: the final stash application after a successful rebase might result in non-trivial conflicts"},{name:"--no-autostash",description:"Do not automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run rebase on a dirty worktree. However, use with care: the final stash application after a successful rebase might result in non-trivial conflicts"},{name:"--reschedule-failed-exec",description:"Automatically reschedule exec commands that failed. This only makes sense in interactive mode (or when an --exec option was provided)"},{name:"--no-reschedule-failed-exec",description:"Do not automatically reschedule exec commands that failed. This only makes sense in interactive mode (or when an --exec option was provided)"}],args:[{name:"base",generators:t.gitGenerators.localBranches,suggestions:[{name:"-",description:"Use the last ref as the base"}],filterStrategy:"fuzzy",isOptional:!0},{name:"new base",generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy",isOptional:!0}]},{name:"add",description:"Add file contents to the index",options:h,args:{name:"pathspec",isVariadic:!0,isOptional:!0,generators:[t.gitGenerators.files_for_staging,{template:"folders"}]}},{name:"stage",description:"Add file contents to the staging area",options:h,args:{name:"pathspec",isVariadic:!0,isOptional:!0,generators:t.gitGenerators.files_for_staging}},{name:"status",description:"Show the working tree status",options:[{name:["-s","--short"],description:"Give the output in the short-format"},{name:["-v","--verbose"],description:"Be verbose"},{name:["-b","--branch"],description:"Show branch information"},{name:"--show-stash",description:"Show stash information"},{name:"--porcelain",description:"Give the output in the short-format",args:{name:"version",isOptional:!0}},{name:"--ahead-behind",description:"Display full ahead/behind values"},{name:"--no-ahead-behind",description:"Do not display full ahead/behind values"},{name:"--column",description:"Display full ahead/behind values",args:{name:"options",description:"Defaults to always",isOptional:!0}},{name:"--no-column",description:"Do not display untracked files in columns",args:{name:"options",description:"Defaults to never",isOptional:!0}},{name:"--long",description:"Show status in long format (default)"},{name:["-z","--null"],description:"Terminate entries with NUL"},{name:["-u","--untracked-files"],description:"Show untracked files",args:{isOptional:!0,suggestions:[{name:"all",description:"(Default)"},{name:"normal"},{name:"no"}]}},{name:"--ignore-submodules",description:"Ignore changes to submodules when looking for changes",args:{name:"when",isOptional:!0,suggestions:[{name:"all",description:"(Default)"},{name:"dirty"},{name:"untracked"},{name:"none"}]}},{name:"--ignored",description:"Show ignored files",args:{isOptional:!0,suggestions:[{name:"traditional",description:"(Default)"},{name:"matching"},{name:"no"}]}},{name:"--no-renames",description:"Do not detect renames"},{name:"--renames",description:"Turn on rename detection regardless of user configuration"},{name:"--find-renames",description:"Turn on rename detection, optionally setting the similarity threshold",args:{name:"n",isOptional:!0}}],args:{name:"pathspec",isVariadic:!0,isOptional:!0,generators:t.gitGenerators.files_for_staging}},{name:"clean",description:"Shows which files would be removed from working directory",options:[{name:"-d",description:"Normally, when no <path> is specified, git clean will not recurse into untracked directories to avoid removing too much. Specify -d to have it recurse into such directories as well. If any paths are specified, -d is irrelevant; all untracked files matching the specified paths (with exceptions for nested git directories mentioned under --force) will be removed"},{name:["-f","--force"],description:"If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f or -i"},{name:["-i","--interactive"],description:"Show what would be done and clean files interactively"},{name:["-n","--dry-run"],description:"Don't actually remove anything, just show what would be done"},{name:["-q","--quiet"],description:"Be quiet, only report errors, but not the files that are successfully removed"},{name:["-e","--exclude"],description:"Use the given exclude pattern in addition to the standard ignore rules",args:{name:"pattern"}},{name:"-x",description:"Don't use the standard ignore rules (see gitignore(5)), but still use the ignore rules given with -e options from the command line. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git restore or git reset) to create a pristine working directory to test a clean build"},{name:"-X",description:"Remove only files ignored by Git. This may be useful to rebuild everything from scratch, but keep manually created files"}],args:{name:"path",template:"filepaths"}},{name:"revert",description:"Create new commit that undoes all of the changes made in <commit>, then apply it to the current branch",args:{name:"commit",isOptional:!0,generators:t.gitGenerators.commits}},{name:"ls-remote",description:"List references in a remote repository"},{name:"push",description:"Update remote refs",options:[{name:"--all",description:"Push all branches (i.e. refs under refs/heads/); cannot be used with other <refspec>"},{name:"--prune",description:"Remove remote branches that don't have a local counterpart"},{name:"--mirror",description:"Instead of naming each ref to push, specifies that all refs under refs/ be mirrored to the remote repository"},{name:["-n","--dry-run"],description:"Do everything except actually send the updates"},{name:"--porcelain",description:"Produce machine-readable output. The output status line for each ref will be tab-separated and sent to stdout instead of stderr"},{name:["-d","--delete"],description:"All listed refs are deleted from the remote repository. This is the same as prefixing all refs with a colon"},{name:"--tags",description:"All refs under refs/tags are pushed, in addition to refspecs explicitly listed on the command line"},{name:"--follow-tags",description:"Push all the refs that would be pushed without this option, and also push annotated tags in refs/tags that are missing from the remote but are pointing at commit-ish that are reachable from the refs being pushed. This can also be specified with configuration variable push.followTags"},{name:"--signed",description:"GPG-sign the push request to update refs on the receiving side, to allow it to be checked by the hooks and/or be logged. If false or --no-signed, no signing will be attempted. If true or --signed, the push will fail if the server does not support signed pushes. If set to if-asked, sign if and only if the server supports signed pushes. The push will also fail if the actual call to gpg --sign fails. See git-receive-pack(1) for the details on the receiving end",args:{isOptional:!0,suggestions:["true","false","if-asked"]}},{name:"--no-signed",description:"GPG-sign the push request to update refs on the receiving side, to allow it to be checked by the hooks and/or be logged. If false or --no-signed, no signing will be attempted. If true or --signed, the push will fail if the server does not support signed pushes. If set to if-asked, sign if and only if the server supports signed pushes. The push will also fail if the actual call to gpg --sign fails. See git-receive-pack(1) for the details on the receiving end"},{name:"--atomic",description:"Use an atomic transaction on the remote side if available. Either all refs are updated, or on error, no refs are updated. If the server does not support atomic pushes the push will fail"},{name:"--no-atomic",description:"Use an atomic transaction on the remote side if available. Either all refs are updated, or on error, no refs are updated. If the server does not support atomic pushes the push will fail"},{name:["-f","--force"],description:"Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. Also, when --force-with-lease option is used, the command refuses to update a remote ref whose current value does not match what is expected. This flag disables these checks, and can cause the remote repository to lose commits; use it with care"},{name:"--repo",requiresSeparator:!0,description:"This option is equivalent to the <repository> argument. If both are specified, the command-line argument takes precedence",args:{name:"repository"}},{name:["-u","--set-upstream"],description:"For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands"},{name:"--thin",description:"These options are passed to git-send-pack(1). A thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common. The default is --thin"},{name:"--no-thin",description:"These options are passed to git-send-pack(1). A thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common. The default is --thin"},{name:["-q","--quiet"],description:"Suppress all output, including the listing of updated refs, unless an error occurs. Progress is not reported to the standard error stream"},{name:["-v","--verbose"],description:"Run verbosely"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal"},{name:"--no-recurse-submodules",description:"May be used to make sure all submodule commits used by the revisions to be pushed are available on a remote-tracking branch. If check is used Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule. If any commits are missing the push will be aborted and exit with non-zero status. If on-demand is used all submodules that changed in the revisions to be pushed will be pushed. If on-demand was not able to push all necessary revisions it will also be aborted and exit with non-zero status. If only is used all submodules will be recursively pushed while the superproject is left unpushed. A value of no or using --no-recurse-submodules can be used to override the push.recurseSubmodules configuration variable when no submodule recursion is required"},{name:"--recurse-submodules",requiresSeparator:!0,description:"May be used to make sure all submodule commits used by the revisions to be pushed are available on a remote-tracking branch. If check is used Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule. If any commits are missing the push will be aborted and exit with non-zero status. If on-demand is used all submodules that changed in the revisions to be pushed will be pushed. If on-demand was not able to push all necessary revisions it will also be aborted and exit with non-zero status. If only is used all submodules will be recursively pushed while the superproject is left unpushed. A value of no or using --no-recurse-submodules can be used to override the push.recurseSubmodules configuration variable when no submodule recursion is required",args:{suggestions:["check","on-demand","only","no"]}},{name:"--verify",description:"Turn on the pre-push hook. The default is --verify, giving the hook a chance to prevent the push. With"},{name:"--no-verify",description:"Turn off the pre-push hook. The default is --verify, giving the hook a chance to prevent the push. With"},{name:["-4","--ipv4"],description:"Use IPv4 addresses only, ignoring IPv6 addresses"},{name:["-6","--ipv6"],description:"Use IPv6 addresses only, ignoring IPv4 addresses"},{name:["-o","--push-option"],description:"Transmit the given string to the server, which passes them to the pre-receive as well as the post-receive hook. The given string must not contain a NUL or LF character. When multiple --push-option=<option> are given, they are all sent to the other side in the order listed on the command line. When no --push-option=<option> is given from the command line, the values of configuration variable push.pushOption are used instead",args:{name:"option"}},{name:["--receive-pack","--exec"],description:"Path to the git-receive-pack program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH",args:{name:"git-receive-pack"}},{name:"--no-force-with-lease",description:"Cancel all the previous --force-with-lease on the command line"},{name:"--force-with-lease",description:"Protect the named ref (alone), if it is going to be updated, by requiring its current value to be the same as the specified value <expect> (which is allowed to be different from the remote-tracking branch we have for the refname, or we do not even have to have such a remote-tracking branch when this form is used). If <expect> is the empty string, then the named ref must not already exist",args:{name:"refname[:expect]",isOptional:!0}}],args:[{name:"remote",isOptional:!0,generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"branch",isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:"pull",description:"Integrate with another repository",options:[{name:["--rebase","-r"],isDangerous:!0,description:"Fetch the remote's copy of current branch and rebases it into the local copy",args:{isOptional:!0,name:"remote",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy",suggestions:["false","true","merges","preserve","interactive"]}},{name:"--no-rebase",description:"Override earlier --rebase"},{name:"--commit",description:"Perform the merge and commit the result. This option can be used to override --no-commit"},{name:"--no-commit",description:"Perform the merge and stop just before creating a merge commit, to give the user a chance to inspect and further tweak the merge result before committing"},{name:["--edit","-e"],description:"Invoke an editor before committing successful mechanical merge to further edit the auto-generated merge message, so that the user can explain and justify the merge"},{name:"--no-edit",description:"The --no-edit option can be used to accept the auto-generated message (this is generally discouraged). The --edit (or -e) option is still useful if you are giving a draft message with the -m option from the command line and want to edit it in the editor"},{name:"--cleanup",description:"This option determines how the merge message will be cleaned up before committing. See git-commit[1] for more details. In addition, if the <mode> is given a value of scissors, scissors will be appended to MERGE_MSG before being passed on to the commit machinery in the case of a merge conflict",requiresSeparator:!0,args:{name:"mode",suggestions:["strip","whitespace","verbatim","scissors","default"]}},{name:"--ff",description:"When possible resolve the merge as a fast-forward (only update the branch pointer to match the merged branch; do not create a merge commit). When not possible (when the merged-in history is not a descendant of the current history), create a merge commit"},{name:"--no-ff",description:"Create a merge commit in all cases, even when the merge could instead be resolved as a fast-forward"},{name:"--ff-only",description:"Resolve the merge as a fast-forward when possible. When not possible, refuse to merge and exit with a non-zero status"},{name:["-S","--gpg-sign"],description:"GPG-sign the resulting merge commit. The keyid argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space",args:{name:"keyid",isOptional:!0}},{name:"--no-gpg-sign",description:"Is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign"},{name:"--log",description:"In addition to branch names, populate the log message with one-line descriptions from at most <n> actual commits that are being merged. See also git-fmt-merge-msg[1]",args:{name:"n",isOptional:!0}},{name:"--no-log",description:"Do not list one-line descriptions from the actual commits being merged"},{name:"--signoff",description:"Add a Signed-off-by trailer by the committer at the end of the commit log message. The meaning of a signoff depends on the project to which you're committing. For example, it may certify that the committer has the rights to submit the work under the project's license or agrees to some contributor representation, such as a Developer Certificate of Origin. (See http://developercertificate.org for the one used by the Linux kernel and Git projects.) Consult the documentation or leadership of the project to which you're contributing to understand how the signoffs are used in that project"},{name:"--no-signoff",description:"Can be used to countermand an earlier --signoff option on the command line"},{name:"--stat",description:"Show a diffstat at the end of the merge. The diffstat is also controlled by the configuration option merge.stat"},{name:["-n","--no-stat"],description:"Do not show a diffstat at the end of the merge"},{name:"--squash",description:"With --squash, --commit is not allowed, and will fail. Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit, move the HEAD, or record $GIT_DIR/MERGE_HEAD (to cause the next git commit command to create a merge commit). This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)"},{name:"--no-squash",description:"Perform the merge and commit the result. This option can be used to override --squash"},{name:"--no-verify",description:"This option bypasses the pre-merge and commit-msg hooks. See also githooks[5]"},{name:["-s","--strategy"],description:"Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried. If there is no -s option, a built-in list of strategies is used instead (git merge-recursive when merging a single head, git merge-octopus otherwise)",args:{name:"strategy",isVariadic:!0,suggestions:["resolve","recursive","octopus","ours","subtree"]}},{name:["-X","--strategy-option"],description:"Pass merge strategy specific option through to the merge strategy",args:{name:"option",suggestions:["ours","theirs","patience","diff-algorithm","diff-algorithm=patience","diff-algorithm=minimal","diff-algorithm=histogram","diff-algorithm=myers","ignore-space-change","ignore-all-space","ignore-space-at-eol","ignore-cr-at-eol","renormalize","no-renormalize","no-renames","find-renames","subtree"]}},{name:"--verify-signatures",description:"Verify that the tip commit of the side branch being merged is signed with a valid key, i.e. a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key. If the tip commit of the side branch is not signed with a valid key, the merge is aborted"},{name:"--no-verify-signatures",description:"Do not verify that the tip commit of the side branch being merged is signed with a valid key"},{name:"--summary",description:"Synonym to --stat ; this is deprecated and will be removed in the future"},{name:"--no-summary",description:"Synonym to --no-stat ; this is deprecated and will be removed in the future"},{name:["-q","--quiet"],description:"Operate quietly. Implies --no-progress"},{name:["-v","--verbose"],description:"Be verbose"},{name:"--autostash",description:"Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run the operation on a dirty worktree. However, use with care: the final stash application after a successful merge might result in non-trivial conflicts"},{name:"--no-autostash",description:"Do not automatically create a temporary stash entry before the operation begins, and apply it after the operation ends"},{name:"--allow-unrelated-histories",description:"By default, git merge command refuses to merge histories that do not share a common ancestor. This option can be used to override this safety when merging histories of two projects that started their lives independently. As that is a very rare occasion, no configuration variable to enable this by default exists and will not be added"},{name:"--all",description:"Fetch all remotes"},{name:["-a","--append"],description:"Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD"},{name:"--atomic",description:"Use an atomic transaction to update local refs. Either all refs are updated, or on error, no refs are updated"},{name:"--depth",requiresSeparator:!0,args:{name:"depth"},description:"Limit fetching to the specified number of commits from the tip of each remote branch history"},{name:"--deepen",requiresSeparator:!0,args:{name:"depth"},description:"Similar to --depth, except it specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history"},{name:"--shallow-since",requiresSeparator:!0,args:{name:"date"},description:"Deepen or shorten the history of a shallow repository to include all reachable commits after <date>"},{name:"--shallow-exclude",requiresSeparator:!0,args:{name:"revision"},description:"Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag. This option can be specified multiple times"},{name:"--unshallow",description:"If the source repository is shallow, fetch as much as possible so that the current repository has the same history as the source repository"},{name:"--update-shallow",description:"By default when fetching from a shallow repository, git fetch refuses refs that require updating .git/shallow"},{name:"--negotiation-tip",requiresSeparator:!0,args:{name:"commit|glob",generators:t.gitGenerators.commits},description:"By default, Git will report, to the server, commits reachable from all local refs to find common commits in an attempt to reduce the size of the to-be-received packfile"},{name:"--dry-run",description:"Show what would be done, without making any changes"},{name:["-f","--force"],description:"This option overrides that check"},{name:["-k","--keep"],description:"Keep downloaded pack"},{name:["-p","--prune"],description:"Before fetching, remove any remote-tracking references that no longer exist on the remote"},{name:["-P","--prune-tags"],description:"Before fetching, remove any local tags that no longer exist on the remote if --prune is enabled"},{name:"--no-tags",description:"By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following"},{name:"--refmap",requiresSeparator:!0,args:{name:"refspec"},description:"When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of remote.*.fetch configuration variables for the remote repository"},{name:["-t","--tags"],description:"By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following"},{name:"--recurse-submodules",requiresSeparator:!0,args:{name:"mode",isOptional:!0,suggestions:["yes","on-demand","no"]},description:"When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of remote.*.fetch configuration variables for the remote repository"},{name:"--no-recurse-submodules",description:"Disable recursive fetching of submodules (this has the same effect as using the --recurse-submodules=no option)"},{name:["-j","--jobs"],args:{name:"n"},description:"Number of parallel children to be used for all forms of fetching"},{name:"--set-upstream",description:"If the remote is fetched successfully, add upstream (tracking) reference, used by argument-less git-pull[1] and other commands"},{name:"--upload-pack",args:{name:"upload-pack"},description:"When given, and the repository to fetch from is handled by git fetch-pack, --exec=<upload-pack> is passed to the command to specify non-default path for the command run on the other end"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified"},{name:["-o","--server-option"],args:{name:"option"},description:"Transmit the given string to the server when communicating using protocol version 2. The given string must not contain a NUL or LF character"},{name:"--show-forced-updates",description:"By default, git checks if a branch is force-updated during fetch. This can be disabled through fetch.showForcedUpdates, but the --show-forced-updates option guarantees this check occurs"},{name:"--no-show-forced-updates",description:"By default, git checks if a branch is force-updated during fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates to false to skip this check for performance reasons"},{name:["-4","--ipv4"],description:"Use IPv4 addresses only, ignoring IPv6 addresses"},{name:["-6","--ipv6"],description:"Use IPv6 addresses only, ignoring IPv4 addresses"}],args:[{name:"remote",isOptional:!0,generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"branch",isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:"diff",description:"Show changes between commits, commit and working tree, etc",options:[{name:"--staged",description:"Show difference between the files in the staging area and the latest version"},{name:"--cached",description:"Show difference between staged changes and last commit"},{name:"--help",description:"Shows different options"},{name:"--numstat",description:"Shows number of added and deleted lines in decimal notation"},{name:"--name-only",description:"Show only names of changed files"},{name:"--shortstat",description:"Output only the last line of the --stat format containing total number of modified files"},{name:"--stat",description:"Generate a diffstat",requiresSeparator:!0,args:{isOptional:!0,name:"[=< width >[,< name-width >[,< count >]]]"}},{name:"--",description:"Separates paths from options for disambiguation purposes",args:{isVariadic:!0,optionsCanBreakVariadicArg:!1,template:"filepaths",name:"[< path >...]"}}],args:{name:"commit or file",isOptional:!0,isVariadic:!0,suggestions:u,generators:[t.gitGenerators.commits,t.gitGenerators.remoteLocalBranches,t.gitGenerators.getChangedTrackedFiles]}},{name:"reset",description:"Reset current HEAD to the specified state",options:[{name:"--keep",description:"Safe: files which are different between the current HEAD and the given commit. Will abort if there are uncommitted changes"},{name:"--soft",description:"Remove the last commit from the current branch, but the file changes will stay in your working tree"},{name:"--hard",description:"⚠️WARNING: you will lose all uncommitted changes in addition to the changes introduced in the last commit"},{name:"--mixed",description:"Keep the changes in your working tree but not on the index"},{name:"-N",description:"Mark removed paths as intent-to-add",dependsOn:["--mixed"]},{name:"--merge",description:"Resets the index and updates the files in the working tree that are different between 'commit' and HEAD"},{name:["-q","--quiet"],description:"Be quiet, only report errors",exclusiveOn:["--no-quiet"]},{name:"--no-quiet",description:"Inverse of --quiet",exclusiveOn:["-q","--quiet"]},{name:"--pathspec-from-file",requiresSeparator:!0,description:"Pathspec is passed in file <file> instead of commandline args",args:{name:"file",template:["folders","filepaths"],suggestions:["-"]}},{name:"--pathspec-file-nul",description:"Pathspec elements are separated with NUL character",dependsOn:["--pathspec-from-file"]},{name:["-p","--patch"],description:"Interactively select hunks in the difference between the index and <tree-ish>"}],args:{isOptional:!0,isVariadic:!0,suggestions:u,generators:[t.gitGenerators.treeish,t.gitGenerators.commits,t.gitGenerators.remoteLocalBranches]}},{name:"log",description:"Show commit logs",options:[{name:"--follow",description:"Show history of given file",args:{name:"file",template:"filepaths"}},{name:["-q","--quiet"],description:"Suppress diff output"},{name:"--show-signature",description:"Check the validity of a signed commit"},{name:"--source",description:"Show source"},{name:"--oneline",description:"Show each commit as a single line"},{name:["-p","-u","--patch"],description:"Display the full diff of each commit"},{name:"--stat",description:"Include which files were altered and the relative number of lines that were added or deleted from each of them"},{name:"--grep",description:"Search for commits with a commit message that matches <pattern>",requiresSeparator:!0,args:{name:"pattern"}},{name:"--author",description:"Search for commits by a particular author",requiresSeparator:!0,args:{name:"pattern"}}],args:[{name:"since",isOptional:!0,description:"Commit ID, branch name, HEAD, or revision reference",generators:t.gitGenerators.commits,suggestions:u},{name:"until",isOptional:!0,description:"Commit ID, branch name, HEAD, or revision reference",generators:t.gitGenerators.commits,suggestions:u}]},{name:"remote",description:"Manage remote repository",subcommands:[{name:"add",description:"Add a remote named <name> for the repository at <url>",args:[{name:"name"},{name:"repository url"}],options:[{name:"-t",description:"A refspec to track only <branch> is created",args:{name:"branch"}},{name:"-m",description:"A symbolic-ref refs/remotes/<name>/HEAD is set up to point at remote's <master> branch",args:{name:"master"}},{name:"-f",description:"Git fetch <name> is run immediately after the remote information is set up"},{name:"--tags",description:"Git fetch <name> imports every tag from the remote repository"},{name:"--no-tags",description:"Git fetch <name> does not import tags from the remote repository"},{name:"--mirror",requiresSeparator:!0,description:"Create fetch or push mirror",args:{suggestions:["fetch","push"]}}]},{name:"set-head",description:"Sets or deletes the default branch",args:[{name:"name",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"branch",isOptional:!0}],options:[{name:["--auto","-a"],description:"The remote is queried to determine its HEAD, then the symbolic-ref refs/remotes/<name>/HEAD is set to the same branch"},{name:["--delete","-d"],description:"The symbolic ref refs/remotes/<name>/HEAD is deleted"}]},{name:"set-branches",description:"Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches after the initial setup for a remote",options:[{name:"--add",description:"Instead of replacing the list of currently tracked branches, adds to that list"}],args:[{name:"name",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"branch",isVariadic:!0}]},{name:["rm","remove"],description:"Removes the given remote",args:{name:"remote",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"}},{name:"rename",description:"Renames the given remote",args:[{name:"old remote",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"new remote name"}]},{name:"get-url",description:"Retrieves the URLs for a remote",options:[{name:"--push",description:"Push URLs are queried rather than fetch URLs"},{name:"--all",description:"All URLs for the remote will be listed"}],args:{name:"name",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"}},{name:"set-url",description:"Changes the URLs for the remote",args:[{name:"name",generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"newurl"},{name:"oldurl",isOptional:!0}],options:[{name:"--push",description:"Push URLs are manipulated instead of fetch URLs"},{name:"--add",description:"Instead of changing existing URLs, new URL is added"},{name:"--delete",description:"Instead of changing existing URLs, all URLs matching regex <url> are deleted for remote <name>"}]},{name:"show",description:"Gives some information about the remote [name]",args:{name:"name",isVariadic:!0,generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},options:[{name:"-n",description:"The remote heads are not queried first with git ls-remote <name>; cached information is used instead"}]},{name:"prune",description:"Equivalent to git fetch --prune [name], except that no new references will be fetched",args:{name:"name",isVariadic:!0,generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},options:[{name:"-n"},{name:"--dry-run",description:"Report what branches would be pruned, but do not actually prune them"}]},{name:"update",description:"Fetch updates for remotes or remote groups in the repository as defined by remotes.<group>",options:[{name:["-p","--prune"],description:""}],args:[{name:"group",isOptional:!0,isVariadic:!0},{name:"remote",isOptional:!0,isVariadic:!0}]}],options:[{name:["-v","--verbose"],description:"Be a little more verbose and show remote url after name. NOTE: This must be placed between remote and subcommand"}]},{name:"fetch",description:"Download objects and refs from another repository",args:[{name:"remote",isOptional:!0,generators:t.gitGenerators.remotes,filterStrategy:"fuzzy"},{name:"branch",isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{name:"refspec",isOptional:!0}],options:[{name:"--all",description:"Fetch all remotes"},{name:["-a","--append"],description:"Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD"},{name:"--atomic",description:"Use an atomic transaction to update local refs. Either all refs are updated, or on error, no refs are updated"},{name:"--depth",requiresSeparator:!0,args:{name:"depth"},description:"Limit fetching to the specified number of commits from the tip of each remote branch history"},{name:"--deepen",requiresSeparator:!0,args:{name:"depth"},description:"Similar to --depth, except it specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history"},{name:"--shallow-since",requiresSeparator:!0,args:{name:"date"},description:"Deepen or shorten the history of a shallow repository to include all reachable commits after <date>"},{name:"--shallow-exclude",requiresSeparator:!0,args:{name:"revision"},description:"Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag. This option can be specified multiple times"},{name:"--unshallow",description:"If the source repository is shallow, fetch as much as possible so that the current repository has the same history as the source repository"},{name:"--update-shallow",description:"By default when fetching from a shallow repository, git fetch refuses refs that require updating .git/shallow"},{name:"--negotiation-tip",requiresSeparator:!0,args:{name:"commit|glob",generators:t.gitGenerators.commits},description:"By default, Git will report, to the server, commits reachable from all local refs to find common commits in an attempt to reduce the size of the to-be-received packfile"},{name:"--dry-run",description:"Show what would be done, without making any changes"},{name:"--write-fetch-head",description:"Write the list of remote refs fetched in the FETCH_HEAD file directly under $GIT_DIR. This is the default"},{name:"--no-write-fetch-head",description:"Tells Git not to write the file"},{name:["-f","--force"],description:"This option overrides that check"},{name:["-k","--keep"],description:"Keep downloaded pack"},{name:"--multiple",description:"Allow several <repository> and <group> arguments to be specified. No <refspec>s may be specified"},{name:["--auto-maintenance","--auto-gc"],description:"Run git maintenance run --auto at the end to perform automatic repository maintenance if"},{name:["--no-auto-maintenance","--no-auto-gc"],description:"Don't run git maintenance run --auto at the end to perform automatic repository maintenance"},{name:"--write-commit-graph",description:"Write a commit-graph after fetching. This overrides the config setting fetch.writeCommitGraph"},{name:"--no-write-commit-graph",description:"Don't write a commit-graph after fetching. This overrides the config setting fetch.writeCommitGraph"},{name:["-p","--prune"],description:"Before fetching, remove any remote-tracking references that no longer exist on the remote"},{name:["-P","--prune-tags"],description:"Before fetching, remove any local tags that no longer exist on the remote if --prune is enabled"},{name:["-n","--no-tags"],description:"By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following"},{name:"--refmap",requiresSeparator:!0,args:{name:"refspec"},description:"When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of remote.*.fetch configuration variables for the remote repository"},{name:["-t","--tags"],description:"By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following"},{name:"--recurse-submodules",requiresSeparator:!0,args:{name:"mode",isOptional:!0,suggestions:["yes","on-demand","no"]},description:"When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of remote.*.fetch configuration variables for the remote repository"},{name:["-j","--jobs"],args:{name:"n"},description:"Number of parallel children to be used for all forms of fetching"},{name:"--no-recurse-submodules",description:"Disable recursive fetching of submodules (this has the same effect as using the --recurse-submodules=no option)"},{name:"--set-upstream",description:"If the remote is fetched successfully, add upstream (tracking) reference, used by argument-less git-pull[1] and other commands"},{name:"--submodule-prefix",requiresSeparator:!0,args:{name:"path"},description:'Prepend <path> to paths printed in informative messages such as "Fetching submodule foo". This option is used internally when recursing over submodules'},{name:"--recurse-submodules-default",requiresSeparator:!0,args:{name:"mode",isOptional:!0,suggestions:["yes","on-demand"]},description:"This option is used internally to temporarily provide a non-negative default value for the --recurse-submodules option"},{name:["-u","--update-head-ok"],description:"By default git fetch refuses to update the head which corresponds to the current branch. This flag disables the check. This is purely for the internal use for git pull to communicate with git fetch, and unless you are implementing your own Porcelain you are not supposed to use it"},{name:"--upload-pack",args:{name:"upload-pack"},description:"When given, and the repository to fetch from is handled by git fetch-pack, --exec=<upload-pack> is passed to the command to specify non-default path for the command run on the other end"},{name:["-q","--quiet"],description:"Pass --quiet to git-fetch-pack and silence any other internally used git commands. Progress is not reported to the standard error stream"},{name:["-v","--verbose"],description:"Be verbose"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified"},{name:["-o","--server-option"],args:{name:"option"},description:"Transmit the given string to the server when communicating using protocol version 2. The given string must not contain a NUL or LF character"},{name:"--show-forced-updates",description:"By default, git checks if a branch is force-updated during fetch. This can be disabled through fetch.showForcedUpdates, but the --show-forced-updates option guarantees this check occurs"},{name:"--no-show-forced-updates",description:"By default, git checks if a branch is force-updated during fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates to false to skip this check for performance reasons"},{name:["-4","--ipv4"],description:"Use IPv4 addresses only, ignoring IPv6 addresses"},{name:["-6","--ipv6"],description:"Use IPv6 addresses only, ignoring IPv4 addresses"},{name:"--stdin",description:'Read refspecs, one per line, from stdin in addition to those provided as arguments. The "tag <name>" format is not supported'}]},{name:"stash",description:"Temporarily stores all the modified tracked files",requiresSubcommand:!1,subcommands:[{name:"push",description:"Save your local modifications to a new stash entry and roll them back to HEAD",options:[{name:["-p","--patch"],description:"Interactively select hunks from the diff between HEAD and the working tree to be stashed"},{name:["-k","--keep-index"],description:"All changed already added to the index are left intact"},{name:["-u","--include-untracked"],description:"All untracked files are also stashed and then cleaned up"},{name:["-a","--all"],description:"All ignored and untracked files are also stashed"},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"},{name:["-m","--message"],insertValue:"-m {cursor}",description:"Use the given <msg> as the stash message",args:{name:"message"}},{name:"--pathspec-from-file",description:""},{name:"--",description:"Separates pathsec from options for disambiguation purposes"}]},{name:"show",description:"Show the changes recorded in the stash entry as a diff",args:{name:"stash",isOptional:!0,generators:t.gitGenerators.stashes,filterStrategy:"fuzzy"}},{name:"save",description:"Temporarily stores all the modified tracked files",options:[{name:["-p","--patch"],description:"Interactively select hunks from the diff between HEAD and the working tree to be stashed"},{name:["-k","--keep-index"],description:"All changed already added to the index are left intact"},{name:["-u","--include-untracked"],description:"All untracked files are also stashed and then cleaned up"},{name:["-a","--all"],description:"All ignored and untracked files are also stashed"},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"}],args:{name:"message",isOptional:!0}},{name:"pop",description:"Restores the most recently stashed files",options:[{name:"--index",description:"Tries to reinstate not only the working tree's changes, but also the index's ones"},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"}],args:{name:"stash",isOptional:!0,generators:t.gitGenerators.stashes,filterStrategy:"fuzzy"}},{name:"list",description:"Lists all stashed changesets"},{name:"drop",description:"Discards the most recently stashed changeset",options:[{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"}],args:{name:"stash",isOptional:!0,generators:t.gitGenerators.stashes,filterStrategy:"fuzzy"}},{name:"clear",description:"Remove all the stash entries"},{name:"apply",description:"Like pop, but do not remove the state from the stash list",options:[{name:"--index",description:"Tries to reinstate not only the working tree's changes, but also the index's ones"},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"}],args:{name:"stash",isOptional:!0,generators:t.gitGenerators.stashes,filterStrategy:"fuzzy"}},{name:"branch",description:"Creates and checks out a new branch named",insertValue:"branch {cursor}",args:[{name:"branch",generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{name:"stash",isOptional:!0,generators:t.gitGenerators.stashes,filterStrategy:"fuzzy"}]},{name:"create",description:"Creates a stash entry",args:{name:"message",isOptional:!0}},{name:"store",description:"Store a given stash in the stash ref, updating the stash reflog",options:[{name:["-m","--message"],insertValue:"-m {cursor}",description:"Use the given <msg> as the stash message",args:{name:"message"}},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"}],args:[{name:"message"},{name:"commit",generators:t.gitGenerators.commits}]}]},{name:"reflog",description:"Show history of events with hashes",options:[{name:"--relative-date",description:"Show date info"},{name:"--all",description:"Show all refs"}]},{name:"clone",description:"Clone a repository into a new directory",args:[{name:"repository",description:"Git library to be cloned"},{name:"directory",description:"Specify the new directory name or target folder",template:"folders",isOptional:!0}],options:[{name:["-l","--local"],description:"Bypasses the normal git aware transport mechanism"},{name:"--no-hardlinks",description:"Force the cloning process from a repository on a local filesystem to copy the files under the .git/objects directory instead of using hardlinks"},{name:["-s","--shared"],isDangerous:!0,description:"Automatically setup .git/objects/info/alternates to share the objects with the source repository"},{name:"--dry-run",description:"Do nothing; only show what would happen"},{name:"--reference",description:"If the reference repository is on the local machine, automatically setup",args:{name:"repository"}},{name:"--reference-if-able",description:"If the reference repository is on the local machine, automatically setup. Non existing directory is skipped with a warning",args:{name:"repository"}},{name:"--dissociate",description:"Borrow the objects from reference repositories specified with the --reference options only to reduce network transfer, and stop borrowing from them after a clone is made by making necessary local copies of borrowed objects"},{name:["-q","--quiet"],description:"Operate quietly. Progress is not reported to the standard error stream"},{name:["-v","--verbose"],description:"Run verbosely. Does not affect the reporting of progress status to the standard error stream"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal, unless --quiet is specified. This flag forces progress status even if the standard error stream is not directed to a terminal"},{name:"--server-option",description:"Transmit the given string to the server when communicating using protocol version 2. The given string must not contain a NUL or LF character. The server's handling of server options, including unknown ones, is server-specific. When multiple --server-option=<option> are given, they are all sent to the other side in the order listed on the command line",requiresSeparator:!0,args:{name:"option"}},{name:["-n","--no-checkout"],description:"No checkout of HEAD is performed after the clone is complete"},{name:"--bare",description:"Make a bare Git repository. That is, instead of creating <directory> and placing the administrative files in <directory>/.git, make the <directory> itself the $GIT_DIR. This obviously implies the --no-checkout because there is nowhere to check out the working tree. Also the branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin/. When this option is used, neither remote-tracking branches nor the related configuration variables are created"},{name:"--sparse",description:"Initialize the sparse-checkout file so the working directory starts with only the files in the root of the repository. The sparse-checkout file can be modified to grow the working directory as needed"},{name:"--filter",description:"Use the partial clone feature and request that the server sends a subset of reachable objects according to a given object filter. When using --filter, the supplied <filter-spec> is used for the partial clone filter. For example, --filter=blob:none will filter out all blobs (file contents) until needed by Git. Also, --filter=blob:limit=<size> will filter out all blobs of size at least <size>. For more details on filter specifications, see the --filter option in git-rev-list[1]",requiresSeparator:!0,args:{name:"filter spec"}},{name:"--mirror",description:"Set up a mirror of the source repository. This implies --bare. Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote-tracking branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository"},{name:["-o","--origin"],description:"Instead of using the remote name origin to keep track of the upstream repository, use <name>. Overrides clone.defaultRemoteName from the config",args:{name:"name"}},{name:["-b","--branch"],description:"Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository's HEAD, point to <name> branch instead. In a non-bare repository, this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository",args:{name:"branch name"}},{name:["-u","--upload-pack"],description:"When given, and the repository to clone from is accessed via ssh, this specifies a non-default path for the command run on the other end",args:{name:"upload pack"}},{name:"--template",description:"Specify the directory from which templates will be used",requiresSeparator:!0,args:{name:"template directory"}},{name:["-c","--config"],description:"Set a configuration variable in the newly-created repository; this takes effect immediately after the repository is initialized, but before the remote history is fetched or any files checked out. The key is in the same format as expected by git-config[1] (e.g., core.eol=true). If multiple values are given for the same key, each value will be written to the config file. This makes it safe, for example, to add additional fetch refspecs to the origin remote. Due to limitations of the current implementation, some configuration variables do not take effect until after the initial fetch and checkout. Configuration variables known to not take effect are: remote.<name>.mirror and remote.<name>.tagOpt. Use the corresponding --mirror and --no-tags options instead",args:{name:"key=value"}},{name:"--depth",description:"Create a shallow clone with a history truncated to the specified number of commits. Implies --single-branch unless --no-single-branch is given to fetch the histories near the tips of all branches. If you want to clone submodules shallowly, also pass --shallow-submodules",args:{name:"depth"}},{name:"--shallow-since",description:"Create a shallow clone with a history after the specified time",requiresSeparator:!0,args:{name:"date"}},{name:"--shallow-exclude",description:"Create a shallow clone with a history, excluding commits reachable from a specified remote branch or tag. This option can be specified multiple times",requiresSeparator:!0,args:{name:"revision"}},{name:"--single-branch",description:"Clone only the history leading to the tip of a single branch, either specified by the --branch option or the primary branch remote's HEAD points at. Further fetches into the resulting repository will only update the remote-tracking branch for the branch this option was used for the initial cloning. If the HEAD at the remote did not point at any branch when --single-branch clone was made, no remote-tracking branch is created"},{name:"--no-single-branch",description:"Do not clone only the history leading to the tip of a single branch, either specified by the --branch option or the primary branch remote's HEAD points at. Further fetches into the resulting repository will only update the remote-tracking branch for the branch this option was used for the initial cloning. If the HEAD at the remote did not point at any branch when --single-branch clone was made, no remote-tracking branch is created"},{name:"--no-tags",description:"Don't clone any tags, and set remote.<remote>.tagOpt=--no-tags in the config, ensuring that future git pull and git fetch operations won't follow any tags. Subsequent explicit tag fetches will still work, (see git-fetch[1])"},{name:"--recurse-submodules",description:"After the clone is created, initialize and clone submodules within based on the provided pathspec. If no pathspec is provided, all submodules are initialized and cloned. This option can be given multiple times for pathspecs consisting of multiple entries",args:{isOptional:!0,name:"pathspec"}},{name:"--shallow-submodules",description:"All submodules which are cloned will be shallow with a depth of 1"},{name:"--no-shallow-submodules",description:"Disable --shallow-submodules"},{name:"--remote-submodules",description:"All submodules which are cloned will use the status of the submodule's remote-tracking branch to update the submodule, rather than the superproject's recorded SHA-1. Equivalent to passing --remote to git submodule update"},{name:"--no-remote-submodules",description:"Disable --remote-submodules"},{name:["-j","--jobs"],description:"The number of submodules fetched at the same time. Defaults to the submodule.fetchJobs option",args:{name:"n",isOptional:!0}},{name:"--separate-git-dir",description:"Instead of placing the cloned repository where it is supposed to be, place the cloned repository at the specified directory, then make a filesystem-agnostic Git symbolic link to there. The result is Git repository can be separated from working tree",requiresSeparator:!0,args:{name:"git dir"}}]},{name:"init",description:"Create an empty Git repository or reinitialize an existing one",args:{name:"directory",isOptional:!0},options:[{name:["-q","--quiet"],description:"Only print error and warning messages"},{name:"--bare",description:"Create a bare repository"},{name:"--object-format",description:"Specify the given object format",args:{name:"format",suggestions:["sha1","sha256"]}},{name:"--template",description:"Specify the directory from which templates will be used",args:{name:"template_directory",template:"folders"}},{name:"--separate-git-dir",description:"Instead of initializing the repository as a directory to either $GIT_DIR or ./.git/, create a text file there containing the path to the actual repository. This file acts as filesystem-agnostic Git symbolic link to the repository",args:{name:"git dir"}},{name:["-b","--initial-branch"],description:"Initial branch for new repo",args:{isOptional:!0,name:"branch-name"}},{name:"--shared",description:"Specify that the Git repository is to be shared amongst several users. This allows users belonging to the same group to push into that repository",args:{isOptional:!0,suggestions:[{name:"false",description:"Use permissions reported by umask(2)"},{name:"true",description:"Make the repository group-writable"},{name:"umask",description:"Use permissions reported by umask(2)"},{name:"group",description:"Make the repository group-writable"},{name:"all",description:"Same as group, but make the repository readable by all users"},{name:"world",description:"Same as group, but make the repository readable by all users"},{name:"everybody",description:"Same as group, but make the repository readable by all users"},{name:"0xxx",description:"0xxx is an octal number and each file will have mode 0xxx. 0xxx will override users' umask(2) value (and not only loosen permissions as group and all does)"}]}}]},{name:"mv",description:"Move or rename a file, a directory, or a symlink",args:[{name:"source",description:"File to move",template:"filepaths"},{name:"destination",description:"Location to move to",template:"folders"}],options:[{name:["-f","--force"],description:"Force renaming or moving of a file even if the target exists"},{name:"-k",description:"Skip move or rename actions which would lead to an error condition"},{name:["-n","--dry-run"],description:"Do nothing; only show what would happen"},{name:["-v","--verbose"],description:"Report the names of files as they are moved"}]},{name:"rm",description:"Remove files from the working tree and from the index",args:{isVariadic:!0,suggestions:[{name:".",description:"Current directory",icon:"fig://icon?type=folder"}],generators:t.gitGenerators.files_for_staging},options:[{name:"--",description:"Used to separate command-line options from the list of files"},{name:"--cached",description:"Only remove from the index"},{name:["-f","--force"],description:"Override the up-to-date check"},{name:["-n","--dry-run"],description:"Don't actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command"},{name:"-r",description:"Allow recursive removal"}]},{name:"bisect",description:"Use binary search to find the commit that introduced a bug",subcommands:[{name:"start",description:"Reset bisect state and start bisection",args:[{name:"bad",isOptional:!0,generators:t.gitGenerators.revs,suggestions:u},{name:"good",isOptional:!0,generators:[t.gitGenerators.revs,t.gitGenerators.revs],suggestions:u,isVariadic:!0}],options:[{name:"--term-new",description:"Specify the alias to mark commits as new during the bisect process",args:{name:"term",description:"Specifying: fixed, would require using git bisect fixed instead of git bisect new"}},{name:"--term-bad",description:"Specify the alias to mark commits as bad during the bisect process",args:{name:"term",description:"Specifying: broken, would require using git bisect broken instead of git bisect bad"}},{name:"--term-good",description:"Specify the alias to mark commits as good during the bisect process",args:{name:"term",description:"Specifying: fixed, would require using git bisect fixed instead of git bisect good"}},{name:"--term-old",description:"Specify the alias to mark commits as old during the bisect process",args:{name:"term",description:"Specifying: broken, would require using git bisect broken instead of git bisect old"}},{name:"--no-checkout",description:"Do not checkout the new working tree at each iteration of the bisection process. Instead just update a special reference named BISECT_HEAD to make it point to the commit that should be tested"},{name:"--first-parent",description:"Follow only the first parent commit upon seeing a merge commit. In detecting regressions introduced through the merging of a branch, the merge commit will be identified as introduction of the bug and its ancestors will be ignored"},{name:"--",description:"Stop taking subcommand arguments and options. Starts taking paths to bisect"}]},{name:"bad",description:"Mark commits as bad",args:{name:"rev",isOptional:!0,generators:t.gitGenerators.revs,suggestions:u}},{name:"new",description:"Mark commits as new",args:{name:"rev",isOptional:!0,generators:t.gitGenerators.revs,suggestions:u}},{name:"old",description:"Mark commits as old",args:{name:"rev",isOptional:!0,generators:t.gitGenerators.revs,suggestions:u,isVariadic:!0}},{name:"good",description:"Mark commits as good",args:{name:"rev",isOptional:!0,generators:t.gitGenerators.revs,suggestions:u,isVariadic:!0}},{name:"next",description:"Find next bisection to test and check it out"},{name:"terms",description:"Show the terms used for old and new commits (default: bad, good)",options:[{name:"--term-old",description:"You can get just the old (respectively new) term"},{name:"--term-good",description:"You can get just the old (respectively new) term"}]},{name:"skip",description:"Mark <rev>... untestable revisions",args:{name:"rev | range",isVariadic:!0,isOptional:!0,generators:t.gitGenerators.revs,suggestions:u}},{name:"reset",description:"Finish bisection search and go back to commit",args:{name:"commit",isOptional:!0,generators:t.gitGenerators.commits,suggestions:u}},{name:["visualize","view"],description:"See the currently remaining suspects in gitk"},{name:"replay",description:"Replay bisection log",args:{name:"logfile",template:"filepaths"}},{name:"log",description:"Show bisect log"},{name:"run",description:"Use <cmd>... to automatically bisect",args:{name:"cmd",isVariadic:!0,isCommand:!0}},{name:"help",args:{name:"Get help text"}}],args:{name:"paths",template:["filepaths","folders"]}},{name:"grep",description:"Print lines matching a pattern"},{name:"show",description:"Show various types of objects"},{name:"branch",description:"List, create, or delete branches",options:[{name:["-a","--all"],exclusiveOn:["-r","--remotes"],description:"List both remote-tracking and local branches"},{name:["-d","--delete"],description:"Delete fully merged branch",args:{generators:t.gitGenerators.localOrRemoteBranches,isVariadic:!0,suggestions:[{name:["-r","--remotes"],description:"Deletes the remote-tracking branches"}]}},{name:"-D",description:"Delete branch (even if not merged)",args:{generators:t.gitGenerators.localOrRemoteBranches,isVariadic:!0,suggestions:[{name:["-r","--remotes"],description:"Deletes the remote-tracking branches"}]}},{name:["-m","--move"],description:"Move/rename a branch and its reflog",args:[{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:"-M",description:"Move/rename a branch, even if target exists",args:[{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:["-c","--copy"],description:"Copy a branch and its reflog"},{name:"-C",description:"Copy a branch, even if target exists"},{name:["-l","--list"],description:"List branch names"},{name:"--create-reflog",description:"Create the branch's reflog"},{name:"--edit-description",description:"Edit the description for the branch",args:{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}},{name:["-f","--force"],description:"Force creation, move/rename, deletion"},{name:"--merged",description:"Print only branches that are merged",args:{name:"commit"}},{name:"--no-merged",description:"Print only branches that are not merged",args:{name:"commit"}},{name:"--column",exclusiveOn:["--no-column"],description:"List branches in columns [=<style>]"},{name:"--no-column",exclusiveOn:["--column"],description:"Doesn't display branch listing in columns"},{name:"--sort",description:"Field name to sort on",args:{name:"key"}},{name:"--points-at",description:"Print only branches of the object",args:{name:"object"}},{name:["-i","--ignore-case"],description:"Sorting and filtering are case insensitive"},{name:"--format",description:"Format to use for the output",args:{name:"format"}},{name:["-r","--remotes"],exclusiveOn:["-a","--all"],description:"Lists or deletes (if used with -d) the remote-tracking branches"},{name:"--show-current",description:"Prints the name of the current branch"},{name:["-v","--verbose"],isRepeatable:2,description:"Shows sha1 and commit subject line for each head, along with relationship to upstream branch when in list mode. If given twice, prints the path of the linked worktree and the name of the upstream branch"},{name:["-q","--quiet"],description:"Suppress non-error messages"},{name:"--abbrev",description:"Shows the shortest prefix that is at least <n> hexdigits long that uniquely refers the object",exclusiveOn:["--no-abbrev"],args:{name:"Number"}},{name:"--no-abbrev",exclusiveOn:["--abbrev"],description:"Displays the full sha1s in the output listing"},{name:["-t","--track"],exclusiveOn:["--no-track"],description:"When creating a new branch, set up 'upstream' configuration",args:[{name:"branch",generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{name:"start point",isOptional:!0,generators:t.gitGenerators.commits}]},{name:"--no-track",exclusiveOn:["--track","-t"],description:"Do not set up 'upstream' configuration, even if the branch.autoSetupMerge configuration variable is true",args:[{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:["-u","--set-upstream-to"],description:"Sets branch to upstream provided",args:{name:"upstream",isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}},{name:"--unset-upstream",description:"Removes the upstream information",args:{name:"upstream",isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}},{name:"--contains",description:"Only lists branches which contain the specified commit",args:{name:"commit",isOptional:!0,generators:t.gitGenerators.commits}},{name:"--no-contains",description:"Only lists branches which don't contain the specified commit",args:{name:"commit",isOptional:!0,generators:t.gitGenerators.commits}},{name:"--color",description:"Color branches to highlight current, local, and remote-tracking branches",exclusiveOn:["--no-color"],args:{name:"when",isOptional:!0,suggestions:["always","never","auto"]}},{name:"--no-color",description:"Turns off branch colors",exclusiveOn:["--color"]}]},{name:"checkout",description:"Switch branches or restore working tree files",options:[{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal, unless --quiet is specified. This flag enables progress reporting even if not attached to a terminal, regardless of --quiet"},{name:"--no-progress",description:"Disable progress status reporting"},{name:["-f","--force"],description:"When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes"},{name:["-2","--ours"],description:"When checking out paths from the index, check out stage #2 (ours) for unmerged paths"},{name:["-3","--theirs"],description:"When checking out paths from the index, check out stage #3 (theirs) for unmerged paths"},{name:"-b",description:"Create a new branch named <new_branch> and start it at <start_point>; see git-branch[1] for details",args:{name:"New Branch"}},{name:"-B",description:"Creates the branch <new_branch> and start it at <start_point>; if it already exists, then reset it to <start_point>. This is equivalent to running 'git branch' with '-f'; see git-branch[1] for details",args:{name:"New Branch"}},{name:["-t","--track"],description:"When creating a new branch, set up 'upstream' configuration"},{name:"--no-track",description:"Do not set up 'upstream' configuration, even if the branch.autoSetupMerge configuration variable is true"},{name:"--guess",description:"If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, treat as equivalent to $ git checkout -b <branch> --track <remote>/<branch>"},{name:"--no-guess",description:"Disable --guess"},{name:"-l",description:"Create the new branch's reflog; see git-branch[1] for details"},{name:["-d","--detach"],description:"Rather than checking out a branch to work on it, check out a commit for inspection and discardable experiments. This is the default behavior of git checkout <commit> when <commit> is not a branch name"},{name:"--orphan",description:"Create a new orphan branch, named <new_branch>, started from <start_point> and switch to it",args:{name:"New Branch"}},{name:"--ignore-skip-worktree-bits",description:"In sparse checkout mode, git checkout -- <paths> would update only entries matched by <paths> and sparse patterns in $GIT_DIR/info/sparse-checkout. This option ignores the sparse patterns and adds back any files in <paths>"},{name:["-m","--merge"],description:"When switching branches, if you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context"},{name:"--conflict",description:"The same as --merge option above, but changes the way the conflicting hunks are presented, overriding the merge.conflictStyle configuration variable. Possible values are 'merge' (default) and 'diff3' (in addition to what is shown by 'merge' style, shows the original contents)",requiresSeparator:!0,args:{isOptional:!0,suggestions:["merge","diff3"]}},{name:["-p","--patch"],description:"Interactively select hunks in the difference between the <tree-ish> (or the index, if unspecified) and the working tree"},{name:"--ignore-other-worktrees",description:"Git checkout refuses when the wanted ref is already checked out by another worktree. This option makes it check the ref out anyway. In other words, the ref can be held by more than one worktree"},{name:"--overwrite-ignore",description:"Silently overwrite ignored files when switching branches. This is the default behavior"},{name:"--no-overwrite-ignore",description:"Use --no-overwrite-ignore to abort the operation when the new branch contains ignored files"},{name:"--recurse-submodules",description:"Using --recurse-submodules will update the content of all active submodules according to the commit recorded in the superproject. If local modifications in a submodule would be overwritten the checkout will fail unless -f is used. If nothing (or --no-recurse-submodules) is used, submodules working trees will not be updated. Just like git-submodule[1], this will detach HEAD of the submodule"},{name:"--no-recurse-submodules",description:"Submodules working trees will not be updated"},{name:"--overlay",description:"In the default overlay mode, git checkout never removes files from the index or the working tree"},{name:"--no-overlay",description:"When specifying --no-overlay, files that appear in the index and working tree, but not in <tree-ish> are removed, to make them match <tree-ish> exactly"},{name:"--pathspec-from-file",description:"Pathspec is passed in <file> instead of commandline args",args:{name:"file",template:"filepaths"}},{name:"--pathspec-file-nul",description:"Only meaningful with --pathspec-from-file"}],args:[{name:"branch, file, tag or commit",description:"Branch, file, tag or commit to switch to",isOptional:!0,filterStrategy:"fuzzy",generators:[t.gitGenerators.remoteLocalBranches,t.gitGenerators.tags,{template:["filepaths","folders"]}],suggestions:[{name:"-",description:"Switch to the last used branch",icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`},{name:"--",description:"Do not interpret more arguments as options",hidden:!0}]},{name:"pathspec",description:"Limits the paths affected by the operation",isOptional:!0,isVariadic:!0,template:"filepaths"}]},{name:"cherry-pick",description:"Apply the changes introduced by some existing commits",args:{name:"commit",description:"Commits to cherry-pick",isVariadic:!0,generators:t.gitGenerators.commits},options:[{name:"--continue",description:"Continue the operation in progress using the information in .git/sequencer"},{name:"--skip",description:"Skip the current commit and continue with the rest of the sequence"},{name:"--quit",description:"Forget about the current operation in progress"},{name:"--abort",description:"Cancel the operation and return to the pre-sequence state"},{name:["-e","--edit"],description:"With this option, git cherry-pick will let you edit the commit message prior to committing"},{name:"--cleanup",description:"This option determines how the commit message will be cleaned up before being passed on to the commit machinery",args:{name:"mode",description:"Determines how the supplied commit messaged should be cleaned up before committing",suggestions:[{name:"strip",description:"Strip leading and trailing empty lines, trailing whitepace, commentary and collapse consecutive empty lines"},{name:"whitespace",description:"Same as strip except #commentary is not removed"},{name:"verbatim",description:"Do not change the message at all"},{name:"scissors",description:"Same as whitespace except that everything from (and including) the line found below is truncated"},{name:"default",description:"Same as strip if the message is to be edited. Otherwise whitespace"}]}},{name:"-x",description:'When recording the commit, append a line that says "(cherry picked from commit ...)" to the original commit message in order to indicate which commit this change was cherry-picked from'},{name:["-m","--mainline"],description:"Specifies the parent number (starting from 1) of the mainline and allows cherry-pick to replay the change relative to the specified parent",args:{name:"parent-number"}},{name:["-n","--no-commit"],description:"Applies changes necessary to cherry-pick each named commit to your working tree and the index without making any commit"},{name:["-s","--signoff"],description:"Add a Signed-off-by trailer at the end of the commit message"},{name:["-S","--gpg-sign"],exclusiveOn:["--no-gpg-sign"],description:"GPG-sign commits",args:{name:"keyid",description:"Must be stuck to the option without a space",isOptional:!0}},{name:"--no-gpg-sign",exclusiveOn:["-S","--gpg-sign"],description:"Useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign"},{name:"--ff",description:"If the current HEAD is the same as the parent of the cherry-pick'ed commit, the a fast forward to this commit will be performed"},{name:"--allow-empty",description:"Allow empty commits to be preserved automatically in a cherry-pick"},{name:"--allow-empty-message",description:"Allow commits with empty messages to be cherry picked"},{name:"--keep-redundant-commits",description:"Creates an empty commit object. Implies --allow-empty"},{name:"--strategy",description:"Use the given merge strategy. Should only be used once",args:{name:"strategy",suggestions:["resolve","recursive","octopus","ours","subtree"]}},{name:["-X","--strategy-option"],description:"Pass the merge strategy-specific option through to the merge strategy",args:{name:"option",suggestions:["ours","theirs","patience","diff-algorithm","diff-algorithm=patience","diff-algorithm=minimal","diff-algorithm=histogram","diff-algorithm=myers","ignore-space-change","ignore-all-space","ignore-space-at-eol","ignore-cr-at-eol","renormalize","no-renormalize","no-renames","find-renames","subtree"]}},{name:"--rerere-autoupdate",exclusiveOn:["--no-rerere-autoupdate"],description:"Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"},{name:"--no-rerere-autoupdate",exclusiveOn:["--rerere-autoupdate"],description:"Do not allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"}]},{name:"submodule",description:"Initialize, update or inspect submodules",subcommands:[{name:"add",description:"Add the given repository as a submodule at the given path to the changeset to be committed next to the current project",options:[{name:"-b",description:"Branch of repository to add as submodule",args:{name:"branch"}},{name:["-f","--force"],description:"Allow adding an otherwise ignored submodule path"},{name:"--name",description:"It sets the submodule's name to the given string instead of defaulting to its path",insertValue:"--name '{cursor}'",args:{name:"name",description:"Directory name"}},{name:"--reference",description:"Remote repository to be cloned",args:{name:"repository",description:"Remote repository to be cloned"}},{name:"--depth",description:"Create a shallow clone with a history truncated to the specified number of revisions",args:{name:"depth",description:"Specified number of revisions"}},{name:"--",description:"End of subcommand options"}],args:[{name:"repository"},{name:"path",isOptional:!0,template:"filepaths"}]},{name:"status",description:"Show the status of the submodules",options:[{name:"--cached",description:"Will instead print the SHA-1 recorded in the superproject for each submodule"},{name:"--recursive",description:"Will recurse into nested submodules, and show their status as well"},{name:"--",description:"End of subcommand options"}],args:{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}},{name:"init",description:"Initialize the submodules recorded in the index",options:[{name:"--",description:"End of subcommand options"}],args:{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}},{name:"deinit",description:"Unregister the given submodules",options:[{name:["-f","--force"],description:"The submodule's working tree will be removed even if it contains local modifications"},{name:"--all",description:"Unregister all submodules in the working tree"},{name:"--",description:"End of subcommand options"}],args:{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}},{name:"update",description:"Update the registered submodules to match what the superproject expects by cloning missing submodules, fetching missing commits in submodules and updating the working tree of the submodules",options:[{name:"--init",description:"Initialize all submodules for which 'git submodule init' has not been called so far before updating"},{name:"--remote",description:"Instead of using the superproject's recorded SHA-1 to update the submodule, use the status of the submodule's remote-tracking branch"},{name:["-N","--no-fetch"],description:"Don't fetch new objects from the remote site"},{name:"--no-recommend-shallow",description:"Ignore the suggestions"},{name:"--recommend-shallow",description:"The initial clone of a submodule will use the recommended submodule.<name>.shallow as provided by the .gitmodules file"},{name:["-f","--force"],description:"Throw away local changes in submodules when switching to a different commit; and always run a checkout operation in the submodule, even if the commit listed in the index of the containing repository matches the commit checked out in the submodule"},{name:"--checkout",description:"The commit recorded in the superproject will be checked out in the submodule on a detached HEAD"},{name:"--rebase",description:"The current branch of the submodule will be rebased onto the commit recorded in the superproject"},{name:"--merge",description:"The commit recorded in the superproject will be merged into the current branch in the submodule"},{name:"--reference",description:"Remote repository",args:{name:"repository"}},{name:"--depth",description:"Create a shallow clone with a history truncated to the specified number of revisions",args:{name:"depth"}},{name:"--recursive",description:"Traverse submodules recursively"},{name:"--jobs",description:"Clone new submodules in parallel with as many jobs",args:{name:"n"}},{name:"--single-branch",description:"Clone only one branch during update: HEAD or one specified by --branch"},{name:"--no-single-branch",description:"Don't clone only one branch during update: HEAD or one specified by --branch"},{name:"--",description:"End of subcommand options"}],args:{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}},{name:"set-branch",description:"Sets the default remote tracking branch for the submodule",options:[{name:["-b","--branch"],description:"Branch of repository to add as submodule",args:{name:"branch",description:"Remote branch to be specified"}},{name:["-d","--default"],description:"Removes the submodule.<name>.branch configuration key, which causes the tracking branch to default to the remote HEAD"},{name:"--",description:"End of subcommand options"}],args:{name:"path",description:"Path to submodule",template:"filepaths"}},{name:"set-url",description:"Sets the URL of the specified submodule to <newurl>",options:[{name:"--",description:"End of command options"}],args:[{name:"path",description:"Path to specified submodule",template:"filepaths"},{name:"newurl",description:"New url of submodule"}]},{name:"summary",description:"Show commit summary between the given commit (defaults to HEAD) and working tree/index",options:[{name:"--cached",description:"This command will recurse into the registered submodules, and sync any nested submodules within"},{name:"--files",description:"Show the series of commits in the submodule between the index of the super project and the working tree of the submodule"},{name:"-n",description:"Limit the summary size (number of commits shown in total). Giving 0 will disable the summary; a negative number means unlimited (the default). This limit only applies to modified submodules. The size is always limited to 1 for added/deleted/typechanged submodules",args:{name:"n"}},{name:"--summary-limit",description:"Limit the summary size (number of commits shown in total). Giving 0 will disable the summary; a negative number means unlimited (the default). This limit only applies to modified submodules. The size is always limited to 1 for added/deleted/typechanged submodules",args:{name:"n"}},{name:"--",description:"Everything after this is an argument"}],args:[{name:"commit",isOptional:!0},{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}]},{name:"foreach",description:"Evaluates an arbitrary shell command in each checked out submodule",options:[{name:"--recursive",description:"This command will recurse into the registered submodules, and sync any nested submodules within"}],args:{name:"command"}},{name:"sync",description:"Synchronizes submodules' remote URL configuration setting to the value specified in .gitmodules",options:[{name:"--recursive",description:"This command will recurse into the registered submodules, and sync any nested submodules within"},{name:"--",description:"Everything after this is an argument"}],args:{name:"path",isOptional:!0,isVariadic:!0,template:"filepaths"}},{name:"absorbgitdirs",description:"If a git directory of a submodule is inside the submodule, move the git directory of the submodule into its superproject's $GIT_DIR/modules path and then connect the git directory and its working directory by setting the core.worktree and adding a .git file pointing to the git directory embedded in the superprojects git directory"}],options:[{name:["-q","--quiet"],description:"Only print error messages"},{name:"--cached",description:"The commit stored in the index is used instead"}]},{name:"merge",description:"Join two or more development histories together",args:{name:"branch",filterStrategy:"fuzzy",generators:t.gitGenerators.remoteLocalBranches,isVariadic:!0,isOptional:!0,suggestions:[{name:"-",description:"Shorthand for the previous branch"}]},options:[{name:"--commit",description:"Perform the merge and commit the result. This option can be used to override --no-commit"},{name:"--no-commit",description:"Perform the merge and stop just before creating a merge commit, to give the user a chance to inspect and further tweak the merge result before committing"},{name:["--edit","-e"],description:"Invoke an editor before committing successful mechanical merge to further edit the auto-generated merge message, so that the user can explain and justify the merge"},{name:"--no-edit",description:"The --no-edit option can be used to accept the auto-generated message (this is generally discouraged). The --edit (or -e) option is still useful if you are giving a draft message with the -m option from the command line and want to edit it in the editor"},{name:"--cleanup",description:"This option determines how the merge message will be cleaned up before committing. See git-commit[1] for more details. In addition, if the <mode> is given a value of scissors, scissors will be appended to MERGE_MSG before being passed on to the commit machinery in the case of a merge conflict",requiresSeparator:!0,args:{name:"mode",suggestions:["strip","whitespace","verbatim","scissors","default"]}},{name:"--ff",description:"When possible resolve the merge as a fast-forward (only update the branch pointer to match the merged branch; do not create a merge commit). When not possible (when the merged-in history is not a descendant of the current history), create a merge commit"},{name:"--no-ff",description:"Create a merge commit in all cases, even when the merge could instead be resolved as a fast-forward"},{name:"--ff-only",description:"Resolve the merge as a fast-forward when possible. When not possible, refuse to merge and exit with a non-zero status"},{name:["-S","--gpg-sign"],description:"GPG-sign the resulting merge commit. The keyid argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space",args:{name:"keyid",isOptional:!0}},{name:"--no-gpg-sign",description:"Is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign"},{name:"--log",description:"In addition to branch names, populate the log message with one-line descriptions from at most <n> actual commits that are being merged. See also git-fmt-merge-msg[1]",args:{name:"n",isOptional:!0}},{name:"--no-log",description:"Do not list one-line descriptions from the actual commits being merged"},{name:"--signoff",description:"Add a Signed-off-by trailer by the committer at the end of the commit log message. The meaning of a signoff depends on the project to which you're committing. For example, it may certify that the committer has the rights to submit the work under the project's license or agrees to some contributor representation, such as a Developer Certificate of Origin. (See http://developercertificate.org for the one used by the Linux kernel and Git projects.) Consult the documentation or leadership of the project to which you're contributing to understand how the signoffs are used in that project"},{name:"--no-signoff",description:"Can be used to countermand an earlier --signoff option on the command line"},{name:"--stat",description:"Show a diffstat at the end of the merge. The diffstat is also controlled by the configuration option merge.stat"},{name:["-n","--no-stat"],description:"Do not show a diffstat at the end of the merge"},{name:"--squash",description:"With --squash, --commit is not allowed, and will fail. Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit, move the HEAD, or record $GIT_DIR/MERGE_HEAD (to cause the next git commit command to create a merge commit). This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)"},{name:"--no-squash",description:"Perform the merge and commit the result. This option can be used to override --squash"},{name:"--no-verify",description:"This option bypasses the pre-merge and commit-msg hooks. See also githooks[5]"},{name:["-s","--strategy"],description:"Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried. If there is no -s option, a built-in list of strategies is used instead (git merge-recursive when merging a single head, git merge-octopus otherwise)",args:{name:"strategy",isVariadic:!0,suggestions:["resolve","recursive","octopus","ours","subtree"]}},{name:["-X","--strategy-option"],description:"Pass merge strategy specific option through to the merge strategy",args:{name:"option",suggestions:["ours","theirs","patience","diff-algorithm","diff-algorithm=patience","diff-algorithm=minimal","diff-algorithm=histogram","diff-algorithm=myers","ignore-space-change","ignore-all-space","ignore-space-at-eol","ignore-cr-at-eol","renormalize","no-renormalize","no-renames","find-renames","subtree"]}},{name:"--verify-signatures",description:"Verify that the tip commit of the side branch being merged is signed with a valid key, i.e. a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key. If the tip commit of the side branch is not signed with a valid key, the merge is aborted"},{name:"--no-verify-signatures",description:"Do not verify that the tip commit of the side branch being merged is signed with a valid key"},{name:"--summary",description:"Synonym to --stat ; this is deprecated and will be removed in the future"},{name:"--no-summary",description:"Synonym to --no-stat ; this is deprecated and will be removed in the future"},{name:["-q","--quiet"],description:"Operate quietly. Implies --no-progress"},{name:["-v","--verbose"],description:"Be verbose"},{name:"--progress",description:"Turn progress on/off explicitly. If neither is specified, progress is shown if standard error is connected to a terminal. Note that not all merge strategies may support progress reporting"},{name:"--no-progress",description:"Turn progress on/off explicitly. If neither is specified, progress is shown if standard error is connected to a terminal. Note that not all merge strategies may support progress reporting"},{name:"--autostash",description:"Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends. This means that you can run the operation on a dirty worktree. However, use with care: the final stash application after a successful merge might result in non-trivial conflicts"},{name:"--no-autostash",description:"Do not automatically create a temporary stash entry before the operation begins, and apply it after the operation ends"},{name:"--allow-unrelated-histories",description:"By default, git merge command refuses to merge histories that do not share a common ancestor. This option can be used to override this safety when merging histories of two projects that started their lives independently. As that is a very rare occasion, no configuration variable to enable this by default exists and will not be added"},{name:"-m",description:"Set the commit message to be used for the merge commit (in case one is created). If --log is specified, a shortlog of the commits being merged will be appended to the specified message. The git fmt-merge-msg command can be used to give a good default for automated git merge invocations. The automated message can include the branch description",args:{name:"message"}},{name:["-F","--file"],description:"Read the commit message to be used for the merge commit (in case one is created). If --log is specified, a shortlog of the commits being merged will be appended to the specified message",args:{name:"file",template:"filepaths"}},{name:"--rerere-autoupdate",description:"Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"},{name:"--no-rerere-autoupdate",description:"Do not allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible"},{name:"--overwrite-ignore",description:"Silently overwrite ignored files from the merge result. This is the default behavior. Use --no-overwrite-ignore to abort"},{name:"--no-overwrite-ignore",description:"Do not silently overwrite ignored files from the merge result"},{name:"--abort",description:"Abort the current conflict resolution process, and try to reconstruct the pre-merge state. If an autostash entry is present, apply it to the worktree. If there were uncommitted worktree changes present when the merge started, git merge --abort will in some cases be unable to reconstruct these changes. It is therefore recommended to always commit or stash your changes before running git merge. git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present unless MERGE_AUTOSTASH is also present in which case git merge --abort applies the stash entry to the worktree whereas git reset --merge will save the stashed changes in the stash list"},{name:"--quit",description:"Forget about the current merge in progress. Leave the index and the working tree as-is. If MERGE_AUTOSTASH is present, the stash entry will be saved to the stash list"},{name:"--continue",description:"After a git merge stops due to conflicts you can conclude the merge by running git merge --continue (see 'HOW TO RESOLVE CONFLICTS' section below)"}]},{name:"mergetool",description:"Open the git tool to fix conflicts"},{name:"tag",description:"Create, list, delete or verify a tag object signed with GPG",options:[{name:["-l","--list"],description:"List tag names"},{name:"-n",description:"Print <n> lines of each tag message",args:{name:"n",suggestions:[{name:"1"},{name:"2"},{name:"3"}]}},{name:["-d","--delete"],description:"Delete tags"},{name:["-v","--verify"],description:"Verify tags"},{name:["-a","--annotate"],description:"Annotated tag, needs a message"},{name:["-m","--message"],insertValue:"-m '{cursor}'",description:"Tag message",args:{name:"message"}},{name:"--points-at",description:"List tags of the given object",args:{name:"object",generators:t.gitGenerators.commits,suggestions:u}}],args:{name:"tagname",description:"Select a tag",generators:t.gitGenerators.tags,isOptional:!0}},{name:"restore",description:"Restore working tree files",options:[{name:["-s","--source"],description:"Restore the working tree files with the content from the given tree",args:{name:"tree"}},{name:["-p","--patch"],description:"Interactively select hunks in the difference between the restore source and the restore location"},{name:["-W","--worktree"],description:"Use the worktree as the restore location"},{name:["-S","--staged"],description:"Use staging as the restore location"},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal"},{name:"--no-progress",description:"Disable progress status reporting"},{name:["-2","--ours"],description:"When restoring paths from the index, check out stage #2 (ours) for unmerged paths",exclusiveOn:["--theirs"]},{name:["-3","--theirs"],description:"When re out paths from the index, check out stage #3 (theirs) for unmerged paths",exclusiveOn:["--ours"]},{name:["-m","--merge"],description:"When restoring files on the working tree from the index, recreate the conflicted merge in the unmerged paths"},{name:"--conflict",description:"The same as --merge option, but changes the way the conflicting hunks are presented",args:{name:"style",suggestions:["merge","diff3"]}},{name:"--ignore-unmerged",description:"When restoring files on the working tree from the index, do not abort the operation if there are unmerged entries",exclusiveOn:["--ours","--theirs","--merge","--conflict"]},{name:"--ignore-skip-worktree-bits",description:"In sparse checkout mode, by default is to only update entries matched by <pathspec> and sparse patterns in $GIT_DIR/info/sparse-checkout"},{name:"--recurse-submodules",description:"If <pathspec> names an active submodule and the restore location includes the working tree, the submodule will only be updated if this option is given, in which case its working tree will be restored to the commit recorded in the superproject, and any local modifications overwritten",exclusiveOn:["--no-recurse-submodules"]},{name:"--no-recurse-submodules",description:"Submodules working trees will not be updated",exclusiveOn:["--recurse-submodules"]},{name:"--overlay",description:"In overlay mode, the command never removes files when restoring",exclusiveOn:["--no-overlay"]},{name:"--no-overlay",description:"In no-overlay mode, tracked files that do not appear in the --source tree are removed, to make them match <tree> exactly",exclusiveOn:["--overlay"]},{name:"--pathspec-from-file",description:"Pathspec is passed in <file> instead of commandline args. If <file> is exactly - then standard input is used",args:{name:"file",template:"filepaths"}},{name:"--pathspec-file-nul",description:"Only meaningful with --pathspec-from-file. Pathspec elements are separated with NUL character and all other characters are taken literally (including newlines and quotes)"},{name:"--",description:"Do not interpret any more arguments as options"}],args:{name:"pathspec",isOptional:!0,isVariadic:!0,generators:t.gitGenerators.files_for_staging}},{name:"switch",description:"Switch branches",options:[{name:["-c","--create"],description:"Create a new branch named <new-branch> starting at <start-point> before switching to the branch",args:[{name:"new branch"},{name:"start point",isOptional:!0,generators:t.gitGenerators.commits}]},{name:["-C","--force-create"],description:"Similar to --create except that if <new-branch> already exists it will be reset to <start-point>",args:[{name:"new branch"},{name:"start point",isOptional:!0,generators:t.gitGenerators.commits}]},{name:["-d","--detach"],description:"Switch to a commit for inspection and discardable experiments"},{name:"--guess",description:"If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name"},{name:"--no-guess",description:"Disable --guess"},{name:["-f","--force"],description:"An alias for --discard-changes",isDangerous:!0},{name:"--discard-changes",description:"Proceed even if the index or the working tree differs from HEAD. Both the index and working tree are restored to match the switching target",isDangerous:!0},{name:["-m","--merge"],description:"If you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context"},{name:"--conflict",description:"The same as --merge option above, but changes the way the conflicting hunks are presented, overriding the merge.conflictStyle configuration variable",args:{name:"style",suggestions:["merge","diff3"],default:"merge"}},{name:["-q","--quiet"],description:"Quiet, suppress feedback messages"},{name:"--progress",description:"Progress status is reported on the standard error stream by default when it is attached to a terminal"},{name:"--no-progress",description:"Disable progress status reporting"},{name:["-t","--track"],exclusiveOn:["--no-track"],description:"When creating a new branch, set up 'upstream' configuration",args:[{name:"branch",generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{name:"start point",isOptional:!0,generators:t.gitGenerators.commits}]},{name:"--no-track",exclusiveOn:["--track","-t"],description:"Do not set up 'upstream' configuration, even if the branch.autoSetupMerge configuration variable is true",args:[{generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"},{isOptional:!0,generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy"}]},{name:"--orphan",description:"Create a new orphan branch, named <new-branch>",args:{name:"new branch"}},{name:"--ignore-other-worktrees",description:"Git switch refuses when the wanted ref is already checked out by another worktree"},{name:"--recurse-submodules",exclusiveOn:["--no-recurse-submodules"],description:"Updates the content of all active submodules according to the commit recorded in the superproject"},{name:"--no-recurse-submodules",exclusiveOn:["--recurse-submodules"],description:"Submodules working trees will not be updated"}],args:[{name:"branch name",description:"Branch or commit to switch to",generators:t.gitGenerators.localBranches,filterStrategy:"fuzzy",suggestions:[{name:"-",description:"Switch to the last used branch",icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`}]},{name:"start point",isOptional:!0,generators:t.gitGenerators.commits}]},{name:"worktree",description:"Manage multiple working trees",subcommands:[{name:"add",description:"Create <path> and checkout <commit-ish> into it",options:[{name:["-f","--force"],description:"By default, add refuses to create a new working tree when <commit-ish> is a branch name and is already checked out by another working tree, or if <path> is already assigned to some working tree but is missing (for instance, if <path> was deleted manually). This option overrides these safeguards. To add a missing but locked working tree path, specify --force twice"},{name:["-d","--detach"],description:'With add, detach HEAD in the new working tree. See "DETACHED HEAD" in git-checkout[1]'},{name:"--checkout",description:'By default, add checks out <commit-ish>, however, --no-checkout can be used to suppress checkout in order to make customizations, such as configuring sparse-checkout. See "Sparse checkout" in git-read-tree[1]'},{name:"--lock",description:"Keep the working tree locked after creation. This is the equivalent of git worktree lock after git worktree add, but without a race condition"},{name:["-b","-B"],description:"With add, create a new branch named <new-branch> starting at <commit-ish>, and check out <new-branch> into the new working tree. If <commit-ish> is omitted, it defaults to HEAD. By default, -b refuses to create a new branch if it already exists. -B overrides this safeguard, resetting <new-branch> to <commit-ish>",args:{name:"new-branch"}}]},{name:"list",description:"List details of each working tree",options:[{name:"--porcelain",description:"With list, output in an easy-to-parse format for scripts. This format will remain stable across Git versions and regardless of user configuration. See below for details"},{name:["-v","--verbose"],description:"With list, output additional information about worktrees (see below)"},{name:"--expire",description:"With list, annotate missing working trees as prunable if they are older than <time>",args:{name:"time"}}]},{name:"lock",description:"If a working tree is on a portable device or network share which is not always mounted, lock it to prevent its administrative files from being pruned automatically",args:{name:"worktree",description:"Working trees can be identified by path, either relative or absolute"},options:[{name:"--reason",description:"With lock or with add --lock, an explanation <reason> why the working tree is locked",args:{name:"reason"}}]},{name:"move",description:"Move a working tree to a new location",args:[{name:"worktree",description:"Working trees can be identified by path, either relative or absolute"},{name:"new-path",template:"filepaths"}],options:[{name:["-f","--force"],description:"Move refuses to move a locked working tree unless --force is specified twice. If the destination is already assigned to some other working tree but is missing (for instance, if <new-path> was deleted manually), then --force allows the move to proceed; use --force twice if the destination is locked"}]},{name:"prune",description:"Prune working tree information in $GIT_DIR/worktrees",options:[{name:["-n","--dry-run"],description:"With prune, do not remove anything; just report what it would remove"},{name:["-v","--verbose"],description:"With prune, report all removals"},{name:"--expire",description:"With prune, only expire unused working trees older than <time>",args:{name:"time"}}]},{name:"remove",description:"Remove a working tree",args:{name:"worktree",description:"Working trees can be identified by path, either relative or absolute"},options:[{name:["-f","--force"],description:"Remove refuses to remove an unclean working tree unless --force is used. To remove a locked working tree, specify --force twice"}]},{name:"repair",description:"Repair working tree administrative files, if possible, if they have become corrupted or outdated due to external factors",args:{name:"path",template:"filepaths"}},{name:"unlock",description:"Unlock a working tree, allowing it to be pruned, moved or deleted",args:{name:"worktree",description:"Working trees can be identified by path, either relative or absolute"}}]},{name:"apply",description:"Apply a patch to files and/or to the index",options:[{name:"--exclude",description:"Don't apply changes matching the given path",args:{name:"path"}},{name:"--include",description:"Apply changes matching the given path",args:{name:"path"}},{name:"-p",description:"Remove <num> leading slashes from traditional diff paths",args:{name:"num"}},{name:"--no-add",description:"Ignore additions made by the patch"},{name:"--stat",description:"Instead of applying the patch, output diffstat for the input"},{name:"--numstat",description:"Show number of added and deleted lines in decimal notation"},{name:"--summary",description:"Instead of applying the patch, output a summary for the input"},{name:"--check",description:"Instead of applying the patch, see if the patch is applicable"},{name:"--index",description:"Make sure the patch is applicable to the current index"},{name:["-N","--intent-to-add"],description:"Mark new files with `git add --intent-to-add`"},{name:"--cached",description:"Apply a patch without touching the working tree"},{name:"--unsafe-paths",description:"Accept a patch that touches outside the working area"},{name:"--apply",description:"Also apply the patch (use with --stat/--summary/--check)"},{name:["-3","--3way"],description:"Attempt three-way merge if a patch does not apply"},{name:"--build-fake-ancestor",description:"Build a temporary index based on embedded index information",args:{name:"file"}},{name:"-z",description:"Paths are separated with NUL character"},{name:"-C",description:"Ensure at least <n> lines of context match",args:{name:"n"}},{name:"--whitespace",description:"Detect new or modified lines that have whitespace errors",args:{name:"action",suggestions:[{name:"nowarn",description:"Turns off the trailing whitespace warning"},{name:"warn",description:"Outputs warnings for a few such errors, but applies the patch as-is (default)"},{name:"fix",description:"Outputs warnings for a few such errors, and applies the patch after fixing them"},{name:"error",description:"Outputs warnings for a few such errors, and refuses to apply the patch"},{name:"error-all",description:"Similar to `error` but shows all errors"}]}},{name:["--ignore-space-change","--ignore-whitespace"],description:"Ignore changes in whitespace when finding context"},{name:["-R","--reverse"],description:"Apply the patch in reverse"},{name:"--unidiff-zero",description:"Don't expect at least one line of context"},{name:"--reject",description:"Leave the rejected hunks in corresponding *.rej files"},{name:"--allow-overlap",description:"Allow overlapping hunks"},{name:["-v","--verbose"],description:"Be verbose"},{name:"--inaccurate-eof",description:"Tolerate incorrectly detected missing new-line at the end of file"},{name:"--recount",description:"Do not trust the line counts in the hunk headers"},{name:"--directory",description:"Prepend <root> to all filenames",args:{name:"root"}}],args:{name:"patch",isVariadic:!0}},{name:"daemon",description:"A really simple server for Git repositories",args:{name:"directory",description:"A directory to add to the whitelist of allowed directories. Unless --strict-paths is specified this will also include subdirectories of each named directory",isVariadic:!0},options:[{name:"--strict-paths",description:'Match paths exactly (i.e. don\'t allow "/foo/repo" when the real path is "/foo/repo.git" or "/foo/repo/.git") and don\'t do user-relative paths. git daemon will refuse to start when this option is enabled and no whitelist is specified'},{name:"--base-path",description:"Remap all the path requests as relative to the given path",requiresSeparator:!0,args:{name:"path",template:"folders"}},{name:"--base-path-relaxed",description:"If --base-path is enabled and repo lookup fails, with this option git daemon will attempt to lookup without prefixing the base path. This is useful for switching to --base-path usage, while still allowing the old paths"},{name:"--interpolated-path",requiresSeparator:!0,description:"To support virtual hosting, an interpolated path template can be used to dynamically construct alternate paths. The template supports %H for the target hostname as supplied by the client but converted to all lowercase, %CH for the canonical hostname, %IP for the server's IP address, %P for the port number, and %D for the absolute path of the named repository. After interpolation, the path is validated against the directory whitelist",args:{name:"path-template"}},{name:"--export-all",description:"Allow pulling from all directories that look like Git repositories (have the objects and refs subdirectories), even if they do not have the git-daemon-export-ok file"},{name:"--inetd",description:"Have the server run as an inetd service",exclusiveOn:["--pid-file","--user","--group"]},{name:"--listen",description:"Listen on a specific IP address or hostname. IP addresses can be either an IPv4 address or an IPv6 address if supported. If IPv6 is not supported, then --listen=hostname is also not supported and --listen must be given an IPv4 address. Can be given more than once. Incompatible with --inetd option",requiresSeparator:!0,args:{name:"host_or_ipaddr"}},{name:"--port",description:"Listen on an alternative port. Incompatible with --inetd option",requiresSeparator:!0,args:{name:"port"}},{name:"--init-timeout",description:"Timeout (in seconds) between the moment the connection is established and the client request is received (typically a rather low value, since that should be basically immediate)",requiresSeparator:!0,args:{name:"timeout"}},{name:"--max-connections",description:"Maximum number of concurrent clients, defaults to 32. Set it to zero for no limit",requiresSeparator:!0,args:{name:"maximum"}},{name:"--syslog",description:"Short for --log-destination=syslog"},{name:"--log-destination",description:"Send log messages to the specified destination. Note that this option does not imply --verbose, thus by default only error conditions will be logged. The default destination is syslog if --inetd or --detach is specified, otherwise stderr",requiresSeparator:!0,args:{name:"destination",suggestions:[{name:"stderr",description:"Write to standard error. Note that if --detach is specified, the process disconnects from the real standard error, making this destination effectively equivalent to none"},{name:"syslog",description:"Write to syslog, using the git-daemon identifier"},{name:"none",description:"Disable all logging"}]}},{name:"--user-path",description:"Allow ~user notation to be used in requests. When specified with no parameter, requests to git://host/~alice/foo is taken as a request to access foo repository in the home directory of user alice. If --user-path=some-path is specified, the same request is taken as a request to access the some-path/foo repository in the home directory of user alice",requiresSeparator:!0,args:{name:"path",template:"folders"}},{name:"--verbose",description:"Log details about the incoming connections and requested files"},{name:"--detach",description:"Detach from the shell. Implies --syslog"},{name:"--pid-file",description:"Save the process id in the provided file",requiresSeparator:!0,args:{name:"file",template:"filepaths"},exclusiveOn:["--inetd"]},{name:"--user",description:"Change daemon's uid and gid before entering the service loop. When only --user is given without --group, the primary group ID for the user is used. The values of the option are given to getpwnam(3) and getgrnam(3) and numeric IDs are not supported",requiresSeparator:!0,exclusiveOn:["--inetd"],args:{name:"user"}},{name:"--group",description:"Change daemon's gid before entering the service loop. The value of this option is given to getgrnam(3) and numeric IDs are not supported",exclusiveOn:["--inetd"]},{name:"--enable",description:"Enable the service site-wide per default",requiresSeparator:!0,args:{name:"service",suggestions:g}},{name:"--disable",description:"Disable the service site-wide per default. Note that a service disabled site-wide can still be enabled per repository if it is marked overridable and the repository enables the service with a configuration item",requiresSeparator:!0,args:{name:"service",suggestions:g}},{name:"--allow-override",description:"Allow overriding the site-wide default with per repository configuration. By default, all the services may be overridden",requiresSeparator:!0,args:{name:"service",suggestions:g}},{name:"--forbid-override",description:"Forbid overriding the site-wide default with per repository configuration. By default, all the services may be overridden",requiresSeparator:!0,args:{name:"service",suggestions:g}},{name:"--informative-errors",description:'When informative errors are turned on, git-daemon will report more verbose errors to the client, differentiating conditions like "no such repository" from "repository not exported". This is more convenient for clients, but may leak information about the existence of unexported repositories. When informative errors are not enabled, all errors report "access denied" to the client',exclusiveOn:["--no-informative-errors"]},{name:"--no-informative-errors",description:"Turn off informative errors. This option is the default. See --informative-errors for more information",exclusiveOn:["--informative-errors"]},{name:"--access-hook",description:'Every time a client connects, first run an external command specified by the <path> with service name (e.g. "upload-pack"), path to the repository, hostname (%H), canonical hostname (%CH), IP address (%IP), and TCP port (%P) as its command-line arguments. The external command can decide to decline the service by exiting with a non-zero status (or to allow it by exiting with a zero status). It can also look at the $REMOTE_ADDR and $REMOTE_PORT environment variables to learn about the requestor when making this decision.\n\nThe external command can optionally write a single line to its standard output to be sent to the requestor as an error message when it declines the service',requiresSeparator:!0,args:{name:"path",template:"filepaths"}}]}],additionalSuggestions:[{name:"commit -m 'msg'",description:"Git commit shortcut",insertValue:"commit -m '{cursor}'",icon:"fig://template?color=2ecc71&badge=🔥"}]};t.default=b},2816:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"Blocks",insertValue:"{cursor}b"},{name:"Bytes",insertValue:"{cursor}c"},{name:"Gigabytes",insertValue:"{cursor}G"},{name:"Kilobytes",insertValue:"{cursor}K"},{name:"Megabytes",insertValue:"{cursor}M"},{name:"Petabytes",insertValue:"{cursor}P"},{name:"Terabytes",insertValue:"{cursor}T"},{name:"Words",insertValue:"{cursor}w"}],i=[{name:["f","-f","--file"],description:"Use archive file or device ARCHIVE",isRequired:!0,args:{name:"ARCHIVE"}},{name:"--force-local",description:"Archive file is local even if it has a colon",dependsOn:["f","-f","--file"]},{name:["F","-F","--info-script","--new-volume-script"],description:"Run COMMAND at the end of each tape",args:{name:"COMMAND"}},{name:["L","-L","--tape-length"],description:"Change tape after writing Nx1024 bytes",args:{name:"N",suggestions:n}},{name:["M","-M","--multi-volume"],description:"Create/list/extract multi-volume archive"},{name:"--rmt-command",description:"Use COMMAND instead of rmt when accessing remote archives",args:{name:"COMMAND"}},{name:"--rsh-command",description:"Use COMMAND instead of rsh when accessing remote archives",args:{name:"COMMAND"}},{name:"--volno-file",description:"Tar will keep track of which volume of a multi-volume archive it is working in FILE",dependsOn:["M","-M","--multi-volume"],args:{name:"FILE"}}],a=["a","-a","--auto-compress","I","-I","--use-compress-program","j","-j","--bzip2","J","-J","--xz","--lzip","--lzma","--lzop","--no-auto-compress","z","-z","--gzip","--gunzip","--ungzip","Z","-Z","--compress","--uncompress","--zstd"],s=[{name:["a","-a","--auto-compress"],description:"Use archive suffix to determine the compression program",exclusiveOn:a},{name:["I","-I","--use-compress-program"],description:"Filter data through COMMAND",exclusiveOn:a,args:{name:"COMMAND"}},{name:["j","-j","--bzip2"],description:"Filter the archive through bzip2",exclusiveOn:a},{name:["J","-J","--xz"],description:"Filter the archive through xz",exclusiveOn:a},{name:"--lzip",description:"Filter the archive through lzip",exclusiveOn:a},{name:"--lzma",description:"Filter the archive through lzma",exclusiveOn:a},{name:"--lzop",description:"Filter the archive through lzop",exclusiveOn:a},{name:"--no-auto-compress",description:"Do not use archive suffix to determine the compression program",exclusiveOn:a},{name:["z","-z","--gzip","--gunzip","--ungzip"],description:"Filter the archive through gzip",exclusiveOn:a},{name:["Z","-Z","--compress","--uncompress"],description:"Filter the archive through compress",exclusiveOn:a},{name:"--zstd",description:"Filter the archive through zstd",exclusiveOn:a},{name:["--transform","--xform"],description:"Use sed replace EXPRESSION to transform file names",args:{name:"EXPRESSION"}},{name:"--checkpoint",description:"Display progress messages every Nth record",args:{name:"N",isOptional:!0,default:"10"}},{name:"--checkpoint-action",description:"Run ACTION on each checkpoint",args:{name:"ACTION"}},{name:"--full-time",description:"Print file time to its full resolution",dependsOn:["v","-v","--verbose"]},{name:"--utc",description:"Print file modification times in UTC",dependsOn:["v","-v","--verbose"]}],o=[{name:"--ignore-failed-read",description:"Do not exit with nonzero on unreadable files"},{name:"--restrict",description:"Disable the use of some potentially harmful options",dependsOn:["M","-M","--multi-volume"]},{name:"--remove-files",description:"Remove files from disk after adding them to the archive"},{name:["W","-W","--verify"],description:"Verify the archive after writing it"},{name:"--atime-preserve",description:"Preserve access times on dumped files",args:{name:"METHOD",default:"replace",isOptional:!0,suggestions:[{name:"replace",description:"Restore the times after reading"},{name:"system",description:"Not setting the times in the first place"}]}},{name:"--group",description:"Force NAME as group for added files",args:{name:"NAME[:GID]",description:"If GID is not supplied, NAME can be either a user name or numeric GID"}},{name:"--group-map",description:"Read group translation map from FILE",args:{name:"FILE",description:"Each non-empty line in FILE defines translation for a single group",template:"filepaths"}},{name:"--mode",description:"Force symbolic mode CHANGES for added files",args:{name:"CHANGES"}},{name:"--mtime",description:"Set mtime for added files",args:{name:"DATE-OR-FILE",description:"Either a date/time in almost arbitrary format, or the name of an existing file",template:"filepaths"}},{name:"--owner",description:"Force NAME as owner for added files",args:{name:"NAME[:GID]",description:"If UID is not supplied, NAME can be either a user name or numeric UID"}},{name:"--owner-map",description:"Read owner translation map from FILE",args:{name:"FILE",description:"Each non-empty line in FILE defines translation for a single UID",template:"filepaths"}},{name:"--sort",description:"When creating an archive, sort directory entries according to ORDER",args:{name:"ORDER",default:"none",suggestions:["none","name","inode"]}},{name:"--add-file",description:"Add FILE to the archive",args:{name:"FILE",template:"filepaths"}},{name:"--exclude",description:"Exclude files matching PATTERN",args:{name:"PATTERN",description:"A glob-style wildcard pattern"}},{name:"--exclude-backups",description:"Exclude backup and lock files"},{name:"--exclude-caches",description:"Exclude contents of directories containing file CACHEDIR.TAG, except for the tag file itself",exclusiveOn:["--exclude-caches-all","--exclude-caches-under"]},{name:"--exclude-caches-all",description:"Exclude directories containing file CACHEDIR.TAG and the file itself",exclusiveOn:["--exclude-caches","--exclude-caches-under"]},{name:"--exclude-caches-under",description:"Exclude everything under directories containing CACHEDIR.TAG",exclusiveOn:["--exclude-caches","--exclude-caches-all"]},{name:"--exclude-ignore",description:"Read exclusion patterns from FILE in directory before dumping",exclusiveOn:["--exclude-ignore-recursive"],args:{name:"FILE"}},{name:"--exclude-ignore-recursive",description:"Same as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories",exclusiveOn:["--exclude-ignore"],args:{name:"FILE"}},{name:"--exclude-tag",description:"Exclude contents of directories containing FILE, except for FILE itself",exclusiveOn:["--exclude-tag-all","--exclude-tag-under"],args:{name:"FILE"}},{name:"--exclude-tag-all",description:"Exclude directories containing FILE",exclusiveOn:["--exclude-tag","--exclude-tag-under"],args:{name:"FILE"}},{name:"--exclude-tag-under",description:"Exclude everything under directories containing FILE",exclusiveOn:["--exclude-tag","--exclude-tag-all"],args:{name:"FILE"}},{name:"--exclude-vcs",description:"Exclude version control system directories",exclusiveOn:["--exclude-vcs-ignores"]},{name:"--exclude-vcs-ignores",description:"Exclude files that match patterns read from VCS-specific ignore files",exclusiveOn:["--exclude-vcs"]},{name:["h","-h","--dereference"],description:"Follow symlinks; archive and dump the files they point to"},{name:"--hard-dereference",description:"Follow hard links; archive and dump the files they refer to"},{name:["N","-N","--newer","--after-date"],description:"Only store files newer than DATE",args:{name:"DATE",description:"If DATE starts with / or . it is taken to be a file name",template:"filepaths"}},{name:"--one-file-system",description:"Stay in local file system when creating archive"},{name:["P","-P","--absolute-names"],description:"Don't strip leading slashes from file names"},{name:"--anchored",description:"Patterns match file name start",dependsOn:["--exclude"],exclusiveOn:["--no-anchored"]},{name:"--ignore-case",description:"Ignore case",dependsOn:["--exclude"],exclusiveOn:["--no-ignore-case"]},{name:"--no-anchored",description:"Patterns match after any /",dependsOn:["--exclude"],exclusiveOn:["--anchored"]},{name:"--no-ignore-case",description:"Case sensitive matching",dependsOn:["--exclude"],exclusiveOn:["--ignore-case"]},{name:"--no-wildcards",description:"Verbatim string matching",dependsOn:["--exclude"],exclusiveOn:["--wildcards"]},{name:"--no-wildcards-match-slash",description:"Wildcards do not match /",dependsOn:["--exclude","--wildcards"],exclusiveOn:["--no-wildcards","--wildcards-match-slash"]},{name:"--wildcards",description:"Use wildcards",dependsOn:["--exclude"],exclusiveOn:["--no-wildcards"]},{name:"--wildcards-match-slash",description:"Wildcards match /",dependsOn:["--exclude","--wildcards"],exclusiveOn:["--no-wildcards","--no-wildcards-match-slash"]},{name:"--clamp-mtime",description:"Only set time when the file is more recent than what was given with --mtime",dependsOn:["--mtime"]},{name:["l","-l","--check-links"],description:"Print a message if not all links are dumped"},...s],r={name:"--occurrence",description:"Process only the Nth occurrence of each file in the archive",args:{name:"N",default:"1",isOptional:!0}},c=[{name:["n","-n","--seek"],description:"Assume the archive is seekable",exclusiveOn:["--no-seek"]},{name:"--no-seek",description:"Assume the archive is not seekable",exclusiveOn:["n","-n","--seek"]},r,{name:["B","-B","--read-full-records"],description:"When listing or extracting, accept incomplete input records after end-of-file marker"},{name:["i","-i","--ignore-zeros"],description:"Ignore zeroed blocks in archive"},{name:["V","-V","--label"],description:"Use TEXT as a globbing pattern for volume name",args:{name:"TEXT"}},...s,{name:["K","-K","--starting-file"],description:"Begin at the given member in the archive",args:{name:"MEMBER"}},{name:"--show-omitted-dirs",description:"List each directory that does not match search criteria"}],l=[{name:"all",description:"Enable all warning messages"},{name:"none",description:"Disable all warning messages"},{name:"filename-with-nuls",description:'"%s: file name read contains nul character"'},{name:"no-filename-with-nuls",description:'No "%s: file name read contains nul character"'},{name:"alone-zero-block",description:'"A lone zero block at %s"'},{name:"no-alone-zero-block",description:'No "A lone zero block at %s"'}],d=["k","-k","--keep-old-files","--overwrite","--overwrite-dir","--recursive-unlink","--skip-old-files","U","-U","--unlink-first","O","-O","--to-stdout"],m=["k","-k","--keep-old-files","--keep-newer-files","--keep-directory-symlink","--no-overwrite-dir","--overwrite","--skip-old-files","U","-U","--unlink-first","O","-O","--to-stdout"],p={name:"tar",description:"Manipulating archive files",options:[{name:["g","-g","--listed-incremental"],description:"Handle new GNU-format incremental backups",isPersistent:!0,exclusiveOn:["G","-G","--incremental"],args:{name:"FILE",description:"The name of a snapshot file"}},{name:"--hole-detection",description:"Use METHOD to detect holes in sparse files",isPersistent:!0,args:{name:"METHOD",default:"seek",isOptional:!0,suggestions:["seek","raw"]}},{name:["G","-G","--incremental"],description:"Handle old GNU-format incremental backups",isPersistent:!0,exclusiveOn:["g","-g","--listed-incremental"]},{name:"--sparse-version",description:"Set version of the sparse format to use",isPersistent:!0,dependsOn:["S","-S","--sparse"],args:{name:"MAJOR[.MINOR]",suggestions:["0","0.1","1"]}},{name:["S","-S","--sparse"],description:"Handle sparse files efficiently",isPersistent:!0},{name:"--ignore-command-error",description:"Ignore subprocess exit codes",isPersistent:!0,exclusiveOn:["--no-ignore-command-error"]},{name:"--no-ignore-command-error",description:"Treat non-zero exit codes of children as error",isPersistent:!0,exclusiveOn:["--ignore-command-error"]},{name:"--numeric-owner",description:"Always use numbers for user/group names",isPersistent:!0},{name:"--acls",description:"Enable POSIX ACLs support",exclusiveOn:["--no-acls"],isPersistent:!0},{name:"--no-acls",description:"Disable POSIX ACLs support",exclusiveOn:["--acls"],isPersistent:!0},{name:"--selinux",description:"Enable SELinux context support",exclusiveOn:["--no-selinux"],isPersistent:!0},{name:"--no-selinux",description:"Disable SELinux context support",exclusiveOn:["--selinux"],isPersistent:!0},{name:"--xattrs",description:"Enable extended attributes support",exclusiveOn:["--no-xattrs"],isPersistent:!0},{name:"--no-xattrs",description:"Disable extended attributes support",exclusiveOn:["--xattrs","--xattrs-exclude","--xattrs-include"],isPersistent:!0},{name:"--xattrs-exclude",description:"Specify the exclude pattern for xattr keys",exclusiveOn:["--no-xattrs"],isPersistent:!0,args:{name:"PATTERN",description:"A POSIX regular expression"}},{name:"--xattrs-include",description:"Specify the include pattern for xattr keys",isPersistent:!0,args:{name:"PATTERN",description:"A POSIX regular expression"}},{name:"--backup",description:"Backup before removal",isPersistent:!0,args:{name:"CONTROL",isOptional:!0,default:"existing",suggestions:[{name:["none","off"],description:"Never make backups"},{name:["t","numbered"],description:"Make numbered backups"},{name:["nil","existing"],description:"Make numbered backups if numbered backups exist"},{name:["never","simple"],description:"Always make simple backups"}]}},{name:["C","-C","--directory"],description:"Change to DIR before performing any operations",isRepeatable:!0,isPersistent:!0,args:{name:"DIR",template:"folders"}},{name:"--newer-mtime",description:"Work on files whose data changed after the DATE",isPersistent:!0,args:{name:"DATE",description:"If DATE starts with / or . it is taken to be a file name",template:"filepaths"}},{name:"--no-null",description:"Disable the effect of the previous --null option",dependsOn:["T","-T","--files-from"],isPersistent:!0},{name:"--no-recursion",description:"Avoid descending automatically in directories",exclusiveOn:["--recursion"],isPersistent:!0},{name:"--no-unquote",description:"Do not unquote input file or member names",exclusiveOn:["--unquote"],isPersistent:!0},{name:"--no-verbatim-files-from",description:"Treat each line read from a file list as if it were supplied in the command line",dependsOn:["T","-T","--files-from"],isRepeatable:!0,isPersistent:!0},{name:"-null",description:"Instruct subsequent -T options to read null-terminated names verbatim",dependsOn:["T","-T","--files-from"],isPersistent:!0},{name:"--recursion",description:"Recurse into directories",exclusiveOn:["--no-recursion"],isPersistent:!0},{name:"--suffix",description:"Backup before removal, override usual suffix",dependsOn:["--backup"],isPersistent:!0,args:{name:"STRING",default:"~"}},{name:["T","-T","--files-from"],description:"Get names to extract or create from FILE",isRepeatable:!0,isPersistent:!0,args:{name:"FILE",template:"filepaths"}},{name:"--unquote",description:"Unquote file or member names",exclusiveOn:["--no-unquote"],isPersistent:!0},{name:"--verbatim-files-from",description:"Treat each line obtained from a file list as a file name, even if it starts with a dash",dependsOn:["T","-T","--files-from"],isRepeatable:!0,isPersistent:!0},{name:["X","-X","--exclude-from"],description:"Exclude files matching patterns listed in FILE",isRepeatable:!0,isPersistent:!0,args:{name:"FILE",template:"filepaths"}},{name:"--index-file",description:"Send verbose output to FILE",isPersistent:!0,args:{name:"FILE"}},{name:"--no-quote-chars",description:"Disable quoting for characters from STRING",isPersistent:!0,args:{name:"STRING"}},{name:"--quote-chars",description:"Additionally quote characters from STRING",isPersistent:!0,args:{name:"STRING"}},{name:"--quoting-style",description:"Set quoting style for file and member names",isPersistent:!0,args:{name:"STYLE",suggestions:["literal","shell","shell-always","c","c-maybe","escape","locale","clocale"]}},{name:["R","-R","--block-number"],description:"Show block number within archive with each message",isPersistent:!0},{name:["--show-transformed-names","--show-stored-names"],description:"Show file or archive names after transformation by --strip and --transform options",isPersistent:!0},{name:"--totals",description:"Print total bytes after processing the archive",isPersistent:!0,args:{name:"SIGNAL",description:"Print total bytes when this signal is delivered",isOptional:!0,suggestions:[{name:["SIGHUP","HUP"]},{name:["SIGQUIT","QUIT"]},{name:["SIGINT","INT"]},{name:["SIGUSR1","USR1"]},{name:["SIGUSR2","USR2"]}]}},{name:["v","-v","--verbose"],description:"Verbosely list files processed",isRepeatable:!0,isPersistent:!0},{name:["w","-w","--interactive","--confirmation"],description:"Ask for confirmation for every action"}],subcommands:[{name:["A","-A","--catenate","--concatenate"],description:"Append archive to the end of another archive",args:{name:"ARCHIVE",isVariadic:!0,template:"filepaths"}},{name:["c","-c","--create"],description:"Create a new archive",options:[{name:"--check-device",description:"Check device numbers when creating incremental archives",exclusiveOn:["--no-check-device"],dependsOn:["g","-g","--listed-incremental"]},{name:"--level",requiresSeparator:!0,description:"Set dump level for created listed-incremental archive",args:{name:"NUMBER",default:"0"},dependsOn:["g","-g","--listed-incremental"]},{name:"--no-check-device",description:"Do not check device numbers when creating incremental archives",exclusiveOn:["--check-device"],dependsOn:["g","-g","--listed-incremental"]},...o,{name:["b","-b","--blocking-factor"],description:"Set record size to BLOCKSx512 bytes",args:{name:"BLOCKS"}},{name:"--record-size",description:"Set record size",args:{name:"NUMBER",description:"The number of bytes per record",suggestions:n}},{name:["H","-H","--format"],description:"Create archive of the given format",exclusiveOn:["--old-archive","--portability","--posix","o","-o"],args:{name:"FORMAT",suggestions:[{name:"gnu",description:"GNU tar 1.13.x format"},{name:"oldgnu",description:"GNU format as per tar <= 1.12"},{name:["pax","posix"],description:"POSIX 1003.1-2001 (pax) format"},{name:"ustar",description:"POSIX 1003.1-1988 (ustar) format"},{name:"v7",description:"Old V7 tar format"}]}},{name:["--old-archive","--portability"],description:"Same as --format=v7",exclusiveOn:["H","-H","--format","--pax-option","--posix","o","-o"]},{name:"--pax-option",description:"Control pax keywords when creating PAX archives",dependsOn:["H","-H","--format"],exclusiveOn:["--old-archive","--portability","--old-archive","--portability","--posix","o","-o"],args:{name:"keyword[[:]=value][,keyword[[:]=value]]..."}},{name:"--posix",description:"Same as --format=posix",exclusiveOn:["H","-H","--format","--old-archive","--portability","--pax-option"]},{name:["V","-V","--label"],description:"Create archive with volume name TEXT",args:{name:"TEXT"}},{name:"--warning",description:"Enable or disable warning messages identified by KEYWORD",isRepeatable:!0,isPersistent:!0,args:{name:"KEYWORD",default:"all",suggestions:[...l,{name:"cachedir",description:'"%s: contains a cache directory tag %s; %s"'},{name:"no-cachedir",description:'No "%s: contains a cache directory tag %s; %s"'},{name:"file-shrank",description:'"%s: File shrank by %s bytes; padding with zeros"'},{name:"no-file-shrank",description:'No "%s: File shrank by %s bytes; padding with zeros"'},{name:"xdev",description:'"%s: file is on a different filesystem; not dumped"'},{name:"no-xdev",description:'No "%s: file is on a different filesystem; not dumped"'},{name:"file-ignored",description:'"%s: Unknown file type; file ignored", "%s: socket ignored", "%s: door ignored"'},{name:"no-file-ignored",description:'No "%s: Unknown file type; file ignored", "%s: socket ignored", "%s: door ignored"'},{name:"file-unchanged",description:'"%s: file is unchanged; not dumped"'},{name:"no-file-unchanged",description:'No "%s: file is unchanged; not dumped"'},{name:"ignore-archive",description:'"%s: file is the archive; not dumped"'},{name:"no-ignore-archive",description:'No "%s: file is the archive; not dumped"'},{name:"file-removed",description:'"%s: File removed before we read it"'},{name:"no-file-removed",description:'No "%s: File removed before we read it"'},{name:"file-changed",description:'"%s: file changed as we read it"'},{name:"no-file-changed",description:'No "%s: file changed as we read it"'},{name:"failed-read",description:"Enables warnings about unreadable files or directories"},{name:"no-failed-read",description:"Suppresses warnings about unreadable files or directories"}]}},{name:["o","-o"],description:"Same as --old-archive",exclusiveOn:["H","-H","--format","--old-archive","--portability","--posix","o","-o"]},...i],args:{name:"FILE",isVariadic:!0,template:"filepaths"}},{name:["d","-d","--diff","--compare"],description:"Find differences between archive and file system",options:[...i,r],args:{name:"FILE",isOptional:!0,isVariadic:!0,default:".",template:"filepaths"}},{name:["t","-t","--list"],description:"List the contents of an archive",options:[...i,...c],args:{name:"MEMBER",isOptional:!0,isVariadic:!0}},{name:["r","-r","--append"],description:"Append files to the end of an archive",options:[...i,...o],args:{name:"FILE",isVariadic:!0,template:"filepaths"}},{name:["u","-u","--update"],description:"Append files which are newer than the corresponding copy in the archive",options:[...i,...o],args:{name:"FILE",isVariadic:!0,template:"filepaths"}},{name:["x","-x","--extract","--get"],description:"Extract files from an archive",options:[...i,...c,{name:["k","-k","--keep-old-files"],description:"Don't replace existing files when extracting",exclusiveOn:["--keep-newer-files","--keep-directory-symlink","--no-overwrite-dir",...d]},{name:"--keep-newer-files",description:"Don't replace existing files that are newer than their archive copies",exclusiveOn:d},{name:"--keep-directory-symlink",description:"Don't replace existing symlinks to directories when extracting",exclusiveOn:d},{name:"--no-overwrite-dir",description:"Preserve metadata of existing directories",exclusiveOn:d},{name:"--one-top-level",description:"Extract all files into DIR",args:{name:"DIR"}},{name:"--overwrite",description:"Overwrite existing files when extracting",exclusiveOn:["--overwrite-dir","--recursive-unlink",...m]},{name:"--overwrite-dir",description:"Overwrite metadata of existing directories when extracting",exclusiveOn:m},{name:"--recursive-unlink",description:"Recursively remove all files in the directory prior to extracting it",exclusiveOn:m},{name:"--skip-old-files",description:"Don't replace existing files when extracting, silently skip over them",exclusiveOn:[...d,...m]},{name:["U","-U","--unlink-first"],description:"Remove each file prior to extracting over it",exclusiveOn:[...d,...m]},{name:["O","-O","--to-stdout"],description:"Extract files to standard output",exclusiveOn:[...d,...m]},{name:"--to-command",description:"Pipe extracted files to COMMAND",args:{name:"COMMAND",template:"filepaths"}},{name:"--delay-directory-restore",description:"Delay setting modification times and permissions of extracted directories until the end of extraction",exclusiveOn:["--no-delay-directory-restore"]},{name:["m","-m","--touch"],description:"Don't extract file modified time"},{name:"--no-delay-directory-restore",description:"Cancel the effect of the prior --delay-directory-restore option",exclusiveOn:["--delay-directory-restore"]},{name:"--no-same-owner",description:"Extract files as yourself",exclusiveOn:["--same-owner"]},{name:"--no-same-permissions",description:"Apply the user's umask when extracting permissions from the archive",exclusiveOn:["p","-p","--preserve-permissions","--same-permissions"]},{name:["p","-p","--preserve-permissions","--same-permissions"],description:"Extract information about file permissions",exclusiveOn:["--no-same-permissions"]},{name:"--preserve",description:"Same as both -p and -s"},{name:"--same-owner",description:"Try extracting files with the same ownership as exists in the archive",exclusiveOn:["--no-same-owner"]},{name:["s","-s","--preserve-order","--same-order"],description:"Sort names to extract to match archive"},{name:"--strip-components",description:"Strip NUMBER leading components from file names on extraction",args:{name:"NUMBER"}},{name:"--warning",description:"Enable or disable warning messages identified by KEYWORD",isRepeatable:!0,isPersistent:!0,args:{name:"KEYWORD",default:"all",suggestions:[...l,{name:"existing-file",description:'"%s: skipping existing file"'},{name:"no-existing-file",description:'No "%s: skipping existing file"'},{name:"timestamp",description:'"%s: implausibly old time stamp %s", "%s: time stamp %s is %s s in the future"'},{name:"no-timestamp",description:'No "%s: implausibly old time stamp %s", "%s: time stamp %s is %s s in the future"'},{name:"contiguous-cast",description:'"Extracting contiguous files as regular files"'},{name:"no-contiguous-cast",description:'No "Extracting contiguous files as regular files"'},{name:"symlink-cast",description:'"Attempting extraction of symbolic links as hard links"'},{name:"no-symlink-cast",description:'No "Attempting extraction of symbolic links as hard links"'},{name:"unknown-cast",description:"\"%s: Unknown file type '%c', extracted as normal file\""},{name:"no-unknown-cast",description:"No \"%s: Unknown file type '%c', extracted as normal file\""},{name:"ignore-newer",description:'"Current %s is newer or same age"'},{name:"no-ignore-newer",description:'No "Current %s is newer or same age"'},{name:"unknown-keyword",description:"\"Ignoring unknown extended header keyword '%s'\""},{name:"no-unknown-keyword",description:"No \"Ignoring unknown extended header keyword '%s'\""},{name:"decompress-program",description:"Enables verbose description of failures occurring when trying to run alternative decompressor programs"},{name:"no-decompress-program",description:"Suppresses verbose description of failures occurring when trying to run alternative decompressor programs"},{name:"record-size",description:'"Record size = %lu blocks"'},{name:"no-record-size",description:'No "Record size = %lu blocks"'},{name:"rename-directory",description:'"%s: Directory has been renamed from %s", "%s: Directory has been renamed"'},{name:"no-rename-directory",description:'No "%s: Directory has been renamed from %s", "%s: Directory has been renamed"'},{name:"new-directory",description:'"%s: Directory is new"'},{name:"no-new-directory",description:'No "%s: Directory is new"'},{name:"xdev",description:'"%s: directory is on a different device: not purging"'},{name:"no-xdev",description:'No "%s: directory is on a different device: not purging"'},{name:"bad-dumpdir",description:"\"Malformed dumpdir: 'X' never used\""}]}},{name:["o","-o"],description:"Same as --no-same-owner",exclusiveOn:["--no-same-owner","--same-owner"]}],args:{name:"MEMBER",isOptional:!0,isVariadic:!0}},{name:"--delete",description:"Delete from the archive",options:[...i,r],args:{name:"MEMBER",isVariadic:!0}},{name:"--test-label",description:"Test the archive volume label and exit",options:i,args:{name:"LABEL",isOptional:!0,isVariadic:!0}},{name:"--show-defaults",description:"Show built-in defaults for various tar options and exit"},{name:["?","-?","--help"],description:"Display a short option summary and exit"},{name:"--usage",description:"Display a list of available options and exit"},{name:"--version",description:"Print program version and copyright information and exit"}],parserDirectives:{flagsArePosixNoncompliant:!0}};t.default=p},2904:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getFishGlobals=async function(e,t){return[...await p(e),...await d()]},t.getCommandDescription=m;const r=o(n(1398)),c=n(4539),l=function(e){if(!e)return;const t=new Map;for(const[n,i]of Object.entries(e))t.set(n,i);return t}(n(396).fishBuiltinsCommandDescriptionsCache);async function d(e){const t=[];for(const e of[...l.keys()])try{const n=m(e);n?t.push({label:{label:e,description:n.description},detail:n.args,documentation:new r.MarkdownString(n.documentation),kind:r.TerminalCompletionItemKind.Method}):(console.warn(`Fish command "${e}" not found in cache.`),t.push({label:e,kind:r.TerminalCompletionItemKind.Method}))}catch(n){t.push({label:e,kind:r.TerminalCompletionItemKind.Method})}return t}function m(e){if(!l)return;const t=l.get(e);return t?t.shortDescription?{description:t.shortDescription,args:t.args,documentation:t.description}:{description:t.description,args:t.args,documentation:t.description}:void 0}async function p(e){return(0,c.getAliasesHelper)("fish",["-ic","alias"],/^alias (?<alias>[a-zA-Z0-9\.:-]+) (?<resolved>.+)$/,e)}},2945:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"unzip",description:"Extract compressed files in a ZIP archive",args:{name:"file",template:"filepaths"},options:[{name:"-l",description:"List the contents of a zip file without extracting",args:{name:"file",template:"filepaths"}},{name:"-c",args:{name:"file",template:"filepaths"}},{name:"-0",description:"Extract a zip file created in windows, containing files with non-ascii (chinese) filenames",args:[{name:"gbk"},{name:"file",template:"filepaths"}]},{name:"-d",args:{name:"destination",template:"folders"}}]}},2961:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createCLIsGenerator=t.dependenciesGenerator=t.nodeClis=t.yarnScriptParserDirectives=void 0;const i=n(5234);t.yarnScriptParserDirectives={alias:async(e,t)=>{const n=await t({command:"npm",args:["prefix"]});if(0!==n.status)throw new Error("npm prefix command failed");const i=await t({command:"cat",args:[`${n.stdout.trim()}/package.json`]}),a=JSON.parse(i.stdout).scripts?.[e];if(!a)throw new Error(`Script not found: '${e}'`);return a}},t.nodeClis=new Set(["vue","vite","nuxt","react-native","degit","expo","jest","next","electron","prisma","eslint","prettier","tsc","typeorm","babel","remotion","autocomplete-tools","redwood","rw","create-completion-spec","publish-spec-to-team","capacitor","cap"]);const a={custom:async(e,t,n)=>{const{stdout:i}=await t({command:"yarn",args:["global","dir"]}),{stdout:a}=await t({command:"cat",args:[`${i.trim()}/package.json`]});if(""==a.trim())return[];try{const t=JSON.parse(a),n=t.dependencies||{},i=t.devDependencies||{};return[...Object.keys(n),...Object.keys(i)].filter(t=>!e.includes(t)).map(e=>({name:e,icon:"📦"}))}catch(e){}return[]}},s={script:["yarn","list","--depth=0","--json"],postProcess:e=>{if(""==e.trim())return[];try{return JSON.parse(e).data.trees.map(e=>({name:e.name.split("@")[0],icon:"📦"}))}catch(e){}return[]}},o={script:["yarn","config","list"],postProcess:function(e){if(""==e.trim())return[];try{const t=e.indexOf("{"),n=e.indexOf("}");let i=e.substring(t,n+1);i=i.replace(/\'/gi,'"').replace("lastUpdateCheck",'"lastUpdateCheck"').replace("registry",'"lastUpdateCheck"');const a=JSON.parse(i);if(a)return Object.keys(a).map(e=>({name:e}))}catch(e){}return[]}};t.dependenciesGenerator={script:["bash","-c","until [[ -f package.json ]] || [[ $PWD = '/' ]]; do cd ..; done; cat package.json"],postProcess:function(e,t=[]){if(""===e.trim())return[];try{const n=JSON.parse(e),i=n.dependencies??{},a=n.devDependencies,s=n.optionalDependencies??{};return Object.assign(i,a,s),Object.keys(i).filter(e=>!t.some(t=>t===e)).map(e=>({name:e,icon:"📦",description:i[e]?"dependency":s[e]?"optionalDependency":"devDependency"}))}catch(e){return console.error(e),[]}}};const r=[{name:["-s","--silent"],description:"Skip Yarn console logs"},{name:"--no-default-rc",description:"Prevent Yarn from automatically detecting yarnrc and npmrc files"},{name:"--use-yarnrc",description:"Specifies a yarnrc file that Yarn should use (.yarnrc only, not .npmrc) (default: )",args:{name:"path",template:"filepaths"}},{name:"--verbose",description:"Output verbose messages on internal operations"},{name:"--offline",description:"Trigger an error if any required dependencies are not available in local cache"},{name:"--prefer-offline",description:"Use network only if dependencies are not available in local cache"},{name:["--enable-pnp","--pnp"],description:"Enable the Plug'n'Play installation"},{name:"--json",description:"Format Yarn log messages as lines of JSON"},{name:"--ignore-scripts",description:"Don't run lifecycle scripts"},{name:"--har",description:"Save HAR output of network traffic"},{name:"--ignore-platform",description:"Ignore platform checks"},{name:"--ignore-engines",description:"Ignore engines check"},{name:"--ignore-optional",description:"Ignore optional dependencies"},{name:"--force",description:"Install and build packages even if they were built before, overwrite lockfile"},{name:"--skip-integrity-check",description:"Run install without checking if node_modules is installed"},{name:"--check-files",description:"Install will verify file tree of packages for consistency"},{name:"--no-bin-links",description:"Don't generate bin links when setting up packages"},{name:"--flat",description:"Only allow one version of a package"},{name:["--prod","--production"],description:"Instruct Yarn to ignore NODE_ENV and take its production-or-not status from this flag instead"},{name:"--no-lockfile",description:"Don't read or generate a lockfile"},{name:"--pure-lockfile",description:"Don't generate a lockfile"},{name:"--frozen-lockfile",description:"Don't generate a lockfile and fail if an update is needed"},{name:"--update-checksums",description:"Update package checksums from current repository"},{name:"--link-duplicates",description:"Create hardlinks to the repeated modules in node_modules"},{name:"--link-folder",description:"Specify a custom folder to store global links",args:{name:"path",template:"folders"}},{name:"--global-folder",description:"Specify a custom folder to store global packages",args:{name:"path",template:"folders"}},{name:"--modules-folder",description:"Rather than installing modules into the node_modules folder relative to the cwd, output them here",args:{name:"path",template:"folders"}},{name:"--preferred-cache-folder",description:"Specify a custom folder to store the yarn cache if possible",args:{name:"path",template:"folders"}},{name:"--cache-folder",description:"Specify a custom folder that must be used to store the yarn cache",args:{name:"path",template:"folders"}},{name:"--mutex",description:"Use a mutex to ensure only one yarn instance is executing",args:{name:"type[:specifier]"}},{name:"--emoji",description:"Enables emoji in output",args:{default:"true",suggestions:["true","false"]}},{name:"--cwd",description:"Working directory to use",args:{name:"cwd",template:"folders"}},{name:["--proxy","--https-proxy"],description:"",args:{name:"host"}},{name:"--registry",description:"Override configuration registry",args:{name:"url"}},{name:"--no-progress",description:"Disable progress bar"},{name:"--network-concurrency",description:"Maximum number of concurrent network requests",args:{name:"number"}},{name:"--network-timeout",description:"TCP timeout for network requests",args:{name:"milliseconds"}},{name:"--non-interactive",description:"Do not show interactive prompts"},{name:"--scripts-prepend-node-path",description:"Prepend the node executable dir to the PATH in scripts"},{name:"--no-node-version-check",description:"Do not warn when using a potentially unsupported Node version"},{name:"--focus",description:"Focus on a single workspace by installing remote copies of its sibling workspaces"},{name:"--otp",description:"One-time password for two factor authentication",args:{name:"otpcode"}}];t.createCLIsGenerator={script:function(e){if(""!==e[e.length-1])return["curl","-s","-H","Accept: application/json",`https://api.npms.io/v2/search?q=${"create-"+e[e.length-1]}&size=20`]},cache:{ttl:2592e4},postProcess:function(e){try{return JSON.parse(e).results.map(e=>({name:e.package.name.substring(7),description:e.package.description}))}catch(e){return[]}}};const c={name:"yarn",description:"Manage packages and run scripts",generateSpec:async(e,n)=>({name:"yarn",subcommands:(await n({command:"bash",args:["-c","until [[ -d node_modules/ ]] || [[ $PWD = '/' ]]; do cd ..; done; ls -1 node_modules/.bin/"]})).stdout.split("\n").filter(e=>t.nodeClis.has(e)).map(e=>({name:e,loadSpec:"rw"===e?"redwood":e,icon:"fig://icon?type=package"}))}),args:{generators:i.npmScriptsGenerator,filterStrategy:"fuzzy",parserDirectives:t.yarnScriptParserDirectives,isOptional:!0,isCommand:!0},options:[{name:"--disable-pnp",description:"Disable the Plug'n'Play installation"},{name:"--emoji",description:"Enable emoji in output (default: true)",args:{name:"bool",suggestions:[{name:"true"},{name:"false"}]}},{name:["--enable-pnp","--pnp"],description:"Enable the Plug'n'Play installation"},{name:"--flat",description:"Only allow one version of a package"},{name:"--focus",description:"Focus on a single workspace by installing remote copies of its sibling workspaces"},{name:"--force",description:"Install and build packages even if they were built before, overwrite lockfile"},{name:"--frozen-lockfile",description:"Don't generate a lockfile and fail if an update is needed"},{name:"--global-folder",description:"Specify a custom folder to store global packages",args:{template:"folders"}},{name:"--har",description:"Save HAR output of network traffic"},{name:"--https-proxy",description:"",args:{name:"path",suggestions:[{name:"https://"}]}},{name:"--ignore-engines",description:"Ignore engines check"},{name:"--ignore-optional",description:"Ignore optional dependencies"},{name:"--ignore-platform",description:"Ignore platform checks"},{name:"--ignore-scripts",description:"Don't run lifecycle scripts"},{name:"--json",description:"Format Yarn log messages as lines of JSON (see jsonlines.org)"},{name:"--link-duplicates",description:"Create hardlinks to the repeated modules in node_modules"},{name:"--link-folder",description:"Specify a custom folder to store global links",args:{template:"folders"}},{name:"--modules-folder",description:"Rather than installing modules into the node_modules folder relative to the cwd, output them here",args:{template:"folders"}},{name:"--mutex",description:"Use a mutex to ensure only one yarn instance is executing",args:[{name:"type",suggestions:[{name:":"}]},{name:"specifier",suggestions:[{name:":"}]}]},{name:"--network-concurrency",description:"Maximum number of concurrent network requests",args:{name:"number"}},{name:"--network-timeout",description:"TCP timeout for network requests",args:{name:"milliseconds"}},{name:"--no-bin-links",description:"Don't generate bin links when setting up packages"},{name:"--no-default-rc",description:"Prevent Yarn from automatically detecting yarnrc and npmrc files"},{name:"--no-lockfile",description:"Don't read or generate a lockfile"},{name:"--non-interactive",description:"Do not show interactive prompts"},{name:"--no-node-version-check",description:"Do not warn when using a potentially unsupported Node version"},{name:"--no-progress",description:"Disable progress bar"},{name:"--offline",description:"Trigger an error if any required dependencies are not available in local cache"},{name:"--otp",description:"One-time password for two factor authentication",args:{name:"otpcode"}},{name:"--prefer-offline",description:"Use network only if dependencies are not available in local cache"},{name:"--preferred-cache-folder",description:"Specify a custom folder to store the yarn cache if possible",args:{template:"folders"}},{name:["--prod","--production"],description:"",args:{}},{name:"--proxy",description:"",args:{name:"host"}},{name:"--pure-lockfile",description:"Don't generate a lockfile"},{name:"--registry",description:"Override configuration registry",args:{name:"url"}},{name:["-s","--silent"],description:"Skip Yarn console logs, other types of logs (script output) will be printed"},{name:"--scripts-prepend-node-path",description:"Prepend the node executable dir to the PATH in scripts",args:{suggestions:[{name:"true"},{name:"false"}]}},{name:"--skip-integrity-check",description:"Run install without checking if node_modules is installed"},{name:"--strict-semver",description:""},...r,{name:["-v","--version"],description:"Output the version number"},{name:["-h","--help"],description:"Output usage information"}],subcommands:[{name:"add",description:"Installs a package and any packages that it depends on",args:{name:"package",generators:i.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[...r,{name:["-W","--ignore-workspace-root-check"],description:"Required to run yarn add inside a workspace root"},{name:["-D","--dev"],description:"Save package to your `devDependencies`"},{name:["-P","--peer"],description:"Save package to your `peerDependencies`"},{name:["-O","--optional"],description:"Save package to your `optionalDependencies`"},{name:["-E","--exact"],description:"Install exact version",dependsOn:["--latest"]},{name:["-T","--tilde"],description:"Install most recent release with the same minor version"},{name:["-A","--audit"],description:"Run vulnerability audit on installed packages"},{name:["-h","--help"],description:"Output usage information"}]},{name:"audit",description:"Perform a vulnerability audit against the installed packages",options:[{name:"--summary",description:"Only print the summary"},{name:"--groups",description:"Only audit dependencies from listed groups. Default: devDependencies, dependencies, optionalDependencies",args:{name:"group_name",isVariadic:!0}},{name:"--level",description:"Only print advisories with severity greater than or equal to one of the following: info|low|moderate|high|critical. Default: info",args:{name:"severity",suggestions:[{name:"info"},{name:"low"},{name:"moderate"},{name:"high"},{name:"critical"}]}},{name:["-h","--help"],description:"Output usage information"}]},{name:"autoclean",description:"Cleans and removes unnecessary files from package dependencies",options:[{name:["-h","--help"],description:"Output usage information"},{name:["-i","--init"],description:"Creates the .yarnclean file if it does not exist, and adds the default entries"},{name:["-f","--force"],description:"If a .yarnclean file exists, run the clean process"}]},{name:"bin",description:"Displays the location of the yarn bin folder",options:[{name:["-h","--help"],description:"Output usage information"}]},{name:"cache",description:"Yarn cache list will print out every cached package",options:[...r,{name:["-h","--help"],description:"Output usage information"}],subcommands:[{name:"clean",description:"Clear global cache"},{name:"dir",description:"Print yarn’s global cache path"},{name:"list",description:"Print out every cached package",options:[{name:"--pattern",description:"Filter cached packages by pattern",args:{name:"pattern"}}]}]},{name:"config",description:"Configure yarn",options:[{name:["-h","--help"],description:"Output usage information"}],subcommands:[{name:"set",description:"Sets the config key to a certain value",options:[{name:["-g","--global"],description:"Set global config"}]},{name:"get",description:"Print the value for a given key",args:{generators:o}},{name:"delete",description:"Deletes a given key from the config",args:{generators:o}},{name:"list",description:"Displays the current configuration"}]},{name:"create",description:"Creates new projects from any create-* starter kits",args:{name:"cli",generators:t.createCLIsGenerator,loadSpec:async e=>({name:"create-"+e,type:"global"}),isCommand:!0},options:[...r,{name:["-h","--help"],description:"Output usage information"}]},{name:"exec",description:"",options:[{name:["-h","--help"],description:"Output usage information"}]},{name:"generate-lock-entry",description:"Generates a lock file entry",options:[{name:"--use-manifest",description:"Specify which manifest file to use for generating lock entry",args:{template:"filepaths"}},{name:"--resolved",description:"Generate from <*.tgz>#<hash>",args:{template:"filepaths"}},{name:["-h","--help"],description:"Output usage information"}]},{name:"global",description:"Manage yarn globally",subcommands:[{name:"add",description:"Install globally packages on your operating system",args:{name:"package",generators:i.npmSearchGenerator,debounce:!0,isVariadic:!0}},{name:"bin",description:"Displays the location of the yarn global bin folder"},{name:"dir",description:"Displays the location of the global installation folder"},{name:"ls",description:"List globally installed packages (deprecated)"},{name:"list",description:"List globally installed packages"},{name:"remove",description:"Remove globally installed packages",args:{name:"package",filterStrategy:"fuzzy",generators:a,isVariadic:!0},options:[...r,{name:["-W","--ignore-workspace-root-check"],description:"Required to run yarn remove inside a workspace root"},{name:["-h","--help"],description:"Output usage information"}]},{name:"upgrade",description:"Upgrade globally installed packages",options:[...r,{name:["-S","--scope"],description:"Upgrade packages under the specified scope",args:{name:"scope"}},{name:["-L","--latest"],description:"List the latest version of packages"},{name:["-E","--exact"],description:"Install exact version. Only used when --latest is specified",dependsOn:["--latest"]},{name:["-P","--pattern"],description:"Upgrade packages that match pattern",args:{name:"pattern"}},{name:["-T","--tilde"],description:"Install most recent release with the same minor version. Only used when --latest is specified"},{name:["-C","--caret"],description:"Install most recent release with the same major version. Only used when --latest is specified",dependsOn:["--latest"]},{name:["-A","--audit"],description:"Run vulnerability audit on installed packages"},{name:["-h","--help"],description:"Output usage information"}]},{name:"upgrade-interactive",description:"Display the outdated packages before performing any upgrade",options:[{name:"--latest",description:"Use the version tagged latest in the registry"}]}],options:[...r,{name:"--prefix",description:"Bin prefix to use to install binaries",args:{name:"prefix"}},{name:"--latest",description:"Bin prefix to use to install binaries"},{name:["-h","--help"],description:"Output usage information"}]},{name:"help",description:"Output usage information"},{name:"import",description:"Generates yarn.lock from an npm package-lock.json file"},{name:"info",description:"Show information about a package"},{name:"init",description:"Interactively creates or updates a package.json file",options:[...r,{name:["-y","--yes"],description:"Use default options"},{name:["-p","--private"],description:"Use default options and private true"},{name:["-i","--install"],description:"Install a specific Yarn release",args:{name:"version"}},{name:"-2",description:"Generates the project using Yarn 2"},{name:["-h","--help"],description:"Output usage information"}]},{name:"install",description:"Install all the dependencies listed within package.json",options:[...r,{name:["-A","--audit"],description:"Run vulnerability audit on installed packages"},{name:["-h","--help"],description:"Output usage information"}]},{name:"licenses",description:"",subcommands:[{name:"list",description:"List licenses for installed packages"},{name:"generate-disclaimer",description:"List of licenses from all the packages"}]},{name:"link",description:"Symlink a package folder during development",args:{isOptional:!0,name:"package"},options:[...r,{name:["-h","--help"],description:"Output usage information"}]},{name:"list",description:"Lists all dependencies for the current working directory",options:[{name:"--depth",description:"Restrict the depth of the dependencies"},{name:"--pattern",description:"Filter the list of dependencies by the pattern"}]},{name:"login",description:"Store registry username and email"},{name:"logout",description:"Clear registry username and email"},{name:"node",description:""},{name:"outdated",description:"Checks for outdated package dependencies",options:[...r,{name:["-h","--help"],description:"Output usage information"}]},{name:"owner",description:"Manage package owners",subcommands:[{name:"list",description:"Lists all of the owners of a package",args:{name:"package"}},{name:"add",description:"Adds the user as an owner of the package",args:{name:"package"}},{name:"remove",description:"Removes the user as an owner of the package",args:[{name:"user"},{name:"package"}]}]},{name:"pack",description:"Creates a compressed gzip archive of package dependencies",options:[{name:"--filename",description:"Creates a compressed gzip archive of package dependencies and names the file filename"}]},{name:"policies",description:"Defines project-wide policies for your project",subcommands:[{name:"set-version",description:"Will download the latest stable release",options:[{name:"--rc",description:"Download the latest rc release"}]}]},{name:"publish",description:"Publishes a package to the npm registry",args:{name:"Tarball or Folder",template:"folders"},options:[...r,{name:["-h","--help"],description:"Output usage information"},{name:"--major",description:"Auto-increment major version number"},{name:"--minor",description:"Auto-increment minor version number"},{name:"--patch",description:"Auto-increment patch version number"},{name:"--premajor",description:"Auto-increment premajor version number"},{name:"--preminor",description:"Auto-increment preminor version number"},{name:"--prepatch",description:"Auto-increment prepatch version number"},{name:"--prerelease",description:"Auto-increment prerelease version number"},{name:"--preid",description:"Add a custom identifier to the prerelease",args:{name:"preid"}},{name:"--message",description:"Message",args:{name:"message"}},{name:"--no-git-tag-version",description:"No git tag version"},{name:"--no-commit-hooks",description:"Bypass git hooks when committing new version"},{name:"--access",description:"Access",args:{name:"access"}},{name:"--tag",description:"Tag",args:{name:"tag"}}]},{name:"remove",description:"Remove installed package",args:{filterStrategy:"fuzzy",generators:t.dependenciesGenerator,isVariadic:!0},options:[...r,{name:["-W","--ignore-workspace-root-check"],description:"Required to run yarn remove inside a workspace root"},{name:["-h","--help"],description:"Output usage information"}]},{name:"run",description:"Runs a defined package script",options:[...r,{name:["-h","--help"],description:"Output usage information"}],args:[{name:"script",description:"Script to run from your package.json",generators:i.npmScriptsGenerator,filterStrategy:"fuzzy",parserDirectives:t.yarnScriptParserDirectives,isCommand:!0},{name:"env",suggestions:["env"],description:"Lists environment variables available to scripts",isOptional:!0}]},{name:"tag",description:"Add, remove, or list tags on a package"},{name:"team",description:"Maintain team memberships",subcommands:[{name:"create",description:"Create a new team",args:{name:"<scope:team>"}},{name:"destroy",description:"Destroys an existing team",args:{name:"<scope:team>"}},{name:"add",description:"Add a user to an existing team",args:[{name:"<scope:team>"},{name:"<user>"}]},{name:"remove",description:"Remove a user from a team they belong to",args:{name:"<scope:team> <user>"}},{name:"list",description:"If performed on an organization name, will return a list of existing teams under that organization. If performed on a team, it will instead return a list of all users belonging to that particular team",args:{name:"<scope>|<scope:team>"}}]},{name:"unlink",description:"Unlink a previously created symlink for a package"},{name:"unplug",description:""},{name:"upgrade",description:"Upgrades packages to their latest version based on the specified range",args:{name:"package",generators:t.dependenciesGenerator,filterStrategy:"fuzzy",isVariadic:!0,isOptional:!0},options:[...r,{name:["-S","--scope"],description:"Upgrade packages under the specified scope",args:{name:"scope"}},{name:["-L","--latest"],description:"List the latest version of packages"},{name:["-E","--exact"],description:"Install exact version. Only used when --latest is specified",dependsOn:["--latest"]},{name:["-P","--pattern"],description:"Upgrade packages that match pattern",args:{name:"pattern"}},{name:["-T","--tilde"],description:"Install most recent release with the same minor version. Only used when --latest is specified"},{name:["-C","--caret"],description:"Install most recent release with the same major version. Only used when --latest is specified",dependsOn:["--latest"]},{name:["-A","--audit"],description:"Run vulnerability audit on installed packages"},{name:["-h","--help"],description:"Output usage information"}]},{name:"upgrade-interactive",description:"Upgrades packages in interactive mode",options:[{name:"--latest",description:"Use the version tagged latest in the registry"}]},{name:"version",description:"Update version of your package",options:[...r,{name:["-h","--help"],description:"Output usage information"},{name:"--new-version",description:"New version",args:{name:"version"}},{name:"--major",description:"Auto-increment major version number"},{name:"--minor",description:"Auto-increment minor version number"},{name:"--patch",description:"Auto-increment patch version number"},{name:"--premajor",description:"Auto-increment premajor version number"},{name:"--preminor",description:"Auto-increment preminor version number"},{name:"--prepatch",description:"Auto-increment prepatch version number"},{name:"--prerelease",description:"Auto-increment prerelease version number"},{name:"--preid",description:"Add a custom identifier to the prerelease",args:{name:"preid"}},{name:"--message",description:"Message",args:{name:"message"}},{name:"--no-git-tag-version",description:"No git tag version"},{name:"--no-commit-hooks",description:"Bypass git hooks when committing new version"},{name:"--access",description:"Access",args:{name:"access"}},{name:"--tag",description:"Tag",args:{name:"tag"}}]},{name:"versions",description:"Displays version information of the currently installed Yarn, Node.js, and its dependencies"},{name:"why",description:"Show information about why a package is installed",args:{name:"package",filterStrategy:"fuzzy",generators:s},options:[...r,{name:["-h","--help"],description:"Output usage information"},{name:"--peers",description:"Print the peer dependencies that match the specified name"},{name:["-R","--recursive"],description:"List, for each workspace, what are all the paths that lead to the dependency"}]},{name:"workspace",description:"Manage workspace",filterStrategy:"fuzzy",generateSpec:async(e,t)=>{const n=(await t({command:"yarn",args:["--version"]})).stdout.startsWith("1.");try{return{name:"workspace",subcommands:(n?await(async()=>{const{stdout:e}=await t({command:"yarn",args:["workspaces","info"]}),n=e.indexOf("{"),i=e.lastIndexOf("}");return Object.entries(JSON.parse(e.slice(n,i+1))).map(([e,{location:t}])=>({name:e,location:t}))})():await(async()=>(await t({command:"yarn",args:["workspaces","list","--json"]})).stdout.split("\n").map(e=>JSON.parse(e.trim())))()).map(({name:e,location:t})=>({name:e,description:"Workspaces",args:{name:"script",generators:{cache:{strategy:"stale-while-revalidate",ttl:6e4},script:["cat",`${t}/package.json`],postProcess:function(e){if(""==e.trim())return[];try{const t=JSON.parse(e).scripts;if(t)return Object.keys(t).map(e=>({name:e}))}catch(e){}return[]}}}}))}}catch(e){console.error(e)}return{name:"workspaces"}}},{name:"workspaces",description:"Show information about your workspaces",options:[{name:"subcommand",description:"",args:{suggestions:[{name:"info"},{name:"run"}]}},{name:"flags",description:""}]},{name:"set",description:"Set global Yarn options",subcommands:[{name:"resolution",description:"Enforce a package resolution",args:[{name:"descriptor",description:"A descriptor for the package, in the form of 'lodash@npm:^1.2.3'"},{name:"resolution",description:"The version of the package to resolve"}],options:[{name:["-s","--save"],description:"Persist the resolution inside the top-level manifest"}]},{name:"version",description:"Lock the Yarn version used by the project",args:{name:"version",description:"Use the specified version, which can also be a Yarn 2 build (e.g 2.0.0-rc.30) or a Yarn 1 build (e.g 1.22.1)",template:"filepaths",suggestions:[{name:"from-sources",insertValue:"from sources"},"latest","canary","classic","self"]},options:[{name:"--only-if-needed",description:"Only lock the Yarn version if it isn't already locked"}]}]}]};t.default=c},3016:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"mkdir",description:"Make directories",args:{name:"directory name",template:"folders",suggestCurrentToken:!0},options:[{name:["-m","--mode"],description:"Set file mode (as in chmod), not a=rwx - umask",args:{name:"mode"}},{name:["-p","--parents"],description:"No error if existing, make parent directories as needed"},{name:["-v","--verbose"],description:"Print a message for each created directory"},{name:["-Z","--context"],description:"Set the SELinux security context of each created directory",args:{name:"context"}},{name:"--help",description:"Display this help and exit"},{name:"--version",description:"Output version information and exit"}]}},3121:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generatorCache=t.haveContextForGenerator=void 0,t.runCachedGenerator=async function(e,n,i,s){let{cache:o}=e;if(!o)return i();const{tokenArray:r,currentWorkingDirectory:c,searchTerm:l}=n,d=e.template?(0,a.getCWDForFilesAndFolders)(c,l):c,m=[o.cacheByDirectory?d:void 0,s||r.join(" ")].toString();return t.generatorCache.entry(m,i,o)};const i=n(9778),a=n(1121);t.haveContextForGenerator=e=>Boolean(e.currentWorkingDirectory),t.generatorCache=new i.Cache},3150:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"ps",description:"Report a snapshot of the current processes",options:[{name:["-A","-e"],description:"Select all processes"},{name:"-a",description:"Select all processes except both session leaders",args:{name:"getsid"}},{name:"-d",description:"Select all processes except session leaders"},{name:"--deselect",description:"Select all processes except those that fulfill the specified conditions"},{name:"-N",description:"Select all processes except those that fulfill the specified conditions (negates the selection)"},{name:"--pid",description:"Select by process ID",args:{name:"pidlist"}},{name:"--ppid",description:"Select by parent process ID. This selects the processes with a parent process ID in pidlist",args:{name:"pidlist"}},{name:"--sid",description:"Select by session ID",args:{name:"sesslist"}},{name:"--tty",description:"Select by terminal",args:{name:"ttylist"}},{name:"U",description:"Select by effective user ID (EUID) or name",args:{name:"userlist"}},{name:"-U",description:"Select by real user ID (RUID) or name",args:{name:"userlist"}},{name:"-u",description:"Select by effective user ID (EUID) or name",args:{name:"userlist"}},{name:"--User",description:"Select by real user ID (RUID) or name",args:{name:"userlist"}},{name:"--user",description:"Select by effective user ID (EUID) or name",args:{name:"userlist"}},{name:"-c",description:"Show different scheduler information for the -l option"},{name:"--context",description:"Display security context format (for SE Linux)"},{name:"-f",description:"Do full-format listing"},{name:"-F",description:"Extra full format"},{name:["--format","-o","o"],description:"",args:{name:"format"},isRepeatable:!0},{name:["-M","Z"],description:"(for SE Linux)"},{name:["-y","-l"],description:""},{name:"--cols",description:"Set screen width",args:{name:"n"}},{name:"--columns",description:"Set screen width",args:{name:"n"}},{name:"--cumulative",description:"Include some dead child process data (as a sum with the parent)"},{name:"--forest",description:"ASCII art process tree"},{name:"-H",description:"Show process hierarchy (forest)"},{name:"--headers",description:"Repeat header lines, one per page of output"},{name:"-n",description:"Set namelist file",args:{name:"namelist"}},{name:"--lines",description:"Set screen height",args:{name:"n"}},{name:["--no-headers","--no-heading"],description:"Print no header line at all"},{name:"--rows",description:"Set screen height",args:{name:"n"}},{name:"--sort",description:"Specify sorting order",args:{name:"spec"}},{name:"--width",description:"Set screen width",args:{name:"n"}},{name:"-L",description:"Show threads, possibly with LWP and NLWP columns"},{name:"-T",description:"Show threads, possibly with SPID column"},{name:"--help",description:"Print a help message"},{name:"--info",description:"Print debugging info"},{name:"--version",description:"Print the procps version"}]}},3173:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"df",description:"Display free disk space",args:{name:"file or filesystem"},options:[{name:"-a",description:"Show all mount points"},{name:["-b","-P"],description:"Use 512-byte blocks (default)",exclusiveOn:["-g","-k","-m"]},{name:"-g",description:"Use 1073741824-byte (1-Gbyte) blocks",exclusiveOn:["-b","-P","-m","-k"]},{name:"-m",description:"Use 1048576-byte (1-Mbyte) blocks",exclusiveOn:["-b","-P","-g","-k"]},{name:"-k",description:"Use 1024-byte (1-Kbyte) blocks",exclusiveOn:["-b","-P","-g","-m"]},{name:"-H",description:'"Human-readable" output, uses base 10 unit suffixes',exclusiveOn:["-h"]},{name:"-h",description:'"Human-readable" output, uses base 2 unit suffixes',exclusiveOn:["-H"]},{name:"-i",description:"Include the number of free inodes"},{name:"-l",description:"Only display information about locally-mounted filesystems"},{name:"-n",description:"Print out the previously obtained statistics"},{name:"-T",description:"Only print out statistics for filesystems of the specified types (comma separated)",args:{name:"filesystem"}}]}},3374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"-l",description:"Forward-lock the app"},{name:"-r",description:"Replace existing application"},{name:"-t",description:"Allow test packages"},{name:"-d",description:"Allow version code downgrade (debuggable packages only)"},{name:"-s",description:"Install on SD card instead of internal storage"},{name:"-g",description:"Grant all runtime permissions"},{description:"Override platform's default ABI",name:"--abi",args:{name:"ABI"}},{description:"Cause the app to be installed as an ephemeral install app",name:"--instant"},{description:"Always push APK to device and invoke Package Manager as separate steps",name:"--no-streaming"},{description:"Force streaming APK directly into Package Manager",name:"--streaming"},{description:"Use fast deploy",name:"--fastdeploy"},{description:"Prevent use of fast deploy",name:"--no-fastdeploy"},{description:"Force update of deployment agent when using fast deploy",name:"--force-agent"},{description:"Update deployment agent when local version is newer and using fast deploy",name:"--date-check-agent"},{description:"Update deployment agent when local version has different version code and using fast deploy",name:"--version-check-agent"},{description:"Locate agent files from local source build (instead of SDK location)",name:"--local-agent"}],i=[{description:"Enable compression with a specified algorithm (any, none, brotli)",name:"-z",args:{name:"ALGORITHM",suggestions:[{name:"any"},{name:"none"},{name:"brotli"}]}},{description:"Disable compression",name:"-Z"}],a=[{name:"tcp",insertValue:"tcp:"},{name:"localabstract",insertValue:"localabstract:"},{name:"localreserved",insertValue:"localreserved:"},{name:"localfilesystem",insertValue:"localfilesystem:"},{name:"dev",insertValue:"dev:"},{name:"jdwp",insertValue:"jdwp:"},{name:"acceptfd",insertValue:"acceptfd:"}],s=[{name:"tcp",insertValue:"tcp:"},{name:"localabstract",insertValue:"localabstract:"},{name:"localreserved",insertValue:"localreserved:"},{name:"localfilesystem",insertValue:"localfilesystem:"}],o={name:"adb",description:"Android Debug Bridge",subcommands:[{name:"devices",description:"List connected devices",options:[{name:"-l",description:"Long output"}]},{name:"help",description:"Show this help message"},{name:"get-state",description:"Print offline | bootloader | device"},{name:"get-serialno",description:"Print <serial-number>"},{name:"get-devpath",description:"Print <device-path>"},{name:"remount",options:[{name:"-R",description:"Reboot device"}],description:"Remount partitions read-write. if a reboot is required, -R will automatically reboot the device"},{name:"jdwp",description:"List pids of processes hosting a JDWP transport"},{name:"root",description:"Restart adbd with root permissions"},{name:"unroot",description:"Restart adbd without root permissions"},{name:"usb",description:"Restart adbd listening on USB"},{name:"sideload",description:"Sideload the given full OTA package",args:{name:"OTAPACKAGE"}},{description:"Ensure that there is a server running",name:"start-server"},{description:"Kill the server if it is running",name:"kill-server"},{description:"Kick connection from host side to force reconnect",name:"reconnect",subcommands:[{description:"Kick connection from device side to force reconnect",name:"device"},{description:"Reset offline/unauthorized devices to force reconnect`",name:"offline"}]},{name:"tcpip",description:"Restart adbd listening on TCP on PORT",args:{name:"PORT"}},{name:"reboot",args:{isOptional:!0,name:"type",suggestions:[{name:"bootloader"},{name:"recovery"},{name:"sideload"},{name:"sideload-auto-reboot"}]},description:"Reboot the device; defaults to booting system image but supports bootloader and recovery too. sideload reboots into recovery and automatically starts sideload mode, sideload-auto-reboot is the same but reboots after sideloading"},{name:"disable-verity",description:"Disable dm-verity checking on userdebug builds"},{name:"enable-verity",description:"Re-enable dm-verity checking on userdebug builds"},{name:"wait-for-device",description:"Wait for state=device"},{name:"wait-for-recovery",description:"Wait for state=recovery"},{name:"wait-for-rescue",description:"Wait for state=rescue"},{name:"wait-for-sideload",description:"Wait for state=sideload"},{name:"wait-for-bootloader",description:"Wait for state=bootloader"},{name:"wait-for-disconnect",description:"Wait for state=disconnect"},{name:"wait-for-usb-device",description:"Wait for usb in state=device"},{name:"wait-for-usb-recovery",description:"Wait for usb in state=recovery"},{name:"wait-for-usb-rescue",description:"Wait for usb in state=rescue"},{name:"wait-for-usb-sideload",description:"Wait for usb in state=sideload"},{name:"wait-for-usb-bootloader",description:"Wait for usb in state=bootloader"},{name:"wait-for-usb-disconnect",description:"Wait for usb in state=disconnect"},{name:"wait-for-local-device",description:"Wait for local in state=device"},{name:"wait-for-local-recovery",description:"Wait for local in state=recovery"},{name:"wait-for-local-rescue",description:"Wait for local in state=rescue"},{name:"wait-for-local-sideload",description:"Wait for local in state=sideload"},{name:"wait-for-local-bootloader",description:"Wait for local in state=bootloader"},{name:"wait-for-local-disconnect",description:"Wait for local in state=disconnect"},{name:"wait-for-any-device",description:"Wait for any in state=device"},{name:"wait-for-any-recovery",description:"Wait for any in state=recovery"},{name:"wait-for-any-rescue",description:"Wait for any in state=rescue"},{name:"wait-for-any-sideload",description:"Wait for any in state=sideload"},{name:"wait-for-any-bootloader",description:"Wait for any in state=bootloader"},{name:"wait-for-any-disconnect",description:"Wait for any in state=disconnect"},{name:"keygen",description:"Generate adb public/private key; private key stored in FILE",args:{name:"FILE",template:"filepaths"}},{name:"logcat",description:"Show device log (logcat --help for more)"},{name:"version",description:"Show version num"},{name:"connect",description:"Connect to a device via TCP/IP [default port=5555]",args:{name:"HOST[:PORT]"}},{name:"disconnect",description:"Disconnect from given TCP/IP device [default port=5555], or all",args:{name:"HOST[:PORT]",isOptional:!0}},{name:"uninstall",description:"Remove this app package from the device",options:[{name:"-k",description:"Keep the data and cache directories"}]},{name:"bugreport",description:"Write bugreport to given PATH [default=bugreport.zip];",args:{name:"PATH",isOptional:!0}},{name:"pair",description:"Pair with a device for secure TCP/IP communication",args:[{name:"HOST[:PORT]"},{name:"[PAIRING CODE]",isOptional:!0}]},{name:"ppp",description:"Run PPP over USB",args:[{name:"TTY"},{name:"[PARAMETER...]",isVariadic:!0,isOptional:!0}]},{name:"emu",description:"Run emulator console command",args:{name:"COMMAND"}},{name:"install",description:"Push a single package to the device and install it",args:{name:"PACKAGE",template:"filepaths"},options:n},{name:"install-multiple",description:"Push multiple APKs to the device for a single package and install them",args:{name:"PACKAGE",template:"filepaths",isVariadic:!0},options:[{name:"-p",description:"Partial application install (install-multiple only)"},...n]},{name:"install-multi-package",description:"Push one or more packages to the device and install them atomically",args:{name:"PACKAGE",template:"filepaths",isVariadic:!0},options:[{name:"-p",description:"Partial application install (install-multiple only)"},...n]},{name:"shell",description:"Run remote shell command (interactive shell if no command given)",options:[{name:"-e",description:"Choose escape character, or `none` default '~'"},{name:"-n",description:"Don't read from stdin"},{name:"-T",description:"Disable pty allocation"},{name:"-t",description:"Allocate a pty if on a tty"},{name:"-tt",description:"-tt: force pty allocation"},{name:"-x",description:"Disable remote exit codes and stdout/stderr separation"}],args:{isOptional:!0,name:"COMMANDS ...",isVariadic:!0}},{name:"mdns",description:"Mdns utils",subcommands:[{name:"check",description:"Check if mdns discovery is available"},{name:"services",description:"List all discovered services"}]},{name:"push",description:"Copy local files/directories to device",options:[{description:"Only push files that are newer on the host than the device",name:"--sync"},{description:"Dry run: push files to device without storing to the filesystem",name:"-n"},...i],args:[{name:"LOCAL",isVariadic:!0,template:"filepaths"},{name:"REMOTE"}]},{name:"sync",description:"Sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)",options:[{description:"Dry run: push files to device without storing to the filesystem",name:"-n"},{description:"List files that would be copied, but don't copy them",name:"-l"},...i],args:{isOptional:!0,suggestions:[{name:"all"},{name:"data"},{name:"odm"},{name:"oem"},{name:"product"},{name:"system"},{name:"system_ext"},{name:"vendor"}]}},{name:"pull",description:"Copy files/dirs from device",options:[{description:"Preserve file timestamp and mode",name:"-a"},...i],args:[{name:"REMOTE",isVariadic:!0,template:"filepaths"},{name:"LOCAL"}]},{name:"forward",description:"Forward connection",options:[{name:"--list",description:"List all forward socket connections"},{name:"--remove",description:"Remove specific forward socket connection",args:{name:"LOCAL"}},{name:"--remove-all",description:"Remove all forward socket connections"},{name:"--no-rebind",description:"Reversal fails if the specified socket is already bound through a previous reverse command"}],args:[{name:"LOCAL -> port|domain|device|pid",suggestions:a},{name:"REMOTE -> port|domain|device|pid",suggestions:a}]},{name:"reverse",description:"Reverse connection",options:[{name:"--list",description:"List all reverse socket connections from device"},{name:"--remove",description:"Remove specific reverse socket connection",args:{name:"REMOTE"}},{name:"--remove-all",description:"Remove all reverse socket connections from device"},{name:"--no-rebind",description:"Reversal fails if the specified socket is already bound through a previous reverse command"}],args:[{name:"REMOTE -> port|domain|device|pid",suggestions:s},{name:"LOCAL -> port|domain|device|pid",suggestions:s}]}],options:[{description:"Listen on all network interfaces, not just localhost",name:"-a"},{description:"Use USB device (error if multiple devices connected)",name:"-d"},{description:"Use TCP/IP device (error if multiple TCP/IP devices available)",name:"-e"},{description:"Use device with given serial (overrides $ANDROID_SERIAL)",name:"-s",args:{name:"SERIAL"}},{description:"Use device with given transport id",name:"-t",args:{name:"ID"}},{description:"Name of adb server host [default=localhost]",name:"-H",args:{name:"host name"}},{description:"Port of adb server [default=5037]",name:"-P",args:{name:"port"}},{description:"Listen on given socket for adb server [default=tcp:localhost:5037]",name:"-L",args:{name:"socket"}}]};t.default=o},3383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.executeCommand=t.executeCommandTimeout=t.cleanOutput=void 0;const i=n(5761),a=n(4539),s=n(1121);t.cleanOutput=e=>e.replace(/\r\n/g,"\n").replace(/\x1b\[\?25h/g,"").replace(/^\n+/,"").replace(/\n+$/,""),t.executeCommandTimeout=async(e,n,o=((0,i.osIsWindows)()?2e4:5e3))=>{const r=[n.command,...n.args].join(" ");try{console.debug(`About to run shell command '${r}'`);const i=await(0,s.withTimeout)(Math.max(o,n.timeout??0),(0,a.spawnHelper2)(n.command,n.args,{env:n.env??e.env,cwd:n.cwd??e.cwd,timeout:n.timeout})),c=(0,t.cleanOutput)(i.stdout),l=(0,t.cleanOutput)(i.stderr);return 0!==i.exitCode&&console.warn(`Command ${r} exited with exit code ${i.exitCode}: ${l}`),{status:i.exitCode,stdout:c,stderr:l}}catch(e){throw console.error(`Error running shell command '${r}'`,{err:e}),e}},t.executeCommand=(e,n)=>(0,t.executeCommandTimeout)(e,n)},3399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultShellTypeResetChars=t.shellTypeResetChars=void 0,t.getTokenType=function(e,n){const i=e.commandLine,a=e.cursorIndex,s=void 0===n?t.defaultShellTypeResetChars:t.shellTypeResetChars.get(n)??t.defaultShellTypeResetChars,o=i.substring(0,a),r=o.lastIndexOf(" ")+1,c=i.substring(0,r);for(const e of s){const t="pwsh"===n?`${e}`:` ${e} `;if(c.endsWith(t))return 0}const l=o.lastIndexOf(" ");if(-1===l)return 0;const d=o.substring(0,l+1).trim();return s.some(e=>d.endsWith(e))?0:1},t.shellTypeResetChars=new Map([["bash",[">",">>","<","2>","2>>","&>","&>>","|","|&","&&","||","&",";","(","{","<<"]],["zsh",[">",">>","<","2>","2>>","&>","&>>","<>","|","|&","&&","||","&",";","(","{","<<","<<<","<("]],["pwsh",[">",">>","<","2>","2>>","*>","*>>","|",";"," -and "," -or "," -not ","!","&"," -eq "," -ne "," -gt "," -lt "," -ge "," -le "," -like "," -notlike "," -match "," -notmatch "," -contains "," -notcontains "," -in "," -notin "]]]),t.defaultShellTypeResetChars=t.shellTypeResetChars.get("bash")},3460:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i={name:"python3",description:"Run the python interpreter",generateSpec:async(e,t)=>{if(0===(await t({command:"bash",args:["-c","cat manage.py | grep -q django"]})).status)return{name:"python3",subcommands:[{name:"manage.py",loadSpec:"django-admin"}]}},args:{name:"python script",isScript:!0,generators:(0,n(2341).filepaths)({extensions:["py"],editFileSuggestions:{priority:76}})},options:[{name:"-c",insertValue:"-c '{cursor}'",description:"Execute the Python code in command. command can be one or more statements separated by newlines, with significant leading whitespace as in normal module code",args:{name:"command",isCommand:!0}},{name:"-m",insertValue:"-m '{cursor}'",description:"Search sys.path for the named module and execute its contents as the __main__ module",args:{name:"command",isCommand:!0}},{name:["-?","-h","--help"],description:"Print a short description of all command line options"},{name:["-V","--version"],description:"Print the Python version number and exit"},{name:"-b",description:"Issue a warning when comparing bytes or bytearray with str or bytes with int. Issue an error when the option is given twice (-bb)"},{name:"-B",description:"If given, Python won’t try to write .pyc files on the import of source modules"},{name:"--check-hash-based-pycs",description:"Control the validation behavior of hash-based .pyc files. See Cached bytecode invalidation",args:{suggestions:[{name:"default"},{name:"always"},{name:"never"}]}},{name:"-d",description:"Turn on parser debugging output (for expert only, depending on compilation options)"},{name:"-E",description:"Ignore all PYTHON* environment variables, e.g. PYTHONPATH and PYTHONHOME, that might be set"},{name:"-i",description:"When a script is passed as first argument or the -c option is used, enter interactive mode after executing the script or the command, even when sys.stdin does not appear to be a terminal"},{name:"-I",description:"Run Python in isolated mode. This also implies -E and -s. In isolated mode sys.path contains neither the script’s directory nor the user’s site-packages directory"},{name:"-O",description:"Remove assert statements and any code conditional on the value of __debug__"},{name:"-OO",description:"Do -O and also discard docstrings"},{name:"-g",description:"Don’t display the copyright and version messages even in interactive mode"},{name:"-R",description:"Turn on hash randomization. This option only has an effect if the PYTHONHASHSEED environment variable is set to 0, since hash randomization is enabled by default"},{name:"-s",description:"Don’t add the user site-packages directory to sys.path"},{name:"-S",description:"Disable the import of the module site and the site-dependent manipulations of sys.path that it entails"},{name:"-u",description:"Force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream"},{name:"-v",description:"Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded"},{name:"-W",description:"Warning control. Python’s warning machinery by default prints warning messages to sys.stderr",args:{}},{name:"-x",description:"Skip the first line of the source, allowing use of non-Unix forms of #!cmd. This is intended for a DOS specific hack only"},{name:"-X",description:"Reserved for various implementation-specific options",args:{suggestions:[{name:"faulthandler"},{name:"showrefcount"},{name:"tracemalloc"},{name:"showalloccount"},{name:"importtime"},{name:"dev"},{name:"utf8"},{name:"pycache_prefix=PATH"}]}}]};t.default=i},3502:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"stat",description:"Display file status",options:[{name:"-F",description:"As in ls(1), display a slash ('/') immediately after each pathname that is a directory, an asterisk ('*') after each that is executable, an at sign ('@') after each symbolic link, a percent sign ('%') after each whiteout, an equal sign ('=') after each socket, and a vertical bar ('|') after each that is a FIFO. The use of -F implies -l"},{name:"-L",description:"Use stat(2) instead of lstat(2). The information reported by stat will refer to the target of file, if file is a symbolic link, and not to file itself. If the link is broken or the target does not exist, fall back on lstat(2) and report information about the link"},{name:"-f",description:"Display information using the specified format; similar to printf(3) formats in that they start with %, are then followed by a sequence of formatting characters, and end in a character that selects the field of the struct stat which is to be formatted",args:{name:"format"},exclusiveOn:["-l","-r","-s","-x"]},{name:"-l",description:"Display output in 'ls -lT' format",exclusiveOn:["-f","-r","-s","-x"]},{name:"-n",description:"Do not force a newline to appear at the end of each piece of output"},{name:"-q",description:"Suppress failure messages if calls to stat(2) or lstat(2) fail. When run as 'readlink', error messages are automatically suppressed"},{name:"-r",description:"Display raw information. That is, for all the fields in the stat structure, display the raw, numerical value (for example, times in seconds since the epoch, etc.)",exclusiveOn:["-f","-l","-s","-x"]},{name:"-s",description:"Display information in 'shell output' format, suitable for initializing variables",exclusiveOn:["-f","-l","-r","-x"]},{name:"-t",description:"Display timestamps using the specified format. This format is passed directly to strftime(3)",args:{name:"timefmt"}},{name:"-x",description:"Display information in a more verbose way as known from some Linux distributions"}],args:{name:"file",description:"File(s) to stat",isVariadic:!0,template:"filepaths"}}},3513:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(2449),a={name:"scp",description:"Copies files or directories between hosts on a network",args:[{name:"sources",description:"File or directory, local or remote ([user@]host:[path])",isVariadic:!0,generators:[i.knownHosts,i.configHosts,{template:["history","filepaths","folders"]}]},{name:"target",description:"File or directory, local or remote ([user@]host:[path])",generators:[i.knownHosts,i.configHosts,{template:["history","filepaths","folders"]}]}],options:[{name:"-3",description:"Copies between two remote hosts are transferred through the local\nhost. Without this option the data is copied directly between the\ntwo remote hosts. Note that this option disables the progress\nmeter and selects batch mode for the second host, since scp cannot\nask for passwords or passphrases for both hosts"},{name:"-4",description:"Forces scp to use IPv4 addresses only"},{name:"-6",description:"Forces scp to use IPv6 addresses only"},{name:"-A",description:"Allows forwarding of ssh-agent(1) to the remote system. The default is not to forward an authentication agent"},{name:"-B",description:"Selects batch mode (prevents asking for passwords or passphrases)"},{name:"-C",description:"Compression enable. Passes the -C flag to ssh(1) to enable compression"},{name:"-c",description:"Selects the cipher to use for encrypting the data transfer. This option is directly passed to ssh(1)",args:{name:"cipher",description:"The selected cipher specification"}},{name:"-F",description:"Specifies an alternative per-user configuration file for ssh. This option is directly passed to ssh(1)",args:{name:"ssh_config",description:"The selected ssh config"}},{name:"-i",description:"Selects the file from which the identity (private key) for public key authentication is read. This option is directly passed to ssh(1)",args:{name:"identity_file",description:"Specified identity file"}},{name:"-J",description:"Connect to the target host by first making an scp connection to the\njump host described by destination and then establishing a TCP\nforwarding to the ultimate destination from there. Multiple jump\nhops may be specified separated by comma characters. This is a\nshortcut to specify a ProxyJump configuration directive. This\noption is directly passed to ssh(1)",args:{name:"destination",description:"Scp destination"}},{name:"-l",description:"Limits the used bandwidth, specified in Kbit/s",args:{name:"limit",description:"Limit bandwidth in Kbit/s"}},{name:"-o",description:"Can be used to pass options to ssh in the format used in\nssh_config(5). This is useful for specifying options for which\nthere is no separate scp command-line flag. For full details of\nthe options listed below, and their possible values, see\nssh_config(5)",args:{name:"option",suggestions:[{name:"AddressFamily"},{name:"BatchMode"},{name:"BindAddress"},{name:"ChallengeResponseAuthentication"},{name:"CheckHostIP"},{name:"Cipher"},{name:"Ciphers"},{name:"ClearAllForwardings"},{name:"Compression"},{name:"CompressionLevel"},{name:"ConnectionAttempts"},{name:"ConnectTimeout"},{name:"ControlMaster"},{name:"ControlPath"},{name:"ControlPersist"},{name:"DynamicForward"},{name:"EscapeChar"},{name:"ExitOnForwardFailure"},{name:"ForwardAgent"},{name:"ForwardX11"},{name:"ForwardX11Timeout"},{name:"ForwardX11Trusted"},{name:"GatewayPorts"},{name:"GlobalKnownHostsFile"},{name:"GSSAPIAuthentication"},{name:"GSSAPIDelegateCredentials"},{name:"HashKnownHosts"},{name:"Host"},{name:"HostbasedAuthentication"},{name:"HostKeyAlgorithms"},{name:"HostKeyAlias"},{name:"HostName"},{name:"IdentityFile"},{name:"IdentitiesOnly"},{name:"IPQoS"},{name:"KbdInteractiveAuthentication"},{name:"KbdInteractiveDevices"},{name:"KexAlgorithms"},{name:"LocalCommand"},{name:"LocalForward"},{name:"LogLevel"},{name:"MACs"},{name:"NoHostAuthenticationForLocalhost"},{name:"NumberOfPasswordPrompts"},{name:"PasswordAuthentication"},{name:"PermitLocalCommand"},{name:"PKCS11Provider"},{name:"Port"},{name:"PreferredAuthentications"},{name:"Protocol"},{name:"ProxyCommand"},{name:"PubkeyAuthentication"},{name:"RekeyLimit"},{name:"RequestTTY"},{name:"RhostsRSAAuthentication"},{name:"RSAAuthentication"},{name:"SendEnv"},{name:"ServerAliveInterval"},{name:"ServerAliveCountMax"},{name:"StrictHostKeyChecking"},{name:"TCPKeepAlive"},{name:"Tunnel"},{name:"TunnelDevice"},{name:"UsePrivilegedPort"},{name:"User"},{name:"UserKnownHostsFile"},{name:"VerifyHostKeyDNS"},{name:"VisualHostKey"},{name:"XAuthLocation"}]}},{name:"-P",description:"Specifies the port to connect to on the remote host. Note that\nthis option is written with a capital ‘P’, because -p is already\nreserved for preserving the times and modes of the file",args:{name:"port"}},{name:"-p",description:"Preserves modification times, access times, and modes from the original file"},{name:"-q",description:"Quiet mode: disables the progress meter as well as warning and diagnostic messages from ssh(1)"},{name:"-r",description:"Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal"},{name:"-S",description:"Name of program to use for the encrypted connection. The program must understand ssh(1) options",args:{name:"program"}},{name:"-T",description:"Disable strict filename checking. By default when copying files\nfrom a remote host to a local directory scp checks that the\nreceived filenames match those requested on the command-line to\nprevent the remote end from sending unexpected or unwanted files.\nBecause of differences in how various operating systems and shells\ninterpret filename wildcards, these checks may cause wanted files\nto be rejected. This option disables these checks at the expense\nof fully trusting that the server will not send unexpected\nfilenames"},{name:"-v",description:"Verbose mode. Causes scp and ssh(1) to print debugging messages about their progress. This is helpful in debugging connection, authentication, and configuration problems"}]};t.default=a},3574:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"xargs",description:"Execute a command with whitespace-delimited strings (from stdin) as arguments",options:[{name:"-0",description:"Use NUL (0x00) as a separator, instead of whitespace"},{name:"-E",description:"Use this string as a logical EOF marker",args:{name:"eof-str",description:"The string to use that marks EOF"}},{name:"-I",description:"Replace occurrences of this string with the input",args:{name:"replacement-str",description:"The string to replace"}},{name:"-J",description:"Replace an argument exactly equal to this string with the input",args:{name:"replacement-str",description:"The string to replace"}},{name:"-L",description:"Run the program each time this many lines of input are read",args:{name:"number"},exclusiveOn:["-n"]},{name:"-n",description:"The maximum number of arguments that can be taken from stdin on each run",args:{name:"number"},exclusiveOn:["-L"]},{name:"-o",description:"Reopen stdin as /dev/tty (useful for running interactive applications)"},{name:"-P",description:"Run up to this many commands in parallel (as many as possible if 0)",args:{name:"max-procs"}},{name:"-p",description:"Prompt to run each command"},{name:"-r",description:"Run the command once if there's no input (compatible with GNU xargs)"},{name:"-R",description:"Specify the maximum number of occurrences that -I will replace",dependsOn:["-I"],args:{name:"number"}},{name:"-S",description:"Specify the maximum size in bytes that -I can use for replacements (default: 255)",dependsOn:["-I"],args:{name:"replacement-size"}},{name:"-s",description:"Maximum number of bytes that can be provided to the program (default: 4096)",args:{name:"max-args-size"}},{name:"-t",description:"Echo the command to stderr before it's executed"},{name:"-x",description:"Terminal if the arguments will not fit in the maximum line length",dependsOn:["-n"]}],args:{name:"utility",description:"Run this program for each line of stdin (default: echo)",isCommand:!0,isOptional:!0}}},3578:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"jq",description:"Command-line JSON processor",options:[{name:"--version",description:"Output the jq version and exit with zero"},{name:"--seq",description:"Use the application/json-seq MIME type scheme for separating JSON texts in jq's input and output"},{name:"--stream",description:"Parse the input in streaming fashion, outputting arrays of path and leaf values"},{name:["--slurp","-s"],description:"Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once"},{name:["--raw-input","-R"],description:"Don't parse the input as JSON. Instead, each line of text is passed to the filter as a string"},{name:["--null-input","-n"],description:"Don't read any input at all! Instead, the filter is run once using null as the input"},{name:["--compact-output","-c"],description:"By default, jq pretty-prints JSON output. Using this option will result in more compact output by instead putting each JSON object on a single line"},{name:"--tab",description:"Use a tab for each indentation level instead of two spaces"},{name:"--indent",description:"Use the given number of spaces for indentation",args:{name:"n",description:"No more than 7"}},{name:["--color-output","-C"],description:"By default, jq outputs colored JSON if writing to a terminal. You can force it to produce color even if writing to a pipe or a file using -C"},{name:["--monochrome-output","-M"],description:"Disable color"},{name:["--ascii-output","-a"],description:"Jq usually outputs non-ASCII Unicode codepoints as UTF-8, even if the input specified them as escape sequences"},{name:"--unbuffered",description:"Flush the output after each JSON object is printed"},{name:["--sort-keys","-S"],description:"Output the fields of each object with the keys in sorted orde"},{name:["--raw-output","-r"],description:"If the filter's result is a string then it will be written directly to standard output rather than being formatted as a JSON string with quotes"},{name:["--join-output","-j"],description:"Like -r but jq won't print a newline after each output"},{name:["-f","--from-file"],description:"Read filter from the file rather than from a command line",args:{name:"filename",template:"filepaths"}},{name:"-L",description:"Prepend directory to the search list for modules",args:{name:"directory",template:"folders"}},{name:["-e","--exit-status"],description:"Sets the exit status of jq to 0 if the last output values was neither false nor null, 1 if the last output value was either false or null, or 4 if no valid result was ever produced"},{name:"--arg",description:"This option passes a value to the jq program as a predefined variable",args:[{name:"name"},{name:"value"}]},{name:"--argjson",description:"This option passes a JSON-encoded value to the jq program as a predefined variable",args:[{name:"name"},{name:"JSON-text"}]},{name:"--slurpfile",description:"This option reads all the JSON texts in the named file and binds an array of the parsed JSON values to the given global variable",args:[{name:"variable name"},{name:"filename",template:"filepaths"}]},{name:"--rawfile",description:"This option reads in the named file and binds its contents to the given global variable",args:[{name:"variable name"},{name:"filename",template:"filepaths"}]},{name:"--args",description:"Remaining arguments are positional string arguments. These are available to the jq program as $ARGS.positional[]"},{name:"--jsonargs",description:"Remaining arguments are positional JSON text arguments. These are available to the jq program as $ARGS.positional[]"},{name:"--run-tests",description:"Runs the tests in the given file or standard input. This must be the last option given and does not honor all preceding options",args:{name:"filename",isOptional:!0,template:"filepaths"}}],args:[{name:"filter",description:"Must be enclosed in single quotes"},{name:"files",template:"filepaths",isOptional:!0,isVariadic:!0}]}},3691:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getScriptSuggestions=async function(e,t,n=5e3,a){const{script:s,postProcess:o,splitOn:r}=e;if(!s)return[];if(!(0,i.haveContextForGenerator)(t))return console.info("Don't have context for custom generator"),[];try{const{isDangerous:c,tokenArray:l,currentWorkingDirectory:d,environmentVariables:m}=t,p=s&&"function"==typeof s?s(l):s;if(!p)return[];let h;h=Array.isArray(p)?{command:p[0],args:p.slice(1),cwd:d,env:m}:{cwd:d,...p};const u=Math.max(n,e.scriptTimeout??0,h.timeout??0),{stdout:f}=await(0,i.runCachedGenerator)(e,t,()=>a.executeCommandTimeout(h,u),e.cache?.cacheKey??JSON.stringify(h));let g=[];return r?g=""===f.trim()?[]:f.trim().split(r):o&&(g=o(f,l),g=g?.filter(e=>e&&("string"==typeof e||!!e.name))),g?.map(e=>"string"==typeof e?{type:"arg",name:e,insertValue:e,isDangerous:c}:{...e,type:e?.type||"arg"})}catch(e){return console.error("we had an error with the script generator",e),[]}};const i=n(3121)},3780:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"env",description:"Set environment and execute command, or print environment",options:[{name:"-0",description:"End each output line with NUL, not newline"},{name:["-i","-"],description:"Start with an empty environment"},{name:"-v",description:"Print verbose logs"},{name:"-u",description:"Remove variable from the environment",args:{name:"name",generators:{custom:async(e,t,n)=>Object.values(n.environmentVariables).map(e=>({name:e,description:"Environment variable",icon:"🌎"}))}}},{name:"-P",description:"Search the given directories for the utility, rather than the PATH",args:{name:"altpath",template:"folders"}},{name:"-S",description:"Split the given string into separate arguments",args:{name:"string"}}],args:[{name:"name=value ...",description:"Set environment variables",isOptional:!0},{name:"utility",description:"Utility to run",isOptional:!0,isCommand:!0}]};t.default=n},3905:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getFriendlyResourcePath=function(e,t,n){let i=e.fsPath;return"\\"===t&&i.match(/^[a-zA-Z]:\\/)&&(i=`${i[0].toUpperCase()}:${i.slice(2)}`),n===r.TerminalCompletionItemKind.Folder&&(i.endsWith(t)||(i+=t)),i};const r=o(n(1398))},3907:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.valueList=function({delimiter:e=",",values:t=[],cache:n=!1,insertDelimiter:i=!1,allowRepeatedValues:a=!1}){return{trigger:(t,n)=>t.lastIndexOf(e)!==n.lastIndexOf(e),getQueryTerm:t=>t.slice(t.lastIndexOf(e)+e.length),custom:async(...o)=>{const r=await s(t,i?e:"",n,o);if(a)return r;const[l]=o,d=l[l.length-1]?.split(e);return c(d,r)}}},t.keyValue=function({separator:e="=",keys:t=[],values:n=[],cache:i=!1,insertSeparator:a=!0}){return{trigger:(t,n)=>t.indexOf(e)!==n.indexOf(e),getQueryTerm:t=>t.slice(t.indexOf(e)+1),custom:async(...r)=>{const[c]=r,l=!c[c.length-1].includes(e),d=l?t:n,m=o(l,i);return s(d,l&&a?e:"",m,r)}}},t.keyValueList=function({separator:e="=",delimiter:t=",",keys:n=[],values:i=[],cache:a=!1,insertSeparator:l=!0,insertDelimiter:d=!1,allowRepeatedKeys:m=!1,allowRepeatedValues:p=!0}){return{trigger:(n,i)=>r(n,e,t)!==r(i,e,t),getQueryTerm:n=>{const i=r(n,e,t);return n.slice(i+1)},custom:async(...h)=>{const[u]=h,f=u[u.length-1],g=r(f,e,t),b=-1===g||f.slice(g,g+e.length)!==e,y=b?n:i,w=o(b,a),v=b?l?e:"":d?t:"",k=await s(y,v,w,h);return b?m?k:c(f.split(t).map(t=>t.slice(0,t.indexOf(e))),k):p?k:c(f.split(t).map(t=>t.slice(t.indexOf(e)+e.length)),k)}}};const n=new Map;function i(e,t){return 0===e.length?t:t.map(t=>t.insertValue?t:{...t,insertValue:t.name+e})}async function a(e,t,n){if("function"==typeof e){const a=await e(...n);return i(t,a?.filter(e=>!!e)??[])}return"string"==typeof e[0]?i(t,e.map(e=>({name:e}))):i(t,e)}async function s(e,t,i,s){if(i||Array.isArray(e)){let i=n.get(e);return void 0===i&&(i=await a(e,t,s),n.set(e,i)),i}return a(e,t,s)}function o(e,t){return"string"==typeof t?e&&"keys"===t||!e&&"values"===t:t}function r(e,...t){return Math.max(...t.map(t=>e.lastIndexOf(t)))}function c(e,t){const n=new Set(e);return t.filter(e=>"string"==typeof e.name?!n.has(e.name):!e.name?.some(e=>n.has(e)))}},3933:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"copilot",description:"GitHub Copilot CLI - An AI-powered coding assistant",options:[{name:"--add-dir",description:"Add a directory to the allowed list for file access (can be used multiple times)",args:{name:"directory",template:"folders"},isRepeatable:!0},{name:"--additional-mcp-config",description:"Additional MCP servers configuration as JSON string or file path (prefix with @)",args:{name:"json",description:"JSON string or file path (prefix with @)"},isRepeatable:!0},{name:"--allow-all-paths",description:"Disable file path verification and allow access to any path"},{name:"--allow-all-tools",description:"Allow all tools to run automatically without confirmation; required for non-interactive mode"},{name:"--allow-tool",description:"Allow specific tools",args:{name:"tools",isVariadic:!0,isOptional:!0}},{name:"--banner",description:"Show the startup banner"},{name:"--continue",description:"Resume the most recent session"},{name:"--deny-tool",description:"Deny specific tools, takes precedence over --allow-tool or --allow-all-tools",args:{name:"tools",isVariadic:!0,isOptional:!0}},{name:"--disable-builtin-mcps",description:"Disable all built-in MCP servers (currently: github-mcp-server)"},{name:"--disable-mcp-server",description:"Disable a specific MCP server (can be used multiple times)",args:{name:"server-name"},isRepeatable:!0},{name:"--disable-parallel-tools-execution",description:"Disable parallel execution of tools (LLM can still make parallel tool calls, but they will be executed sequentially)"},{name:"--disallow-temp-dir",description:"Prevent automatic access to the system temporary directory"},{name:["-h","--help"],description:"Display help for command"},{name:"--log-dir",description:"Set log file directory (default: ~/.copilot/logs/)",args:{name:"directory",template:"folders"}},{name:"--log-level",description:"Set the log level",args:{name:"level",suggestions:["none","error","warning","info","debug","all","default"]}},{name:"--model",description:"Set the AI model to use",args:{name:"model",suggestions:["claude-sonnet-4.5","claude-sonnet-4","claude-haiku-4.5","gpt-5"]}},{name:"--no-color",description:"Disable all color output"},{name:"--no-custom-instructions",description:"Disable loading of custom instructions from AGENTS.md and related files"},{name:["-p","--prompt"],description:"Execute a prompt directly without interactive mode",args:{name:"text",description:"The prompt text to execute"}},{name:"--resume",description:"Resume from a previous session (optionally specify session ID)",args:{name:"sessionId",isOptional:!0}},{name:"--screen-reader",description:"Enable screen reader optimizations"},{name:"--stream",description:"Enable or disable streaming mode",args:{name:"mode",suggestions:["on","off"]}},{name:["-v","--version"],description:"Show version information"}],subcommands:[{name:"help",description:"Display help information",args:{name:"topic",isOptional:!0,suggestions:["config","commands","environment","logging","permissions"]}}]}},4018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initializeDefault=void 0,t.convertLoadSpec=s;const i=n(1609),a=n(5095);function s(e,t){return"string"==typeof e?[{name:e,type:a.SpecLocationSource.GLOBAL}]:"function"==typeof e?(...n)=>e(...n).then(e=>Array.isArray(e)?e:"type"in e?[e]:(0,i.convertSubcommand)(e,t)):(0,i.convertSubcommand)(e,t)}function o(e){return e}function r(e){const{template:t,...n}=e,i=t?[{template:t}]:(0,a.makeArray)(e.generators??[]);return{...n,loadSpec:e.loadSpec?s(e.loadSpec,{option:o,subcommand:c,arg:r}):void 0,generators:i.map(e=>{let{trigger:t,getQueryTerm:n}=e;if(e.template){const i=(0,a.makeArray)(e.template);(i.includes("folders")||i.includes("filepaths"))&&(t=t??"/",n=n??"/")}return{...e,trigger:t,getQueryTerm:n}})}}function c(e){return{...e,loadSpec:e.loadSpec?s(e.loadSpec,{subcommand:c,option:o,arg:r}):void 0}}t.initializeDefault={subcommand:c,option:o,arg:r}},4058:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"uniq",description:"Report or omit repeated line",options:[{name:["-c","--count"],description:"Prefix lines by the number of occurrences"},{name:["-d","--repeated"],description:"Only print duplicate lines"},{name:["-D","--all-repeated"],description:"Print all duplicate lines. Delimiting is done with blank lines",args:{name:"delimit-method",default:"none",isOptional:!0,suggestions:["none","prepend","separate"]}},{name:["-f","--skip-fields"],description:"Avoid comparing the first N fields",args:{name:"number"}},{name:["-i","--ignore-case"],description:"Ignore differences in case when comparing"},{name:["-s","--skip-chars"],description:"Avoid comparing the first N characters",args:{name:"number"}},{name:["-u","--unique"],description:"Only print unique lines"},{name:["-z","--zero-terminated"],description:"End lines with 0 byte, not newline"},{name:["-w","--check-chars"],description:"Compare no more than N characters in lines",args:{name:"number"}},{name:"--help",description:"Display this help and exit"},{name:"--version",description:"Output version information and exit"}],args:[{name:"input",isOptional:!0,template:["filepaths","folders"]},{name:"output",isOptional:!0}]}},4163:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"label",isOptional:!0},i={name:"text"},a={name:"filename",template:"filepaths"},s={name:"sed",description:"Stream editor",subcommands:[{name:"a",description:"Appends `text` after a line",args:i},{name:"b",description:"Branch unconditionally to `label`",args:n},{name:"c",description:"Replace (change) lines with `text`",args:i},{name:"d",description:"Delete the pattern space; immediately start next cycle"},{name:"D",description:"If pattern space contains newlines, delete text in the pattern space up to the first newline, and restart cycle with the resultant pattern space, without reading a new line of input. If pattern space contains no newline, start a normal new cycle as if the d command was issued"},{name:"e",description:"Executes the command that is found in pattern space and replaces the pattern space with the output; a trailing newline is suppressed",args:{name:"command",isCommand:!0,isOptional:!0}},{name:"F",description:"Prints the file name of the current input file"},{name:"g",description:"Replaces the contents of the pattern space with the contents of the hold space"},{name:"G",description:"Appends a newline to the contents of the pattern space, and then appends the contents of the hold space to that of the pattern space"},{name:"h",description:"Replaces the contents of the hold space with the contents of the pattern space"},{name:"H",description:"Appends a newline to the contents of the hold space, and then appends the contents of the pattern space to that of the hold space"},{name:"i",description:"Insert text before a line",args:i},{name:"l",description:"Prints the pattern space in an unambiguous form"},{name:"n",description:"Prints the pattern space, then, regardless, replaces the pattern space with the next line of input. If there is no more input then sed exits without processing any more commands"},{name:"N",description:"Adds a newline to the pattern space, then appends the next line of input to the pattern space. If there is no more input then sed exits without processing any more commands"},{name:"p",description:"Prints the pattern space"},{name:"P",description:"Prints the pattern space up to the first newline"},{name:"q",description:"Exit sed without processing any more commands or input",args:{name:"Exit Code",isOptional:!0}},{name:"Q",description:"This command is the same as q, but will not print the contents of pattern space",args:{name:"Exit Code",isOptional:!0}},{name:"r",description:"Reads file",args:a},{name:"R",description:"Queue a line of filename to be read and inserted into the output stream at the end of the current cycle, or when the next input line is read",args:a},{name:["s","regexp","replacement"],description:"Match the regular-expression against the content of the pattern space. If found, replace matched string with replacement"},{name:"t",description:"(test) Branch to label only if there has been a successful substitution since the last input line was read or conditional branch was taken. The label may be omitted, in which case the next cycle is started",args:n},{name:"T",description:"(test) Branch to label only if there have been no successful substitutions since the last input line was read or conditional branch was taken. The label may be omitted, in which case the next cycle is started",args:n},{name:"v",description:"Makes sed fail if GNU sed extensions are not supported, or if the requested version is not available",args:{name:"version",isOptional:!0}},{name:"w",description:"Writes the pattern space to the file",args:a},{name:"W",description:"Writes to the given filename the portion of the pattern space up to the first newline",args:a},{name:"x",description:"Exchanges the contents of the hold and pattern spaces"},{name:["y","src","dst"],description:"Transliterate any characters in the pattern space which match any of the source-chars with the corresponding character in dest-chars"},{name:"z",description:"(zap) Empties the content of pattern space"},{name:"#",description:"Comment until the next newline"}],options:[{name:"-E",description:"Interprets regular expressions as extended (modern) regular expressions rather than basic regular expressions"},{name:"-a",description:"Causes sed to delay opening each file until a command containing the related ``w'' function is applied to a line of input"},{name:"-e",description:"Appends the editing commands specified by the command argument to the list of commands",args:{name:"command"}},{name:"-f",description:"Appends the editing commands found in the file command_file to the list of commands. The editing commands should each be listed on a separate line",args:{name:"command_file",template:"filepaths"}},{name:"-I",description:"Edits files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved",args:{name:"extension"}},{name:"-i",description:"Edits files in-place similarly to `-I`, but treats each file independently from other files. In particular, line numbers in each file start at 1, the ``$'' address matches the last line of the current file, and address ranges are limited to the current file",args:{name:"extension"}},{name:"-l",description:"Makes output line buffered"},{name:"-n",description:"By default, each line of input is echoed to the standard output after all of the commands have been applied to it. The `-n` option suppresses this behavior"},{name:"-r",description:"Same as `-E` for compatibility with GNU sed"},{name:"-u",description:"Makes output unbuffered"}],args:[{name:"command"},{name:"file",template:"filepaths",isVariadic:!0,isOptional:!0}]};t.default=s},4180:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"vim",description:"Vi IMproved, a programmer's text editor",args:{template:"filepaths"},options:[{name:"-v",description:"Vi mode (like 'vi')"},{name:"-e",description:"Ex mode (like 'ex')"},{name:"-E",description:"Improved Ex mode"},{name:"-s",description:"Enable silent mode (when in ex mode), or Read Normal mode commands from file",args:{name:"scriptin",template:"filepaths",isOptional:!0}},{name:"-d",description:"Diff mode (like 'vimdiff')"},{name:"-y",description:"Easy mode (like 'evim', modeless)"},{name:"-R",description:"Readonly mode (like 'view')"},{name:"-Z",description:"Restricted mode (like 'rvim')"},{name:"-m",description:"Modifications (writing files) not allowed"},{name:"-M",description:"Modifications in text not allowed"},{name:"-b",description:"Binary mode"},{name:"-l",description:"Lisp mode"},{name:"-C",description:"Compatible with Vi: 'compatible'"},{name:"-N",description:"Not fully Vi compatible: 'nocompatible'"},{name:"-V",description:"Be verbose [level N] [log messages to fname]",args:[{name:"N"},{name:"fname",template:"filepaths"}]},{name:"-D",description:"Debugging mode"},{name:"-n",description:"No swap file, use memory only"},{name:"-r",description:"Recover crashed session if filename is specified, otherwise list swap files and exit",args:{name:"filename",isOptional:!0,template:"filepaths"}},{name:"-L",description:"Same as -r",args:{name:"filename",template:"filepaths"}},{name:"-T",description:"Set terminal type to <terminal>",args:{name:"terminal"}},{name:"--not-a-term",description:"Skip warning for input/output not being a terminal"},{name:"--ttyfail",description:"Exit if input or output is not a terminal"},{name:"-u",description:"Use <vimrc> instead of any .vimrc",args:{name:"vimrc",template:"filepaths"}},{name:"--noplugin",description:"Don't load plugin scripts"},{name:"-p",description:"Open N tab pages (default: one for each file)",args:{name:"N",isOptional:!0}},{name:"-o",description:"Open N windows (default: one for each file)",args:{name:"N",isOptional:!0}},{name:"-O",description:"Like -o but split vertically",args:{name:"N",isOptional:!0}},{name:"+",description:"Start at end of file, if line number is specified, start at that line",args:{name:"lnum",isOptional:!0}},{name:"--cmd",description:"Execute <command> before loading any vimrc file",args:{name:"command",isCommand:!0}},{name:"-c",description:"Execute <command> after loading the first file",args:{name:"command"}},{name:"-S",description:"Source file <session> after loading the first file",args:{name:"session",template:"filepaths"}},{name:"-w",description:"Append all typed commands to file <scriptout>",args:{name:"scriptout",template:"filepaths"}},{name:"-W",description:"Write all typed commands to file <scriptout>",args:{name:"scriptout",template:"filepaths"}},{name:"-x",description:"Edit encrypted files"},{name:"--startuptime",description:"Write startup timing messages to <file>",args:{name:"file",template:"filepaths"}},{name:"-i",description:"Use <viminfo> instead of .viminfo",args:{name:"viminfo",template:"filepaths"}},{name:"--clean",description:"'nocompatible', Vim defaults, no plugins, no viminfo"},{name:["-h","--help"],description:"Print Help message and exit"},{name:"--version",description:"Print version information and exit"}]}},4228:(e,t)=>{"use strict";function n(e){const t=e.indexOf(".app/");return-1===t?"fig://icon?type=gear":"fig://"+e.slice(0,t+4)}Object.defineProperty(t,"__esModule",{value:!0});const i={name:"kill",description:"Terminate or signal a process",args:{name:"pid",isVariadic:!0,generators:{script:["bash","-c","ps axo pid,comm | sed 1d"],postProcess:e=>e.split("\n").map(e=>{const[t,i]=e.trim().split(/\s+/),a=i.slice(i.lastIndexOf("/")+1);return{name:t,description:i,displayName:`${t} (${a})`,icon:n(i)}})}},options:[{name:"-s",description:"A symbolic signal name specifying the signal to be sent",args:{name:"signal_name",generators:{script:["env","kill","-l"],postProcess:e=>e.match(/\w+/g)?.map(e=>({name:e,description:`Send ${e} instead of TERM`,icon:"fig://icon?type=string"}))}}},{name:"-l",description:"If no operand is given, list the signal names; otherwise, write the signal name corresponding to exit_status",args:{name:"exit_status",isOptional:!0}}]};t.default=i},4248:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"diff",description:"Compare files line by line",args:{name:"file",isVariadic:!0,template:"filepaths"},options:[{name:["-i","--ignore-case"],description:"Ignore case differences in file contents"},{name:"--ignore-file-name-case",description:"Ignore case when comparing file names",exclusiveOn:["--no-ignore-file-name-case"]},{name:"--no-ignore-file-name-case",description:"Consider case when comparing file names",exclusiveOn:["--ignore-file-name-case"]},{name:["-E","--ignore-tab-expansion"],description:"Ignore changes due to tab expansion"},{name:["-b","--ignore-space-change"],description:"Ignore changes in the amount of white space"},{name:["-w","--ignore-all-space"],description:"Ignore all white space"},{name:["-B","--ignore-blank-lines"],description:"Ignore changes whose lines are all blank"},{name:["-I","--ignore-matching-lines"],description:"Ignore changes whose lines all match RE",args:{name:"RE"}},{name:"--strip-trailing-cr",description:"Strip trailing carriage return on input"},{name:["-a","--text"],description:"Treat all files as text"},{name:["-c","-C","--context"],description:"Output NUM lines of copied context",args:{name:"NUM",default:"3"}},{name:["-u","-U","--unified"],description:"Output NUM lines of unified context",args:{name:"NUM",default:"3"}},{name:"--label",description:"Use LABEL instead of file name",args:{name:"LABEL"}},{name:["-p","--show-c-function"],description:"Show which C function each change is in"},{name:["-F","--show-function-line"],description:"Show the most recent line matching RE",args:{name:"RE"}},{name:["-q","--brief"],description:"Output only whether files differ"},{name:["-e","--ed"],description:"Output an ed script"},{name:"--normal",description:"Output a normal diff"},{name:["-n","--rcs"],description:"Output an RCS format diff"},{name:["-y","--side-by-side"],description:"Output in two columns"},{name:["-W","--width"],description:"Output at most NUM (default 130) print columns",args:{name:"NUM"}},{name:"--left-column",description:"Output only the left column of common lines"},{name:"--suppress-common-lines",description:"Do not output common lines"},{name:["-D","--ifdef"],description:"Output merged file to show `#ifdef NAME' diffs",args:{name:"NAME"}},{name:["-l","--paginate"],description:"Pass the output through `pr' to paginate it"},{name:["-t","--expand-tabs"],description:"Expand tabs to spaces in output"},{name:["-T","--initial-tab"],description:"Make tabs line up by prepending a tab"},{name:["-r","--recursive"],description:"Recursively compare any subdirectories found"},{name:["-N","--new-file"],description:"Treat absent files as empty"},{name:"--unidirectional-new-file",description:"Treat absent first files as empty"},{name:["-s","--report-identical-files"],description:"Report when two files are the same"},{name:["-x","--exclude"],description:"Exclude files that match PAT",args:{name:"PAT"}},{name:["-X","--exclude-from"],description:"Exclude files that match any pattern in FILE",args:{name:"FILE",template:"filepaths"}},{name:["-S","--starting-file"],description:"Start with FILE when comparing directories",args:{name:"FILE",template:"filepaths"}},{name:"--from-file",description:"Compare FILE1 to all operands. FILE1 can be a directory",args:{name:"FILE1",template:["filepaths","folders"]}},{name:"--to-file",description:"Compare all operands to FILE2. FILE2 can be a directory",args:{name:"FILE2",template:["filepaths","folders"]}},{name:"--horizon-lines",description:"Keep NUM lines of the common prefix and suffix",args:{name:"NUM"}},{name:["-d","--minimal"],description:"Try hard to find a smaller set of changes"},{name:"--speed-large-files",description:"Assume large files and many scattered small changes"},{name:["-v","--version"],description:"Output version info"},{name:"--help",description:"Show help"},...(i=["old","new","unchanged","changed"],i.map(e=>({name:`--${e}-group-format`,description:`Similar, but format ${e} input groups with GFTM`,args:{name:"GFTM",description:"%< lines from FILE1\n%> lines from FILE2\n%= lines common to FILE1 and FILE2\n%[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\nLETTERs are as follows for new group, lower case for old group:\nF first line number\nL last line number\nN number of lines = L-F+1\nE F-1\nM L+1\n%% %\n%c'C' the single character C\n%c'OOO' the character with octal code OOO"}}))),{name:"--line-format",description:"Format all input lines with LFMT",args:{name:"LFTM"}},...["old","new","unchanged"].map(e=>({name:`--${e}-line-format`,description:`Format ${e} input lines with LFTM`,args:{name:"LFTM",description:"%L contents of line\n%l contents of line, excluding any trailing newline\n%[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number\n%% %\n%c'C' the single character C\n%c'OOO' the character with octal code OOO"}}))]};var i;t.default=n},4327:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"rmdir",description:"Remove directories",args:{isVariadic:!0,template:"folders"},options:[{name:"-p",description:"Remove each directory of path",isDangerous:!0}]}},4482:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SpecLocationSource=t.makeArray=t.mergeSubcommands=t.applyMixin=t.initializeDefault=t.convertLoadSpec=t.convertSubcommand=t.revertSubcommand=void 0;const i=n(2682);Object.defineProperty(t,"revertSubcommand",{enumerable:!0,get:function(){return i.revertSubcommand}});const a=n(1609);Object.defineProperty(t,"convertSubcommand",{enumerable:!0,get:function(){return a.convertSubcommand}});const s=n(4018);Object.defineProperty(t,"convertLoadSpec",{enumerable:!0,get:function(){return s.convertLoadSpec}}),Object.defineProperty(t,"initializeDefault",{enumerable:!0,get:function(){return s.initializeDefault}});const o=n(4650);Object.defineProperty(t,"applyMixin",{enumerable:!0,get:function(){return o.applyMixin}}),Object.defineProperty(t,"mergeSubcommands",{enumerable:!0,get:function(){return o.mergeSubcommands}});const r=n(5095);Object.defineProperty(t,"SpecLocationSource",{enumerable:!0,get:function(){return r.SpecLocationSource}}),Object.defineProperty(t,"makeArray",{enumerable:!0,get:function(){return r.makeArray}})},4534:(e,t,n)=>{var i={"./adb":3374,"./adb.ts":3374,"./apt":28,"./apt.ts":28,"./basename":5941,"./basename.ts":5941,"./brew":8507,"./brew.ts":8507,"./bundle":2315,"./bundle.ts":2315,"./cat":6519,"./cat.ts":6519,"./chmod":6190,"./chmod.ts":6190,"./chown":6074,"./chown.ts":6074,"./clear":6730,"./clear.ts":6730,"./cp":8024,"./cp.ts":8024,"./curl":6733,"./curl.ts":6733,"./cut":8595,"./cut.ts":8595,"./date":5879,"./date.ts":5879,"./dd":6323,"./dd.ts":6323,"./df":3173,"./df.ts":3173,"./diff":4248,"./diff.ts":4248,"./dig":1107,"./dig.ts":1107,"./dirname":6355,"./dirname.ts":6355,"./docker":1991,"./docker-compose":70,"./docker-compose.ts":70,"./docker.ts":1991,"./dotnet":1525,"./dotnet.ts":1525,"./du":628,"./du.ts":628,"./echo":8386,"./echo.ts":8386,"./env":3780,"./env.ts":3780,"./export":1577,"./export.ts":1577,"./fdisk":1616,"./fdisk.ts":1616,"./find":5220,"./find.ts":5220,"./fmt":1380,"./fmt.ts":1380,"./fold":6912,"./fold.ts":6912,"./go":6969,"./go.ts":6969,"./grep":6707,"./grep.ts":6707,"./head":6709,"./head.ts":6709,"./htop":8920,"./htop.ts":8920,"./id":1822,"./id.ts":1822,"./jq":3578,"./jq.ts":3578,"./kill":4228,"./kill.ts":4228,"./killall":1636,"./killall.ts":1636,"./less":9578,"./less.ts":9578,"./ln":1765,"./ln.ts":1765,"./ls":346,"./ls.ts":346,"./lsblk":1963,"./lsblk.ts":1963,"./lsof":4591,"./lsof.ts":4591,"./mkdir":3016,"./mkdir.ts":3016,"./more":8490,"./more.ts":8490,"./mount":5554,"./mount.ts":5554,"./mv":4640,"./mv.ts":4640,"./nano":1485,"./nano.ts":1485,"./nl":785,"./nl.ts":785,"./node":1375,"./node.ts":1375,"./npm":5234,"./npm.ts":5234,"./nvm":1056,"./nvm.ts":1056,"./od":5160,"./od.ts":5160,"./paste":2500,"./paste.ts":2500,"./ping":8955,"./ping.ts":8955,"./pkill":7755,"./pkill.ts":7755,"./pnpm":8110,"./pnpm.ts":8110,"./ps":3150,"./ps.ts":3150,"./pwd":5860,"./pwd.ts":5860,"./python":7421,"./python.ts":7421,"./python3":3460,"./python3.ts":3460,"./readlink":4979,"./readlink.ts":4979,"./rm":6950,"./rm.ts":6950,"./rmdir":4327,"./rmdir.ts":4327,"./rsync":9210,"./rsync.ts":9210,"./ruby":5883,"./ruby.ts":5883,"./ruff":7062,"./ruff.ts":7062,"./scp":3513,"./scp.ts":3513,"./sed":4163,"./sed.ts":4163,"./seq":1848,"./seq.ts":1848,"./shred":2441,"./shred.ts":2441,"./sort":5507,"./sort.ts":5507,"./source":8990,"./source.ts":8990,"./split":1219,"./split.ts":1219,"./ssh":2449,"./ssh.ts":2449,"./stat":3502,"./stat.ts":3502,"./su":7939,"./su.ts":7939,"./sudo":7110,"./sudo.ts":7110,"./tac":8223,"./tac.ts":8223,"./tail":9197,"./tail.ts":9197,"./tar":2816,"./tar.ts":2816,"./tee":457,"./tee.ts":457,"./time":1970,"./time.ts":1970,"./top":1012,"./top.ts":1012,"./touch":5476,"./touch.ts":5476,"./tr":1033,"./tr.ts":1033,"./traceroute":8045,"./traceroute.ts":8045,"./tree":6479,"./tree.ts":6479,"./truncate":8697,"./truncate.ts":8697,"./uname":1799,"./uname.ts":1799,"./uniq":4058,"./uniq.ts":4058,"./unzip":2945,"./unzip.ts":2945,"./vim":4180,"./vim.ts":4180,"./wc":9661,"./wc.ts":9661,"./wget":8632,"./wget.ts":8632,"./where":4632,"./where.ts":4632,"./whereis":2488,"./whereis.ts":2488,"./which":8934,"./which.ts":8934,"./who":4783,"./who.ts":4783,"./xargs":3574,"./xargs.ts":3574,"./xxd":7171,"./xxd.ts":7171,"./yarn":2961,"./yarn.ts":2961,"./yo":1371,"./yo.ts":1371,"./zip":5416,"./zip.ts":5416};function a(e){var t=s(e);return n(t)}function s(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}a.keys=function(){return Object.keys(i)},a.resolve=s,e.exports=a,a.id=4534},4539:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.spawnHelper=l,t.spawnHelper2=async function(e,t,n){return new Promise((i,a)=>{const s=[],o=[],r=(0,c.spawn)(e,t,n);r.stdout.on("data",e=>s.push(e)),r.stderr.on("data",e=>o.push(e)),r.on("error",e=>a(e)),r.on("close",e=>{i({stdout:s.join(""),stderr:o.join(""),exitCode:e??-1})})})},t.execHelper=async function(e,t){return new Promise((n,i)=>{(0,c.exec)(e,t,(e,t)=>{e?i(e):n(t)})})},t.getAliasesHelper=async function(e,t,n,i){const a=await l(e,t,i),s=[];for(const e of a.split("\n")){const t=e.match(n);if(!t?.groups)continue;let i="",a=t.groups.resolved.indexOf(" ");-1===a&&(a=t.groups.resolved.length),i=t.groups.resolved.substring(0,a),s.push({label:{label:t.groups.alias,description:t.groups.resolved},detail:t.groups.resolved,kind:r.TerminalCompletionItemKind.Alias,definitionCommand:i})}return s};const r=o(n(1398)),c=n(1421);async function l(e,t,n){return new Promise((i,a)=>{const s=(0,c.spawn)(e,t,n);let o="";s.stdout.on("data",e=>{o+=e}),s.on("close",e=>{0!==e?a(new Error(`process exited with code ${e}`)):i(o)})})}},4591:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"lsof",description:"List open files",args:{name:"names",description:"Select named files or files on named file systems",template:["folders"],isVariadic:!0,isOptional:!0},options:[{name:["-?","-h","--help"],description:"Help"},{name:"-a",description:"Apply AND to the selections (defaults to OR)"},{name:"-b",description:"Avoid kernel blocks"},{name:"-c",description:"Select the listing of files for processes executing a command",args:{name:"string or regexp (optional ending with /i /b /x)"}},{name:"+c",description:"COMMAND width (9)",args:{name:"number"}},{name:"+d",description:"Search for all open instances/files/directories of directory",args:{name:"file",template:["folders"]}},{name:"-d",description:"Specify a list of file descriptors (FDs) to exclude from or include in the output listing",args:{name:"File descriptor number"}},{name:"+D",description:"Search tree for all open instances/files/directories of directory. *SLOW?*",args:{name:"file",template:["folders"]}},{name:"+f",description:"Enable path name arguments to be interpreted",args:{isOptional:!0,name:"flags",suggestions:[{name:"c",description:"File structure use count"},{name:"g",description:"File flag abbreviations"},{name:"G",description:"File flags in hexadecimal"}]}},{name:"-f",description:"Inhibit path name arguments to be interpreted",args:{name:"flags",suggestions:[{name:"c",description:"File structure use count"},{name:"g",description:"File flag abbreviations"},{name:"G",description:"File flags in hexadecimal"}]}},{name:"-F",description:"Select fields to output",args:{name:"options",isVariadic:!0,suggestions:[{name:"a",description:"Access: r = read; w = write; u = read/write"},{name:"c",description:"Command name"},{name:"C",description:"File struct share count"},{name:"d",description:"Device character code"},{name:"D",description:"Major/minor device number as 0x<hex>"},{name:"f",description:"File descriptor (always selected)"},{name:"G",description:"File flaGs"},{name:"i",description:"Inode number"},{name:"k",description:"Link count"},{name:"K",description:"Task ID (TID)"},{name:"l",description:"Lock: r/R = read; w/W = write; u = read/write"},{name:"L",description:"Login name"},{name:"m",description:"Marker between repeated output"},{name:"M",description:"Task comMand name"},{name:"n",description:"Comment, name, Internet addresses"},{name:"o",description:"File offset as 0t<dec> or 0x<hex>"},{name:"p",description:"Process ID (PID)"},{name:"g",description:"Process group ID (PGID)"},{name:"P",description:"Protocol name"},{name:"r",description:"Raw device number as 0x<hex>"},{name:"R",description:"PaRent PID"},{name:"s",description:"File size"},{name:"S",description:"Stream module and device names"},{name:"t",description:"File type"},{name:"T",description:"TCP/TPI info"},{name:"u",description:"User ID (UID)"},{name:"0",description:"(zero) use NUL field terminator instead of N"}]}},{name:"-F?",description:"Show fields for -F"},{name:"-g",description:"Exclude or select by process group IDs (PGID)",args:{name:"PGID",description:"Process Group ID (comma separated)"}},{name:"-i",description:"Selects files by [46][protocol][@hostname|hostaddr][:service|port]",args:{name:"options",generators:[{script:["echo"],postProcess:function(){return["4","6"].map(e=>({name:e}))}},{script:["echo"],postProcess:function(e,t){const n=t[1].match(/^(-i[46])/)||t[2]&&t[2].match(/^[46]/),i=n&&n.length>0?n[1]:"";return["tcp","udp","TCP","UDP"].map(e=>({name:i+e}))}},{script:["ifconfig"],postProcess:function(e,t){const n=e.split("\n").filter(e=>e.match(/inet\b/)).map(e=>e.split(" ")[1]);let i="@";t[1].match("@[^:]*$")?i=t[1]:t[2]&&t[2].match("@[^:]*$")&&(i=t[2]);const a=i.split("@")[0]+"@";return n.map(e=>({name:a+e}))},trigger:"@"},{script:["echo"],postProcess:function(e,t){let n=":";t[1].match(":[^:]*")?n=t[1]:t[2]&&t[2].match(":[^:]+")&&(n=t[2]);const i=n.split(":")[0]+":";return["http","https","who","time"].map(e=>({name:i+e}))},trigger:":"}]}},{name:"-l",description:"Inhibit conversion of user IDs to login names"},{name:"+L",description:"Enable listing of file link counts",args:{isOptional:!0,name:"number"}},{name:"-L",description:"Disable listing of file link counts",args:{isOptional:!0,name:"number"}},{name:"+M",description:"Enable portMap registration"},{name:"-M",description:"Disable portMap registration"},{name:"-n",description:"No host names"},{name:"-N",description:"Select NFS files"},{name:"-o",description:"List file offset"},{name:"-O",description:"No overhead *RISKY*"},{name:"-p",description:"Exclude or select process identification numbers (PIDs)",args:{name:"PIDs",description:"PIDs to select or exclude ( with ^)"}},{name:"-P",description:"No port names"},{name:"+r",description:"Repeat every t seconds (15) until no files",args:{name:"time (seconds)",description:"Time per repeat"}},{name:"-r",description:"Repeat every t seconds (15) forever",args:{name:"time (seconds)",description:"Time per repeat"}},{name:"-R",description:"List parent PID"},{name:"-s",description:"List file size or exclude/select protocol",args:{isOptional:!0,name:"protocol:state"}},{name:"-S",description:"Stat timeout in seconds (lstat/readlink/stat)",args:{isOptional:!0,name:"timeout (seconds)"}},{name:"-T",description:"Disable TCP/TPI info",args:{name:"info",suggestions:[{name:"f",description:"Selects reporting of socket options/states/values and tcp flag values"},{name:"q",description:"Selects queue length reporting"},{name:"s",description:"Selects connection state reporting"},{name:"w",description:"Selects window size reporting"},{name:"",description:"Disables info"}]}},{name:"-t",description:"Specify terse listing"},{name:"-u",description:"Exclude/select login|UID set",args:{name:"UIDs"}},{name:"-U",description:"Select Unix socket"},{name:"-v",description:"List version info"},{name:"-V",description:"Verbose search"},{name:"+w",description:"Enable warnings"},{name:"-w",description:"Disable warnings"},{name:"-x",description:"Cross over +d|+D File systems or symbolic links",args:{name:"cross-over option",suggestions:[{name:"f",description:"File system mount point cross-over processing"},{name:"l",description:"Symbolic link cross-over processing"}]}},{name:"-X",description:"File descriptor table only"}]}},4632:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"where",description:"For each name, indicate how it should be interpreted",args:{name:"names",isVariadic:!0},options:[{name:"-w",description:"For each name, print 'name: word', where 'word' is the kind of command"},{name:"-p",description:"Do a path search for the name, even if it's an alias/function/builtin"},{name:"-m",description:"The arguments are taken as patterns (pattern characters must be quoted)"},{name:"-s",description:"If the pathname contains symlinks, print the symlink-free name as well"},{name:"-S",description:"Print intermediate symlinks and the resolved name"},{name:"-x",description:"Expand tabs when outputting shell function",args:{name:"num"}}]}},4640:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"mv",description:"Move & rename files and folders",args:[{name:"source",isVariadic:!0,template:["filepaths","folders"]},{name:"target",template:["filepaths","folders"]}],options:[{name:"-f",description:"Do not prompt for confirmation before overwriting the destination path",exclusiveOn:["-i","-n"]},{name:"-i",description:"Cause mv to write a prompt to standard error before moving a file that would overwrite an existing file",exclusiveOn:["-f","-n"]},{name:"-n",description:"Do not overwrite existing file",exclusiveOn:["-f","-i"]},{name:"-v",description:"Cause mv to be verbose, showing files after they are moved"}]}},4650:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.applyMixin=void 0,t.mergeSubcommands=p;const i=n(5095),a=(e,t)=>e&&t?[...e,...t]:e||t,s=(e,t)=>[...new Set(a((0,i.makeArray)(e),(0,i.makeArray)(t)))],o=(e,t)=>e&&t?[...new Set(a((0,i.makeArray)(e),(0,i.makeArray)(t)))]:e||t,r=(e,t)=>({...e,...t,suggestions:a(e.suggestions,t.suggestions),generators:e.generators&&t.generators?a((0,i.makeArray)(e.generators),(0,i.makeArray)(t.generators)):e.generators||t.generators,template:e.template&&t.template?s(e.template,t.template):e.template||t.template}),c=(e,t)=>{if(!e||!t)return e||t;const n=(0,i.makeArray)(e),a=(0,i.makeArray)(t),s=[];for(let e=0;e<Math.max(n.length,a.length);e+=1){const t=n[e],i=a[e];void 0!==t&&void 0!==i?s.push(r(t,i)):void 0===i&&void 0===t||s.push(t||i)}return 1===s.length?s[0]:s},l=(e,t)=>({...e,...t,name:s(e.name,t.name),args:c(e.args,t.args),exclusiveOn:o(e.exclusiveOn,t.exclusiveOn),dependsOn:o(e.dependsOn,t.dependsOn)}),d=(e,t,n)=>{if(!e||!t)return e||t;const a=e?[...e]:[],s={};for(let t=0;t<e.length;t+=1)(0,i.makeArray)(e[t].name).forEach(e=>{s[e]=t});for(let e=0;e<t.length;e+=1){const o=t[e];if(!o)throw new Error("Invalid object passed to merge");const r=(0,i.makeArray)(o.name).filter(e=>e in s);if(0===r.length)a.push(o);else{const e=s[r[0]];if(r.some(t=>s[t]!==e))throw new Error("Names provided for option matched multiple existing options");a[e]=n(a[e],o)}}return a};function m(e,t){return d(e,t,l)}function p(e,t){return{...e,...t,name:s(e.name,t.name),args:c(e.args,t.args),additionalSuggestions:a(e.additionalSuggestions,t.additionalSuggestions),subcommands:(n=e.subcommands,i=t.subcommands,d(n,i,p)),options:m(e.options,t.options),parserDirectives:e.parserDirectives&&t.parserDirectives?{...e.parserDirectives,...t.parserDirectives}:e.parserDirectives||t.parserDirectives};var n,i}t.applyMixin=(e,t,n)=>"function"==typeof n?n(e,t):p(e,n)},4712:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.upstreamSpecs=void 0,t.upstreamSpecs=["basename","cat","chmod","chown","clear","cp","curl","cut","date","dd","df","diff","dig","dirname","du","echo","env","export","fdisk","find","fmt","fold","grep","head","htop","id","jq","kill","killall","less","ln","ls","lsblk","lsof","mkdir","more","mount","mv","nl","od","paste","ping","pkill","ps","pwd","readlink","rm","rmdir","rsync","scp","sed","seq","shred","sort","source","split","stat","su","sudo","tac","tail","tar","tee","time","top","touch","tr","traceroute","tree","truncate","uname","uniq","unzip","wc","wget","where","whereis","which","who","xargs","xxd","zip","apt","brew","nano","vim","ssh","adb","docker","docker-compose","dotnet","go","node","npm","nvm","pnpm","yarn","yo","python","python3","ruff","bundle","ruby"]},4783:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"who",description:"Display who is logged in",parserDirectives:{optionsMustPrecedeArguments:!0},subcommands:[{name:"am",description:"Returns the invoker's real user name",additionalSuggestions:[{name:"am I",insertValue:"I{cursor}",icon:"fig://icon?type=command"}],priority:40}],options:[{name:"-a",description:"Same as -bdlprTtu"},{name:"-b",description:"Time of last system boot"},{name:"-d",description:"Print dead processes"},{name:"-H",description:"Write column headings above the regular output"},{name:"-l",description:"Print system login processes (unsupported)"},{name:"-m",description:"Only print information about the current terminal"},{name:"-p",description:"Print active processes spawned by launchd(8) (unsupported)"},{name:"-q",description:"'Quick mode': List only names and number of users currently logged on",exclusiveOn:["-a","-b","-d","-H","-l","-m","-p","-r","-s","-T","-t","-u"]},{name:"-r",description:"Print the current runlevel"},{name:"-s",description:"List only the name, line and time fields (this is the default)"},{name:"-T",description:"Print a character after the user name indicating the state of the terminal line: '+' writable, '-' not writable, '?' bad"},{name:"-t",description:"Print last system clock change (unsupported)"},{name:"-u",description:"Print the idle time for each user and the associated process ID"}],args:{name:"file",description:"By default, who gathers information from the file /var/run/utmpx; an alternative file may be specified",isOptional:!0,template:"filepaths"}}},4829:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createErrorInstance=void 0,t.createErrorInstance=e=>class extends Error{constructor(t){super(t),this.name=`Fig.${e}`}}},4979:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"readlink",description:"Display file status",options:[{name:"-f",description:"Display information using the specified format; similar to printf(3) formats in that they start with %, are then followed by a sequence of formatting characters, and end in a character that selects the field of the struct stat which is to be formatted",args:{name:"format"}},{name:"-n",description:"Do not force a newline to appear at the end of each piece of output"}],args:{name:"file",description:"File(s) to readlink",isVariadic:!0,template:"filepaths"}}},5095:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SpecLocationSource=void 0,t.makeArray=function(e){return Array.isArray(e)?e:[e]},function(e){e.GLOBAL="global",e.LOCAL="local"}(n||(t.SpecLocationSource=n={}))},5160:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"od",description:"Octal, decimal, hex, ASCII dump",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"-A",description:"Specify the input address base. The argument base may be\none of d, o, x or n, which specify decimal, octal,\nhexadecimal addresses or no address, respectively",args:{name:"base",suggestions:["d","o","x","n"],default:"d"}},{name:"-a",description:"Output named characters. Equivalent to -t a"},{name:["-B","-o"],description:"Output octal shorts. Equivalent to -t o2"},{name:"-b",description:"Output octal bytes. Equivalent to -t o1"},{name:"-c",description:"Output C-style escaped characters. Equivalent to -t c"},{name:"-D",description:"Output unsigned decimal ints. Equivalent to -t u4"},{name:"-d",description:"Output unsigned decimal shorts. Equivalent to -t u2"},{name:["-e","-F"],description:"Output double-precision floating point numbers. Equivalent to -t fD"},{name:"-f",description:"Output single-precision floating point numbers. Equivalent to -t fF"},{name:["-H","-X"],description:"Output hexadecimal ints. Equivalent to -t x4"},{name:["-h","-x"],description:"Output hexadecimal shorts. Equivalent to -t x2"},{name:["-I","-L","-l"],description:"Output signed decimal longs. Equivalent to -t dL"},{name:"-i",description:"Output signed decimal ints. Equivalent to -t dI"},{name:"-j",description:"Skip skip bytes of the combined input before dumping. The\nnumber may be followed by one of b, k, m or g which\nspecify the units of the number as blocks (512 bytes),\nkilobytes, megabytes and gigabytes, respectively",args:{name:"skip"}},{name:"-N",description:"Dump at most length bytes of input",args:{name:"length"}},{name:"-O",description:"Output octal ints. Equivalent to -t o4"},{name:"-s",description:"Output signed decimal shorts. Equivalent to -t d2"},{name:"-t",description:"Specify the output format. The type argument is a string\ncontaining one or more of the following kinds of type specificers: a,\nc, [d|o|u|x][C|S|I|L|n], or f[F|D|L|n]. See the man page for meanings",args:{name:"type",suggestions:["a","c","dC","dS","dI","dL","dn","oC","oS","oI","oL","on","uC","uS","uI","uL","un","xC","xS","xI","xL","xn","fF","fD","fL","fn"]}},{name:"-v",description:"Write all input data, instead of replacing lines of duplicate values with a '*'"}],args:[{name:"[+]offset[.][Bb]",description:"Offset",suggestions:["+0b"],default:"+0b",isOptional:!0},{name:"file",description:"File name",template:"filepaths",isOptional:!0,isVariadic:!0}]}},5189:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"Set-Location",description:"Change the shell working directory",args:{name:"folder",template:"folders",suggestions:[{name:"-",description:"Go to previous directory in history stack",hidden:!0},{name:"+",description:"Go to next directory in history stack",hidden:!0}]}}},5220:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"find",description:"Walk a file hierarchy",args:[{name:"path",isOptional:!0,isVariadic:!0,template:["folders"]},{name:"expression",description:"Composition of primaries and operands",isOptional:!0,isVariadic:!0}],options:[{name:"-E",description:"Interpret regular expressions followed by -regex and -iregex primaries as extended"},{name:"-H",description:"Cause the file information and file type returned for each symbolic link specified to be those referenced by the link",exclusiveOn:["-L","-P"]},{name:"-L",description:"Cause the file information and file type returned for each symbolic link to be those of the file referenced by the link",exclusiveOn:["-H","-P"]},{name:"-P",description:"Cause the file information and file type returned for each symbolic link to be those for the link itself",exclusiveOn:["-H","-L"]},{name:"-X",description:"Permit find to be safely used in conjunction with xargs"},{name:"-d",description:"Cause find to perform a depth-first traversal"},{name:"-f",description:"Specify a file hierarch for find to traverse",args:{name:"path"}},{name:"-s",description:"Cause find to traverse the file hierarchies in lexicographical order"},{name:"-x",description:"Prevent find from descending into directories that have a device number different than that of the file from which the descent began"}]}},5234:(e,t)=>{"use strict";function n(e){return{name:e,description:"Uninstall a package",args:{name:"package",generators:t.dependenciesGenerator,filterStrategy:"fuzzy",isVariadic:!0},options:m}}Object.defineProperty(t,"__esModule",{value:!0}),t.npmScriptsGenerator=t.dependenciesGenerator=t.npmSearchGenerator=t.createNpmSearchHandler=void 0;const i=e=>(e.match(/@/g)||[]).length;t.createNpmSearchHandler=e=>async(t,n,a)=>{const s=t[t.length-1];if(""===s)return[];const o=e&&e.length>0?`+keywords:${e.join(",")}`:"",r=["-s","-H","Accept: application/json",o?`https://api.npms.io/v2/search?size=20&q=${s}${o}`:`https://api.npms.io/v2/search/suggestions?q=${s}&size=20`],c=["-s","-H","Accept: application/vnd.npm.install-v1+json",`https://registry.npmjs.org/${s.slice(0,-1)}`],l=s.startsWith("@")?i(s)>1:s.includes("@");try{const e=JSON.parse((await(d=s,n({command:"curl",args:"@"===d[d.length-1]?c:r}))).stdout);if(l){const t=Object.entries(e["dist-tags"]||{}).map(([e,t])=>({name:e,description:t}));return t.push(...Object.keys(e.versions).map(e=>({name:e})).reverse()),t}return(o?e.results:e).map(e=>({name:e.package.name,description:e.package.description}))}catch(e){return console.error({error:e}),[]}var d},t.npmSearchGenerator={trigger:(e,t)=>t.startsWith("@")?!(i(t)>1&&i(e)>1):!(t.includes("@")&&e.includes("@")),getQueryTerm:"@",cache:{ttl:1728e5},custom:(0,t.createNpmSearchHandler)()};const a={custom:async(e,t)=>{const{stdout:n}=await t({command:"npm",args:["prefix"]}),{stdout:i}=await t({command:"cat",args:[`${n}/package.json`]}),a=[];try{if(""==i.trim())return a;const e=JSON.parse(i).workspaces;if(e)for(const t of e)a.push({name:t,description:"Workspaces"})}catch(e){console.log(e)}return a}};t.dependenciesGenerator={trigger:e=>"-g"===e||"--global"===e,custom:async function(e,t){if(e.includes("-g")||e.includes("--global")){const{stdout:e}=await t({command:"bash",args:["-c","ls -1 `npm root -g`"]});return e.split("\n").map(e=>({name:e,icon:"📦",description:"Global dependency"}))}{const{stdout:n}=await t({command:"npm",args:["prefix"]}),{stdout:i}=await t({command:"cat",args:[`${n}/package.json`]}),a=JSON.parse(i),s=a.dependencies??{},o=a.devDependencies,r=a.optionalDependencies??{};return Object.assign(s,o,r),Object.keys(s).filter(t=>!e.some(e=>e===t)).map(e=>({name:e,icon:"📦",description:s[e]?"dependency":r[e]?"optionalDependency":"devDependency"}))}}},t.npmScriptsGenerator={cache:{strategy:"stale-while-revalidate",cacheByDirectory:!0},script:["bash","-c","until [[ -f package.json ]] || [[ $PWD = '/' ]]; do cd ..; done; cat package.json"],postProcess:function(e,[t]){if(""==e.trim())return[];try{const n=JSON.parse(e),i=n.scripts,a=n.fig||{};if(i)return Object.entries(i).map(([e,n])=>({name:e,icon:"yarn"===t?"fig://icon?type=yarn":"fig://icon?type=npm",description:n,priority:51,...a[e]}))}catch(e){console.error(e)}return[]}};const s={name:["-g","--global"],description:"Operates in 'global' mode, so that packages are installed into the prefix folder instead of the current working directory"},o={name:"--json",description:"Show output in json format"},r={name:"--omit",description:"Dependency types to omit from the installation tree on disk",args:{name:"Package type",default:"dev",suggestions:["dev","optional","peer"]},isRepeatable:3},c={name:["-p","--parseable"],description:"Output parseable results from commands that write to standard output"},l={name:["-l","--long"],description:"Show extended information"},d=[{name:["-w","--workspace"],description:"Enable running a command in the context of the configured workspaces of the current project",args:{name:"workspace",generators:a,isVariadic:!0}},{name:["-ws","--workspaces"],description:"Enable running a command in the context of all the configured workspaces"}],m=[{name:["-S","--save"],description:"Package will be removed from your dependencies"},{name:["-D","--save-dev"],description:"Package will appear in your `devDependencies`"},{name:["-O","--save-optional"],description:"Package will appear in your `optionalDependencies`"},{name:"--no-save",description:"Prevents saving to `dependencies`"},{name:"-g",description:"Uninstall global package"},...d],p=[{name:["-a","-all"],description:"Show all outdated or installed packages"},o,l,c,{name:"--depth",description:"The depth to go when recursing packages",args:{name:"depth"}},{name:"--link",description:"Limits output to only those packages that are linked"},{name:"--package-lock-only",description:"Current operation will only use the package-lock.json, ignoring node_modules"},{name:"--no-unicode",description:"Uses unicode characters in the tree output"},s,r,...d],h={name:"--registry",description:"The base URL of the npm registry",args:{name:"registry"}},u={name:"--verbose",description:"Show extra information",args:{name:"verbose"}},f={name:"--otp",description:"One-time password from a two-factor authenticator",args:{name:"otp"}},g={name:"--ignore-scripts",description:"If true, npm does not run scripts specified in package.json files"},b={name:"--script-shell",description:"The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands",args:{name:"script-shell"}},y={name:"--dry-run",description:"Indicates that you don't want npm to make any changes and that it should only report what it would have done"},w={name:"npm",parserDirectives:{flagsArePosixNoncompliant:!0},description:"Node package manager",subcommands:[{name:["install","i","add"],description:"Install a package and its dependencies",args:{name:"package",isOptional:!0,generators:t.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[{name:["-P","--save-prod"],description:"Package will appear in your `dependencies`. This is the default unless `-D` or `-O` are present"},{name:["-D","--save-dev"],description:"Package will appear in your `devDependencies`"},{name:["-O","--save-optional"],description:"Package will appear in your `optionalDependencies`"},{name:"--no-save",description:"Prevents saving to `dependencies`"},{name:["-E","--save-exact"],description:"Saved dependencies will be configured with an exact version rather than using npm's default semver range operator"},{name:["-B","--save-bundle"],description:"Saved dependencies will also be added to your bundleDependencies list"},s,{name:"--global-style",description:"Causes npm to install the package into your local node_modules folder with the same layout it uses with the global node_modules folder"},{name:"--legacy-bundling",description:"Causes npm to install the package such that versions of npm prior to 1.4, such as the one included with node 0.8, can install the package"},{name:"--legacy-peer-deps",description:"Bypass peerDependency auto-installation. Emulate install behavior of NPM v4 through v6"},{name:"--strict-peer-deps",description:"If set to true, and --legacy-peer-deps is not set, then any conflicting peerDependencies will be treated as an install failure"},{name:"--no-package-lock",description:"Ignores package-lock.json files when installing"},h,u,r,g,{name:"--no-audit",description:"Submit audit reports alongside the current npm command to the default registry and all registries configured for scopes"},{name:"--no-bin-links",description:"Tells npm to not create symlinks (or .cmd shims on Windows) for package executables"},{name:"--no-fund",description:"Hides the message at the end of each npm install acknowledging the number of dependencies looking for funding"},y,...d]},{name:["run","run-script"],description:"Run arbitrary package scripts",options:[...d,{name:"--if-present",description:"Npm will not exit with an error code when run-script is invoked for a script that isn't defined in the scripts section of package.json"},{name:"--silent",description:""},g,b,{name:"--",args:{name:"args",isVariadic:!0}}],args:{name:"script",description:"Script to run from your package.json",filterStrategy:"fuzzy",generators:t.npmScriptsGenerator}},{name:"init",description:"Trigger the initialization",options:[{name:["-y","--yes"],description:"Automatically answer 'yes' to any prompts that npm might print on the command line"},{name:"-w",description:"Create the folders and boilerplate expected while also adding a reference to your project workspaces property",args:{name:"dir"}}]},{name:"access",description:"Set access controls on private packages"},{name:["adduser","login"],description:"Add a registry user account",options:[h,{name:"--scope",description:"Associate an operation with a scope for a scoped registry",args:{name:"scope",description:"Scope name"}}]},{name:"audit",description:"Run a security audit",subcommands:[{name:"fix",description:"If the fix argument is provided, then remediations will be applied to the package tree",options:[y,{name:["-f","--force"],description:"Removes various protections against unfortunate side effects, common mistakes, unnecessary performance degradation, and malicious input",isDangerous:!0},...d]}],options:[...d,{name:"--audit-level",description:"The minimum level of vulnerability for npm audit to exit with a non-zero exit code",args:{name:"audit",suggestions:["info","low","moderate","high","critical","none"]}},{name:"--package-lock-only",description:"Current operation will only use the package-lock.json, ignoring node_modules"},o,r]},{name:"bin",description:"Print the folder where npm will install executables",options:[s]},{name:["bugs","issues"],description:"Report bugs for a package in a web browser",args:{name:"package",isOptional:!0,generators:t.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[{name:"--no-browser",description:"Display in command line instead of browser",exclusiveOn:["--browser"]},{name:"--browser",description:"The browser that is called by the npm bugs command to open websites",args:{name:"browser"},exclusiveOn:["--no-browser"]},h]},{name:"cache",description:"Manipulates packages cache",subcommands:[{name:"add",description:"Add the specified packages to the local cache"},{name:"clean",description:"Delete all data out of the cache folder"},{name:"verify",description:"Verify the contents of the cache folder, garbage collecting any unneeded data, and verifying the integrity of the cache index and all cached data"}],options:[{name:"--cache",args:{name:"cache"},description:"The location of npm's cache directory"}]},{name:["ci","clean-install","install-clean"],description:"Install a project with a clean slate",options:[{name:"--audit",description:'When "true" submit audit reports alongside the current npm command to the default registry and all registries configured for scopes',args:{name:"audit",suggestions:["true","false"]},exclusiveOn:["--no-audit"]},{name:"--no-audit",description:"Do not submit audit reports alongside the current npm command",exclusiveOn:["--audit"]},g,b,u,h]},{name:"cit",description:"Install a project with a clean slate and run tests"},{name:"clean-install-test",description:"Install a project with a clean slate and run tests"},{name:"completion",description:"Tab completion for npm"},{name:["config","c"],description:"Manage the npm configuration files",subcommands:[{name:"set",description:"Sets the config key to the value",args:[{name:"key"},{name:"value"}],options:[{name:["-g","--global"],description:"Sets it globally"}]},{name:"get",description:"Echo the config value to stdout",args:{name:"key"}},{name:"list",description:"Show all the config settings",options:[{name:"-g",description:"Lists globally installed packages"},{name:"-l",description:"Also shows defaults"},o]},{name:"delete",description:"Deletes the key from all configuration files",args:{name:"key"}},{name:"edit",description:"Opens the config file in an editor",options:[{name:"--global",description:"Edits the global config"}]}]},{name:"create",description:"Create a package.json file"},{name:["dedupe","ddp"],description:"Reduce duplication in the package tree"},{name:"deprecate",description:"Deprecate a version of a package",options:[h]},{name:"dist-tag",description:"Modify package distribution tags"},{name:["docs","home"],description:"Open documentation for a package in a web browser",args:{name:"package",isOptional:!0,generators:t.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[...d,h,{name:"--no-browser",description:"Display in command line instead of browser",exclusiveOn:["--browser"]},{name:"--browser",description:"The browser that is called by the npm docs command to open websites",args:{name:"browser"},exclusiveOn:["--no-browser"]}]},{name:"doctor",description:"Check your npm environment",options:[h]},{name:"edit",description:"Edit an installed package",options:[{name:"--editor",description:"The command to run for npm edit or npm config edit"}]},{name:"explore",description:"Browse an installed package",args:{name:"package",filterStrategy:"fuzzy",generators:t.dependenciesGenerator}},{name:"fund",description:"Retrieve funding information"},{name:"get",description:"Echo the config value to stdout"},{name:"help",description:"Get help on npm",args:{name:"term",isVariadic:!0,description:"Terms to search for"},options:[{name:"--viewer",description:"The program to use to view help content",args:{name:"viewer"}}]},{name:"help-search",description:"Search npm help documentation",args:{name:"text",description:"Text to search for"},options:[l]},{name:"hook",description:"Manage registry hooks"},{name:"install-ci-test",description:"Install a project with a clean slate and run tests"},{name:"install-test",description:"Install package(s) and run tests"},{name:"it",description:"Install package(s) and run tests"},{name:"link",description:"Symlink a package folder",args:{name:"path",template:"filepaths"}},{name:"ln",description:"Symlink a package folder"},{name:"logout",description:"Log out of the registry",options:[h,{name:"--scope",description:"Associate an operation with a scope for a scoped registry",args:{name:"scope",description:"Scope name"}}]},{name:["ls","list"],description:"List installed packages",options:p,args:{name:"[@scope]/pkg",isVariadic:!0}},{name:"org",description:"Manage orgs",subcommands:[{name:"set",description:"Add a user to an org or manage roles",args:[{name:"orgname",description:"Organization name"},{name:"username",description:"User name"},{name:"role",isOptional:!0,suggestions:["developer","admin","owner"]}],options:[h,f]},{name:"rm",description:"Remove a user from an org",args:[{name:"orgname",description:"Organization name"},{name:"username",description:"User name"}],options:[h,f]},{name:"ls",description:"List users in an org or see what roles a particular user has in an org",args:[{name:"orgname",description:"Organization name"},{name:"username",description:"User name",isOptional:!0}],options:[h,f,o,c]}]},{name:"outdated",description:"Check for outdated packages",args:{name:"[<@scope>/]<pkg>",isVariadic:!0,isOptional:!0},options:[{name:["-a","-all"],description:"Show all outdated or installed packages"},o,l,c,{name:"-g",description:"Checks globally"},...d]},{name:["owner","author"],description:"Manage package owners",subcommands:[{name:"ls",description:"List all the users who have access to modify a package and push new versions. Handy when you need to know who to bug for help",args:{name:"[@scope/]pkg"},options:[h]},{name:"add",description:"Add a new user as a maintainer of a package. This user is enabled to modify metadata, publish new versions, and add other owners",args:[{name:"user"},{name:"[@scope/]pkg"}],options:[h,f]},{name:"rm",description:"Remove a user from the package owner list. This immediately revokes their privileges",args:[{name:"user"},{name:"[@scope/]pkg"}],options:[h,f]}]},{name:"pack",description:"Create a tarball from a package",args:{name:"[<@scope>/]<pkg>"},options:[o,y,...d,{name:"--pack-destination",description:"Directory in which npm pack will save tarballs",args:{name:"pack-destination",template:["folders"]}}]},{name:"ping",description:"Ping npm registry",options:[h]},{name:"pkg",description:"Manages your package.json",subcommands:[{name:"get",description:"Retrieves a value key, defined in your package.json file. It is possible to get multiple values and values for child fields",args:{name:"field",description:"Name of the field to get. You can view child fields by separating them with a period",isVariadic:!0},options:[o,...d]},{name:"set",description:"Sets a value in your package.json based on the field value. It is possible to set multiple values and values for child fields",args:{name:"field",description:"Name of the field to set. You can set child fields by separating them with a period",isVariadic:!0},options:[o,...d,{name:["-f","--force"],description:"Removes various protections against unfortunate side effects, common mistakes, unnecessary performance degradation, and malicious input. Allow clobbering existing values in npm pkg",isDangerous:!0}]},{name:"delete",description:"Deletes a key from your package.json",args:{name:"key",description:"Name of the key to delete. You can delete child fields by separating them with a period",isVariadic:!0},options:[...d,{name:["-f","--force"],description:"Removes various protections against unfortunate side effects, common mistakes, unnecessary performance degradation, and malicious input. Allow clobbering existing values in npm pkg",isDangerous:!0}]}]},{name:"prefix",description:"Display prefix",options:[{name:["-g","--global"],description:"Print the global prefix to standard out"}]},{name:"profile",description:"Change settings on your registry profile",subcommands:[{name:"get",description:"Display all of the properties of your profile, or one or more specific properties",args:{name:"property",isOptional:!0,description:"Property name"},options:[h,o,c,f]},{name:"set",description:"Set the value of a profile property",args:[{name:"property",description:"Property name",suggestions:["email","fullname","homepage","freenode","twitter","github"]},{name:"value",description:"Property value"}],options:[h,o,c,f],subcommands:[{name:"password",description:"Change your password. This is interactive, you'll be prompted for your current password and a new password"}]},{name:"enable-2fa",description:"Enables two-factor authentication",args:{name:"mode",description:"Mode for two-factor authentication. Defaults to auth-and-writes mode",isOptional:!0,suggestions:[{name:"auth-only",description:"Require an OTP when logging in or making changes to your account's authentication"},{name:"auth-and-writes",description:"Requires an OTP at all the times auth-only does, and also requires one when publishing a module, setting the latest dist-tag, or changing access via npm access and npm owner"}]},options:[h,f]},{name:"disable-2fa",description:"Disables two-factor authentication",options:[h,f]}]},{name:"prune",description:"Remove extraneous packages",args:{name:"[<@scope>/]<pkg>",isOptional:!0},options:[r,y,o,{name:"--production",description:"Remove the packages specified in your devDependencies"},...d]},{name:"publish",description:"Publish a package",args:{name:"tarball|folder",isOptional:!0,description:"A url or file path to a gzipped tar archive containing a single folder with a package.json file inside | A folder containing a package.json file",template:["folders"]},options:[{name:"--tag",description:"Registers the published package with the given tag",args:{name:"tag"}},...d,{name:"--access",description:"Sets scoped package to be publicly viewable if set to 'public'",args:{default:"restricted",suggestions:["restricted","public"]}},y,f]},{name:["rebuild","rb"],description:"Rebuild a package",args:{name:"[<@scope>/]<pkg>[@<version>]"},options:[s,...d,g,{name:"--no-bin-links",description:"Tells npm to not create symlinks (or .cmd shims on Windows) for package executables"}]},{name:"repo",description:"Open package repository page in the browser",args:{name:"package",isOptional:!0,generators:t.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[...d,{name:"--no-browser",description:"Display in command line instead of browser",exclusiveOn:["--browser"]},{name:"--browser",description:"The browser that is called by the npm repo command to open websites",args:{name:"browser"},exclusiveOn:["--no-browser"]}]},{name:"restart",description:"Restart a package",options:[g,b,{name:"--",args:{name:"arg",description:"Arguments to be passed to the restart script"}}]},{name:"root",description:"Display npm root",options:[{name:["-g","--global"],description:"Print the effective global node_modules folder to standard out"}]},{name:["search","s","se","find"],description:"Search for packages",args:{name:"search terms",isVariadic:!0},options:[l,o,{name:"--color",description:"Show colors",args:{name:"always",suggestions:["always"],description:"Always show colors"},exclusiveOn:["--no-color"]},{name:"--no-color",description:"Do not show colors",exclusiveOn:["--color"]},c,{name:"--no-description",description:"Do not show descriptions"},{name:"--searchopts",description:"Space-separated options that are always passed to search",args:{name:"searchopts"}},{name:"--searchexclude",description:"Space-separated options that limit the results from search",args:{name:"searchexclude"}},h,{name:"--prefer-online",description:"If true, staleness checks for cached data will be forced, making the CLI look for updates immediately even for fresh package data",exclusiveOn:["--prefer-offline","--offline"]},{name:"--prefer-offline",description:"If true, staleness checks for cached data will be bypassed, but missing data will be requested from the server",exclusiveOn:["--prefer-online","--offline"]},{name:"--offline",description:"Force offline mode: no network requests will be done during install",exclusiveOn:["--prefer-online","--prefer-offline"]}]},{name:"set",description:"Sets the config key to the value"},{name:"set-script",description:"Set tasks in the scripts section of package.json",args:[{name:"script",description:"Name of the task to be added to the scripts section of package.json"},{name:"command",description:"Command to run when script is called"}],options:d},{name:"shrinkwrap",description:"Lock down dependency versions for publication"},{name:"star",description:"Mark your favorite packages",args:{name:"pkg",description:"Package to mark as favorite"},options:[h,{name:"--no-unicode",description:"Do not use unicode characters in the tree output"}]},{name:"stars",description:"View packages marked as favorites",args:{name:"user",isOptional:!0,description:"View packages marked as favorites by <user>"},options:[h]},{name:"start",description:"Start a package",options:[g,b,{name:"--",args:{name:"arg",description:"Arguments to be passed to the start script"}}]},{name:"stop",description:"Stop a package",options:[g,b,{name:"--",args:{name:"arg",description:"Arguments to be passed to the stop script"}}]},{name:"team",description:"Manage organization teams and team memberships",subcommands:[{name:"create",args:{name:"scope:team"},options:[h,f]},{name:"destroy",args:{name:"scope:team"},options:[h,f]},{name:"add",args:[{name:"scope:team"},{name:"user"}],options:[h,f]},{name:"rm",args:[{name:"scope:team"},{name:"user"}],options:[h,f]},{name:"ls",args:{name:"scope|scope:team"},options:[h,o,c]}]},{name:["test","tst","t"],description:"Test a package",options:[g,b]},{name:"token",description:"Manage your authentication tokens",subcommands:[{name:"list",description:"Shows a table of all active authentication tokens",options:[o,c]},{name:"create",description:"Create a new authentication token",options:[{name:"--read-only",description:"This is used to mark a token as unable to publish when configuring limited access tokens with the npm token create command"},{name:"--cidr",description:"This is a list of CIDR address to be used when configuring limited access tokens with the npm token create command",isRepeatable:!0,args:{name:"cidr"}}]},{name:"revoke",description:"Immediately removes an authentication token from the registry. You will no longer be able to use it",args:{name:"idtoken"}}],options:[h,f]},n("uninstall"),n(["r","rm"]),n("un"),n("remove"),n("unlink"),{name:"unpublish",description:"Remove a package from the registry",args:{name:"[<@scope>/]<pkg>[@<version>]"},options:[y,{name:["-f","--force"],description:"Allow unpublishing all versions of a published package. Removes various protections against unfortunate side effects, common mistakes, unnecessary performance degradation, and malicious input",isDangerous:!0},...d]},{name:"unstar",description:"Remove an item from your favorite packages",args:{name:"pkg",description:"Package to unmark as favorite"},options:[h,f,{name:"--no-unicode",description:"Do not use unicode characters in the tree output"}]},{name:["update","upgrade","up"],description:"Update a package",options:[{name:"-g",description:"Update global package"},{name:"--global-style",description:"Causes npm to install the package into your local node_modules folder with the same layout it uses with the global node_modules folder"},{name:"--legacy-bundling",description:"Causes npm to install the package such that versions of npm prior to 1.4, such as the one included with node 0.8, can install the package"},{name:"--strict-peer-deps",description:"If set to true, and --legacy-peer-deps is not set, then any conflicting peerDependencies will be treated as an install failure"},{name:"--no-package-lock",description:"Ignores package-lock.json files when installing"},r,g,{name:"--no-audit",description:"Submit audit reports alongside the current npm command to the default registry and all registries configured for scopes"},{name:"--no-bin-links",description:"Tells npm to not create symlinks (or .cmd shims on Windows) for package executables"},{name:"--no-fund",description:"Hides the message at the end of each npm install acknowledging the number of dependencies looking for funding"},{name:"--save",description:"Update the semver values of direct dependencies in your project package.json"},y,...d]},{name:"version",description:"Bump a package version",options:[...d,o,{name:"--allow-same-version",description:"Prevents throwing an error when npm version is used to set the new version to the same value as the current version"},{name:"--no-commit-hooks",description:"Do not run git commit hooks when using the npm version command"},{name:"--no-git-tag-version",description:"Do not tag the commit when using the npm version command"},{name:"--preid",description:'The "prerelease identifier" to use as a prefix for the "prerelease" part of a semver. Like the rc in 1.2.0-rc.8',args:{name:"prerelease-id"}},{name:"--sign-git-tag",description:"If set to true, then the npm version command will tag the version using -s to add a signature"}]},{name:["view","v","info","show"],description:"View registry info",options:[...d,o]},{name:"whoami",description:"Display npm username",options:[h]}]};t.default=w},5317:e=>{"use strict";e.exports=require("child_process")},5318:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createTimeoutPromise=function(e,t){return new Promise(n=>setTimeout(()=>n(t),e))}},5416:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"zip",description:"Package and compress (archive) files into zip file",args:[{name:"name",description:"Name of archive"},{name:"dir",template:"folders"}],options:[{name:"-r",description:"Package and compress a directory and its contents, recursively"},{name:"-e"},{name:"-s",args:{name:"split size"}},{name:"-d",args:{name:"file",template:"filepaths"}},{name:"-9",description:"Archive a directory and its contents with the highest level [9] of compression"}]}},5476:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"touch",description:"Change file access and modification times",args:{name:"file",isVariadic:!0,template:"folders",suggestCurrentToken:!0},options:[{name:"-A",description:"Adjust the access and modification time stamps for the file by the specified value",args:{name:"time",description:"[-][[hh]mm]SS"}},{name:"-a",description:"Change the access time of the file"},{name:"-c",description:"Do not create the file if it does not exist"},{name:"-f",description:"Attempt to force the update, even if the file permissions do not currently permit it"},{name:"-h",description:"If the file is a symbolic link, change the times of the link itself rather than the file that the link points to"},{name:"-m",description:"Change the modification time of the file"},{name:"-r",description:"Use the access and modifications times from the specified file instead of the current time of day",args:{name:"file"}},{name:"-t",description:"Change the access and modification times to the specified time instead of the current time of day",args:{name:"timestamp",description:"[[CC]YY]MMDDhhmm[.SS]"}}]}},5507:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"sort",description:"Sort or merge records (lines) of text and binary files",args:{name:"file",isVariadic:!0,template:"filepaths"},options:[{name:"--help",description:"Shows help message"},{name:"--version",description:"Displays the current version of sort"},{name:["-c","--check","-C"],args:{name:"output",isOptional:!0,suggestions:["silent","quiet"],description:"Suppress errors on false check"},description:"Check that the single input file is sorted"},{name:["-m","--merge"],description:"Merge only. The input files are assumed to be pre-sorted. If they are not sorted the output order is undefined"},{name:["-o","--output"],description:"Print the output to the output file instead of the standard output",args:{name:"output"}},{name:["-S","--buffer-size"],description:"Use size for the maximum size of the memory buffer",args:{name:"size"}},{name:["-T","--temporary-directory"],description:"Store temporary files in the directory dir",args:{name:"dir",template:"folders"}},{name:["-u","--unique"],description:"Unique keys. Suppress all lines that have a key that is equal to an already processed one"},{name:"-s",description:"Stable sort. This option maintains the original record order of records that have an equal key"},{name:["-b","--ignore-leading-blanks"],description:"Ignore leading blank characters when comparing lines"},{name:["-d","--dictionary-order"],description:"Consider only blank spaces and alphanumeric characters in comparisons"},{name:["-f","--ignore-case"],description:"Convert all lowercase characters to their upper case equivalent before comparison"},{name:["-g","--general-numeric-sort"],description:"Sort by general numerical value"},{name:["-h","--human-numeric-sort"],description:"Sort by numerical value, but take into account the SI suffix, if present"},{name:["-i","--ignore-nonprinting"],description:"Ignore all non-printable characters"},{name:["-M","--month-sort"],description:"Sort by month abbreviations. Unknown strings are considered smaller than the month names"},{name:["-n","--numeric-sort"],description:"Sort fields numerically by arithmetic value"},{name:["-R","--random-sort"],description:"Sort by a random order"},{name:["-r","--reverse"],description:"Sort in reverse order"},{name:["-V","--version-sort"],description:"Sort version numbers"},{name:["-k","--key"],args:[{name:"field1"},{name:"field2",isOptional:!0}],description:"Define a restricted sort key that has the starting position field1, and optional ending position field2"},{name:["-t","--field-separator"],args:{name:"char"},description:"Use char as a field separator character"},{name:["-z","--zero-terminated"],description:"Use NUL as record separator"},{name:"--batch-size",args:{name:"num"},description:"Specify maximum number of files that can be opened by sort at once"},{name:"--compress-program",args:{name:"PROGRAM",template:"filepaths"},description:"Use PROGRAM to compress temporary files (eg. bzip2)"},{name:"--random-source",args:{name:"filename",template:"filepaths"},description:"In random sort, the file content is used as the source of the 'seed' data for the hash function choice"},{name:"--debug",description:"Print some extra information about the sorting process to the standard output"},{name:"--parallel",description:"Set the maximum number of execution threads. Default number equals to the number of CPUs"},{name:"--files0-from",args:{name:"filename",template:"filepaths"},description:"Take the input file list from the file filename"},{name:"--radixsort",description:"Try to use radix sort, if the sort specifications allow"},{name:"--mergesort",description:"Use mergesort. This is a universal algorithm that can always be used, but it is not always the fastest"},{name:"--qsort",description:"Try to use quick sort, if the sort specifications allow. This sort algorithm cannot be used with -u and -s"},{name:"--heapsort",description:"Try to use heap sort, if the sort specifications allow. This sort algorithm cannot be used with -u and -s"},{name:"--mmap",description:"Try to use file memory mapping system call. It may increase speed in some cases"},{name:"--sort",args:{name:"type",suggestions:["general-numeric","human-numeric","month","numeric","random"]},description:"Select how to sort values"}]}},5554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"mount",description:"Mount disks and manage subtrees",args:[{name:"Disk/loopfile",template:"filepaths",generators:[{script:["cat","/proc/partitions"],postProcess:e=>e.trim().split("\n").splice(2,e.length).map(e=>"/dev/"+e.split(" ").pop()).filter(e=>"/dev/"!=e).map(e=>({name:e,description:"Block device"}))},{script:["ls","-1","/dev/mapper"],postProcess:e=>e.trim().split("\n").filter(e=>0!=e.length).map(e=>({name:"/dev/mapper/"+e,description:"Mapped block device"}))}]},{name:"mountpoint",template:"folders",suggestions:["/mnt","/run/media/"]}],options:[{name:["-h","--help"],description:"Help for abc"},{name:["-a","--all"],description:"Mount all filesystems in fstab"},{name:["-c","--no-canonicalize"],description:"Don't canonicalize paths"},{name:["-f","--fake"],description:"Dry run; skip the mount(2) syscall"},{name:["-F","--fork"],description:"Fork off for each device (use with -a)"},{name:["-T","--fstab"],description:"Alternative file to /etc/fstab",args:{name:"fstab",template:"filepaths",default:"/etc/fstab"}},{name:["-i","--internal-only"],description:"Don't call the mount.<type> helpers"},{name:["-l","--show-labels"],description:"Show also filesystem labels"},{name:["-m","--mkdir"],description:"Alias to '-o X-mount.mkdir"},{name:["-n","--no-mtab"],description:"Don't write to /etc/mtab"},{name:"--options-mode",description:"What to do with options loaded from fstab",args:{name:"mode"}},{name:"--options-source",description:"Mount options source",args:{name:"source",template:"filepaths"}},{name:"--options-source-force",description:"Force use of options from fstab/mtab"},{name:["-o","--options"],description:"Comma-separated list of mount options",args:{name:"list"}},{name:["-O","--test-opts"],description:"Limit the set of filesystems (use with -a)",args:{name:"list"}},{name:["-r","--read-only"],description:"Mount the filesystem read-only (same as -o ro)"},{name:["-t","--types"],description:"Limit the set of filesystem types",args:{name:"list"}},{name:"--source",description:"Explicitly specifies source",args:{name:"source",suggestions:["path","label","uuid"]}},{name:"--target",description:"Explicitly specifies mountpoint",args:{name:"mountpoint",template:"folders"}},{name:"--target-prefix",description:"Specifies path used for all mountpoints",args:{name:"path",template:"folders"}},{name:["-v","--verbose"],description:"Say what is being done"},{name:["-w","--rw","--read-write"],description:"Mount the filesystem read-write (default)"},{name:["-V","--version"],description:"Display version"},{name:["-B","--bind"],description:"Mount a subtree somewhere else (same as -o bind)"},{name:["-M","--move"],description:"Move a subtree to some other place"},{name:["-R","-rbind"],description:"Mount a subtree and all submounts somewhere else"},{name:"--make-shared",description:"Mark a subtree as shared"},{name:"--make-slave",description:"Mark a subtree as slave"},{name:"--make-private",description:"Mark a subtree as private"},{name:"--make-unbindable",description:"Mark a subtree as unbindable"},{name:"--make-rshared",description:"Recursively mark a whole subtree as shared"},{name:"--make-rslave",description:"Recursively mark a whole subtree as slave"},{name:"--make-rprivate",description:"Recursively mark a whole subtree as private"},{name:"--make-runbindable",description:"Recursively mark a whole subtree as unbindable"}]}},5761:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.osIsWindows=function(){return"win32"===r.platform()};const r=o(n(857))},5860:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"pwd",description:"Return working directory name",options:[{name:"-L",description:"Display the logical current working directory"},{name:"-P",description:"Display the physical current working directory"}]}},5879:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"date",description:"Display or set date and time",options:[{name:"-d",description:"Set the kernel's value for daylight saving time",args:{name:"dst"}},{name:"-f",description:"Use specified format for input instead of the default [[[mm]dd]HH]MM[[cc]yy][.ss] format",args:[{name:"input_fmt",description:"The format with which to parse the new date value"},{name:"new_date",description:"The new date to set"}]},{name:"-j",description:"Don't try to set the date"},{name:"-n",description:"Only set time on the current machine, instead of all machines in the local group"},{name:"-R",description:"Use RFC 2822 date and time output format"},{name:"-r",description:"Print the date and time represented by the specified number of seconds since the Epoch",args:{name:"seconds",description:"Number of seconds since the Epoch (00:00:00 UTC, January 1, 1970)"}},{name:"-t",description:"Set the system's value for minutes west of GMT",args:{name:"minutes_west"}},{name:"-u",description:"Display or set the date in UTC (Coordinated Universal) time"},{name:"-v",description:"Adjust and print (but don't set) the second, minute, hour, month day, week day, month, or year according to val",args:{name:"val",description:"[+|-]val[ymwdHMS]"}}],args:{name:"new_time OR output_fmt",description:"New_time: [[[mm]dd]HH]MM[[cc]yy][.ss], output_fmt: '+' followed by user-defined format string",isOptional:!0,isDangerous:!0}}},5883:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"ruby",description:"Interpreted object-oriented scripting language",options:[{name:"--copyright",description:"Prints the copyright notice"},{name:"--version",description:"Prints the version of Ruby interpreter"},{name:"-0",description:"Specifies the input record separator ($/) as an octal number",args:{name:"octal"}},{name:"-C",description:"Causes Ruby to switch to the directory",args:{name:"directory",template:"folders"}},{name:"-F",description:"Specifies input field separator ($;)",args:{name:"pattern"}},{name:"-I",description:"Used to tell Ruby where to load the library scripts. Directory path will be added to the load-path variable ($:)",args:{name:"directory",template:"folders"}},{name:"-K",description:"Specifies KANJI (Japanese) encoding",args:{name:"kcode"}},{name:"-S",description:"Makes Ruby use the PATH environment variable to search for script, unless its name begins with a slash. This is used to emulate #! on machines that don't support it, in the following manner: #! /usr/local/bin/ruby # This line makes the next one a comment in Ruby \\ exec /usr/local/bin/ruby -S $0 $*"},{name:"-T",description:"Turns on taint checks at the specified level (default 1)",args:{name:"level"}},{name:"-a",description:"Turns on auto-split mode when used with -n or -p"},{name:"-c",description:"Causes Ruby to check the syntax of the script and exit without executing. If there are no syntax errors, Ruby will print “Syntax OK” to the standard output"},{name:["-d","--debug"],description:"Turns on debug mode. $DEBUG will be set to true"},{name:"-e",description:"Specifies script from command-line while telling Ruby not to search the rest of arguments for a script file name",args:{name:"command"}},{name:["-h","--help"],description:"Prints a summary of the options"},{name:"-i",description:"Specifies in-place-edit mode. The extension, if specified, is added to old file name to make a backup copy",args:{name:"extension",isOptional:!0}},{name:"-l",description:"Enables automatic line-ending processing, which means to firstly set $\\ to the value of $/, and secondly chops every line read using chop!"},{name:"-n",description:"Causes Ruby to assume the following loop around your script"},{name:"-p",description:"Acts mostly same as -n switch, but print the value of variable $_ at the each end of the loop"},{name:"-r",description:"Causes Ruby to load the library using require",args:{name:"library"}},{name:"-s",description:"Enables some switch parsing for switches after script name but before any file name arguments (or before a --)"},{name:["-v","--verbose"],description:"Enables verbose mode"},{name:"-w",description:"Enables verbose mode without printing version message at the beginning. It sets the $VERBOSE variable to true"},{name:"-x",description:"Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first that starts with “#!” and contains the string, “ruby”. Any meaningful switches on that line will applied. The end of script must be specified with either EOF, ^D (control-D), ^Z (control-Z), or reserved word __END__. If the directory name is specified, Ruby will switch to that directory before executing script",args:{name:"directory",template:"folders"}},{name:["-y","--yydebug"],description:"Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compiling scripts. You don't have to specify this switch, unless you are going to debug the Ruby interpreter"}]}},5894:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.PathExecutableCache=void 0,t.watchPathDirectories=async function(e,t,n){const i=new Set,a=t.PATH;a&&a.split(h.delimiter).forEach(e=>i.add(e));const s=new Set;for(const t of i)try{if(s.has(t))continue;if(!(await r.stat(t)).isDirectory())continue;const i=p.watch(t,{persistent:!1},()=>{n&&n.refresh(t)});s.add(t),e.subscriptions.push(new c.Disposable(()=>{try{i.close(),s.delete(t)}catch{}}))}catch{}};const r=o(n(1943)),c=o(n(1398)),l=n(7815),d=n(5761),m=n(3905),p=o(n(9896)),h=o(n(6928)),u=(0,d.osIsWindows)();t.PathExecutableCache=class{_disposables=[];_cachedWindowsExeExtensions;_cachedExes=new Map;_inProgressRequest;constructor(){u&&(this._cachedWindowsExeExtensions=c.workspace.getConfiguration("terminal.integrated.suggest").get("windowsExecutableExtensions"),this._disposables.push(c.workspace.onDidChangeConfiguration(e=>{e.affectsConfiguration("terminal.integrated.suggest.windowsExecutableExtensions")&&(this._cachedWindowsExeExtensions=c.workspace.getConfiguration("terminal.integrated.suggest").get("windowsExecutableExtensions"),this._cachedExes.clear())})))}dispose(){for(const e of this._disposables)e.dispose()}refresh(e){e?this._cachedExes.delete(e):this._cachedExes.clear()}async getExecutablesInPath(e=process.env,t){if(this._inProgressRequest&&this._inProgressRequest.env===e&&this._inProgressRequest.shellType===t)return this._inProgressRequest.promise;const n=this._doGetExecutablesInPath(e,t);return this._inProgressRequest={env:e,shellType:t,promise:n},await n,this._inProgressRequest=void 0,n}async _doGetExecutablesInPath(e,t){let n;if("gitbash"===t)n=process.env.PATH;else if(u){const t=Object.keys(e).find(e=>"path"===e.toLowerCase());t&&(n=e[t])}else n=e.PATH;if(void 0===n)return;const i=n.split(u?";":":"),a=u?"\\":"/",s=[],o=[],r=new Set;for(const e of i){const t=this._cachedExes.get(e);if(t)for(const e of t){const t="string"==typeof e.label?e.label:e.label.label;r.add(t)}else s.push(e),o.push(this._getExecutablesInSinglePath(e,a,r))}if(o.length>0){const e=await Promise.all(o);for(const[t,n]of e.entries()){const e=s[t];this._cachedExes.has(e)||this._cachedExes.set(e,n||new Set)}}const c=new Set,l=new Set;for(const e of i){if(l.has(e))continue;l.add(e);const t=this._cachedExes.get(e);if(t)for(const e of t)c.add(e)}return{completionResources:c,labels:r}}async _getExecutablesInSinglePath(e,t,n){try{if(!await r.stat(e).then(e=>e.isDirectory()).catch(()=>!1))return;const i=new Set,a=c.Uri.file(e),s=await c.workspace.fs.readDirectory(a);return await Promise.all(s.map(([e,s])=>(async()=>{let o,d;const p=c.Uri.joinPath(a,e);if(s!==c.FileType.Unknown&&s!==c.FileType.Directory){try{if((await r.lstat(p.fsPath)).isSymbolicLink())try{const e=await r.realpath(p.fsPath);if(!await(0,l.isExecutable)(e,this._cachedWindowsExeExtensions))return;o=c.TerminalCompletionItemKind.Method,d=`${p.fsPath} -> ${e}`}catch{return}}catch{return}d=d??(0,m.getFriendlyResourcePath)(p,t),n.has(e)||(o===c.TerminalCompletionItemKind.Method||await(0,l.isExecutable)(d,this._cachedWindowsExeExtensions))&&(i.add({label:e,documentation:d,kind:o??c.TerminalCompletionItemKind.Method}),n.add(e))}})())),i}catch(e){return}}}},5927:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(228),t),a(n(6738),t)},5941:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"basename",description:"Return filename portion of pathname",options:[{name:"-a",description:"Treat every argument as a string"},{name:"-s",description:"Suffix to remove from string",args:{name:"suffix"}}],args:{name:"string",description:"String to operate on (typically filenames)",isVariadic:!0,template:"filepaths"}}},6074:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.existingUsersandGroups=void 0,t.existingUsersandGroups={custom:async function(e,t){const n=e.find(e=>e.includes(":")),i=e.find(e=>/^-.*n.*/.test(e));let a;if(n){const{stdout:e}=await t({command:"bash",args:["-c","dscl . -list /Groups PrimaryGroupID | tr -s ' '| sort -r"]});a=e}else{const{stdout:e}=await t({command:"bash",args:["-c","dscl . -list /Users UniqueID | tr -s ' '| sort -r"]});a=e}return a.split("\n").map(e=>e.split(" ")).map(e=>({name:i?e[1]:e[0],description:n?`Group - ${i?e[0]:`gid: ${e[1]}`}`:`User - ${i?e[0]:`uid: ${e[1]}`}`,icon:n?"👥":"👤",priority:90}))},trigger:":",getQueryTerm:":"};const n={name:"chown",description:"Change the user and/or group ownership of a given file, directory, or symbolic link",args:[{name:"owner[:group] or :group",generators:t.existingUsersandGroups},{name:"file/directory",isVariadic:!0,template:["filepaths","folders"]}],options:[{name:"-f",description:"Don't report any failure to change file owner or group, nor modify the exit status to reflect such failures"},{name:"-h",description:"If the file is a symbolic link, change the user ID and/or the group ID of the link itself"},{name:"-n",description:"Interpret user ID and group ID as numeric, avoiding name lookups"},{name:"-v",description:"Cause chown to be verbose, showing files as the owner is modified"},{name:"-R",description:"Change the user ID and/or the group ID for the file hierarchies rooted in the files instead of just the files themselves"},{name:"-H",description:"If the -R option is specified, symbolic links on the command line are followed",exclusiveOn:["-L","-P"],dependsOn:["-R"]},{name:"-L",description:"If the -R option is specified, all symbolic links are followed",exclusiveOn:["-H","-P"],dependsOn:["-R"]},{name:"-P",description:"If the -R option is specified, no symbolic links are followed",exclusiveOn:["-H","-L"],dependsOn:["-R"]}]};t.default=n},6190:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"chmod",description:"Change file modes or Access Control Lists",args:[{name:"mode",suggestions:[{name:"u+x",type:"arg",description:"Give execute permission for the user",icon:"🔐"},{name:"a+rx",type:"arg",description:"Adds read and execute permissions for all classes",icon:"🔐"},{name:"744",type:"arg",description:"Sets read, write, and execute permissions for user, and sets read permission for Group and Others",icon:"🔐"},{name:"664",type:"arg",description:"Sets read and write permissions for user and Group, and provides read to Others",icon:"🔐"},{name:"777",type:"arg",description:"⚠️ allows all actions for all users",icon:"🔐"}]},{template:"filepaths"}],options:[{name:"-f",description:"Do not display a diagnostic message if chmod could not modify the mode for file, nor modify the exit status to reflect such failures"},{name:"-H",description:"If the -R option is specified, symbolic links on the command line are followed and hence unaffected by the command. (Symbolic links encountered during tree traversal are not followed.)"},{name:"-h",description:"If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to"},{name:"-L",description:"If the -R option is specified, all symbolic links are followed"},{name:"-P",description:"If the -R option is specified, no symbolic links are followed. This is the default"},{name:"-R",description:"Change the modes of the file hierarchies rooted in the files, instead of just the files themselves. Beware of unintentionally matching the ``..'' hard link to the parent directory when using wildcards like ``.*''"},{name:"-v",description:"Cause chmod to be verbose, showing filenames as the mode is modified. If the -v flag is specified more than once, the old and new modes of the file will also be printed, in both octal and symbolic notation"}]}},6207:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(2008),s={...i(n(487)).default,name:"code-tunnel-insiders",description:"Visual Studio Code Insiders",subcommands:[...a.codeTunnelSubcommands,a.extTunnelSubcommand],options:[...a.commonOptions,...(0,a.extensionManagementOptions)("code-tunnel-insiders"),...(0,a.troubleshootingOptions)("code-tunnel-insiders"),...a.globalTunnelOptions,...a.codeTunnelOptions]};t.default=s},6323:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"ascii",icon:"fig://icon?type=string",description:"The same as 'unblock' except characters are translated from EBCDIC to ASCII"},{name:"oldascii",icon:"fig://icon?type=string",description:"The same as 'unblock' except characters are translated from EBCDIC to ASCII"},{name:"block",icon:"fig://icon?type=string",description:"Treats the input as a sequence of newline or EOF-terminated variable length records of independent input and output block boundaries"},{name:"ebcdic",icon:"fig://icon?type=string",description:"The same as the 'block' value except that characters are translated from ASCII to EBCDIC after the records are converted"},{name:"ibm",icon:"fig://icon?type=string",description:"The same as the 'block' value except that characters are translated from ASCII to EBCDIC after the records are converted"},{name:"oldebcdic",icon:"fig://icon?type=string",description:"The same as the 'block' value except that characters are translated from ASCII to EBCDIC after the records are converted"},{name:"oldibm",icon:"fig://icon?type=string",description:"The same as the 'block' value except that characters are translated from ASCII to EBCDIC after the records are converted"},{name:"lcase",icon:"fig://icon?type=string",description:"Transform uppercase characters into lowercase characters"},{name:"noerror",icon:"fig://icon?type=string",description:"Do not stop processing on an input error"},{name:"notrunc",icon:"fig://icon?type=string",description:"Do not truncate the output file. This will preserve any blocks in the output file not explicitly written by dd"},{name:"osync",icon:"fig://icon?type=string",description:"Pad the final output block to the full output block size"},{name:"sparse",icon:"fig://icon?type=string",description:"If one or more output blocks would consist solely of NUL bytes, try to seek the output file by the required space instead of filling them with NULs, resulting in a sparse file"},{name:"swab",icon:"fig://icon?type=string",description:"Swap every pair of input bytes"},{name:"sync",icon:"fig://icon?type=string",description:"Pad every input block to the input buffer size"},{name:"ucase",icon:"fig://icon?type=string",description:"Transform lowercase characters into uppercase characters"},{name:"unblock",icon:"fig://icon?type=string",description:"Treats the input as a sequence of fixed length records independent of input and output block boundaries"}],i={name:"dd",description:"Convert and copy a file",parserDirectives:{flagsArePosixNoncompliant:!0},options:[{name:"bs",icon:"fig://icon?type=asterisk",description:"Set input and output block size",requiresSeparator:!0,args:{name:"size"}},{name:"cbs",icon:"fig://icon?type=asterisk",description:"Set the conversion record size",requiresSeparator:!0,args:{name:"size"}},{name:"count",icon:"fig://icon?type=asterisk",description:"Copy this many input blocks",requiresSeparator:!0,args:{name:"number"}},{name:"files",icon:"fig://icon?type=asterisk",description:"Copy this many files before terminating",requiresSeparator:!0,args:{name:"number"}},{name:"ibs",icon:"fig://icon?type=asterisk",description:"Set the input block size",requiresSeparator:!0,args:{name:"size",default:"512"}},{name:"if",icon:"fig://icon?type=asterisk",description:"Read an input file instead of stdin",requiresSeparator:!0,priority:60,args:{name:"file",template:"filepaths"}},{name:"iseek",icon:"fig://icon?type=asterisk",description:"Seek this many blocks on the input file",requiresSeparator:!0,args:{name:"blocks"}},{name:"obs",icon:"fig://icon?type=asterisk",description:"Set the output block size",requiresSeparator:!0,args:{name:"size",default:"512"}},{name:"of",icon:"fig://icon?type=asterisk",description:"Write to an output file instead of stdout",requiresSeparator:!0,priority:59,args:{name:"file",template:"filepaths",suggestCurrentToken:!0}},{name:"oseek",icon:"fig://icon?type=asterisk",description:"Seek this many blocks on the output file",requiresSeparator:!0,args:{name:"blocks"}},{name:"seek",icon:"fig://icon?type=asterisk",description:"Seek this many blocks from the beginning of the output before copying",requiresSeparator:!0,args:{name:"blocks"}},{name:"skip",icon:"fig://icon?type=asterisk",description:"Skip this many blocks from the beginning of the input before copying",requiresSeparator:!0,args:{name:"blocks"}},{name:"conv",icon:"fig://icon?type=asterisk",description:"Convert input data (comma-separated list)",requiresSeparator:!0,args:{name:"value",generators:{getQueryTerm:",",custom:async()=>n}}}]};t.default=i},6355:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"dirname",description:"Return directory portion of pathname",args:{name:"string",description:"String to operate on (typically filenames)",isVariadic:!0,template:"filepaths"}}},6479:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"tree",description:"Display directories as trees (with optional color/HTML output)",args:{template:"folders"},options:[{name:"-a",description:"All files are listed"},{name:"-d",description:"List directories only"},{name:"-l",description:"Follow symbolic links like directories"},{name:"-f",description:"Print the full path prefix for each file"},{name:"-x",description:"Stay on current filesystem only"},{name:"-L",description:"Descend only level directories deep",args:{name:"level"}},{name:"-R",description:"Rerun tree when max dir level reached"},{name:"-P",description:"List only those files that match the pattern given",args:{name:"pattern"}},{name:"-I",description:"Do not list files that match the given pattern",args:{name:"pattern"}},{name:"--ignore-case",description:"Ignore case when pattern matching"},{name:"--matchdirs",description:"Include directory names in -P pattern matching"},{name:"--noreport",description:"Turn off file/directory count at end of tree listing"},{name:"--charset",description:"Use charset X for terminal/HTML and indentation line output",args:{name:"charset"}},{name:"--filelimit",description:"Do not descend dirs with more than # files in them",args:{name:"number",description:"Number of files"}},{name:"--timefmt",description:"Print and format time according to the format <f>",args:{name:"format",description:"Format in strftime syntax"}},{name:"-o",description:"Output to file instead of stdout",args:{name:"filename"}},{name:"-q",description:"Print non-printable characters as '?'"},{name:"-N",description:"Print non-printable characters as is"},{name:"-Q",description:"Quote filenames with double quotes"},{name:"-p",description:"Print the protections for each file"},{name:"-u",description:"Displays file owner or UID number"},{name:"-g",description:"Displays file group owner or GID number"},{name:"-s",description:"Print the size in bytes of each file"},{name:"-h",description:"Print the size in a more human readable way"},{name:"--si",description:"Like -h but use SI units (powers of 1000) instead"},{name:"--du",description:"For each directory report its size as the accumulation of sizes of all its files and sub-directories (and their files, and so on). The total amount of used space is also given in the final report (like the 'du -c' command.) This option requires tree to read the entire directory tree before emitting it, see BUGS AND NOTES below. Implies -s"},{name:"-D",description:"Print the date of the last modification time or if -c is used, the last status change time for the file listed"},{name:"-F",description:"Appends '/', '=', '*', '@', '|' or '>' as per ls -F"},{name:"--inodes",description:"Print inode number of each file"},{name:"--device",description:"Print device ID number to which each file belongs"},{name:"-v",description:"Sort files alphanumerically by version"},{name:"-t",description:"Sort files by last modification time"},{name:"-c",description:"Sort files by last status change time"},{name:"-U",description:"Leave files unsorted"},{name:"-r",description:"Reverse the order of the sort"},{name:"--dirsfirst",description:"List directories before files (-U disables)"},{name:"--sort",description:"Select sort",requiresSeparator:!0,args:{name:"type",suggestions:["name","version","size","mtime","ctime"]}},{name:"-i",description:"Don't print indentation lines"},{name:"-A",description:"Print ANSI lines graphic indentation lines"},{name:"-S",description:"Print with CP437 (console) graphics indentation lines"},{name:"-n",description:"Turn colorization off always (-C overrides)"},{name:"-C",description:"Turn colorization on always"},{name:"-X",description:"Prints out an XML representation of the tree"},{name:"-J",description:"Prints out an JSON representation of the tree"},{name:"-H",description:"Prints out HTML format with baseHREF as top directory",args:{name:"baseHREF"}},{name:"-T",description:"Replace the default HTML title and H1 header with string",args:{name:"title"}},{name:"--nolinks",description:"Turn off hyperlinks in HTML output"},{name:"--fromfile",description:"Reads paths from files"},{name:"--version",description:"Print version and exit"},{name:"--help",description:"Print usage and this help message and exit"},{name:"--",description:"Options processing terminator"}]}},6519:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"cat",description:"Concatenate and print files",args:{isVariadic:!0,template:"filepaths"},options:[{name:"-b",description:"Number the non-blank output lines, starting at 1"},{name:"-e",description:"Display non-printing characters (see the -v option), and display a dollar sign (‘$’) at the end of each line"},{name:"-l",description:"Set an exclusive advisory lock on the standard output file descriptor. This lock is set using fcntl(2) with the F_SETLKW command. If the output file is already locked, cat will block until the lock is acquired"},{name:"-n",description:"Number the output lines, starting at 1"},{name:"-s",description:"Squeeze multiple adjacent empty lines, causing the output to be single spaced"},{name:"-t",description:"Display non-printing characters (see the -v option), and display tab characters as ‘^I’"},{name:"-u",description:"Disable output buffering"},{name:"-v",description:"Display non-printing characters so they are visible. Control characters print as ‘^X’ for control-X; the delete character (octal 0177) prints as ‘^?’. Non-ASCII characters (with the high bit set) are printed as ‘M-’ (for meta) followed by the character for the low 7 bits"}]}},6707:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"grep",description:"Matches patterns in input text. Supports simple patterns and regular expressions",args:[{name:"search pattern",suggestCurrentToken:!0},{name:"file",template:"filepaths"}],options:[{name:"--help",description:"Print a usage message briefly summarizing these command-line options and the bug-reporting address, then exit"},{name:["-E","--extended-regexp"],description:"Interpret PATTERN as an extended regular expression (-E is specified by POSIX.)"},{name:["-F","--fixed-string"],description:"Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)"},{name:["-G","--basic-regexp"],description:"Interpret PATTERN as a basic regular expression (BRE, see below). This is the default"},{name:["-e","--regexp"],description:"Use PATTERN as the pattern. This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-). (-e is specified by POSIX.)",args:{name:"pattern"}},{name:["-i","--ignore-case","-y"],description:"Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)"},{name:["-v","--invert-match"],description:"Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)"},{name:["-w","--word-regexp"],description:"Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore"},{name:["-x","--line-regexp"],description:"Select only those matches that exactly match the whole line. (-x is specified by POSIX.)"},{name:["-c","--count"],description:"Suppress normal output; instead print a count of matching lines for each input file. With the -v, --invert-match option, count non-matching lines. (-c is specified by POSIX.)"},{name:"--color",description:"Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences to display them in color on the terminal. The colors are defined by the environment variable GREP_COLORS. The deprecated environment variable GREP_COLOR is still supported, but its setting does not have priority",args:{name:"WHEN",default:"auto",suggestions:["never","always","auto"]}},{name:["-L","--files-without-match"],exclusiveOn:["-l","--files-with-matches"],description:"Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match"},{name:["-l","--files-with-matches"],exclusiveOn:["-L","--files-without-match"],description:"Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match. (-l is specified by POSIX.)"},{name:["-m","--max-count"],description:"Stop reading a file after NUM matching lines. If the input is standard input from a regular file, and NUM matching lines are output, grep ensures that the standard input is positioned to just after the last matching line before exiting, regardless of the presence of trailing context lines. This enables a calling process to resume a search. When grep stops after NUM matching lines, it outputs any trailing context lines. When the -c or --count option is also used, grep does not output a count greater than NUM. When the -v or --invert-match option is also used, grep stops after outputting NUM non-matching lines",args:{name:"NUM"}},{name:["-o","--only-matching"],description:"Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line"},{name:["-q","--quiet","--silent"],description:"Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or --no-messages option. (-q is specified by POSIX.)"},{name:["-s","--no-messages"],description:"Suppress error messages about nonexistent or unreadable files. Portability note: unlike GNU grep, 7th Edition Unix grep did not conform to POSIX, because it lacked -q and its -s option behaved like GNU grep's -q option. USG -style grep also lacked -q but its -s option behaved like GNU grep. Portable shell scripts should avoid both -q and -s and should redirect standard and error output to /dev/null instead. (-s is specified by POSIX.)"},{name:["-b","--byte-offset"],description:"Print the 0-based byte offset within the input file before each line of output. If -o (--only-matching) is specified, print the offset of the matching part itself"},{name:["-H","--with-filename"],description:"Print the file name for each match. This is the default when there is more than one file to search"},{name:["-h","--no-filename"],description:"Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search"},{name:"--label",description:"Display input actually coming from standard input as input coming from file LABEL. This is especially useful when implementing tools like zgrep, e.g., gzip -cd foo.gz | grep --label=foo -H something",args:{name:"LABEL"}},{name:["-n","--line-number"],description:"Prefix each line of output with the 1-based line number within its input file. (-n is specified by POSIX.)"},{name:["-T","--initial-tab"],description:"Make sure that the first character of actual line content lies on a tab stop, so that the alignment of tabs looks normal. This is useful with options that prefix their output to the actual content: -H,-n, and -b. In order to improve the probability that lines from a single file will all start at the same column, this also causes the line number and byte offset (if present) to be printed in a minimum size field width"},{name:["-u","--unix-byte-offsets"],description:"Report Unix-style byte offsets. This switch causes grep to report byte offsets as if the file were a Unix-style text file, i.e., with CR characters stripped off. This will produce results identical to running grep on a Unix machine. This option has no effect unless -b option is also used; it has no effect on platforms other than MS-DOS and MS -Windows"},{name:"--null",description:"Output a zero byte (the ASCII NUL character) instead of the character that normally follows a file name. For example, grep -lZ outputs a zero byte after each file name instead of the usual newline. This option makes the output unambiguous, even in the presence of file names containing unusual characters like newlines. This option can be used with commands like find -print0, perl -0, sort -z, and xargs -0 to process arbitrary file names, even those that contain newline characters"},{name:["-A","--after-context"],description:"Print num lines of trailing context after each match",args:{name:"NUM"}},{name:["-B","--before-context"],description:"Print num lines of leading context before each match. See also the -A and -C options",args:{name:"NUM"}},{name:["-C","--context"],description:"Print NUM lines of output context. Places a line containing a group separator (--) between contiguous groups of matches. With the -o or --only-matching option, this has no effect and a warning is given",args:{name:"NUM"}},{name:["-a","--text"],description:"Treat all files as ASCII text. Normally grep will simply print ``Binary file ... matches'' if files contain binary characters. Use of this option forces grep to output lines matching the specified pattern"},{name:"--binary-files",description:"Controls searching and printing of binary files",args:{name:"value",default:"binary",suggestions:[{name:"binary",description:"Search binary files but do not print them"},{name:"without-match",description:"Do not search binary files"},{name:"text",description:"Treat all files as text"}]}},{name:["-D","--devices"],description:"Specify the demanded action for devices, FIFOs and sockets",args:{name:"action",default:"read",suggestions:[{name:"read",description:"Read as if they were normal files"},{name:"skip",description:"Devices will be silently skipped"}]}},{name:["-d","--directories"],description:"Specify the demanded action for directories",args:{name:"action",default:"read",suggestions:[{name:"read",description:"Directories are read in the same manner as normal files"},{name:"skip",description:"Silently ignore the directories"},{name:"recurse",description:"Read directories recursively"}]}},{name:"--exclude",description:"Note that --exclude patterns take priority over --include patterns, and if no --include pattern is specified, all files are searched that are not excluded. Patterns are matched to the full path specified, not only to the filename component",args:{name:"GLOB",isOptional:!0}},{name:"--exclude-dir",description:"If -R is specified, only directories matching the given filename pattern are searched. Note that --exclude-dir patterns take priority over --include-dir patterns",isRepeatable:!0,args:{name:"dir",template:"folders",isOptional:!0}},{name:"-I",description:"Ignore binary files. This option is equivalent to --binary-file=without-match option"},{name:"--include",description:"If specified, only files matching the given filename pattern are searched. Note that --exclude patterns take priority over --include patterns. Patterns are matched to the full path specified, not only to the filename component",args:{name:"GLOB",isOptional:!0}},{name:"--include-dir",description:"If -R is specified, only directories matching the given filename pattern are searched. Note that --exclude-dir patterns take priority over --include-dir patterns",args:{name:"dir",template:"folders",isOptional:!0}},{name:["-R","-r","--recursive"],description:"Recursively search subdirectories listed"},{name:"--line-buffered",description:"Force output to be line buffered. By default, output is line buffered when standard output is a terminal and block buffered otherwise"},{name:["-U","--binary"],description:"Search binary files, but do not attempt to print them"},{name:["-J","-bz2decompress"],description:"Decompress the bzip2(1) compressed file before looking for the text"},{name:["-V","--version"],description:"Print version number of grep to the standard output stream"},{name:["-P","--perl-regexp"],description:"Interpret pattern as a Perl regular expression"},{name:["-f","--file"],description:"Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.)",args:{name:"FILE",template:"filepaths"}}],additionalSuggestions:[{name:"-RIn",description:"Search for a pattern [R]ecursively in the current directory, showing matching line [n]umbers, [I]gnoring non-text files",insertValue:"-RI{cursor}"},{name:"-Hn",description:"Print file name with the corresponding line number (n) for each match",insertValue:"-H{cursor}"}]}},6709:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"head",description:"Output the first part of files",args:{name:"file",template:"filepaths"},options:[{name:["-c","--bytes"],description:"Print the first [numBytes] bytes of each file",args:{name:"numBytes"}},{name:["-n","--lines"],description:"Print the first [numLines] lines instead of the first 10",args:{name:"numLines"}},{name:["-q","--quiet","--silent"],description:"Never print headers giving file names"},{name:["-v","--verbose"],description:"Always print headers giving file names"},{name:"--help",description:"Display this help and exit"},{name:"--version",description:"Output version information and exit"}]}},6728:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={listEnvironments:{script:["azd","env","list","--output","json"],postProcess:e=>{try{return JSON.parse(e).map(e=>({name:e.Name,displayName:e.IsDefault?"Default":void 0}))}catch{return[]}}},listEnvironmentVariables:{script:["azd","env","get-values","--output","json"],postProcess:e=>{try{const t=JSON.parse(e);return Object.keys(t).map(e=>({name:e}))}catch{return[]}}},listTemplates:{script:["azd","template","list","--output","json"],postProcess:e=>{try{return JSON.parse(e).map(e=>({name:e.repositoryPath,description:e.name}))}catch{return[]}},cache:{strategy:"stale-while-revalidate"}},listTemplateTags:{script:["azd","template","list","--output","json"],postProcess:e=>{try{const t=JSON.parse(e),n=new Set;return t.forEach(e=>{e.tags&&Array.isArray(e.tags)&&e.tags.forEach(e=>n.add(e))}),Array.from(n).sort().map(e=>({name:e}))}catch{return[]}},cache:{strategy:"stale-while-revalidate"}},listTemplatesFiltered:{custom:async(e,t,n)=>{let i;for(let t=0;t<e.length;t++)if(("-f"===e[t]||"--filter"===e[t])&&t+1<e.length){i=e[t+1];break}const a=["template","list","--output","json"];i&&a.push("--filter",i);try{const{stdout:e}=await t({command:"azd",args:a});return JSON.parse(e).map(e=>({name:e.repositoryPath,description:e.name}))}catch{return[]}},cache:{strategy:"stale-while-revalidate"}},listExtensions:{script:["azd","ext","list","--output","json"],postProcess:e=>{try{const t=JSON.parse(e),n=new Map;return t.forEach(e=>{n.has(e.id)||n.set(e.id,e)}),Array.from(n.values()).map(e=>({name:e.id,description:e.name}))}catch{return[]}},cache:{strategy:"stale-while-revalidate"}},listInstalledExtensions:{script:["azd","ext","list","--installed","--output","json"],postProcess:e=>{try{const t=JSON.parse(e),n=new Map;return t.forEach(e=>{n.has(e.id)||n.set(e.id,e)}),Array.from(n.values()).map(e=>({name:e.id,description:e.name}))}catch{return[]}}}},i={name:"azd",description:"Azure Developer CLI",subcommands:[{name:["add"],description:"Add a component to your project."},{name:["auth"],description:"Authenticate with Azure.",subcommands:[{name:["login"],description:"Log in to Azure.",options:[{name:["--check-status"],description:"Checks the log-in status instead of logging in."},{name:["--client-certificate"],description:"The path to the client certificate for the service principal to authenticate with.",args:[{name:"client-certificate"}]},{name:["--client-id"],description:"The client id for the service principal to authenticate with.",args:[{name:"client-id"}]},{name:["--client-secret"],description:"The client secret for the service principal to authenticate with. Set to the empty string to read the value from the console.",args:[{name:"client-secret"}]},{name:["--federated-credential-provider"],description:"The provider to use to acquire a federated token to authenticate with. Supported values: github, azure-pipelines, oidc",args:[{name:"federated-credential-provider",suggestions:["github","azure-pipelines","oidc"]}]},{name:["--managed-identity"],description:"Use a managed identity to authenticate."},{name:["--redirect-port"],description:"Choose the port to be used as part of the redirect URI during interactive login.",args:[{name:"redirect-port"}]},{name:["--tenant-id"],description:"The tenant id or domain name to authenticate with.",args:[{name:"tenant-id"}]},{name:["--use-device-code"],description:"When true, log in by using a device code instead of a browser."}]},{name:["logout"],description:"Log out of Azure."}]},{name:["completion"],description:"Generate shell completion scripts.",subcommands:[{name:["bash"],description:"Generate bash completion script."},{name:["fig"],description:"Generate Fig autocomplete spec."},{name:["fish"],description:"Generate fish completion script."},{name:["powershell"],description:"Generate PowerShell completion script."},{name:["zsh"],description:"Generate zsh completion script."}]},{name:["config"],description:"Manage azd configurations (ex: default Azure subscription, location).",subcommands:[{name:["get"],description:"Gets a configuration.",args:{name:"path"}},{name:["list-alpha"],description:"Display the list of available features in alpha stage."},{name:["reset"],description:"Resets configuration to default.",options:[{name:["--force","-f"],description:"Force reset without confirmation.",isDangerous:!0}]},{name:["set"],description:"Sets a configuration.",args:[{name:"path"},{name:"value"}]},{name:["show"],description:"Show all the configuration values."},{name:["unset"],description:"Unsets a configuration.",args:{name:"path"}}]},{name:["deploy"],description:"Deploy your project code to Azure.",options:[{name:["--all"],description:"Deploys all services that are listed in azure.yaml"},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--from-package"],description:"Deploys the packaged service located at the provided path. Supports zipped file packages (file path) or container images (image tag).",args:[{name:"file-path|image-tag"}]}],args:{name:"service",isOptional:!0}},{name:["down"],description:"Delete your project's Azure resources.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--force"],description:"Does not require confirmation before it deletes resources.",isDangerous:!0},{name:["--purge"],description:"Does not require confirmation before it permanently deletes resources that are soft-deleted by default (for example, key vaults).",isDangerous:!0}]},{name:["env"],description:"Manage environments (ex: default environment, environment variables).",subcommands:[{name:["get-value"],description:"Get specific environment value.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]}],args:{name:"keyName",generators:n.listEnvironmentVariables}},{name:["get-values"],description:"Get all environment values.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]}]},{name:["list","ls"],description:"List environments."},{name:["new"],description:"Create a new environment and set it as the default.",options:[{name:["--location","-l"],description:"Azure location for the new environment",args:[{name:"location"}]},{name:["--subscription"],description:"Name or ID of an Azure subscription to use for the new environment",args:[{name:"subscription"}]}],args:{name:"environment"}},{name:["refresh"],description:"Refresh environment values by using information from a previous infrastructure provision.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--hint"],description:"Hint to help identify the environment to refresh",args:[{name:"hint"}]}],args:{name:"environment"}},{name:["select"],description:"Set the default environment.",args:{name:"environment",generators:n.listEnvironments}},{name:["set"],description:"Set one or more environment values.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--file"],description:"Path to .env formatted file to load environment values from.",args:[{name:"file"}]}],args:[{name:"key",isOptional:!0},{name:"value",isOptional:!0}]},{name:["set-secret"],description:"Set a name as a reference to a Key Vault secret in the environment.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]}],args:{name:"name"}}]},{name:["extension","ext"],description:"Manage azd extensions.",subcommands:[{name:["install"],description:"Installs specified extensions.",options:[{name:["--force","-f"],description:"Force installation even if it would downgrade the current version",isDangerous:!0},{name:["--source","-s"],description:"The extension source to use for installs",args:[{name:"source"}]},{name:["--version","-v"],description:"The version of the extension to install",args:[{name:"version"}]}],args:{name:"extension-id",generators:n.listExtensions}},{name:["list"],description:"List available extensions.",options:[{name:["--installed"],description:"List installed extensions"},{name:["--source"],description:"Filter extensions by source",args:[{name:"source"}]},{name:["--tags"],description:"Filter extensions by tags",isRepeatable:!0,args:[{name:"tags"}]}]},{name:["show"],description:"Show details for a specific extension.",options:[{name:["--source","-s"],description:"The extension source to use.",args:[{name:"source"}]}],args:{name:"extension-name"}},{name:["source"],description:"View and manage extension sources",subcommands:[{name:["add"],description:"Add an extension source with the specified name",options:[{name:["--location","-l"],description:"The location of the extension source",args:[{name:"location"}]},{name:["--name","-n"],description:"The name of the extension source",args:[{name:"name"}]},{name:["--type","-t"],description:"The type of the extension source. Supported types are 'file' and 'url'",args:[{name:"type"}]}]},{name:["list"],description:"List extension sources"},{name:["remove"],description:"Remove an extension source with the specified name",args:{name:"name"}}]},{name:["uninstall"],description:"Uninstall specified extensions.",options:[{name:["--all"],description:"Uninstall all installed extensions"}],args:{name:"extension-id",isOptional:!0,generators:n.listInstalledExtensions}},{name:["upgrade"],description:"Upgrade specified extensions.",options:[{name:["--all"],description:"Upgrade all installed extensions"},{name:["--source","-s"],description:"The extension source to use for upgrades",args:[{name:"source"}]},{name:["--version","-v"],description:"The version of the extension to upgrade to",args:[{name:"version"}]}],args:{name:"extension-id",isOptional:!0,generators:n.listInstalledExtensions}}]},{name:["hooks"],description:"Develop, test and run hooks for a project.",subcommands:[{name:["run"],description:"Runs the specified hook for the project and services",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--platform"],description:"Forces hooks to run for the specified platform.",args:[{name:"platform"}]},{name:["--service"],description:"Only runs hooks for the specified service.",args:[{name:"service"}]}],args:{name:"name",suggestions:["prebuild","postbuild","predeploy","postdeploy","predown","postdown","prepackage","postpackage","preprovision","postprovision","prepublish","postpublish","prerestore","postrestore","preup","postup"]}}]},{name:["infra"],description:"Manage your Infrastructure as Code (IaC).",subcommands:[{name:["generate","gen","synth"],description:"Write IaC for your project to disk, allowing you to manually manage it.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--force"],description:"Overwrite any existing files without prompting",isDangerous:!0}]}]},{name:["init"],description:"Initialize a new application.",options:[{name:["--branch","-b"],description:"The template branch to initialize from. Must be used with a template argument (--template or -t).",args:[{name:"branch"}]},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--filter","-f"],description:"The tag(s) used to filter template results. Supports comma-separated values.",isRepeatable:!0,args:[{name:"filter",generators:n.listTemplateTags}]},{name:["--from-code"],description:"Initializes a new application from your existing code."},{name:["--location","-l"],description:"Azure location for the new environment",args:[{name:"location"}]},{name:["--minimal","-m"],description:"Initializes a minimal project."},{name:["--subscription","-s"],description:"Name or ID of an Azure subscription to use for the new environment",args:[{name:"subscription"}]},{name:["--template","-t"],description:"Initializes a new application from a template. You can use Full URI, <owner>/<repository>, or <repository> if it's part of the azure-samples organization.",args:[{name:"template",generators:n.listTemplatesFiltered}]},{name:["--up"],description:"Provision and deploy to Azure after initializing the project from a template."}]},{name:["mcp"],description:"Manage Model Context Protocol (MCP) server. (Alpha)",subcommands:[{name:["consent"],description:"Manage MCP tool consent.",subcommands:[{name:["grant"],description:"Grant consent trust rules.",options:[{name:["--action"],description:"Action type: 'all' or 'readonly'",args:[{name:"action",suggestions:["all","readonly"]}]},{name:["--global"],description:"Apply globally to all servers"},{name:["--operation"],description:"Operation type: 'tool' or 'sampling'",args:[{name:"operation",suggestions:["tool","sampling"]}]},{name:["--permission"],description:"Permission: 'allow', 'deny', or 'prompt'",args:[{name:"permission",suggestions:["allow","deny","prompt"]}]},{name:["--scope"],description:"Rule scope: 'global', or 'project'",args:[{name:"scope",suggestions:["global","project"]}]},{name:["--server"],description:"Server name",args:[{name:"server"}]},{name:["--tool"],description:"Specific tool name (requires --server)",args:[{name:"tool"}]}]},{name:["list"],description:"List consent rules.",options:[{name:["--action"],description:"Action type to filter by (readonly, any)",args:[{name:"action",suggestions:["all","readonly"]}]},{name:["--operation"],description:"Operation to filter by (tool, sampling)",args:[{name:"operation",suggestions:["tool","sampling"]}]},{name:["--permission"],description:"Permission to filter by (allow, deny, prompt)",args:[{name:"permission",suggestions:["allow","deny","prompt"]}]},{name:["--scope"],description:"Consent scope to filter by (global, project). If not specified, lists rules from all scopes.",args:[{name:"scope",suggestions:["global","project"]}]},{name:["--target"],description:"Specific target to operate on (server/tool format)",args:[{name:"target"}]}]},{name:["revoke"],description:"Revoke consent rules.",options:[{name:["--action"],description:"Action type to filter by (readonly, any)",args:[{name:"action",suggestions:["all","readonly"]}]},{name:["--operation"],description:"Operation to filter by (tool, sampling)",args:[{name:"operation",suggestions:["tool","sampling"]}]},{name:["--permission"],description:"Permission to filter by (allow, deny, prompt)",args:[{name:"permission",suggestions:["allow","deny","prompt"]}]},{name:["--scope"],description:"Consent scope to filter by (global, project). If not specified, revokes rules from all scopes.",args:[{name:"scope",suggestions:["global","project"]}]},{name:["--target"],description:"Specific target to operate on (server/tool format)",args:[{name:"target"}]}]}]},{name:["start"],description:"Starts the MCP server."}]},{name:["monitor"],description:"Monitor a deployed project.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--live"],description:"Open a browser to Application Insights Live Metrics. Live Metrics is currently not supported for Python apps."},{name:["--logs"],description:"Open a browser to Application Insights Logs."},{name:["--overview"],description:"Open a browser to Application Insights Overview Dashboard."}]},{name:["package"],description:"Packages the project's code to be deployed to Azure.",options:[{name:["--all"],description:"Packages all services that are listed in azure.yaml"},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--output-path"],description:"File or folder path where the generated packages will be saved.",args:[{name:"output-path"}]}],args:{name:"service",isOptional:!0}},{name:["pipeline"],description:"Manage and configure your deployment pipelines.",subcommands:[{name:["config"],description:"Configure your deployment pipeline to connect securely to Azure. (Beta)",options:[{name:["--applicationServiceManagementReference","-m"],description:"Service Management Reference. References application or service contact information from a Service or Asset Management database. This value must be a Universally Unique Identifier (UUID). You can set this value globally by running azd config set pipeline.config.applicationServiceManagementReference <UUID>.",args:[{name:"applicationServiceManagementReference"}]},{name:["--auth-type"],description:"The authentication type used between the pipeline provider and Azure for deployment (Only valid for GitHub provider). Valid values: federated, client-credentials.",args:[{name:"auth-type",suggestions:["federated","client-credentials"]}]},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--principal-id"],description:"The client id of the service principal to use to grant access to Azure resources as part of the pipeline.",args:[{name:"principal-id"}]},{name:["--principal-name"],description:"The name of the service principal to use to grant access to Azure resources as part of the pipeline.",args:[{name:"principal-name"}]},{name:["--principal-role"],description:"The roles to assign to the service principal. By default the service principal will be granted the Contributor and User Access Administrator roles.",isRepeatable:!0,args:[{name:"principal-role"}]},{name:["--provider"],description:"The pipeline provider to use (github for Github Actions and azdo for Azure Pipelines).",args:[{name:"provider",suggestions:["github","azdo"]}]},{name:["--remote-name"],description:"The name of the git remote to configure the pipeline to run on.",args:[{name:"remote-name"}]}]}]},{name:["provision"],description:"Provision Azure resources for your project.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--no-state"],description:"(Bicep only) Forces a fresh deployment based on current Bicep template files, ignoring any stored deployment state."},{name:["--preview"],description:"Preview changes to Azure resources."}]},{name:["publish"],description:"Publish a service to a container registry.",options:[{name:["--all"],description:"Publishes all services that are listed in azure.yaml"},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--from-package"],description:"Publishes the service from a container image (image tag).",args:[{name:"image-tag"}]},{name:["--to"],description:"The target container image in the form '[registry/]repository[:tag]' to publish to.",args:[{name:"image-tag"}]}],args:{name:"service",isOptional:!0}},{name:["restore"],description:"Restores the project's dependencies.",options:[{name:["--all"],description:"Restores all services that are listed in azure.yaml"},{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]}],args:{name:"service",isOptional:!0}},{name:["show"],description:"Display information about your project and its resources.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]},{name:["--show-secrets"],description:"Unmask secrets in output.",isDangerous:!0}],args:{name:"resource-name|resource-id",isOptional:!0}},{name:["template"],description:"Find and view template details.",subcommands:[{name:["list","ls"],description:"Show list of sample azd templates. (Beta)",options:[{name:["--filter","-f"],description:"The tag(s) used to filter template results. Supports comma-separated values.",isRepeatable:!0,args:[{name:"filter",generators:n.listTemplateTags}]},{name:["--source","-s"],description:"Filters templates by source.",args:[{name:"source"}]}]},{name:["show"],description:"Show details for a given template. (Beta)",args:{name:"template",generators:n.listTemplates}},{name:["source"],description:"View and manage template sources. (Beta)",subcommands:[{name:["add"],description:"Adds an azd template source with the specified key. (Beta)",options:[{name:["--location","-l"],description:"Location of the template source. Required when using type flag.",args:[{name:"location"}]},{name:["--name","-n"],description:"Display name of the template source.",args:[{name:"name"}]},{name:["--type","-t"],description:"Kind of the template source. Supported types are 'file', 'url' and 'gh'.",args:[{name:"type"}]}],args:{name:"key"}},{name:["list","ls"],description:"Lists the configured azd template sources. (Beta)"},{name:["remove"],description:"Removes the specified azd template source (Beta)",args:{name:"key"}}]}]},{name:["up"],description:"Provision and deploy your project to Azure with a single command.",options:[{name:["--environment","-e"],description:"The name of the environment to use.",args:[{name:"environment"}]}]},{name:["version"],description:"Print the version number of Azure Developer CLI."},{name:["help"],description:"Help about any command",subcommands:[{name:["add"],description:"Add a component to your project."},{name:["auth"],description:"Authenticate with Azure.",subcommands:[{name:["login"],description:"Log in to Azure."},{name:["logout"],description:"Log out of Azure."}]},{name:["completion"],description:"Generate shell completion scripts.",subcommands:[{name:["bash"],description:"Generate bash completion script."},{name:["fig"],description:"Generate Fig autocomplete spec."},{name:["fish"],description:"Generate fish completion script."},{name:["powershell"],description:"Generate PowerShell completion script."},{name:["zsh"],description:"Generate zsh completion script."}]},{name:["config"],description:"Manage azd configurations (ex: default Azure subscription, location).",subcommands:[{name:["get"],description:"Gets a configuration."},{name:["list-alpha"],description:"Display the list of available features in alpha stage."},{name:["reset"],description:"Resets configuration to default."},{name:["set"],description:"Sets a configuration."},{name:["show"],description:"Show all the configuration values."},{name:["unset"],description:"Unsets a configuration."}]},{name:["deploy"],description:"Deploy your project code to Azure."},{name:["down"],description:"Delete your project's Azure resources."},{name:["env"],description:"Manage environments (ex: default environment, environment variables).",subcommands:[{name:["get-value"],description:"Get specific environment value."},{name:["get-values"],description:"Get all environment values."},{name:["list","ls"],description:"List environments."},{name:["new"],description:"Create a new environment and set it as the default."},{name:["refresh"],description:"Refresh environment values by using information from a previous infrastructure provision."},{name:["select"],description:"Set the default environment."},{name:["set"],description:"Set one or more environment values."},{name:["set-secret"],description:"Set a name as a reference to a Key Vault secret in the environment."}]},{name:["extension","ext"],description:"Manage azd extensions.",subcommands:[{name:["install"],description:"Installs specified extensions."},{name:["list"],description:"List available extensions."},{name:["show"],description:"Show details for a specific extension."},{name:["source"],description:"View and manage extension sources",subcommands:[{name:["add"],description:"Add an extension source with the specified name"},{name:["list"],description:"List extension sources"},{name:["remove"],description:"Remove an extension source with the specified name"}]},{name:["uninstall"],description:"Uninstall specified extensions."},{name:["upgrade"],description:"Upgrade specified extensions."}]},{name:["hooks"],description:"Develop, test and run hooks for a project.",subcommands:[{name:["run"],description:"Runs the specified hook for the project and services"}]},{name:["infra"],description:"Manage your Infrastructure as Code (IaC).",subcommands:[{name:["generate","gen","synth"],description:"Write IaC for your project to disk, allowing you to manually manage it."}]},{name:["init"],description:"Initialize a new application."},{name:["mcp"],description:"Manage Model Context Protocol (MCP) server. (Alpha)",subcommands:[{name:["consent"],description:"Manage MCP tool consent.",subcommands:[{name:["grant"],description:"Grant consent trust rules."},{name:["list"],description:"List consent rules."},{name:["revoke"],description:"Revoke consent rules."}]},{name:["start"],description:"Starts the MCP server."}]},{name:["monitor"],description:"Monitor a deployed project."},{name:["package"],description:"Packages the project's code to be deployed to Azure."},{name:["pipeline"],description:"Manage and configure your deployment pipelines.",subcommands:[{name:["config"],description:"Configure your deployment pipeline to connect securely to Azure. (Beta)"}]},{name:["provision"],description:"Provision Azure resources for your project."},{name:["publish"],description:"Publish a service to a container registry."},{name:["restore"],description:"Restores the project's dependencies."},{name:["show"],description:"Display information about your project and its resources."},{name:["template"],description:"Find and view template details.",subcommands:[{name:["list","ls"],description:"Show list of sample azd templates. (Beta)"},{name:["show"],description:"Show details for a given template. (Beta)"},{name:["source"],description:"View and manage template sources. (Beta)",subcommands:[{name:["add"],description:"Adds an azd template source with the specified key. (Beta)"},{name:["list","ls"],description:"Lists the configured azd template sources. (Beta)"},{name:["remove"],description:"Removes the specified azd template source (Beta)"}]}]},{name:["up"],description:"Provision and deploy your project to Azure with a single command."},{name:["version"],description:"Print the version number of Azure Developer CLI."}]}],options:[{name:["--cwd","-C"],description:"Sets the current working directory.",isPersistent:!0,args:[{name:"cwd"}]},{name:["--debug"],description:"Enables debugging and diagnostics logging.",isPersistent:!0},{name:["--no-prompt"],description:"Accepts the default value instead of prompting, or it fails if there is no default.",isPersistent:!0},{name:["--docs"],description:"Opens the documentation for azd in your web browser.",isPersistent:!0},{name:["--help","-h"],description:"Gets help for azd.",isPersistent:!0}]};t.default=i},6730:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"clear",description:"Clear the terminal screen",options:[{name:"-T",description:"Indicates the type of terminal",args:{name:"type"}},{name:"-V",description:"Reports version of ncurses used in this program, and exits"},{name:"-x",description:"Do not attempt to clear terminal's scrollback buffer using the extended E3 capability"}]}},6733:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"curl",description:"Transfer a URL",args:{name:"URL",template:"history"},options:[{name:["-a","--append"],description:"Append to target file when uploading"},{name:["-E","--cert"],description:"Client certificate file and password",args:{name:"certificate[:password]",generators:{getQueryTerm:":"}}},{name:["-K","--config"],description:"Read config from a file",args:{name:"file",template:"filepaths"}},{name:["-C","--continue-at"],description:"Resumed transfer offset",args:{name:"offset"}},{name:["-b","--cookie"],description:"Send cookies from string/file",args:{name:"data or filename",template:"filepaths"}},{name:["-c","--cookie-jar"],description:"Write cookies to <filename> after operation",args:{name:"filename",template:"filepaths"}},{name:["-d","--data"],description:"HTTP POST data",insertValue:"-d '{cursor}'",args:{name:"data"},isRepeatable:!0},{name:["-q","--disable"],description:"Disable .curlrc"},{name:["-D","--dump-header"],description:"Write the received headers to <filename>",args:{name:"filename",template:"filepaths"}},{name:["-f","--fail"],description:"Fail silently (no output at all) on HTTP errors"},{name:["-F","--form"],description:"Specify multipart MIME data",args:{name:"content"},isRepeatable:!0},{name:["-P","--ftp-port"],description:"Use PORT instead of PASV",args:{name:"address"}},{name:["-G","--get"],description:"Put the post data in the URL and use GET"},{name:["-g","--globoff"],description:"Disable URL sequences and ranges using {} and []"},{name:["-I","--head"],description:"Show document info only"},{name:["-H","--header"],description:"Pass custom header(s) to server",args:{name:"header/file",suggestions:[{name:"Content-Type: application/json"},{name:"Content-Type: application/x-www-form-urlencoded"}]}},{name:["-h","--help"],description:"This help text"},{name:["-0","--http1.0"],description:"Use HTTP 1.0"},{name:["-i","--include"],description:"Include protocol response headers in the output"},{name:["-k","--insecure"],description:"Allow insecure server connections when using SSL"},{name:["-4","--ipv4"],description:"Resolve names to IPv4 addresses"},{name:["-6","--ipv6"],description:"Resolve names to IPv6 addresses"},{name:["-j","--junk-session-cookies"],description:"Ignore session cookies read from file"},{name:["-l","--list-only"],description:"List only mode"},{name:["-L","--location"],description:"Follow redirects"},{name:["-M","--manual"],description:"Display the full manual"},{name:["-m","--max-time"],description:"Maximum time allowed for the transfer",args:{name:"seconds"}},{name:["-n","--netrc"],description:"Must read .netrc for user name and password"},{name:["-:","--next"],description:"Make next URL use its separate set of options"},{name:["-N","--no-buffer"],description:"Disable buffering of the output stream"},{name:["-o","--output"],description:"Write to file instead of stdout",args:{name:"file",template:"filepaths"}},{name:["-#","--progress-bar"],description:"Display transfer progress as a bar"},{name:["-x","--proxy"],description:"[protocol://]host[:port] Use this proxy"},{name:["-U","--proxy-user"],description:"Proxy user and password",args:{name:"user:password"}},{name:["-p","--proxytunnel"],description:"Operate through an HTTP proxy tunnel (using CONNECT)"},{name:["-Q","--quote"],description:"Send command(s) to server before transfer"},{name:["-r","--range"],description:"Retrieve only the bytes within RANGE",args:{name:"range"}},{name:["-e","--referer"],description:"Referrer URL",args:{name:"URL"}},{name:["-J","--remote-header-name"],description:"Use the header-provided filename"},{name:["-O","--remote-name"],description:"Write output to a file named as the remote file"},{name:["-R","--remote-time"],description:"Set the remote file's time on the local output"},{name:["-X","--request"],description:"Specify request command to use",args:{name:"command",suggestions:[{name:"GET"},{name:"HEAD"},{name:"POST"},{name:"PUT"},{name:"DELETE"},{name:"CONNECT"},{name:"OPTIONS"},{name:"TRACE"},{name:"PATCH"}]}},{name:["-S","--show-error"],description:"Show error even when -s is used"},{name:["-s","--silent"],description:"Silent mode"},{name:["-Y","--speed-limit"],description:"Stop transfers slower than this",args:{name:"speed"}},{name:["-y","--speed-time"],description:"Trigger 'speed-limit' abort after this time",args:{name:"seconds"}},{name:["-2","--sslv2"],description:"Use SSLv2"},{name:["-3","--sslv3"],description:"Use SSLv3"},{name:["-t","--telnet-option"],description:"Set telnet option",args:{name:"val"}},{name:["-z","--time-cond"],description:"Transfer based on a time condition",args:{name:"time"}},{name:["-1","--tlsv1"],description:"Use TLSv1.0 or greater"},{name:["-T","--upload-file"],description:"Transfer local FILE to destination",args:{name:"file",template:"filepaths"}},{name:["-B","--use-ascii"],description:"Use ASCII/text transfer"},{name:["-u","--user"],description:"Server user and password",args:{name:"user:password"}},{name:["-A","--user-agent"],description:"Send User-Agent <name> to server",args:{name:"name"}},{name:["-v","--verbose"],description:"Make the operation more talkative"},{name:["-V","--version"],description:"Show version number and quit"},{name:["-w","--write-out"],description:"Use output FORMAT after completion",args:{name:"format"}},{name:"--abstract-unix-socket",description:"Connect via abstract Unix domain socket",args:{name:"path"}},{name:"--alt-svc",description:"Name> Enable alt-svc with this cache file",args:{name:"file",template:"filepaths"}},{name:"--anyauth",description:"Pick any authentication method"},{name:"--basic",description:"Use HTTP Basic Authentication"},{name:"--cacert",description:"CA certificate to verify peer against",args:{name:"file",template:"filepaths"}},{name:"--capath",description:"CA directory to verify peer against",args:{name:"dir",template:"folders"}},{name:"--cert-status",description:"Verify the status of the server certificate"},{name:"--cert-type",description:"Certificate file type",args:{name:"type",suggestions:[{name:"DER"},{name:"PEM"},{name:"ENG"}]}},{name:"--ciphers",description:"Of ciphers> SSL ciphers to use",args:{name:"list"}},{name:"--compressed",description:"Request compressed response"},{name:"--compressed-ssh",description:"Enable SSH compression"},{name:"--connect-timeout",description:"Maximum time allowed for connection",args:{name:"seconds"}},{name:"--connect-to",description:"Connect to host",args:{name:"HOST1:PORT1:HOST2:PORT2"}},{name:"--create-dirs",description:"Create necessary local directory hierarchy"},{name:"--crlf",description:"Convert LF to CRLF in upload"},{name:"--crlfile",description:"Get a CRL list in PEM format from the given file",args:{name:"file",template:"filepaths"}},{name:"--data-ascii",description:"HTTP POST ASCII data",args:{name:"data"}},{name:"--data-binary",description:"HTTP POST binary data",args:{name:"data"}},{name:"--data-raw",description:"HTTP POST data, '@' allowed",args:{name:"data"}},{name:"--data-urlencode",description:"HTTP POST data url encoded",args:{name:"data"}},{name:"--delegation",description:"GSS-API delegation permission",args:{name:"LEVEL"}},{name:"--digest",description:"Use HTTP Digest Authentication"},{name:"--disable-eprt",description:"Inhibit using EPRT or LPRT"},{name:"--disable-epsv",description:"Inhibit using EPSV"},{name:"--disallow-username-in-url",description:"Disallow username in url"},{name:"--dns-interface",description:"Interface to use for DNS requests",args:{name:"interface"}},{name:"--dns-ipv4-addr",description:"IPv4 address to use for DNS requests",args:{name:"address"}},{name:"--dns-ipv6-addr",description:"IPv6 address to use for DNS requests",args:{name:"address"}},{name:"--dns-servers",description:"DNS server addrs to use",args:{name:"addresses"}},{name:"--doh-url",description:"Resolve host names over DOH",args:{name:"URL"}},{name:"--egd-file",description:"EGD socket path for random data",args:{name:"file",template:"filepaths"}},{name:"--engine",description:"Crypto engine to use",args:{name:"name"}},{name:"--etag-compare",description:"Make a conditional HTTP request for the ETag read from the given file",args:{name:"file"}},{name:"--etag-save",description:"Save an HTTP ETag to the specified file",args:{name:"file"}},{name:"--expect100-timeout",description:"How long to wait for 100-continue",args:{name:"seconds"}},{name:"--fail-early",description:"Fail on first transfer error, do not continue"},{name:"--fail-with-body",description:"On HTTP errors, return an error and also output any HTML response"},{name:"--false-start",description:"Enable TLS False Start"},{name:"--form-string",description:"Specify multipart MIME data",args:{name:"string"}},{name:"--ftp-account",description:"Account data string",args:{name:"data"}},{name:"--ftp-alternative-to-user",description:"String to replace USER [name]",args:{name:"command"}},{name:"--ftp-create-dirs",description:"Create the remote dirs if not present"},{name:"--ftp-method",description:"Control CWD usage",args:{name:"method"}},{name:"--ftp-pasv",description:"Use PASV/EPSV instead of PORT"},{name:"--ftp-pret",description:"Send PRET before PASV"},{name:"--ftp-skip-pasv-ip",description:"Skip the IP address for PASV"},{name:"--ftp-ssl-ccc",description:"Send CCC after authenticating"},{name:"--ftp-ssl-ccc-mode",description:"Set CCC mode",args:{name:"mode",suggestions:[{name:"active"},{name:"passive"}]}},{name:"--ftp-ssl-control",description:"Require SSL/TLS for FTP login, clear for transfer"},{name:"--happy-eyeballs-timeout-ms",description:"How long to wait in milliseconds for IPv6 before trying IPv4",args:{name:"milliseconds"}},{name:"--haproxy-protocol",description:"Send HAProxy PROXY protocol v1 header"},{name:"--hostpubmd5",description:"Acceptable MD5 hash of the host public key",args:{name:"md5"}},{name:"--http0.9",description:"Allow HTTP 0.9 responses"},{name:"--http1.1",description:"Use HTTP 1.1"},{name:"--http2",description:"Use HTTP 2"},{name:"--http2-prior-knowledge",description:"Use HTTP 2 without HTTP/1.1 Upgrade"},{name:"--ignore-content-length",description:"Ignore the size of the remote resource"},{name:"--interface",description:"Use network INTERFACE (or address)",args:{name:"name"}},{name:"--keepalive-time",description:"Interval time for keepalive probes",args:{name:"seconds"}},{name:"--key",description:"Private key file name",args:{name:"key"}},{name:"--key-type",description:"Private key file type",args:{name:"type",suggestions:[{name:"DER"},{name:"PEM"},{name:"ENG"}]}},{name:"--krb",description:"Enable Kerberos with security <level>",args:{name:"level"}},{name:"--libcurl",description:"Dump libcurl equivalent code of this command line",args:{name:"file",template:"filepaths"}},{name:"--limit-rate",description:"Limit transfer speed to RATE",args:{name:"speed"}},{name:"--local-port",description:"Force use of RANGE for local port numbers",args:{name:"num/range"}},{name:"--location-trusted",description:"Like --location, and send auth to other hosts"},{name:"--login-options",description:"Server login options",args:{name:"options"}},{name:"--mail-auth",description:"Originator address of the original email",args:{name:"address"}},{name:"--mail-from",description:"Mail from this address",args:{name:"address"}},{name:"--mail-rcpt",description:"Mail to this address",args:{name:"address"}},{name:"--max-filesize",description:"Maximum file size to download",args:{name:"bytes"}},{name:"--max-redirs",description:"Maximum number of redirects allowed",args:{name:"num"}},{name:"--metalink",description:"Process given URLs as metalink XML file"},{name:"--negotiate",description:"Use HTTP Negotiate (SPNEGO) authentication"},{name:"--netrc-file",description:"Specify FILE for netrc",args:{name:"filename",template:"filepaths"}},{name:"--netrc-optional",description:"Use either .netrc or URL"},{name:"--no-alpn",description:"Disable the ALPN TLS extension"},{name:"--no-keepalive",description:"Disable TCP keepalive on the connection"},{name:"--no-npn",description:"Disable the NPN TLS extension"},{name:"--no-sessionid",description:"Disable SSL session-ID reusing"},{name:"--noproxy",description:"List of hosts which do not use proxy",args:{name:"no-proxy-list"}},{name:"--ntlm",description:"Use HTTP NTLM authentication"},{name:"--ntlm-wb",description:"Use HTTP NTLM authentication with winbind"},{name:"--oauth2-bearer",description:"OAuth 2 Bearer Token",args:{name:"token"}},{name:"--pass",description:"Pass phrase for the private key",args:{name:"phrase"}},{name:"--path-as-is",description:"Do not squash .. sequences in URL path"},{name:"--pinnedpubkey",description:"FILE/HASHES Public key to verify peer against",args:{name:"hashes"}},{name:"--post301",description:"Do not switch to GET after following a 301"},{name:"--post302",description:"Do not switch to GET after following a 302"},{name:"--post303",description:"Do not switch to GET after following a 303"},{name:"--preproxy",description:"[protocol://]host[:port] Use this proxy first"},{name:"--proto",description:"Enable/disable PROTOCOLS",args:{name:"protocols"}},{name:"--proto-default",description:"Use PROTOCOL for any URL missing a scheme",args:{name:"protocol"}},{name:"--proto-redir",description:"Enable/disable PROTOCOLS on redirect",args:{name:"protocols"}},{name:"--proxy-anyauth",description:"Pick any proxy authentication method"},{name:"--proxy-basic",description:"Use Basic authentication on the proxy"},{name:"--proxy-cacert",description:"CA certificate to verify peer against for proxy",args:{name:"file",template:"filepaths"}},{name:"--proxy-capath",description:"CA directory to verify peer against for proxy",args:{name:"dir",template:"folders"}},{name:"--proxy-cert",description:"Set client certificate for proxy",args:{name:"cert[:passwd]"}},{name:"--proxy-cert-type",description:"Client certificate type for HTTPS proxy",args:{name:"type"}},{name:"--proxy-ciphers",description:"SSL ciphers to use for proxy",args:{name:"list"}},{name:"--proxy-crlfile",description:"Set a CRL list for proxy",args:{name:"file",template:"filepaths"}},{name:"--proxy-digest",description:"Use Digest authentication on the proxy"},{name:"--proxy-header",description:"Pass custom header(s) to proxy",args:{name:"header/file",suggestions:[{name:"Content-Type: application/json"},{name:"Content-Type: application/x-www-form-urlencoded"}]}},{name:"--proxy-insecure",description:"Do HTTPS proxy connections without verifying the proxy"},{name:"--proxy-key",description:"Private key for HTTPS proxy",args:{name:"key"}},{name:"--proxy-key-type",description:"Private key file type for proxy",args:{name:"type"}},{name:"--proxy-negotiate",description:"Use HTTP Negotiate (SPNEGO) authentication on the proxy"},{name:"--proxy-ntlm",description:"Use NTLM authentication on the proxy"},{name:"--proxy-pass",description:"Pass phrase for the private key for HTTPS proxy",args:{name:"phrase"}},{name:"--proxy-pinnedpubkey",description:"FILE/HASHES public key to verify proxy with",args:{name:"hashes"}},{name:"--proxy-service-name",description:"SPNEGO proxy service name",args:{name:"name"}},{name:"--proxy-ssl-allow-beast",description:"Allow security flaw for interop for HTTPS proxy"},{name:"--proxy-tls13-ciphers",description:"List> TLS 1.3 proxy cipher suites",args:{name:"ciphersuite"}},{name:"--proxy-tlsauthtype",description:"TLS authentication type for HTTPS proxy",args:{name:"type"}},{name:"--proxy-tlspassword",description:"TLS password for HTTPS proxy",args:{name:"string"}},{name:"--proxy-tlsuser",description:"TLS username for HTTPS proxy",args:{name:"name"}},{name:"--proxy-tlsv1",description:"Use TLSv1 for HTTPS proxy"},{name:"--proxy1.0",description:"Use HTTP/1.0 proxy on given port",args:{name:"host[:port]"}},{name:"--pubkey",description:"SSH Public key file name",args:{name:"key",template:"filepaths"}},{name:"--random-file",description:"File for reading random data from",args:{name:"file",template:"filepaths"}},{name:"--raw",description:'Do HTTP "raw"; no transfer decoding'},{name:"--remote-name-all",description:"Use the remote file name for all URLs"},{name:"--request-target",description:"Specify the target for this request"},{name:"--resolve",description:"Resolve the host+port to this address",args:{name:"host:port:address[,address]..."}},{name:"--retry",description:"Retry request if transient problems occur",args:{name:"num"}},{name:"--retry-connrefused",description:"Retry on connection refused (use with --retry)"},{name:"--retry-delay",description:"Wait time between retries",args:{name:"seconds"}},{name:"--retry-max-time",description:"Retry only within this period",args:{name:"seconds"}},{name:"--sasl-ir",description:"Enable initial response in SASL authentication"},{name:"--service-name",description:"SPNEGO service name",args:{name:"name"}},{name:"--socks4",description:"SOCKS4 proxy on given host + port",args:{name:"host[:port]"}},{name:"--socks4a",description:"SOCKS4a proxy on given host + port",args:{name:"host[:port]"}},{name:"--socks5",description:"SOCKS5 proxy on given host + port",args:{name:"host[:port]"}},{name:"--socks5-basic",description:"Enable username/password auth for SOCKS5 proxies"},{name:"--socks5-gssapi",description:"Enable GSS-API auth for SOCKS5 proxies"},{name:"--socks5-gssapi-nec",description:"Compatibility with NEC SOCKS5 server"},{name:"--socks5-gssapi-service",description:"SOCKS5 proxy service name for GSS-API",args:{name:"name"}},{name:"--socks5-hostname",description:"SOCKS5 proxy, pass host name to proxy",args:{name:"host[:port]"}},{name:"--ssl",description:"Try SSL/TLS"},{name:"--ssl-auto-client-cert",description:"Obtain and use a client certificate automatically"},{name:"--ssl-allow-beast",description:"Allow security flaw to improve interop"},{name:"--ssl-no-revoke",description:"Disable cert revocation checks (Schannel)"},{name:"--ssl-reqd",description:"Require SSL/TLS"},{name:"--stderr",description:"Where to redirect stderr"},{name:"--styled-output",description:"Enable styled output for HTTP headers"},{name:"--suppress-connect-headers",description:"Suppress proxy CONNECT response headers"},{name:"--tcp-fastopen",description:"Use TCP Fast Open"},{name:"--tcp-nodelay",description:"Use the TCP_NODELAY option"},{name:"--tftp-blksize",description:"Set TFTP BLKSIZE option",args:{name:"value"}},{name:"--tftp-no-options",description:"Do not send any TFTP options"},{name:"--tls-max",description:"Set maximum allowed TLS version",args:{name:"VERSION"}},{name:"--tls13-ciphers",description:"Of TLS 1.3 ciphersuites> TLS 1.3 cipher suites to use",args:{name:"list"}},{name:"--tlsauthtype",description:"TLS authentication type",args:{name:"type"}},{name:"--tlspassword",description:"TLS password"},{name:"--tlsuser",description:"TLS user name",args:{name:"name"}},{name:"--tlsv1.0",description:"Use TLSv1.0 or greater"},{name:"--tlsv1.1",description:"Use TLSv1.1 or greater"},{name:"--tlsv1.2",description:"Use TLSv1.2 or greater"},{name:"--tlsv1.3",description:"Use TLSv1.3 or greater"},{name:"--tr-encoding",description:"Request compressed transfer encoding"},{name:"--trace",description:"Write a debug trace to FILE",args:{name:"file",template:"filepaths"}},{name:"--trace-ascii",description:"Like --trace, but without hex output",args:{name:"file",template:"filepaths"}},{name:"--trace-time",description:"Add time stamps to trace/verbose output"},{name:"--unix-socket",description:"Connect through this Unix domain socket",args:{name:"path"}},{name:"--url",description:"URL to work with",args:{name:"url"}},{name:"--xattr",description:"Store metadata in extended file attributes"}]}},6738:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.getAllCommandsWithAlias=t.getTopLevelCommands=t.getCommand=t.expandCommand=t.substituteAlias=t.createTextToken=void 0;const s=n(228),o=n(7188);a(n(7188),t);const r=(e,t,n)=>{if(e.startIndex<=t&&t<=e.endIndex){return e.children.map(e=>r(e,t,n)).find(Boolean)||(n&&e.type!==n?null:e)}return null};t.createTextToken=(e,t,n,i)=>{const{tree:a,originalTree:o,tokens:r}=e;let c=0;const l=r.findIndex(e=>t<e.originalNode.startIndex),d=r[l];return c=0===l?d.node.startIndex-d.originalNode.startIndex:-1===l?a.text.length-o.text.length:d.node.endIndex-d.originalNode.endIndex,{originalNode:i||(0,s.createTextNode)(o.text,t,n),node:(0,s.createTextNode)(n,t+c,n),text:n}};const c=e=>{if(e.type!==s.NodeType.Command)throw new o.ConvertCommandError("Cannot get tokens from non-command node");const n={originalTree:e,tree:e,tokens:e.children.map(e=>({originalNode:e,node:e,text:e.innerText}))},{children:i,endIndex:a,text:r}=e;return+(0===i.length||i[i.length-1].endIndex)<a&&r.endsWith(" ")&&n.tokens.push((0,t.createTextToken)(n,a,"")),n},l=(e,t)=>({...e,startIndex:e.startIndex+t,endIndex:e.endIndex+t,children:e.children.map(e=>l(e,t))});t.substituteAlias=(e,t,n)=>{if(void 0===e.tokens.find(e=>e===t))throw new o.SubstituteAliasError("Token not in command");const{tree:i}=e,a=t.node.startIndex-i.startIndex,r=t.node.endIndex-i.endIndex,d=`${i.text.slice(0,a)}${n}${r?`${i.text.slice(r)}`:""}`,m=l((0,s.parse)(d),i.startIndex);if(1!==m.children.length)throw new o.SubstituteAliasError("Invalid alias");const p=c(m.children[0]),[h,u]=[t.node.startIndex,t.node.startIndex+n.length];let f=0,g=!1;const b=p.tokens.map((t,n)=>{const i=h<t.node.endIndex&&t.node.startIndex<u;f+=i&&g?1:0;const{originalNode:a}=e.tokens[n-f];return g=i,{...t,originalNode:a}});if(p.tokens.length-e.tokens.length!==f)throw new o.SubstituteAliasError("Error substituting alias");return{originalTree:e.originalTree,tree:p.tree,tokens:b}},t.expandCommand=(e,n,i)=>{let a=e;const s=new Set;let[o]=a.tokens;for(;a.tokens.length>1&&o&&i[o.text]&&!s.has(o.text);){const e=i[o.text].replace(/^'(.*)'$/g,"$1");try{a=(0,t.substituteAlias)(a,o,e)}catch(e){}s.add(o.text),[o]=a.tokens}return a},t.getCommand=(e,n,i)=>{const a=void 0===i?e.length:i,o=(0,s.parse)(e),l=r(o,a,s.NodeType.Command);if(null===l)return null;const d=c(l);return(0,t.expandCommand)(d,a,n)};const d=[s.NodeType.Program,s.NodeType.CompoundStatement,s.NodeType.Subshell,s.NodeType.Pipeline,s.NodeType.List,s.NodeType.Command];t.getTopLevelCommands=e=>{if(e.type===s.NodeType.Command)return[c(e)];if(!d.includes(e.type))return[];const n=[];for(let i=0;i<e.children.length;i+=1)n.push(...(0,t.getTopLevelCommands)(e.children[i]));return n},t.getAllCommandsWithAlias=(e,n)=>{const i=(0,s.parse)(e);return(0,t.getTopLevelCommands)(i).map(e=>(0,t.expandCommand)(e,e.tree.text.length,n))}},6794:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.createCompletionItem=function(e,t,n,i,a,s){const o=t.endsWith(" ")?"":t.split(" ").at(-1)??"";return{label:n.label,detail:i??n.detail??"",documentation:a,replacementRange:[e-o.length,e],kind:s??n.kind??r.TerminalCompletionItemKind.Method}};const r=o(n(1398))},6855:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCustomSuggestions=async function(e,t,n){if(!e.custom)return[];if(!(0,i.haveContextForGenerator)(t))return console.info("Don't have context for custom generator"),[];const{tokenArray:a,currentWorkingDirectory:s,currentProcess:o,isDangerous:r,searchTerm:c,environmentVariables:l}=t;try{const d=await(0,i.runCachedGenerator)(e,t,()=>e.custom(a,n.executeCommand,{currentWorkingDirectory:s,currentProcess:o,sshPrefix:"",searchTerm:c,environmentVariables:l,isDangerous:r}),e.cache?.cacheKey);return d?.map(e=>({...e,type:e?.type||"arg"}))}catch(e){return console.error("we had an error with the custom function generator",e),[]}};const i=n(3121)},6912:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"fold",description:"Fold long lines for finite width output device",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"-b",description:"Count width in bytes rather than column positions"},{name:"-s",description:"Fold line after the last blank character within the first width\ncolumn positions (or bytes)"},{name:"-w",description:"Specify a line width to use instead of the default 80 columns.\nThe width value should be a multiple of 8 if tabs are present,\nor the tabs should be expanded using expand(1) before using\nfold",args:{name:"width",suggestions:["80","90","100","110","120"],default:"80"}}],args:{name:"file",description:"File(s) to fold",isOptional:!0,isVariadic:!0,template:"filepaths"}}},6928:e=>{"use strict";e.exports=require("path")},6950:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"rm",description:"Remove directory entries",args:{isVariadic:!0,template:["folders","filepaths"]},options:[{name:["-r","-R"],description:"Recursive. Attempt to remove the file hierarchy rooted in each file argument",isDangerous:!0},{name:"-P",description:"Overwrite regular files before deleting them",isDangerous:!0},{name:"-d",description:"Attempt to remove directories as well as other types of files"},{name:"-f",description:"⚠️ Attempt to remove the files without prompting for confirmation",isDangerous:!0},{name:"-i",description:"Request confirmation before attempting to remove each file"},{name:"-v",description:"Be verbose when deleting files"}]}},6969:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[{name:"-n",description:"Print the commands but do not run them"},{name:"-v",description:"Print the names of packages as they are compiled"},{name:"-x",description:"Print the commands"},{name:"-tags",description:"A comma-separated list of build tags to consider satisfied during the build",args:{name:"tags"}},{name:"-toolexec",insertValue:"-toolexec '{cursor}'",description:"A program to use to invoke toolchain programs like vet and asm",args:{name:"cmd"}}],i=[...n,{name:"-a",description:"Force rebuilding of packages that are already up-to-date"},{name:"-p",description:"The number of programs, such as build commands or",args:{name:"programs"}},{name:"-race",description:"Enable data race detection.\nSupported only on linux/amd64, freebsd/amd64, darwin/amd64, windows/amd64,\nlinux/ppc64le and linux/arm64 (only for 48-bit VMA)"},{name:"-msan",description:"Enable interoperation with memory sanitizer.\nSupported only on linux/amd64, linux/arm64\nand only with Clang/LLVM as the host C compiler.\nOn linux/arm64, pie build mode will be used"},{name:"-work",description:"Print the name of the temporary work directory and\ndo not delete it when exiting"},{name:"-asmflags",insertValue:"-asmflags='{cursor}'",description:"Arguments to pass on each go tool asm invocation",args:{name:"flag",isVariadic:!0}},{name:"-buildmode",description:"Build mode to use. See 'go help buildmode' for more",args:{name:"mode",suggestions:[{name:"archive",description:"Build the listed non-main packages into .a files"},{name:"c-archive",description:"Build the listed main package, plus all packages it imports, into a C archive file"},{name:"c-shared",description:"Build the listed main package, plus all packages it imports, into a C shared library"},{name:"default",description:"Listed main packages are built into executables and listed non-main packages are built into .a files"},{name:"shared",description:"Combine all the listed non-main packages into a single shared library that will be used when building with the -linkshared option"},{name:"exe",description:"Build the listed main packages and everything they import into executables"},{name:"pie",description:"Build the listed main packages and everything they import into position independent executables (PIE)"},{name:"plugin",description:"Build the listed main packages, plus all packages that they import, into a Go plugin"}]}},{name:"-compiler",description:"Name of compiler to use, as in runtime.Compiler (gccgo or gc)",args:{name:"name"}},{name:"-gccgoflags",insertValue:"--gccgoflags='{cursor}'",description:"Arguments to pass on each gccgo compiler/linker invocation",args:{name:"flag",isVariadic:!0}},{name:"-gcflags",insertValue:"-gcflags='{cursor}'",description:"Arguments to pass on each go tool compile invocation",args:{name:"flag",isVariadic:!0}},{name:"-installsuffix",description:"A suffix to use in the name of the package installation directory,",args:{name:"suffix"}},{name:"-ldflags",insertValue:"-ldflags='{cursor}'",description:"Arguments to pass on each go tool link invocation",args:{name:"flag",isVariadic:!0}},{name:"-linkshared",description:"Build code that will be linked against shared libraries previously"},{name:"-mod",description:"Module download mode to use: readonly, vendor, or mod",args:{name:"mode",suggestions:[{name:"readonly"},{name:"vendor"},{name:"mod"}]}},{name:"-modcacherw",description:"Leave newly-created directories in the module cache read-write"},{name:"-modfile",description:"In module aware mode, read (and possibly write) an alternate go.mod file instead of the one in the module root directory",args:{name:"file"}},{name:"-overlay",description:"Read a JSON config file that provides an overlay for build operations",args:{name:"file"}},{name:"-pkgdir",description:"Install and load all packages from dir instead of the usual locations",args:{name:"dir"}},{name:"-trimpath",description:"Remove all file system paths from the resulting executable"}],a={name:"packages",isVariadic:!0,isOptional:!0,template:["filepaths"]},s={name:"go",description:"Go is a tool for managing Go source code",parserDirectives:{flagsArePosixNoncompliant:!0},subcommands:[{name:"bug",description:"Start a bug report"},{name:"build",description:"Compile packages and dependencies",options:[...i,{name:"-o",description:"Write the resulting executable or object to the named output file or directory",args:{template:["filepaths","folders"]}},{name:"-i",description:"Install the packages that are dependencies of the target"}],args:a},{name:"clean",description:"Remove object files and cached files",options:[...i,{name:"-i",description:"Remove the corresponding installed archive or binary"},{name:"-r",description:"Apply recursively to all the dependencies of the packages named by the import paths"},{name:"-cache",description:"Remove the entire go build cache"},{name:"-testcache",description:"Expire all test results in the go build cache"},{name:"-modcache",description:"Remove the entire module download cache, including unpacked source code of versioned dependencies"}]},{name:"doc",description:"Show documentation for package or symbol",options:[{name:"-all",description:"Show all the documentation for the package"},{name:"-c",description:"Respect case when matching symbols"},{name:"-cmd",description:"Treat a command (package main) like a regular package. Otherwise package main's exported symbols are hidden when showing the package's top-level documentation"},{name:"-short",description:"One-line representation for each symbol"},{name:"-src",description:"Show the full source code for the symbol"},{name:"-u",description:"Show documentation for unexported as well as exported symbols, methods, and fields"}],args:{name:"package"}},{name:"env",description:"Print Go environment information",options:[{name:"-json",description:"Prints the environment in JSON format instead of as a shell script"},{name:"-u",description:"Unset the default setting for the named environment variables",args:{isVariadic:!0}},{name:"-w",description:"Change the default settings of the named environment variables to the given values",args:{isVariadic:!0}}]},{name:"fix",description:"Update packages to use new APIs",args:a},{name:"fmt",description:"Gofmt (reformat) package sources",options:[{name:"-n",description:"Print the commands that would be executed"},{name:"-x",description:"Print the commands as they are executed"},{name:"-mod",description:"Which module download mode to use",args:{name:"mode",suggestions:[{name:"readonly"},{name:"vendor"}]}}],args:a},{name:"generate",description:"Generate Go files by processing source",options:[...i,{name:"-run",insertValue:'-run "{cursor}"',description:"Specifies a regular expression to select directives whose full original source text matches the expression"}]},{name:"get",description:"Add dependencies to current module and install them",options:[...i,{name:"-t",description:"Modules needed to build tests of packages specified on the command line"},{name:"-u",description:"Update to newer minor or patch releases when available",args:{isOptional:!0,suggestions:[{name:"patch",description:"Update to newer patch releases"}]}},{name:"-insecure",description:"Permit fetching from insecure origins"},{name:"-d",description:"Only update go.mod and download source code needed to build packages"}],args:{name:"url",isOptional:!0}},{name:"install",description:"Compile and install packages and dependencies",options:[...i],args:{name:"packages",isVariadic:!0}},{name:"list",description:"List packages or modules",options:[...i,{name:"-compiled",description:"Set CompiledGoFiles to the Go source files"},{name:"-deps",description:"Terate over not just the named packages but also all their dependencies"},{name:"-f",insertValue:"-f '{cursor}'",description:"Specify an alternate format for the list",args:{name:"format"}},{name:"-e",description:"Processes the erroneous packages with the usual printing"},{name:"-export",description:"Set the Export field to the name of a file containing up-to-date export information for the given package"},{name:"-find",description:"Identify the named packages but not resolve their dependencies"},{name:"-test",description:"Report test binaries"},{name:"-m",description:"List modules instead of packages"},{name:"-u",description:"Add information about available upgrades"},{name:"-versions",description:"Set the Module's Versions field to a list of all known versions of that module"},{name:"-retracted",description:"Eport information about retracted module versions"}],args:{isOptional:!0}},{name:"mod",description:"Module maintenance",subcommands:[{name:"download",description:"Download the named modules into the module cache",options:[{name:"-json",description:"Print a sequence of JSON objects to standard output, describing each downloaded module (or failure)"},{name:"-x",description:"Print the commands download executes to standard error"}],args:{name:"modules",isVariadic:!0}},{name:"edit",description:"Edit and format go.mod files",options:[{name:"-module",description:"Change the module's path"},{name:"-go",requiresSeparator:!0,description:"Set the expected Go language version",args:{name:"version"}},{name:"-require",requiresSeparator:!0,description:"Add a requirement on the given module",args:{name:"path"}},{name:"-droprequire",requiresSeparator:!0,description:"Drop a requirement on the given module",args:{name:"path"}},{name:"-exclude",requiresSeparator:!0,description:"Add an exclusion on the given module",args:{name:"path"}},{name:"-dropexclude",requiresSeparator:!0,description:"Drop an exclusion on the given module",args:{name:"path"}},{name:"-replace",requiresSeparator:!0,description:"Add a replacement of the given module path and version pair",args:{name:"path"}},{name:"-dropreplace",requiresSeparator:!0,description:"Drops a replacement of the given module path and version pair",args:{name:"path"}},{name:"-retract",requiresSeparator:!0,description:"Add a retraction for the given version",args:{name:"version"}},{name:"-dropretract",requiresSeparator:!0,description:"Drop a retraction for the given version",args:{name:"version"}},{name:"-fmt",description:"Format the go.mod file without making other changes"},{name:"-print",description:"Print the final go.mod in its text format instead of writing it back to disk"},{name:"-json",description:"Print the final go.mod in JSON format instead of writing it back to disk in text forma"}]},{name:"graph",description:"Print the module requirement graph"},{name:"init",description:"Initialize and write a new go.mod file in the current directory",args:{name:"module path",isOptional:!0}},{name:"tidy",description:"Ensure that the go.mod file matches the source code in the module",options:[{name:"-e",description:"Attempt to proceed despite errors encountered while loading packages"},{name:"-v",description:"Print information about removed modules"}]},{name:"vendor",description:"Construct a directory named vendor in the main module's root directory",options:[{name:"-e",description:"Attempt to proceed despite errors encountered while loading packages"},{name:"-v",description:"Print information about removed modules"}]},{name:"verify",description:"Check that dependencies of the main module stored in the module cache have not been modified since they were downloaded"},{name:"why",description:"Show a shortest path in the import graph from the main module to each of the listed packages",options:[{name:"-m",description:"Treat its arguments as a list of modules"},{name:"-vendor",description:"Ignore imports in tests of packages outside the main module"}],args:{name:"packages",isVariadic:!0}}]},{name:"work",description:"Workspace maintenance",subcommands:[{name:"edit",description:"Edit go.work from tools or scripts",options:[{name:"-fmt",description:"The -fmt flag reformats the go.work file without making other changes. This reformatting is also implied by any other modifications that use or rewrite the go.mod file. The only time this flag is needed is if no other flags are specified, as in 'go work edit -fmt'"},{name:"-use",requiresSeparator:!0,description:"The -use=path and -dropuse=path flags add and drop a use directive from the go.work file's set of module directories",args:{name:"path"}},{name:"-dropuse",requiresSeparator:!0,description:"The -use=path and -dropuse=path flags add and drop a use directive from the go.work file's set of module directories",args:{name:"path"}},{name:"-replace",requiresSeparator:!0,description:"The -replace=old[@v]=new[@v] flag adds a replacement of the given module path and version pair. If the @v in old@v is omitted, a replacement without a version on the left side is added, which applies to all versions of the old module path. If the @v in new@v is omitted, the new path should be a local module root directory, not a module path. Note that -replace overrides any redundant replacements for old[@v], so omitting @v will drop existing replacements for specific versions",args:{name:"old[@v]=new[@v]"}},{name:"-dropreplace",requiresSeparator:!0,description:"The -dropreplace=old[@v] flag drops a replacement of the given module path and version pair. If the @v is omitted, a replacement without a version on the left side is dropped",args:{name:"old[@v]"}},{name:"-go",requiresSeparator:!0,description:"Set the expected Go language version",args:{name:"version"}},{name:"-print",description:"The -print flag prints the final go.work in its text format instead of writing it back to go.mod"},{name:"-json",description:"The -json flag prints the final go.work file in JSON format instead of writing it back to go.mod"}]},{name:"init",description:"Initialize workspace file",args:{name:"moddirs",isVariadic:!0}},{name:"sync",description:"Sync workspace build list to modules"},{name:"use",description:"Add modules to workspace file",options:[{name:"-r",description:"The -r flag searches recursively for modules in the argument directories, and the use command operates as if each of the directories were specified as arguments: namely, use directives will be added for directories that exist, and removed for directories that do not exist"}],args:{name:"moddirs",isVariadic:!0}}]},{name:"run",description:"Compile and run Go program",options:[...i,{name:"-exec",description:"Invoke the binary using xprog",args:{}}],args:{name:"package",isScript:!0}},{name:"test",description:"Test packages",options:[...i,{name:"-args",description:"Pass the remainder of the command line to the test binary",args:{isVariadic:!0}},{name:"-c",description:"Compile the test binary to pkg.test but do not run it"},{name:"-exec",description:"Invoke the binary using xprog",args:{}},{name:"-i",description:"Install packages that are dependencies of the test"},{name:"-json",description:"Convert test output to JSON suitable"},{name:"-o",description:"Compile the test binary to the named file",args:{name:"file",template:"filepaths"}}]},{name:"tool",description:"Run specified go tool",options:[{name:"-n",description:"Print the command that would be executed but not execute it"}],args:{name:"tool",generators:{script:["go","tool"],splitOn:"\n"}}},{name:"version",description:"Print Go version",options:[{name:"-m",description:"Print each executable's embedded module version information"},{name:"-v",description:"Report unrecognized files"}],args:{name:"file",isOptional:!0}},{name:"vet",description:"Report likely mistakes in packages",options:[...n,{name:"-vettool",requiresSeparator:!0,description:"Select a different analysis tool with alternative or additional checks",args:{name:"tool"}}],args:{name:"package",isOptional:!0}}]};t.default=s},7062:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"ruff",description:"Ruff: An extremely fast Python linter",subcommands:[{name:"check",description:"Run Ruff on the given files or directories",options:[{name:"--fix",description:"Apply fixes to resolve lint violations"},{name:"--unsafe-fixes",description:"Include fixes that may not retain the original intent of the code"},{name:"--show-fixes",description:"Show an enumeration of all fixed lint violations"},{name:"--diff",description:"Avoid writing any fixed files back; instead, output a diff for each changed file to stdout, and exit 0 if there are no diffs. Implies `--fix-only`"},{name:["-w","--watch"],description:"Run in watch mode by re-running whenever files change"},{name:"--fix-only",description:"Apply fixes to resolve lint violations, but don't report on, or exit non-zero for, leftover violations. Implies `--fix`"},{name:"--ignore-noqa",description:"Ignore any `# noqa` comments"},{name:"--output-format",description:"Output serialization format for violations. The default serialization format is 'full'",args:{name:"output_format",isOptional:!0,suggestions:["concise","full","json","json-lines","junit","grouped","github","gitlab","pylint","rdjson","azure","sarif"]}},{name:["-o","--output-file"],description:"Specify file to write the linter output to (default: stdout)",args:{name:"output_file",isOptional:!0,template:"filepaths"}},{name:"--target-version",description:"The minimum Python version that should be supported",args:{name:"target_version",isOptional:!0,suggestions:["py37","py38","py39","py310","py311","py312","py313"]}},{name:"--preview",description:"Enable preview mode; checks will include unstable rules and fixes"},{name:"--extension",description:"List of mappings from file extension to language (one of `python`, `ipynb`, `pyi`). For example, to treat `.ipy` files as IPython notebooks, use `--extension ipy:ipynb`",args:{name:"extension",isOptional:!0}},{name:"--statistics",description:"Show counts for every rule with at least one violation"},{name:"--add-noqa",description:"Enable automatic additions of `noqa` directives to failing lines"},{name:"--show-files",description:"See the files Ruff will be run against with the current settings"},{name:"--show-settings",description:"See the settings Ruff will use to lint a given Python file"},{name:["-h","--help"],description:"Print help"},{name:"--select",description:"Comma-separated list of rule codes to enable (or ALL, to enable all rules)",args:{name:"select",isOptional:!0}},{name:"--ignore",description:"Comma-separated list of rule codes to disable",args:{name:"ignore",isOptional:!0}},{name:"--extend-select",description:"Like --select, but adds additional rule codes on top of the selected ones",args:{name:"extend_select",isOptional:!0}},{name:"--per-file-ignores",description:"List of mappings from file pattern to code to exclude",args:{name:"per_file_ignores",isOptional:!0}},{name:"--extend-per-file-ignores",description:"Like `--per-file-ignores`, but adds additional ignores on top of those already specified",args:{name:"extend_per_file_ignores",isOptional:!0}},{name:"--fixable",description:"List of rule codes to treat as eligible for fix. Only applicable when fix itself is enabled (e.g., via `--fix`)",args:{name:"fixable",isOptional:!0}},{name:"--unfixable",description:"List of rule codes to treat as ineligible for fix. Only applicable when fix itself is enabled (e.g., via `--fix`)",args:{name:"unfixable",isOptional:!0}},{name:"--extend-fixable",description:"Like --fixable, but adds additional rule codes on top of those already specified",args:{name:"extend_fixable",isOptional:!0}},{name:"--exclude",description:"List of paths, used to omit files and/or directories from analysis",args:{name:"exclude",isOptional:!0}},{name:"--extend-exclude",description:"Like --exclude, but adds additional files and directories on top of those already excluded",args:{name:"extend_exclude",isOptional:!0}},{name:"--respect-gitignore",description:"Respect file exclusions via `.gitignore` and other standard ignore files"},{name:"--force-exclude",description:"Enforce exclusions, even for paths passed to Ruff directly on the command-line"},{name:["-n","--no-cache"],description:"Disable cache reads"},{name:"--cache-dir",description:"Path to the cache directory",args:{name:"cache_dir",isOptional:!0,template:"filepaths"}},{name:"--stdin-filename",description:"The name of the file when passing it through stdin",args:{name:"stdin_filename",isOptional:!0,template:"filepaths"}},{name:["-e","--exit-zero"],description:'Exit with status code "0", even upon detecting lint violations'},{name:"--exit-non-zero-on-fix",description:"Exit with a non-zero status code if any files were modified via fix, even if no lint violations remain"}],args:{name:"Path",template:"filepaths",description:"The path to use for the project/script",default:".",isVariadic:!0}},{name:"rule",description:"Explain a rule (or all rules)",args:{name:"rule",description:"Rule(s) to explain",suggestions:[{name:"F401",description:"Unused-import"},{name:"F402",description:"Import-shadowed-by-loop-var"},{name:"F403",description:"Undefined-local-with-import-star"},{name:"F404",description:"Late-future-import"},{name:"F405",description:"Undefined-local-with-import-star-usage"},{name:"F406",description:"Undefined-local-with-nested-import-star-usage"},{name:"F407",description:"Future-feature-not-defined"},{name:"F501",description:"Percent-format-invalid-format"},{name:"F502",description:"Percent-format-expected-mapping"},{name:"F503",description:"Percent-format-expected-sequence"},{name:"F504",description:"Percent-format-extra-named-arguments"},{name:"F505",description:"Percent-format-missing-argument"},{name:"F506",description:"Percent-format-mixed-positional-and-named"},{name:"F507",description:"Percent-format-positional-count-mismatch"},{name:"F508",description:"Percent-format-star-requires-sequence"},{name:"F509",description:"Percent-format-unsupported-format-character"},{name:"F521",description:"String-dot-format-invalid-format"},{name:"F522",description:"String-dot-format-extra-named-arguments"},{name:"F523",description:"String-dot-format-extra-positional-arguments"},{name:"F524",description:"String-dot-format-missing-arguments"},{name:"F525",description:"String-dot-format-mixing-automatic"},{name:"F541",description:"F-string-missing-placeholders"},{name:"F601",description:"Multi-value-repeated-key-literal"},{name:"F602",description:"Multi-value-repeated-key-variable"},{name:"F621",description:"Expressions-in-star-assignment"},{name:"F622",description:"Multiple-starred-expressions"},{name:"F631",description:"Assert-tuple"},{name:"F632",description:"Is-literal"},{name:"F633",description:"Invalid-print-syntax"},{name:"F634",description:"If-tuple"},{name:"F701",description:"Break-outside-loop"},{name:"F702",description:"Continue-outside-loop"},{name:"F704",description:"Yield-outside-function"},{name:"F706",description:"Return-outside-function"},{name:"F707",description:"Default-except-not-last"},{name:"F722",description:"Forward-annotation-syntax-error"},{name:"F811",description:"Redefined-while-unused"},{name:"F821",description:"Undefined-name"},{name:"F822",description:"Undefined-export"},{name:"F823",description:"Undefined-local"},{name:"F841",description:"Unused-variable"},{name:"F842",description:"Unused-annotation"},{name:"F901",description:"Raise-not-implemented"},{name:"E101",description:"Mixed-spaces-and-tabs"},{name:"E111",description:"Indentation-with-invalid-multiple"},{name:"E112",description:"No-indented-block"},{name:"E113",description:"Unexpected-indentation"},{name:"E114",description:"Indentation-with-invalid-multiple-comment"},{name:"E115",description:"No-indented-block-comment"},{name:"E116",description:"Unexpected-indentation-comment"},{name:"E117",description:"Over-indented"},{name:"E201",description:"Whitespace-after-open-bracket"},{name:"E202",description:"Whitespace-before-close-bracket"},{name:"E203",description:"Whitespace-before-punctuation"},{name:"E204",description:"Whitespace-after-decorator"},{name:"E211",description:"Whitespace-before-parameters"},{name:"E221",description:"Multiple-spaces-before-operator"},{name:"E222",description:"Multiple-spaces-after-operator"},{name:"E223",description:"Tab-before-operator"},{name:"E224",description:"Tab-after-operator"},{name:"E225",description:"Missing-whitespace-around-operator"},{name:"E226",description:"Missing-whitespace-around-arithmetic-operator"},{name:"E227",description:"Missing-whitespace-around-bitwise-or-shift-operator"},{name:"E228",description:"Missing-whitespace-around-modulo-operator"},{name:"E231",description:"Missing-whitespace"},{name:"E241",description:"Multiple-spaces-after-comma"},{name:"E242",description:"Tab-after-comma"},{name:"E251",description:"Unexpected-spaces-around-keyword-parameter-equals"},{name:"E252",description:"Missing-whitespace-around-parameter-equals"},{name:"E261",description:"Too-few-spaces-before-inline-comment"},{name:"E262",description:"No-space-after-inline-comment"},{name:"E265",description:"No-space-after-block-comment"},{name:"E266",description:"Multiple-leading-hashes-for-block-comment"},{name:"E271",description:"Multiple-spaces-after-keyword"},{name:"E272",description:"Multiple-spaces-before-keyword"},{name:"E273",description:"Tab-after-keyword"},{name:"E274",description:"Tab-before-keyword"},{name:"E275",description:"Missing-whitespace-after-keyword"},{name:"E301",description:"Blank-line-between-methods"},{name:"E302",description:"Blank-lines-top-level"},{name:"E303",description:"Too-many-blank-lines"},{name:"E304",description:"Blank-line-after-decorator"},{name:"E305",description:"Blank-lines-after-function-or-class"},{name:"E306",description:"Blank-lines-before-nested-definition"},{name:"E401",description:"Multiple-imports-on-one-line"},{name:"E402",description:"Module-import-not-at-top-of-file"},{name:"E501",description:"Line-too-long"},{name:"E502",description:"Redundant-backslash"},{name:"E701",description:"Multiple-statements-on-one-line-colon"},{name:"E702",description:"Multiple-statements-on-one-line-semicolon"},{name:"E703",description:"Useless-semicolon"},{name:"E711",description:"None-comparison"},{name:"E712",description:"True-false-comparison"},{name:"E713",description:"Not-in-test"},{name:"E714",description:"Not-is-test"},{name:"E721",description:"Type-comparison"},{name:"E722",description:"Bare-except"},{name:"E731",description:"Lambda-assignment"},{name:"E741",description:"Ambiguous-variable-name"},{name:"E742",description:"Ambiguous-class-name"},{name:"E743",description:"Ambiguous-function-name"},{name:"E902",description:"Io-error"},{name:"W191",description:"Tab-indentation"},{name:"W291",description:"Trailing-whitespace"},{name:"W292",description:"Missing-newline-at-end-of-file"},{name:"W293",description:"Blank-line-with-whitespace"},{name:"W391",description:"Too-many-newlines-at-end-of-file"},{name:"W505",description:"Doc-line-too-long"},{name:"W605",description:"Invalid-escape-sequence"},{name:"C901",description:"Complex-structure"},{name:"N801",description:"Invalid-class-name"},{name:"N802",description:"Invalid-function-name"},{name:"N803",description:"Invalid-argument-name"},{name:"N804",description:"Invalid-first-argument-name-for-class-method"},{name:"N805",description:"Invalid-first-argument-name-for-method"},{name:"N806",description:"Non-lowercase-variable-in-function"},{name:"N807",description:"Dunder-function-name"},{name:"N811",description:"Constant-imported-as-non-constant"},{name:"N812",description:"Lowercase-imported-as-non-lowercase"},{name:"N813",description:"Camelcase-imported-as-lowercase"},{name:"N814",description:"Camelcase-imported-as-constant"},{name:"N815",description:"Mixed-case-variable-in-class-scope"},{name:"N816",description:"Mixed-case-variable-in-global-scope"},{name:"N817",description:"Camelcase-imported-as-acronym"},{name:"N818",description:"Error-suffix-on-exception-name"},{name:"N999",description:"Invalid-module-name"},{name:"D100",description:"Undocumented-public-module"},{name:"D101",description:"Undocumented-public-class"},{name:"D102",description:"Undocumented-public-method"},{name:"D103",description:"Undocumented-public-function"},{name:"D104",description:"Undocumented-public-package"},{name:"D105",description:"Undocumented-magic-method"},{name:"D106",description:"Undocumented-public-nested-class"},{name:"D107",description:"Undocumented-public-init"},{name:"D200",description:"Fits-on-one-line"},{name:"D201",description:"No-blank-line-before-function"},{name:"D202",description:"No-blank-line-after-function"},{name:"D203",description:"One-blank-line-before-class"},{name:"D204",description:"One-blank-line-after-class"},{name:"D205",description:"Blank-line-after-summary"},{name:"D206",description:"Indent-with-spaces"},{name:"D207",description:"Under-indentation"},{name:"D208",description:"Over-indentation"},{name:"D209",description:"New-line-after-last-paragraph"},{name:"D210",description:"Surrounding-whitespace"},{name:"D211",description:"Blank-line-before-class"},{name:"D212",description:"Multi-line-summary-first-line"},{name:"D213",description:"Multi-line-summary-second-line"},{name:"D214",description:"Section-not-over-indented"},{name:"D215",description:"Section-underline-not-over-indented"},{name:"D300",description:"Triple-single-quotes"},{name:"D301",description:"Escape-sequence-in-docstring"},{name:"D400",description:"Ends-in-period"},{name:"D401",description:"Non-imperative-mood"},{name:"D402",description:"No-signature"},{name:"D403",description:"First-line-capitalized"},{name:"D404",description:"Docstring-starts-with-this"},{name:"D405",description:"Capitalize-section-name"},{name:"D406",description:"New-line-after-section-name"},{name:"D407",description:"Dashed-underline-after-section"},{name:"D408",description:"Section-underline-after-name"},{name:"D409",description:"Section-underline-matches-section-length"},{name:"D410",description:"No-blank-line-after-section"},{name:"D411",description:"No-blank-line-before-section"},{name:"D412",description:"Blank-lines-between-header-and-content"},{name:"D413",description:"Blank-line-after-last-section"},{name:"D414",description:"Empty-docstring-section"},{name:"D415",description:"Ends-in-punctuation"},{name:"D416",description:"Section-name-ends-in-colon"},{name:"D417",description:"Undocumented-param"},{name:"D418",description:"Overload-with-docstring"},{name:"D419",description:"Empty-docstring"},{name:"I001",description:"Unsorted-imports"},{name:"I002",description:"Missing-required-import"},{name:"UP001",description:"Useless-metaclass-type"},{name:"UP003",description:"Type-of-primitive"},{name:"UP004",description:"Useless-object-inheritance"},{name:"UP005",description:"Deprecated-unittest-alias"},{name:"UP006",description:"Non-pep585-annotation"},{name:"UP007",description:"Non-pep604-annotation"},{name:"UP008",description:"Super-call-with-parameters"},{name:"UP009",description:"Utf8-encoding-declaration"},{name:"UP010",description:"Unnecessary-future-import"},{name:"UP011",description:"Lru-cache-without-parameters"},{name:"UP012",description:"Unnecessary-encode-utf8"},{name:"UP013",description:"Convert-typed-dict-functional-to-class"},{name:"UP014",description:"Convert-named-tuple-functional-to-class"},{name:"UP015",description:"Redundant-open-modes"},{name:"UP017",description:"Datetime-timezone-utc"},{name:"UP018",description:"Native-literals"},{name:"UP019",description:"Typing-text-str-alias"},{name:"UP020",description:"Open-alias"},{name:"UP021",description:"Replace-universal-newlines"},{name:"UP022",description:"Replace-stdout-stderr"},{name:"UP023",description:"Deprecated-c-element-tree"},{name:"UP024",description:"Os-error-alias"},{name:"UP025",description:"Unicode-kind-prefix"},{name:"UP026",description:"Deprecated-mock-import"},{name:"UP027",description:"Unpacked-list-comprehension"},{name:"UP028",description:"Yield-in-for-loop"},{name:"UP029",description:"Unnecessary-builtin-import"},{name:"UP030",description:"Format-literals"},{name:"UP031",description:"Printf-string-formatting"},{name:"UP032",description:"F-string"},{name:"UP033",description:"Lru-cache-with-maxsize-none"},{name:"UP034",description:"Extraneous-parentheses"},{name:"UP035",description:"Deprecated-import"},{name:"UP036",description:"Outdated-version-block"},{name:"UP037",description:"Quoted-annotation"},{name:"UP038",description:"Non-pep604-isinstance"},{name:"UP039",description:"Unnecessary-class-parentheses"},{name:"UP040",description:"Non-pep695-type-alias"},{name:"UP041",description:"Timeout-error-alias"},{name:"UP042",description:"Replace-str-enum"},{name:"UP043",description:"Unnecessary-default-type-args"},{name:"UP044",description:"Non-pep646-unpack"},{name:"YTT101",description:"Sys-version-slice3"},{name:"YTT102",description:"Sys-version2"},{name:"YTT103",description:"Sys-version-cmp-str3"},{name:"YTT201",description:"Sys-version-info0-eq3"},{name:"YTT202",description:"Six-py3"},{name:"YTT203",description:"Sys-version-info1-cmp-int"},{name:"YTT204",description:"Sys-version-info-minor-cmp-int"},{name:"YTT301",description:"Sys-version0"},{name:"YTT302",description:"Sys-version-cmp-str10"},{name:"YTT303",description:"Sys-version-slice1"},{name:"ANN001",description:"Missing-type-function-argument"},{name:"ANN002",description:"Missing-type-args"},{name:"ANN003",description:"Missing-type-kwargs"},{name:"ANN201",description:"Missing-return-type-undocumented-public-function"},{name:"ANN202",description:"Missing-return-type-private-function"},{name:"ANN204",description:"Missing-return-type-special-method"},{name:"ANN205",description:"Missing-return-type-static-method"},{name:"ANN206",description:"Missing-return-type-class-method"},{name:"ANN401",description:"Any-type"},{name:"ASYNC100",description:"Cancel-scope-no-checkpoint"},{name:"ASYNC105",description:"Trio-sync-call"},{name:"ASYNC109",description:"Async-function-with-timeout"},{name:"ASYNC110",description:"Async-busy-wait"},{name:"ASYNC115",description:"Async-zero-sleep"},{name:"ASYNC116",description:"Long-sleep-not-forever"},{name:"ASYNC210",description:"Blocking-http-call-in-async-function"},{name:"ASYNC220",description:"Create-subprocess-in-async-function"},{name:"ASYNC221",description:"Run-process-in-async-function"},{name:"ASYNC222",description:"Wait-for-process-in-async-function"},{name:"ASYNC230",description:"Blocking-open-call-in-async-function"},{name:"ASYNC251",description:"Blocking-sleep-in-async-function"},{name:"S101",description:"Assert"},{name:"S102",description:"Exec-builtin"},{name:"S103",description:"Bad-file-permissions"},{name:"S104",description:"Hardcoded-bind-all-interfaces"},{name:"S105",description:"Hardcoded-password-string"},{name:"S106",description:"Hardcoded-password-func-arg"},{name:"S107",description:"Hardcoded-password-default"},{name:"S108",description:"Hardcoded-temp-file"},{name:"S110",description:"Try-except-pass"},{name:"S112",description:"Try-except-continue"},{name:"S113",description:"Request-without-timeout"},{name:"S201",description:"Flask-debug-true"},{name:"S202",description:"Tarfile-unsafe-members"},{name:"S301",description:"Suspicious-pickle-usage"},{name:"S302",description:"Suspicious-marshal-usage"},{name:"S303",description:"Suspicious-insecure-hash-usage"},{name:"S304",description:"Suspicious-insecure-cipher-usage"},{name:"S305",description:"Suspicious-insecure-cipher-mode-usage"},{name:"S306",description:"Suspicious-mktemp-usage"},{name:"S307",description:"Suspicious-eval-usage"},{name:"S308",description:"Suspicious-mark-safe-usage"},{name:"S310",description:"Suspicious-url-open-usage"},{name:"S311",description:"Suspicious-non-cryptographic-random-usage"},{name:"S312",description:"Suspicious-telnet-usage"},{name:"S313",description:"Suspicious-xmlc-element-tree-usage"},{name:"S314",description:"Suspicious-xml-element-tree-usage"},{name:"S315",description:"Suspicious-xml-expat-reader-usage"},{name:"S316",description:"Suspicious-xml-expat-builder-usage"},{name:"S317",description:"Suspicious-xml-sax-usage"},{name:"S318",description:"Suspicious-xml-mini-dom-usage"},{name:"S319",description:"Suspicious-xml-pull-dom-usage"},{name:"S320",description:"Suspicious-xmle-tree-usage"},{name:"S321",description:"Suspicious-ftp-lib-usage"},{name:"S323",description:"Suspicious-unverified-context-usage"},{name:"S324",description:"Hashlib-insecure-hash-function"},{name:"S401",description:"Suspicious-telnetlib-import"},{name:"S402",description:"Suspicious-ftplib-import"},{name:"S403",description:"Suspicious-pickle-import"},{name:"S404",description:"Suspicious-subprocess-import"},{name:"S405",description:"Suspicious-xml-etree-import"},{name:"S406",description:"Suspicious-xml-sax-import"},{name:"S407",description:"Suspicious-xml-expat-import"},{name:"S408",description:"Suspicious-xml-minidom-import"},{name:"S409",description:"Suspicious-xml-pulldom-import"},{name:"S410",description:"Suspicious-lxml-import"},{name:"S411",description:"Suspicious-xmlrpc-import"},{name:"S412",description:"Suspicious-httpoxy-import"},{name:"S413",description:"Suspicious-pycrypto-import"},{name:"S415",description:"Suspicious-pyghmi-import"},{name:"S501",description:"Request-with-no-cert-validation"},{name:"S502",description:"Ssl-insecure-version"},{name:"S503",description:"Ssl-with-bad-defaults"},{name:"S504",description:"Ssl-with-no-version"},{name:"S505",description:"Weak-cryptographic-key"},{name:"S506",description:"Unsafe-yaml-load"},{name:"S507",description:"Ssh-no-host-key-verification"},{name:"S508",description:"Snmp-insecure-version"},{name:"S509",description:"Snmp-weak-cryptography"},{name:"S601",description:"Paramiko-call"},{name:"S602",description:"Subprocess-popen-with-shell-equals-true"},{name:"S603",description:"Subprocess-without-shell-equals-true"},{name:"S604",description:"Call-with-shell-equals-true"},{name:"S605",description:"Start-process-with-a-shell"},{name:"S606",description:"Start-process-with-no-shell"},{name:"S607",description:"Start-process-with-partial-path"},{name:"S608",description:"Hardcoded-sql-expression"},{name:"S609",description:"Unix-command-wildcard-injection"},{name:"S610",description:"Django-extra"},{name:"S611",description:"Django-raw-sql"},{name:"S612",description:"Logging-config-insecure-listen"},{name:"S701",description:"Jinja2-autoescape-false"},{name:"S702",description:"Mako-templates"},{name:"BLE001",description:"Do not catch blind exception"},{name:"B002",description:"Unary-prefix-increment-decrement"},{name:"B003",description:"Assignment-to-os-environ"},{name:"B004",description:"Unreliable-callable-check"},{name:"B005",description:"Strip-with-multi-characters"},{name:"B006",description:"Mutable-argument-default"},{name:"B007",description:"Unused-loop-control-variable"},{name:"B008",description:"Function-call-in-default-argument"},{name:"B009",description:"Get-attr-with-constant"},{name:"B010",description:"Set-attr-with-constant"},{name:"B011",description:"Assert-false"},{name:"B012",description:"Jump-statement-in-finally"},{name:"B013",description:"Redundant-tuple-in-exception-handler"},{name:"B014",description:"Duplicate-handler-exception"},{name:"B015",description:"Useless-comparison"},{name:"B016",description:"Raise-literal"},{name:"B017",description:"Assert-raises-exception"},{name:"B018",description:"Useless-expression"},{name:"B019",description:"Cached-instance-method"},{name:"B020",description:"Loop-variable-overrides-iterator"},{name:"B021",description:"F-string-docstring"},{name:"B022",description:"Useless-contextlib-suppress"},{name:"B023",description:"Function-uses-loop-variable"},{name:"B024",description:"Abstract-base-class-without-abstract-method"},{name:"B025",description:"Duplicate-try-block-exception"},{name:"B026",description:"Star-arg-unpacking-after-keyword-arg"},{name:"B027",description:"Empty-method-without-abstract-decorator"},{name:"B028",description:"No-explicit-stacklevel"},{name:"B029",description:"Except-with-empty-tuple"},{name:"B030",description:"Except-with-non-exception-classes"},{name:"B031",description:"Reuse-of-groupby-generator"},{name:"B032",description:"Unintentional-type-annotation"},{name:"B033",description:"Duplicate-value"},{name:"B034",description:"Re-sub-positional-args"},{name:"B035",description:"Static-key-dict-comprehension"},{name:"B039",description:"Mutable-contextvar-default"},{name:"B901",description:"Return-in-generator"},{name:"B904",description:"Raise-without-from-inside-except"},{name:"B905",description:"Zip-without-explicit-strict"},{name:"B909",description:"Loop-iterator-mutation"},{name:"FBT001",description:"Boolean-typed positional argument in function definition"},{name:"FBT002",description:"Boolean default positional argument in function definition"},{name:"FBT003",description:"Boolean positional value in function call"},{name:"A001",description:"Builtin-variable-shadowing"},{name:"A002",description:"Builtin-argument-shadowing"},{name:"A003",description:"Builtin-attribute-shadowing"},{name:"A004",description:"Builtin-import-shadowing"},{name:"A005",description:"Builtin-module-shadowing"},{name:"A006",description:"Builtin-lambda-argument-shadowing"},{name:"COM812",description:"Missing-trailing-comma"},{name:"COM818",description:"Trailing-comma-on-bare-tuple"},{name:"COM819",description:"Prohibited-trailing-comma"},{name:"CPY001",description:"Missing-copyright-notice"},{name:"C400",description:"Unnecessary-generator-list"},{name:"C401",description:"Unnecessary-generator-set"},{name:"C402",description:"Unnecessary-generator-dict"},{name:"C403",description:"Unnecessary-list-comprehension-set"},{name:"C404",description:"Unnecessary-list-comprehension-dict"},{name:"C405",description:"Unnecessary-literal-set"},{name:"C406",description:"Unnecessary-literal-dict"},{name:"C408",description:"Unnecessary-collection-call"},{name:"C409",description:"Unnecessary-literal-within-tuple-call"},{name:"C410",description:"Unnecessary-literal-within-list-call"},{name:"C411",description:"Unnecessary-list-call"},{name:"C413",description:"Unnecessary-call-around-sorted"},{name:"C414",description:"Unnecessary-double-cast-or-process"},{name:"C415",description:"Unnecessary-subscript-reversal"},{name:"C416",description:"Unnecessary-comprehension"},{name:"C417",description:"Unnecessary-map"},{name:"C418",description:"Unnecessary-literal-within-dict-call"},{name:"C419",description:"Unnecessary-comprehension-in-call"},{name:"C420",description:"Unnecessary-dict-comprehension-for-iterable"},{name:"DTZ001",description:"Call-datetime-without-tzinfo"},{name:"DTZ002",description:"Call-datetime-today"},{name:"DTZ003",description:"Call-datetime-utcnow"},{name:"DTZ004",description:"Call-datetime-utcfromtimestamp"},{name:"DTZ005",description:"Call-datetime-now-without-tzinfo"},{name:"DTZ006",description:"Call-datetime-fromtimestamp"},{name:"DTZ007",description:"Call-datetime-strptime-without-zone"},{name:"DTZ011",description:"Call-date-today"},{name:"DTZ012",description:"Call-date-fromtimestamp"},{name:"DTZ901",description:"Datetime-min-max"},{name:"DJ001",description:"Django-nullable-model-string-field"},{name:"DJ003",description:"Django-locals-in-render-function"},{name:"DJ006",description:"Django-exclude-with-model-form"},{name:"DJ007",description:"Django-all-with-model-form"},{name:"DJ008",description:"Django-model-without-dunder-str"},{name:"DJ012",description:"Django-unordered-body-content-in-model"},{name:"DJ013",description:"Django-non-leading-receiver-decorator"},{name:"EM101",description:"Raw-string-in-exception"},{name:"EM102",description:"F-string-in-exception"},{name:"EM103",description:"Dot-format-in-exception"},{name:"EXE001",description:"Shebang-not-executable"},{name:"EXE002",description:"Shebang-missing-executable-file"},{name:"EXE003",description:"Shebang-missing-python"},{name:"EXE004",description:"Shebang-leading-whitespace"},{name:"EXE005",description:"Shebang-not-first-line"},{name:"FA100",description:"Future-rewritable-type-annotation"},{name:"FA102",description:"Future-required-type-annotation"},{name:"ISC001",description:"Single-line-implicit-string-concatenation"},{name:"ISC002",description:"Multi-line-implicit-string-concatenation"},{name:"ISC003",description:"Explicit-string-concatenation"},{name:"ICN001",description:"Unconventional-import-alias"},{name:"ICN002",description:"Banned-import-alias"},{name:"ICN003",description:"Banned-import-from"},{name:"LOG001",description:"Direct-logger-instantiation"},{name:"LOG002",description:"Invalid-get-logger-argument"},{name:"LOG007",description:"Exception-without-exc-info"},{name:"LOG009",description:"Undocumented-warn"},{name:"LOG015",description:"Root-logger-call"},{name:"G001",description:"Logging-string-format"},{name:"G002",description:"Logging-percent-format"},{name:"G003",description:"Logging-string-concat"},{name:"G004",description:"Logging-f-string"},{name:"G010",description:"Logging-warn"},{name:"G101",description:"Logging-extra-attr-clash"},{name:"G201",description:"Logging-exc-info"},{name:"G202",description:"Logging-redundant-exc-info"},{name:"INP001",description:"Implicit-namespace-package"},{name:"PIE790",description:"Unnecessary-placeholder"},{name:"PIE794",description:"Duplicate-class-field-definition"},{name:"PIE796",description:"Non-unique-enums"},{name:"PIE800",description:"Unnecessary-spread"},{name:"PIE804",description:"Unnecessary-dict-kwargs"},{name:"PIE807",description:"Reimplemented-container-builtin"},{name:"PIE808",description:"Unnecessary-range-start"},{name:"PIE810",description:"Multiple-starts-ends-with"},{name:"T201",description:"Print"},{name:"T203",description:"P-print"},{name:"PYI001",description:"Unprefixed-type-param"},{name:"PYI002",description:"Complex-if-statement-in-stub"},{name:"PYI003",description:"Unrecognized-version-info-check"},{name:"PYI004",description:"Patch-version-comparison"},{name:"PYI005",description:"Wrong-tuple-length-version-comparison"},{name:"PYI006",description:"Bad-version-info-comparison"},{name:"PYI007",description:"Unrecognized-platform-check"},{name:"PYI008",description:"Unrecognized-platform-name"},{name:"PYI009",description:"Pass-statement-stub-body"},{name:"PYI010",description:"Non-empty-stub-body"},{name:"PYI011",description:"Typed-argument-default-in-stub"},{name:"PYI012",description:"Pass-in-class-body"},{name:"PYI013",description:"Ellipsis-in-non-empty-class-body"},{name:"PYI014",description:"Argument-default-in-stub"},{name:"PYI015",description:"Assignment-default-in-stub"},{name:"PYI016",description:"Duplicate-union-member"},{name:"PYI017",description:"Complex-assignment-in-stub"},{name:"PYI018",description:"Unused-private-type-var"},{name:"PYI019",description:"Custom-type-var-return-type"},{name:"PYI020",description:"Quoted-annotation-in-stub"},{name:"PYI021",description:"Docstring-in-stub"},{name:"PYI024",description:"Collections-named-tuple"},{name:"PYI025",description:"Unaliased-collections-abc-set-import"},{name:"PYI026",description:"Type-alias-without-annotation"},{name:"PYI029",description:"Str-or-repr-defined-in-stub"},{name:"PYI030",description:"Unnecessary-literal-union"},{name:"PYI032",description:"Any-eq-ne-annotation"},{name:"PYI033",description:"Type-comment-in-stub"},{name:"PYI034",description:"Non-self-return-type"},{name:"PYI035",description:"Unassigned-special-variable-in-stub"},{name:"PYI036",description:"Bad-exit-annotation"},{name:"PYI041",description:"Redundant-numeric-union"},{name:"PYI042",description:"Snake-case-type-alias"},{name:"PYI043",description:"T-suffixed-type-alias"},{name:"PYI044",description:"Future-annotations-in-stub"},{name:"PYI045",description:"Iter-method-return-iterable"},{name:"PYI046",description:"Unused-private-protocol"},{name:"PYI047",description:"Unused-private-type-alias"},{name:"PYI048",description:"Stub-body-multiple-statements"},{name:"PYI049",description:"Unused-private-typed-dict"},{name:"PYI050",description:"No-return-argument-annotation-in-stub"},{name:"PYI051",description:"Redundant-literal-union"},{name:"PYI052",description:"Unannotated-assignment-in-stub"},{name:"PYI053",description:"String-or-bytes-too-long"},{name:"PYI054",description:"Numeric-literal-too-long"},{name:"PYI055",description:"Unnecessary-type-union"},{name:"PYI056",description:"Unsupported-method-call-on-all"},{name:"PYI057",description:"Byte-string-usage"},{name:"PYI058",description:"Generator-return-from-iter-method"},{name:"PYI059",description:"Generic-not-last-base-class"},{name:"PYI061",description:"Redundant-none-literal"},{name:"PYI062",description:"Duplicate-literal-member"},{name:"PYI063",description:"Pep484-style-positional-only-parameter"},{name:"PYI064",description:"Redundant-final-literal"},{name:"PYI066",description:"Bad-version-info-order"},{name:"PT001",description:"Pytest-fixture-incorrect-parentheses-style"},{name:"PT002",description:"Pytest-fixture-positional-args"},{name:"PT003",description:"Pytest-extraneous-scope-function"},{name:"PT004",description:"Pytest-missing-fixture-name-underscore"},{name:"PT005",description:"Pytest-incorrect-fixture-name-underscore"},{name:"PT006",description:"Pytest-parametrize-names-wrong-type"},{name:"PT007",description:"Pytest-parametrize-values-wrong-type"},{name:"PT008",description:"Pytest-patch-with-lambda"},{name:"PT009",description:"Pytest-unittest-assertion"},{name:"PT010",description:"Pytest-raises-without-exception"},{name:"PT011",description:"Pytest-raises-too-broad"},{name:"PT012",description:"Pytest-raises-with-multiple-statements"},{name:"PT013",description:"Pytest-incorrect-pytest-import"},{name:"PT014",description:"Pytest-duplicate-parametrize-test-cases"},{name:"PT015",description:"Pytest-assert-always-false"},{name:"PT016",description:"Pytest-fail-without-message"},{name:"PT017",description:"Pytest-assert-in-except"},{name:"PT018",description:"Pytest-composite-assertion"},{name:"PT019",description:"Pytest-fixture-param-without-value"},{name:"PT020",description:"Pytest-deprecated-yield-fixture"},{name:"PT021",description:"Pytest-fixture-finalizer-callback"},{name:"PT022",description:"Pytest-useless-yield-fixture"},{name:"PT023",description:"Pytest-incorrect-mark-parentheses-style"},{name:"PT024",description:"Pytest-unnecessary-asyncio-mark-on-fixture"},{name:"PT025",description:"Pytest-erroneous-use-fixtures-on-fixture"},{name:"PT026",description:"Pytest-use-fixtures-without-parameters"},{name:"PT027",description:"Pytest-unittest-raises-assertion"},{name:"Q000",description:"Bad-quotes-inline-string"},{name:"Q001",description:"Bad-quotes-multiline-string"},{name:"Q002",description:"Bad-quotes-docstring"},{name:"Q003",description:"Avoidable-escaped-quote"},{name:"Q004",description:"Unnecessary-escaped-quote"},{name:"RSE102",description:"Unnecessary-paren-on-raise-exception"},{name:"RET501",description:"Unnecessary-return-none"},{name:"RET502",description:"Implicit-return-value"},{name:"RET503",description:"Implicit-return"},{name:"RET504",description:"Unnecessary-assign"},{name:"RET505",description:"Superfluous-else-return"},{name:"RET506",description:"Superfluous-else-raise"},{name:"RET507",description:"Superfluous-else-continue"},{name:"RET508",description:"Superfluous-else-break"},{name:"SLF001",description:"Private-member-access"},{name:"SLOT000",description:"No-slots-in-str-subclass"},{name:"SLOT001",description:"No-slots-in-tuple-subclass"},{name:"SLOT002",description:"No-slots-in-namedtuple-subclass"},{name:"SIM101",description:"Duplicate-isinstance-call"},{name:"SIM102",description:"Collapsible-if"},{name:"SIM103",description:"Needless-bool"},{name:"SIM105",description:"Suppressible-exception"},{name:"SIM107",description:"Return-in-try-except-finally"},{name:"SIM108",description:"If-else-block-instead-of-if-exp"},{name:"SIM109",description:"Compare-with-tuple"},{name:"SIM110",description:"Reimplemented-builtin"},{name:"SIM112",description:"Uncapitalized-environment-variables"},{name:"SIM113",description:"Enumerate-for-loop"},{name:"SIM114",description:"If-with-same-arms"},{name:"SIM115",description:"Open-file-with-context-handler"},{name:"SIM116",description:"If-else-block-instead-of-dict-lookup"},{name:"SIM117",description:"Multiple-with-statements"},{name:"SIM118",description:"In-dict-keys"},{name:"SIM201",description:"Negate-equal-op"},{name:"SIM202",description:"Negate-not-equal-op"},{name:"SIM208",description:"Double-negation"},{name:"SIM210",description:"If-expr-with-true-false"},{name:"SIM211",description:"If-expr-with-false-true"},{name:"SIM212",description:"If-expr-with-twisted-arms"},{name:"SIM220",description:"Expr-and-not-expr"},{name:"SIM221",description:"Expr-or-not-expr"},{name:"SIM222",description:"Expr-or-true"},{name:"SIM223",description:"Expr-and-false"},{name:"SIM300",description:"Yoda-conditions"},{name:"SIM401",description:"If-else-block-instead-of-dict-get"},{name:"SIM905",description:"Split-static-string"},{name:"SIM910",description:"Dict-get-with-none-default"},{name:"SIM911",description:"Zip-dict-keys-and-values"},{name:"TID251",description:"Banned-api"},{name:"TID252",description:"Relative-imports"},{name:"TID253",description:"Banned-module-level-imports"},{name:"TC001",description:"Typing-only-first-party-import"},{name:"TC002",description:"Typing-only-third-party-import"},{name:"TC003",description:"Typing-only-standard-library-import"},{name:"TC004",description:"Runtime-import-in-type-checking-block"},{name:"TC005",description:"Empty-type-checking-block"},{name:"TC006",description:"Runtime-cast-value"},{name:"TC007",description:"Unquoted-type-alias"},{name:"TC008",description:"Quoted-type-alias"},{name:"TC010",description:"Runtime-string-union"},{name:"INT001",description:"F-string-in-get-text-func-call"},{name:"INT002",description:"Format-in-get-text-func-call"},{name:"INT003",description:"Printf-in-get-text-func-call"},{name:"ARG001",description:"Unused-function-argument"},{name:"ARG002",description:"Unused-method-argument"},{name:"ARG003",description:"Unused-class-method-argument"},{name:"ARG004",description:"Unused-static-method-argument"},{name:"ARG005",description:"Unused-lambda-argument"},{name:"PTH100",description:"Os-path-abspath"},{name:"PTH101",description:"Os-chmod"},{name:"PTH102",description:"Os-mkdir"},{name:"PTH103",description:"Os-makedirs"},{name:"PTH104",description:"Os-rename"},{name:"PTH105",description:"Os-replace"},{name:"PTH106",description:"Os-rmdir"},{name:"PTH107",description:"Os-remove"},{name:"PTH108",description:"Os-unlink"},{name:"PTH109",description:"Os-getcwd"},{name:"PTH110",description:"Os-path-exists"},{name:"PTH111",description:"Os-path-expanduser"},{name:"PTH112",description:"Os-path-isdir"},{name:"PTH113",description:"Os-path-isfile"},{name:"PTH114",description:"Os-path-islink"},{name:"PTH115",description:"Os-readlink"},{name:"PTH116",description:"Os-stat"},{name:"PTH117",description:"Os-path-isabs"},{name:"PTH118",description:"Os-path-join"},{name:"PTH119",description:"Os-path-basename"},{name:"PTH120",description:"Os-path-dirname"},{name:"PTH121",description:"Os-path-samefile"},{name:"PTH122",description:"Os-path-splitext"},{name:"PTH123",description:"Builtin-open"},{name:"PTH124",description:"Py-path"},{name:"PTH201",description:"Path-constructor-current-directory"},{name:"PTH202",description:"Os-path-getsize"},{name:"PTH203",description:"Os-path-getatime"},{name:"PTH204",description:"Os-path-getmtime"},{name:"PTH205",description:"Os-path-getctime"},{name:"PTH206",description:"Os-sep-split"},{name:"PTH207",description:"Glob"},{name:"PTH208",description:"Os-listdir"},{name:"TD001",description:"Invalid-todo-tag"},{name:"TD002",description:"Missing-todo-author"},{name:"TD003",description:"Missing-todo-link"},{name:"TD004",description:"Missing-todo-colon"},{name:"TD005",description:"Missing-todo-description"},{name:"TD006",description:"Invalid-todo-capitalization"},{name:"TD007",description:"Missing-space-after-todo-colon"},{name:"FIX001",description:"Line-contains-fixme"},{name:"FIX002",description:"Line-contains-todo"},{name:"FIX003",description:"Line-contains-xxx"},{name:"FIX004",description:"Line-contains-hack"},{name:"ERA001",description:"Commented-out-code"},{name:"PD002",description:"Pandas-use-of-inplace-argument"},{name:"PD003",description:"Pandas-use-of-dot-is-null"},{name:"PD004",description:"Pandas-use-of-dot-not-null"},{name:"PD007",description:"Pandas-use-of-dot-ix"},{name:"PD008",description:"Pandas-use-of-dot-at"},{name:"PD009",description:"Pandas-use-of-dot-iat"},{name:"PD010",description:"Pandas-use-of-dot-pivot-or-unstack"},{name:"PD011",description:"Pandas-use-of-dot-values"},{name:"PD012",description:"Pandas-use-of-dot-read-table"},{name:"PD013",description:"Pandas-use-of-dot-stack"},{name:"PD015",description:"Pandas-use-of-pd-merge"},{name:"PD101",description:"Pandas-nunique-constant-series-check"},{name:"PD901",description:"Pandas-df-variable-name"},{name:"PGH001",description:"Eval"},{name:"PGH002",description:"Deprecated-log-warn"},{name:"PGH003",description:"Blanket-type-ignore"},{name:"PGH004",description:"Blanket-noqa"},{name:"PGH005",description:"Invalid-mock-access"},{name:"PLC0105",description:"Type-name-incorrect-variance"},{name:"PLC0131",description:"Type-bivariance"},{name:"PLC0132",description:"Type-param-name-mismatch"},{name:"PLC0205",description:"Single-string-slots"},{name:"PLC0206",description:"Dict-index-missing-items"},{name:"PLC0208",description:"Iteration-over-set"},{name:"PLC0414",description:"Useless-import-alias"},{name:"PLC0415",description:"Import-outside-top-level"},{name:"PLC1802",description:"Len-test"},{name:"PLC1901",description:"Compare-to-empty-string"},{name:"PLC2401",description:"Non-ascii-name"},{name:"PLC2403",description:"Non-ascii-import-name"},{name:"PLC2701",description:"Import-private-name"},{name:"PLC2801",description:"Unnecessary-dunder-call"},{name:"PLC3002",description:"Unnecessary-direct-lambda-call"},{name:"PLE0100",description:"Yield-in-init"},{name:"PLE0101",description:"Return-in-init"},{name:"PLE0115",description:"Nonlocal-and-global"},{name:"PLE0116",description:"Continue-in-finally"},{name:"PLE0117",description:"Nonlocal-without-binding"},{name:"PLE0118",description:"Load-before-global-declaration"},{name:"PLE0237",description:"Non-slot-assignment"},{name:"PLE0241",description:"Duplicate-bases"},{name:"PLE0302",description:"Unexpected-special-method-signature"},{name:"PLE0303",description:"Invalid-length-return-type"},{name:"PLE0304",description:"Invalid-bool-return-type"},{name:"PLE0305",description:"Invalid-index-return-type"},{name:"PLE0307",description:"Invalid-str-return-type"},{name:"PLE0308",description:"Invalid-bytes-return-type"},{name:"PLE0309",description:"Invalid-hash-return-type"},{name:"PLE0604",description:"Invalid-all-object"},{name:"PLE0605",description:"Invalid-all-format"},{name:"PLE0643",description:"Potential-index-error"},{name:"PLE0704",description:"Misplaced-bare-raise"},{name:"PLE1132",description:"Repeated-keyword-argument"},{name:"PLE1141",description:"Dict-iter-missing-items"},{name:"PLE1142",description:"Await-outside-async"},{name:"PLE1205",description:"Logging-too-many-args"},{name:"PLE1206",description:"Logging-too-few-args"},{name:"PLE1300",description:"Bad-string-format-character"},{name:"PLE1307",description:"Bad-string-format-type"},{name:"PLE1310",description:"Bad-str-strip-call"},{name:"PLE1507",description:"Invalid-envvar-value"},{name:"PLE1519",description:"Singledispatch-method"},{name:"PLE1520",description:"Singledispatchmethod-function"},{name:"PLE1700",description:"Yield-from-in-async-function"},{name:"PLE2502",description:"Bidirectional-unicode"},{name:"PLE2510",description:"Invalid-character-backspace"},{name:"PLE2512",description:"Invalid-character-sub"},{name:"PLE2513",description:"Invalid-character-esc"},{name:"PLE2514",description:"Invalid-character-nul"},{name:"PLE2515",description:"Invalid-character-zero-width-space"},{name:"PLE4703",description:"Modified-iterating-set"},{name:"PLR0124",description:"Comparison-with-itself"},{name:"PLR0133",description:"Comparison-of-constant"},{name:"PLR0202",description:"No-classmethod-decorator"},{name:"PLR0203",description:"No-staticmethod-decorator"},{name:"PLR0206",description:"Property-with-parameters"},{name:"PLR0402",description:"Manual-from-import"},{name:"PLR0904",description:"Too-many-public-methods"},{name:"PLR0911",description:"Too-many-return-statements"},{name:"PLR0912",description:"Too-many-branches"},{name:"PLR0913",description:"Too-many-arguments"},{name:"PLR0914",description:"Too-many-locals"},{name:"PLR0915",description:"Too-many-statements"},{name:"PLR0916",description:"Too-many-boolean-expressions"},{name:"PLR0917",description:"Too-many-positional-arguments"},{name:"PLR1701",description:"Repeated-isinstance-calls"},{name:"PLR1702",description:"Too-many-nested-blocks"},{name:"PLR1704",description:"Redefined-argument-from-local"},{name:"PLR1706",description:"And-or-ternary"},{name:"PLR1711",description:"Useless-return"},{name:"PLR1714",description:"Repeated-equality-comparison"},{name:"PLR1716",description:"Boolean-chained-comparison"},{name:"PLR1722",description:"Sys-exit-alias"},{name:"PLR1730",description:"If-stmt-min-max"},{name:"PLR1733",description:"Unnecessary-dict-index-lookup"},{name:"PLR1736",description:"Unnecessary-list-index-lookup"},{name:"PLR2004",description:"Magic-value-comparison"},{name:"PLR2044",description:"Empty-comment"},{name:"PLR5501",description:"Collapsible-else-if"},{name:"PLR6104",description:"Non-augmented-assignment"},{name:"PLR6201",description:"Literal-membership"},{name:"PLR6301",description:"No-self-use"},{name:"PLW0108",description:"Unnecessary-lambda"},{name:"PLW0120",description:"Useless-else-on-loop"},{name:"PLW0127",description:"Self-assigning-variable"},{name:"PLW0128",description:"Redeclared-assigned-name"},{name:"PLW0129",description:"Assert-on-string-literal"},{name:"PLW0131",description:"Named-expr-without-context"},{name:"PLW0133",description:"Useless-exception-statement"},{name:"PLW0177",description:"Nan-comparison"},{name:"PLW0211",description:"Bad-staticmethod-argument"},{name:"PLW0245",description:"Super-without-brackets"},{name:"PLW0406",description:"Import-self"},{name:"PLW0602",description:"Global-variable-not-assigned"},{name:"PLW0603",description:"Global-statement"},{name:"PLW0604",description:"Global-at-module-level"},{name:"PLW0642",description:"Self-or-cls-assignment"},{name:"PLW0711",description:"Binary-op-exception"},{name:"PLW1501",description:"Bad-open-mode"},{name:"PLW1507",description:"Shallow-copy-environ"},{name:"PLW1508",description:"Invalid-envvar-default"},{name:"PLW1509",description:"Subprocess-popen-preexec-fn"},{name:"PLW1510",description:"Subprocess-run-without-check"},{name:"PLW1514",description:"Unspecified-encoding"},{name:"PLW1641",description:"Eq-without-hash"},{name:"PLW2101",description:"Useless-with-lock"},{name:"PLW2901",description:"Redefined-loop-name"},{name:"PLW3201",description:"Bad-dunder-method-name"},{name:"PLW3301",description:"Nested-min-max"},{name:"TRY002",description:"Raise-vanilla-class"},{name:"TRY003",description:"Raise-vanilla-args"},{name:"TRY004",description:"Type-check-without-type-error"},{name:"TRY200",description:"Reraise-no-cause"},{name:"TRY201",description:"Verbose-raise"},{name:"TRY203",description:"Useless-try-except"},{name:"TRY300",description:"Try-consider-else"},{name:"TRY301",description:"Raise-within-try"},{name:"TRY400",description:"Error-instead-of-exception"},{name:"TRY401",description:"Verbose-log-message"},{name:"FLY002",description:"Static-join-to-f-string"},{name:"NPY001",description:"Numpy-deprecated-type-alias"},{name:"NPY002",description:"Numpy-legacy-random"},{name:"NPY003",description:"Numpy-deprecated-function"},{name:"NPY201",description:"Numpy2-deprecation"},{name:"FAST001",description:"Fast-api-redundant-response-model"},{name:"FAST002",description:"Fast-api-non-annotated-dependency"},{name:"FAST003",description:"Fast-api-unused-path-parameter"},{name:"AIR001",description:"Airflow-variable-name-task-id-mismatch"},{name:"AIR301",description:"Airflow-dag-no-schedule-argument"},{name:"AIR302",description:"Airflow3-removal"},{name:"PERF101",description:"Unnecessary-list-cast"},{name:"PERF102",description:"Incorrect-dict-iterator"},{name:"PERF203",description:"Try-except-in-loop"},{name:"PERF401",description:"Manual-list-comprehension"},{name:"PERF402",description:"Manual-list-copy"},{name:"PERF403",description:"Manual-dict-comprehension"},{name:"FURB101",description:"Read-whole-file"},{name:"FURB103",description:"Write-whole-file"},{name:"FURB105",description:"Print-empty-string"},{name:"FURB110",description:"If-exp-instead-of-or-operator"},{name:"FURB113",description:"Repeated-append"},{name:"FURB116",description:"F-string-number-format"},{name:"FURB118",description:"Reimplemented-operator"},{name:"FURB129",description:"Readlines-in-for"},{name:"FURB131",description:"Delete-full-slice"},{name:"FURB132",description:"Check-and-remove-from-set"},{name:"FURB136",description:"If-expr-min-max"},{name:"FURB140",description:"Reimplemented-starmap"},{name:"FURB142",description:"For-loop-set-mutations"},{name:"FURB145",description:"Slice-copy"},{name:"FURB148",description:"Unnecessary-enumerate"},{name:"FURB152",description:"Math-constant"},{name:"FURB154",description:"Repeated-global"},{name:"FURB156",description:"Hardcoded-string-charset"},{name:"FURB157",description:"Verbose-decimal-constructor"},{name:"FURB161",description:"Bit-count"},{name:"FURB163",description:"Redundant-log-base"},{name:"FURB164",description:"Unnecessary-from-float"},{name:"FURB166",description:"Int-on-sliced-str"},{name:"FURB167",description:"Regex-flag-alias"},{name:"FURB168",description:"Isinstance-type-none"},{name:"FURB169",description:"Type-none-comparison"},{name:"FURB171",description:"Single-item-membership-test"},{name:"FURB177",description:"Implicit-cwd"},{name:"FURB180",description:"Meta-class-abc-meta"},{name:"FURB181",description:"Hashlib-digest-hex"},{name:"FURB187",description:"List-reverse-copy"},{name:"FURB188",description:"Slice-to-remove-prefix-or-suffix"},{name:"FURB189",description:"Subclass-builtin"},{name:"FURB192",description:"Sorted-min-max"},{name:"DOC201",description:"Docstring-missing-returns"},{name:"DOC202",description:"Docstring-extraneous-returns"},{name:"DOC402",description:"Docstring-missing-yields"},{name:"DOC403",description:"Docstring-extraneous-yields"},{name:"DOC501",description:"Docstring-missing-exception"},{name:"DOC502",description:"Docstring-extraneous-exception"},{name:"RUF001",description:"Ambiguous-unicode-character-string"},{name:"RUF002",description:"Ambiguous-unicode-character-docstring"},{name:"RUF003",description:"Ambiguous-unicode-character-comment"},{name:"RUF005",description:"Collection-literal-concatenation"},{name:"RUF006",description:"Asyncio-dangling-task"},{name:"RUF007",description:"Zip-instead-of-pairwise"},{name:"RUF008",description:"Mutable-dataclass-default"},{name:"RUF009",description:"Function-call-in-dataclass-default-argument"},{name:"RUF010",description:"Explicit-f-string-type-conversion"},{name:"RUF011",description:"Ruff-static-key-dict-comprehension"},{name:"RUF012",description:"Mutable-class-default"},{name:"RUF013",description:"Implicit-optional"},{name:"RUF015",description:"Unnecessary-iterable-allocation-for-first-element"},{name:"RUF016",description:"Invalid-index-type"},{name:"RUF017",description:"Quadratic-list-summation"},{name:"RUF018",description:"Assignment-in-assert"},{name:"RUF019",description:"Unnecessary-key-check"},{name:"RUF020",description:"Never-union"},{name:"RUF021",description:"Parenthesize-chained-operators"},{name:"RUF022",description:"Unsorted-dunder-all"},{name:"RUF023",description:"Unsorted-dunder-slots"},{name:"RUF024",description:"Mutable-fromkeys-value"},{name:"RUF026",description:"Default-factory-kwarg"},{name:"RUF027",description:"Missing-f-string-syntax"},{name:"RUF028",description:"Invalid-formatter-suppression-comment"},{name:"RUF029",description:"Unused-async"},{name:"RUF030",description:"Assert-with-print-message"},{name:"RUF031",description:"Incorrectly-parenthesized-tuple-in-subscript"},{name:"RUF032",description:"Decimal-from-float-literal"},{name:"RUF033",description:"Post-init-default"},{name:"RUF034",description:"Useless-if-else"},{name:"RUF035",description:"Unsafe-markup-use"},{name:"RUF036",description:"None-not-at-end-of-union"},{name:"RUF038",description:"Redundant-bool-literal"},{name:"RUF039",description:"Unraw-re-pattern"},{name:"RUF040",description:"Invalid-assert-message-literal-argument"},{name:"RUF041",description:"Unnecessary-nested-literal"},{name:"RUF046",description:"Unnecessary-cast-to-int"},{name:"RUF048",description:"Map-int-version-parsing"},{name:"RUF052",description:"Used-dummy-variable"},{name:"RUF055",description:"Unnecessary-regular-expression"},{name:"RUF100",description:"Unused-noqa"},{name:"RUF101",description:"Redirected-noqa"},{name:"RUF200",description:"Invalid-pyproject-toml"},{name:"--all",description:"Explain all rules",displayName:"all"}]},options:[{name:"--all",description:"Explain all rules"},{name:"--output-format",description:"Output format [default: text]",args:{name:"output-format",suggestions:["text","json"]}}]},{name:"config",description:"List or describe the available configuration options",options:[{name:"--output-format",description:"Output format [default: text]",args:{name:"output-format",suggestions:["text","json"]}}]},{name:"linter",description:"List all supported upstream linters",options:[{name:"--output-format",description:"Output format",args:{name:"output-format",suggestions:["text","json"]}}]},{name:"clean",description:"Clear any caches in the current directory and any subdirectories"},{name:"format",description:"Run the Ruff formatter on the given files or directories",options:[{name:"--check",description:"Avoid writing any formatted files back; instead, exit with a non-zero status code if any files would have been modified, and zero otherwise"},{name:"--diff",description:"Avoid writing any formatted files back; instead, exit with a non-zero status code and the difference between the current file and how the formatted file would look like"},{name:"--extension",description:"List of mappings from file extension to language (one of `python`, `ipynb`, `pyi`). For example, to treat `.ipy` files as IPython notebooks, use `--extension ipy:ipynb`",args:{name:"extension",isOptional:!0}},{name:"--target-version",description:"The minimum Python version that should be supported",args:{name:"target_version",isOptional:!0,suggestions:["py37","py38","py39","py310","py311","py312","py313"]}},{name:"--preview",description:"Enable preview mode; enables unstable formatting. Use `--no-preview` to disable"},{name:["-n","--no-cache"],description:"Disable cache reads (env: RUFF_NO_CACHE=)"},{name:"--cache-dir",description:"Path to the cache directory (env: RUFF_CACHE_DIR=)",args:{name:"cache_dir",template:"filepaths"}},{name:"--stdin-filename",description:"The name of the file when passing it through stdin",args:{name:"stdin_filename",template:"filepaths"}},{name:"--respect-gitignore",description:"Respect file exclusions via `.gitignore` and other standard ignore files"},{name:"--exclude",description:"List of paths, used to omit files and/or directories from analysis",args:{name:"exclude",isOptional:!0}},{name:"--force-exclude",description:"Enforce exclusions, even for paths passed to Ruff directly on the command-line"},{name:"--line-length",description:"Set the line-length",args:{name:"line_length",isOptional:!0}},{name:"--range",description:"When specified, Ruff will try to only format the code in the given range",args:{name:"range",isOptional:!0}}],args:{name:"Path",template:"filepaths",description:"List of files or directories to format [default: .]",default:".",isVariadic:!0}},{name:"server",description:"Run the language server",options:[{name:"--preview",description:"Enable preview mode. Use `--no-preview` to disable"},{name:"--no-preview",description:"Disable preview mode"}]},{name:"analyze",description:"Run analysis over Python source code",subcommands:[{name:"graph",description:"Generate a map of Python file dependencies or dependents",options:[{name:"--direction",description:"The direction of the import map. By default, generates a dependency map, i.e., a map from file to files that it depends on. Use `--direction dependents` to generate a map from file to files that depend on it",args:{name:"DIRECTION",suggestions:["dependencies","dependents"]}},{name:"--detect-string-imports",description:"Attempt to detect imports from string literals"},{name:"--preview",description:"Enable preview mode. Use `--no-preview` to disable"},{name:"--no-preview",description:"Disable preview mode"},{name:"--target-version",description:"The minimum Python version that should be supported",args:{name:"TARGET_VERSION",suggestions:["py37","py38","py39","py310","py311","py312","py313"]}}],args:{name:"Path",template:"filepaths",description:"The path to use for the project/script",default:".",isVariadic:!0}}]},{name:"version",description:"Display Ruff's version",options:[{name:"--output-format",description:"Output format",args:{name:"output-format",suggestions:["text","json"]}}]},{name:"help",description:"Print this message or the help of the given subcommand(s)"}],options:[{name:["-v","--verbose"],description:"Enable verbose logging"},{name:["-q","--quiet"],description:"Print diagnostics, but nothing else"},{name:["-s","--silent"],description:'Disable all logging (but still exit with status code "1" upon detecting diagnostics)'},{name:"--config",description:"Path to the `pyproject.toml` or `ruff.toml` file to use for configuration",args:{name:"config",isOptional:!0,template:"filepaths"}},{name:"--isolated",description:"Ignore all configuration files"},{name:"--help",description:"Print help"}].map(e=>({...e,isPersistent:!0}))};t.default=n},7110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"sudo",description:"Execute a command as the superuser or another user",options:[{name:["-g","--group"],description:"Run command as the specified group name or ID",args:{name:"group",description:"Group name or ID"}},{name:["-h","--help"],description:"Display help message and exit"},{name:["-u","--user"],description:"Run command as specified user name or ID",args:{name:"user",description:"User name or ID"}}],args:{name:"command",description:"Command to run with elevated permissions",isCommand:!0}}},7171:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"xxd",description:"Make a hexdump or do the reverse",parserDirectives:{flagsArePosixNoncompliant:!0},options:[{name:["-help","-h"],description:"Show help for xxd"},{name:["-autoskip","-a"],description:"Toggle autoskip: A single '*' replaces nul-lines. Default off"},{name:["-bits","-b"],description:"Switch to bits (binary digits) dump, rather than hexdump",exclusiveOn:["-postscript","-plain","-ps","-p","-r","-i"]},{name:["-cols","-c"],description:"Format <cols> octets per line. Default 16",args:{name:"cols"}},{name:["-capitalize","-C"],description:"Capitalize variable names in C include file style, when using -i"},{name:["-EBCDIC","-E"],description:"Change the character encoding in the righthand column from ASCII to EBCDIC",exclusiveOn:["-postscript","-plain","-ps","-p","-r","-i"]},{name:"-e",description:"Switch to little-endian hexdump"},{name:["-groupsize","-g"],description:"Separate the output of every <bytes> bytes",args:{name:"bytes"}},{name:["-include","-i"],description:"Output in C include file style",exclusiveOn:["-EBCDIC","-E","-bits","-b"]},{name:["-len","-l"],description:"Stop after writing <len> octets",args:{name:"len"}},{name:["-name","-n"],description:"Override the variable name output when -i is used",args:{name:"name"}},{name:"-o",description:"Add <offset> to the displayed file position",args:{name:"offset"}},{name:["-postscript","-plain","-ps","-p"],description:"Output in postscript continuous hexdump style",exclusiveOn:["-EBCDIC","-E","-bits","-b"]},{name:["-revert","-r"],description:"Reverse operation: convert (or patch) hexdump into binary",exclusiveOn:["-EBCDIC","-E","-bits","-b"]},{name:"-seek",description:"When used after -r: revert with <offset> added to file positions found in hexdump",args:{name:"offset"}},{name:"-u",description:"Use upper case hex letters. Default is lower case"},{name:["-version","-v"],description:"Show version string"}],args:[{name:"infile",template:"filepaths"},{name:"outfile",template:"filepaths"}]}},7188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConvertCommandError=t.SubstituteAliasError=void 0;const i=n(4829);t.SubstituteAliasError=(0,i.createErrorInstance)("SubstituteAliasError"),t.ConvertCommandError=(0,i.createErrorInstance)("ConvertCommandError")},7421:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i={name:"python",description:"Run the python interpreter",generateSpec:async(e,t)=>{if(0===(await t({command:"bash",args:["-c","cat manage.py | grep -q django"]})).status)return{name:"python",subcommands:[{name:"manage.py",loadSpec:"django-admin"}]}},args:{name:"python script",isScript:!0,generators:(0,n(2341).filepaths)({extensions:["py"],editFileSuggestions:{priority:76}})},options:[{name:"-c",insertValue:"-c '{cursor}'",description:"Execute the Python code in command. command can be one or more statements separated by newlines, with significant leading whitespace as in normal module code",args:{name:"command",isCommand:!0}},{name:"-m",description:"Module",args:{name:"python module",isModule:"python/",suggestions:["http.server"]}},{name:["-?","-h","--help"],description:"Print a short description of all command line options"},{name:["-V","--version"],description:"Print the Python version number and exit"},{name:"-b",description:"Issue a warning when comparing bytes or bytearray with str or bytes with int. Issue an error when the option is given twice (-bb)"},{name:"-B",description:"If given, Python won’t try to write .pyc files on the import of source modules"},{name:"--check-hash-based-pycs",description:"Control the validation behavior of hash-based .pyc files. See Cached bytecode invalidation",args:{suggestions:[{name:"default"},{name:"always"},{name:"never"}]}},{name:"-d",description:"Turn on parser debugging output (for expert only, depending on compilation options)"},{name:"-E",description:"Ignore all PYTHON* environment variables, e.g. PYTHONPATH and PYTHONHOME, that might be set"},{name:"-i",description:"When a script is passed as first argument or the -c option is used, enter interactive mode after executing the script or the command, even when sys.stdin does not appear to be a terminal"},{name:"-I",description:"Run Python in isolated mode. This also implies -E and -s. In isolated mode sys.path contains neither the script’s directory nor the user’s site-packages directory"},{name:"-O",description:"Remove assert statements and any code conditional on the value of __debug__"},{name:"-OO",description:"Do -O and also discard docstrings"},{name:"-g",description:"Don’t display the copyright and version messages even in interactive mode"},{name:"-R",description:"Turn on hash randomization. This option only has an effect if the PYTHONHASHSEED environment variable is set to 0, since hash randomization is enabled by default"},{name:"-s",description:"Don’t add the user site-packages directory to sys.path"},{name:"-S",description:"Disable the import of the module site and the site-dependent manipulations of sys.path that it entails"},{name:"-u",description:"Force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream"},{name:"-v",description:"Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded"},{name:"-W",description:"Warning control. Python’s warning machinery by default prints warning messages to sys.stderr",args:{}},{name:"-x",description:"Skip the first line of the source, allowing use of non-Unix forms of #!cmd. This is intended for a DOS specific hack only"},{name:"-X",description:"Reserved for various implementation-specific options",args:{suggestions:[{name:"faulthandler"},{name:"showrefcount"},{name:"tracemalloc"},{name:"showalloccount"},{name:"importtime"},{name:"dev"},{name:"utf8"},{name:"pycache_prefix=PATH"}]}}]};t.default=i},7505:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getZshGlobals=async function(e,t){return[...await m(e),...await p(e,t)]},t.getCommandDescription=h;const r=o(n(1398)),c=n(4539),l=n(1847),d=function(e){if(!e)return;const t=new Map;for(const[n,i]of Object.entries(e))t.set(n,i);return t}(l.zshBuiltinsCommandDescriptionsCache);async function m(e){const t="darwin"===process.platform?["-icl","alias"]:["-ic","alias"];return(0,c.getAliasesHelper)("zsh",t,/^(?<alias>[a-zA-Z0-9\._:-]+)=(?<quote>['"]?)(?<resolved>.+?)\k<quote>$/,e)}async function p(e,t){const n=[];(await(0,c.execHelper)('printf "%s\\n" ${(k)builtins}',e)).split("\n").filter(e=>e&&!t?.has(e)).find(e=>"."===e)&&n.push({label:".",detail:"Source a file in the current shell",kind:r.TerminalCompletionItemKind.Method});for(const e of d?.keys()??[])if("string"==typeof e)try{const t=h(e);n.push({label:{label:e,description:t?.description},detail:t?.args,documentation:new r.MarkdownString(t?.documentation),kind:r.TerminalCompletionItemKind.Method})}catch(t){console.log(`Error getting info for ${t}`),n.push({label:e,kind:r.TerminalCompletionItemKind.Method})}return n}function h(e){if(!l.zshBuiltinsCommandDescriptionsCache)return;const t=d?.get(e);return t?.shortDescription?{description:t.shortDescription,args:t.args,documentation:t.description}:{description:t?.description,args:t?.args,documentation:t?.description}}},7755:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"pkill",description:"Send the specified signal (by default SIGTERM) to each specified process",options:[{name:"--signal",description:"Signal to send (either number or name)",args:{name:"signal",description:"Signal to send",suggestions:["SIGABRT","SIGALRM","SIGBUS","SIGCHLD","SIGCLD","SIGCONT","SIGEMT","SIGFPE","SIGHUP","SIGILL","SIGINFO","SIGINT","SIGIO","SIGIOT","SIGKILL","SIGLOST","SIGPIPE","SIGPOLL","SIGPROF","SIGPWR","SIGQUIT","SIGSEGV","SIGSTKFLT","SIGSTOP","SIGTSTP","SIGSYS","SIGTERM","SIGTRAP","SIGTTIN","SIGTTOU","SIGUNUSED","SIGURG","SIGUSR1","SIGUSR2","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGWINCH"]}},{name:["-q","--queue"],description:"Integer value to be sent with the signal",args:{name:"value"}},{name:["-e","--echo"],description:"Display what is killed"},{name:["-f","--full"],description:"Use full process name to match"},{name:["-g","--pgroup"],description:"Match listed process group IDs",args:{name:"PGID",isVariadic:!0}},{name:["-G","--group"],description:"Match real group IDs",args:{name:"GID",isVariadic:!0}},{name:["-i","--ignore-case"],description:"Match case insensitively"},{name:["-n","--newest"],description:"Select most recently started"},{name:["-o","--oldest"],description:"Select least recently started"},{name:["-O","--older"],description:"Select where older than seconds",args:{name:"seconds"}},{name:["-P","--parent"],description:"Match only child processes of the given parent",args:{name:"PPID",isVariadic:!0}},{name:["-s","--session"],description:"Match session IDs",args:{name:"SID",isVariadic:!0}},{name:["-t","--terminal"],description:"Match by controlling terminal",args:{name:"tty",isVariadic:!0}},{name:["-u","--euid"],description:"Match by effective IDs",args:{name:"ID",isVariadic:!0}},{name:["-U","--uid"],description:"Match by real IDs",args:{name:"ID",isVariadic:!0}},{name:["-x","--exact"],description:"Match exactly with the command name"},{name:["-F","--pidfile"],description:"Read PIDs from file",args:{name:"file",template:"filepaths"}},{name:["-L","logpidfile"],description:"Fail if PID file is not locked"},{name:["-r","--runstates"],description:"Match runstates",args:{name:"state"}},{name:"--ns",description:"Match the processes that belong to a specified PID",args:{name:"PID"}},{name:"--nslist",description:"List which namespaces will be considered for the --ns option",dependsOn:["--ns"],args:{name:"ns",isVariadic:!0,suggestions:["ipc","mnt","net","pid","user","uts"]}},{name:["-h","--help"],description:"Output help message and exit"},{name:["-V","--version"],description:"Output version information and exit"}],args:{name:"pattern",description:"Specifies an Extended Regular Expression for matching against the process names or command lines"}}},7815:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.windowsDefaultExecutableExtensions=void 0,t.isExecutable=function(e,n){if((0,r.osIsWindows)()){const i=function(e){const n=t.windowsDefaultExecutableExtensions,i=new Set;if(e)for(const[t,a]of Object.entries(e))!0===a?n.push(t):i.add(t);return Array.from(new Set(n)).filter(e=>!i.has(e))}(n);return void 0!==i.find(t=>e.endsWith(t))}return l(e)},t.isExecutableUnix=l;const r=n(5761),c=o(n(1943));async function l(e){try{return!!(64&(await c.stat(e)).mode)}catch(e){return!1}}t.windowsDefaultExecutableExtensions=[".exe",".bat",".cmd",".com",".msi",".ps1",".vbs",".js",".jar",".py",".rb",".pl",".sh"]},7830:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t}),r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.availableSpecs=void 0,t.activate=async function(e){U=new k.PathExecutableCache,e.subscriptions.push(U);let n=process.env;j=e.globalStorageUri,await async function(){if(j)try{const e=c.Uri.joinPath(j,"terminal-suggest"),t=c.Uri.joinPath(e,`${q}.json`),n=await c.workspace.fs.readFile(t),i=JSON.parse(n.toString());if(i)for(const e of Object.keys(i))M.set(e,i[e])}catch(e){if(e instanceof c.FileSystemError&&"FileNotFound"===e.code)return;console.error("Failed to read terminal suggest globals cache:",e)}}();const i=await c.env.machineId,a=c.env.remoteName;e.subscriptions.push(c.window.registerTerminalCompletionProvider({async provideTerminalCompletions(e,s,o){if(n=e.shellIntegration?.env?.value??process.env,o.isCancellationRequested)return void console.debug("#terminalCompletions token cancellation requested");const r="shell"in e.state?e.state.shell:void 0,l=function(e){switch(e){case"bash":return"bash";case"gitbash":return"gitbash";case"zsh":return"zsh";case"pwsh":return"powershell"===(0,N.basename)(c.env.shell,".exe")?"powershell":"pwsh";case"fish":return"fish";default:return}}(r);if(!l)return void console.debug(`#terminalCompletions Shell type ${r} not supported`);const d=await U.getExecutablesInPath(e.shellIntegration?.env?.value,l),m=await async function(e,t,n,i){if(!n)return await H(e,t,void 0,void 0);const a=G(n,i,e),s=M.get(a),o=Date.now(),r=t?Array.from(t):void 0;let c=!1;if(s)if(o-s.timestamp>F)M.delete(a),await V();else if(r&&s.existingCommands?r.length!==s.existingCommands.length&&(c=!0):(r||s.existingCommands)&&(c=!0),!c&&s.commands)return s.commands;return await H(e,t,n,i)}(l,d?.labels,i,a)??[];if(!d?.completionResources)return void console.debug("#terminalCompletions No commands found in path");const p=[...m,...d.completionResources],h=W(s.commandLine,s.cursorIndex,l),u=L?"\\":"/",f=(0,C.getTokenType)(s,l),g=await Promise.race([$(t.availableSpecs,s,p,h,f,e.shellIntegration?.cwd,Y(n),e.name,o),(0,P.createTimeoutPromise)(5e3,void 0)]);if(!g)return void console.debug("#terminalCompletions Timed out fetching completions from specs");if(e.shellIntegration?.env){const t=g.items.find(e=>"~"===e.label);t&&e.shellIntegration.env?.value?.HOME&&(t.documentation=(0,O.getFriendlyResourcePath)(c.Uri.file(e.shellIntegration.env.value.HOME),u,c.TerminalCompletionItemKind.Folder),t.kind=c.TerminalCompletionItemKind.Folder)}const b=g.cwd??e.shellIntegration?.cwd;if(b&&(g.showFiles||g.showFolders)){const e=function(e){if(!e||0===e.length)return;const t=e.map(e=>e.startsWith(".")?e.slice(1):e);return 1===t.length?`**/*.${t[0]}`:`**/*.{${t.join(",")}}`}(g.fileExtensions);return new c.TerminalCompletionList(g.items,{showFiles:g.showFiles,showDirectories:g.showFolders,globPattern:e,cwd:b})}return g.items}},"/","\\")),await(0,k.watchPathDirectories)(e,n,U),e.subscriptions.push(c.commands.registerCommand("terminal.integrated.suggest.clearCachedGlobals",()=>{M.clear()}))},t.resolveCwdFromCurrentCommandString=B,t.getCurrentCommandAndArgs=W,t.asArray=function(e){return Array.isArray(e)?e:[e]},t.getCompletionItemsFromSpecs=$,t.sanitizeProcessEnvironment=K;const c=o(n(1398)),l=r(n(6728)),d=r(n(8874)),m=r(n(2008)),p=r(n(1334)),h=r(n(487)),u=r(n(6207)),f=r(n(3933)),g=r(n(2717)),b=r(n(8538)),y=r(n(8719)),w=r(n(5189)),v=n(4712),k=n(5894),x=n(3383),S=n(7951),T=n(6794),I=n(5761),P=n(5318),O=n(3905),E=n(9708),D=n(2904),A=n(1872),R=n(7505),C=n(3399),N=n(6928),L=(0,I.osIsWindows)(),M=new Map,_=new Map;let U;const q="terminalSuggestGlobalsCacheV2";let j;const F=6048e5;function G(e,t,n){return`${e}:${t??"local"}:${n}`}t.availableSpecs=[l.default,d.default,p.default,m.default,h.default,u.default,f.default,g.default,b.default,y.default,w.default];for(const e of v.upstreamSpecs)t.availableSpecs.push(n(4534)(`./${e}`).default);const z=new Map([["bash",E.getBashGlobals],["zsh",R.getZshGlobals],["gitbash",E.getBashGlobals],["fish",D.getFishGlobals],["pwsh",A.getPwshGlobals],["powershell",A.getPwshGlobals]]);async function H(e,t,n,i,a){const s=G(n??"no-machine-id",i,e),o=M.get(s);if(o)return o.commands;const r=_.get(s);if(r)return r;const c=(async()=>{try{let a=e;"gitbash"===e&&(a="bash");const s={encoding:"utf-8",shell:a,windowsHide:!0},o=await(z.get(e)?.(s,t)),r=o?.map(e=>"string"==typeof e?{label:e}:e);if(n){const a=G(n,i,e);M.set(a,{commands:r,existingCommands:t?Array.from(t):void 0,timestamp:Date.now()}),await V()}return r}catch(e){return void(a||console.error("Error fetching builtin commands:",e))}finally{_.delete(s)}})();return _.set(s,c),c}async function V(){if(!j)return;const e=Date.now();for(const[t,n]of M.entries())e-n.timestamp>F&&M.delete(t);const t={};for(const[e,n]of M.entries())t[e]=n;try{const e=c.Uri.joinPath(j,"terminal-suggest");await c.workspace.fs.createDirectory(e);const n=c.Uri.joinPath(e,`${q}.json`),i=Buffer.from(JSON.stringify(t),"utf8");await c.workspace.fs.writeFile(n,i)}catch(e){console.error("Failed to write terminal suggest globals cache:",e)}}async function B(e,t){const n=e.split(/\s+/).pop()?.trim()??"";if(t)try{let e;L?(e=n.lastIndexOf("\\"),-1===e&&(e=n.lastIndexOf("/"))):e=n.lastIndexOf("/");const i=-1===e?"":n.slice(0,e),a=c.Uri.joinPath(t,i);if((await c.workspace.fs.stat(a)).type&c.FileType.Directory)return a}catch{}}function W(e,t,n){if(""===e.trim())return"";if(t<e.length&&/\S/.test(e[t]))return"";const i=e.slice(0,t),a=n?C.shellTypeResetChars.get(n)??C.defaultShellTypeResetChars:C.defaultShellTypeResetChars;let s=-1;for(const e of a){const t=i.lastIndexOf(e);t>s&&(s=t)}const o=s+1;return i.slice(o).replace(/^\s+/,"")}async function $(e,t,n,i,a,s,o,r,l,d){let m,p=[],h=!1,u=!1,f=!1;if(L){const e=i.indexOf(" "),t=-1===e?i.length:e,n=i.lastIndexOf(".",t);n>0&&(i=i.substring(0,n)+i.substring(e))}let g=s?.fsPath;g||(console.error("No shellIntegrationCwd set, falling back to process.cwd()"),g=process.cwd());const b={cwd:g,env:o},y=d??{executeCommand:x.executeCommand.bind(x.executeCommand,b),executeCommandTimeout:x.executeCommandTimeout.bind(x.executeCommandTimeout,b)},w=await(0,S.getFigSuggestions)(e,t,n,i,a,s,o,r,y,l);if(w&&(f||=w.hasCurrentArg,h||=w.showFiles,u||=w.showFolders,m=w.fileExtensions,w.items&&(p=p.concat(w.items))),0===a){const e=new Set(p.map(e=>"string"==typeof e.label?e.label:e.label.label));for(const a of n){const n="string"==typeof a.label?a.label:a.label.label,s=L?n.replace(/\.[^ ]+$/,""):n;if(e.has(s)){const e=p.find(e=>("string"==typeof e.label?e.label:e.label.label)===n);if(!e)continue;e.documentation??=a.documentation,e.detail??=a.detail}else p.push((0,T.createCompletionItem)(t.cursorIndex,i,a,a.detail,a.documentation,c.TerminalCompletionItemKind.Method)),e.add(n)}h=!0,u=!0}else p.length||h||u||f||(h=!0,u=!0);let v;return s&&(h||u)&&(v=await B(i,s)),{items:p,showFiles:h,showFolders:u,fileExtensions:m,cwd:v}}function Y(e){const t={};for(const[n,i]of Object.entries(e??process.env))"string"==typeof i&&(t[n]=i);return e||K(t),t}function K(e,...t){const n=t.reduce((e,t)=>(e[t]=!0,e),{}),i=[/^ELECTRON_.$/,/^VSCODE_(?!(PORTABLE|SHELL_LOGIN|ENV_REPLACE|ENV_APPEND|ENV_PREPEND)).+$/,/^SNAP(|_.*)$/,/^GDK_PIXBUF_.$/];Object.keys(e).filter(e=>!n[e]).forEach(t=>{for(let n=0;n<i.length;n++)if(-1!==t.search(i[n])){delete e[t];break}})}},7900:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateStateError=t.ParseArgumentsError=t.ParsingHistoryError=t.SpecCDNError=t.LoadLocalSpecError=t.DisabledSpecError=t.WrongDiffVersionedSpecError=t.MissingSpecError=void 0;const i=n(4829);t.MissingSpecError=(0,i.createErrorInstance)("MissingSpecError"),t.WrongDiffVersionedSpecError=(0,i.createErrorInstance)("WrongDiffVersionedSpecError"),t.DisabledSpecError=(0,i.createErrorInstance)("DisabledSpecError"),t.LoadLocalSpecError=(0,i.createErrorInstance)("LoadLocalSpecError"),t.SpecCDNError=(0,i.createErrorInstance)("SpecCDNError"),t.ParsingHistoryError=(0,i.createErrorInstance)("ParsingHistoryError"),t.ParseArgumentsError=(0,i.createErrorInstance)("ParseArgumentsError"),t.UpdateStateError=(0,i.createErrorInstance)("UpdateStateError")},7939:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"su",description:"",options:[{name:"-f",description:"If the invoked shell is csh(1), this option prevents it from reading the .cshrc file"},{name:"-l",description:"Simulate a full login. The environment is discarded except for HOME, SHELL, PATH, TERM, and USER. HOME and SHELL are modified as above. USER is set to the target login. PATH is set to ``/bin:/usr/bin''. TERM is imported from your current environment. The invoked shell is the target login's, and su willchange directory to the target login's home directory"},{name:"-",description:"(no letter) The same as -l"},{name:"-m",description:"Leave the environment unmodified. The invoked shell is your login shell, and no directory changes are made. As a security precaution, if the target user's shell is a non-standard shell (as defined by getusershell(3)) and the caller's real uid is non-zero, su will fail"}],args:[{name:"login",isOptional:!0},{name:"ARGS",isOptional:!0}]}},7951:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getFigSuggestions=async function(e,t,n,i,a,s,o,c,l,d){const m={showFiles:!1,showFolders:!1,hasCurrentArg:!1,items:[]},p=i.split(" ")[0],y=new Map;for(const e of n){let t="string"==typeof e.label?e.label:e.label.label;(0,u.osIsWindows)()&&(t=(0,f.removeAnyFileExtension)(t)),y.set(t,e)}for(const w of e){const e=k(w);if(e)for(const k of e){const e=y.get(k);if(!e||d&&d.isCancellationRequested)continue;if(0===a){if(e.kind!==r.TerminalCompletionItemKind.Alias){const n=v(w);m.items.push((0,h.createCompletionItem)(t.cursorIndex,i,{label:{label:k,description:n},kind:r.TerminalCompletionItemKind.Method},n,e.detail))}continue}const x=(0,u.osIsWindows)()?n.filter(e=>k===(0,f.removeAnyFileExtension)(e.definitionCommand??("string"==typeof e.label?e.label:e.label.label))):n.filter(e=>k===(e.definitionCommand??("string"==typeof e.label?e.label:e.label.label)));if(!((0,u.osIsWindows)()?x.some(e=>p===(0,f.removeAnyFileExtension)("string"==typeof e.label?e.label:e.label.label)):x.some(e=>p===("string"==typeof e.label?e.label:e.label.label))))continue;const S=e.definitionCommand?g.availableSpecs.find(t=>t.name===e.definitionCommand):w;if(!S)continue;const T=await b(S,t,i,s,o,c,l,d);m.hasCurrentArg||=!!T?.hasCurrentArg,T&&(m.showFiles||=T.showFiles,m.showFolders||=T.showFolders,m.fileExtensions||=T.fileExtensions,T.items&&(m.items=m.items.concat(T.items)))}}return m},t.collectCompletionItemResult=y,t.getFixSuggestionDescription=v,t.getFigSuggestionLabel=k;const r=o(n(1398)),c=n(1350),l=n(265),d=n(8454),m=n(1121),p=n(6738),h=n(6794),u=n(5761),f=n(9481),g=n(7830);async function b(e,t,n,i,a,s,o,r){let l,d=!1,m=!1;const h=(0,p.getCommand)(t.commandLine,{},t.cursorIndex);if(!h||!i)return;const u={environmentVariables:a,currentWorkingDirectory:i.fsPath,sshPrefix:"",currentProcess:s},f=await(0,c.parseArguments)(h,u,e,o),g=[],b=await y(h,f,n,t,i,a,g,o);return r?.isCancellationRequested?void 0:(b&&(d=b.showFiles,m=b.showFolders,l=b.fileExtensions),{showFiles:d,showFolders:m,fileExtensions:l,hasCurrentArg:!!f.currentArg,items:g})}async function y(e,t,n,i,a,s,o,c){let p,u=!1,f=!1;const b=async(t,m,b)=>{if(m===r.TerminalCompletionItemKind.Argument&&b?.currentArg?.generators){const t=b.currentArg.generators,r={figState:{buffer:i.commandLine,cursorLocation:i.cursorIndex,cwd:a?.fsPath??null,processUserIsIn:null,sshContextString:null,aliases:{},environmentVariables:s,shellContext:{currentWorkingDirectory:a?.fsPath,environmentVariables:w(s)}},parserResult:b,generatorStates:[],command:e,visibleState:d.Visibility.HIDDEN_UNTIL_KEYPRESS,lastInsertedSuggestion:null,justInserted:!1,selectedIndex:0,suggestions:[],hasChangedIndex:!1,historyModeEnabled:!1,fuzzySearchEnabled:!1,userFuzzySearchEnabled:!1},g=(0,l.createGeneratorState)(r,c).triggerGenerators(b,c);for(const e of g)for(const t of await(e?.request)??[]){if("file"===t.type&&(u=!0,f=!0,p=t._internal?.fileExtensions),"folder"===t.type&&(f=!0),!t.name)continue;const e=k(t);if(e)for(const a of e)o.push((0,h.createCompletionItem)(i.cursorIndex,n,{label:a},t.displayName,"string"==typeof t?t:t.description,x(t.icon)??m))}for(const e of t)if(e.template){const t=Array.isArray(e.template)?e.template:[e.template];for(const e of t)"filepaths"===e?u=!0:"folders"===e&&(f=!0)}}if(!t)return{showFiles:u,showFolders:f};const y=m===r.TerminalCompletionItemKind.Flag?b?.passedOptions.map(e=>e.name).flat():void 0;function v(e,t){if(y?.includes(e))return;let a=m;const s=b?.annotations.at(-1)?.type;let c;if("subcommand_arg"===s?"object"==typeof t&&"args"in t&&(0,g.asArray)(t.args??[]).length>0&&(a=r.TerminalCompletionItemKind.Option):"option_arg"===s&&(a=r.TerminalCompletionItemKind.OptionValue),"object"==typeof t&&"args"in t){const e=(0,g.asArray)(t.args);e.every(e=>!!e?.name)&&e.length>0&&(c=" "+e.map(e=>{let t=`<${e.name}>`;return e?.isOptional&&(t=`[${t}]`),t}).join(" "))}o.push((0,h.createCompletionItem)(i.cursorIndex,n,{label:c?{label:e,detail:c}:e},void 0,"string"==typeof t?t:t.description,a))}if(Array.isArray(t))for(const e of t){const t=k(e);if(t?.length)for(const n of t)v(n,e)}else for(const[e,n]of Object.entries(t))v(e,n)};return t.suggestionFlags&m.SuggestionFlag.Args&&await b(t.currentArg?.suggestions,r.TerminalCompletionItemKind.Argument,t),t.suggestionFlags&m.SuggestionFlag.Subcommands&&await b(t.completionObj.subcommands,r.TerminalCompletionItemKind.Method),t.suggestionFlags&m.SuggestionFlag.Options&&await b(t.completionObj.options,r.TerminalCompletionItemKind.Flag,t),{showFiles:u,showFolders:f,fileExtensions:p}}function w(e){return Object.entries(e).map(([e,t])=>({key:e,value:t}))}function v(e){return"description"in e?e.description??"":""}function k(e){return"string"==typeof e?[e]:"string"==typeof e.name?[e.name]:Array.isArray(e.name)&&0!==e.name.length?e.name:void 0}function x(e){switch(e){case"vscode://icon?type=10":return r.TerminalCompletionItemKind.ScmCommit;case"vscode://icon?type=11":return r.TerminalCompletionItemKind.ScmBranch;case"vscode://icon?type=12":return r.TerminalCompletionItemKind.ScmTag;case"vscode://icon?type=13":return r.TerminalCompletionItemKind.ScmStash;case"vscode://icon?type=14":return r.TerminalCompletionItemKind.ScmRemote;case"vscode://icon?type=15":return r.TerminalCompletionItemKind.PullRequest;case"vscode://icon?type=16":return r.TerminalCompletionItemKind.PullRequestDone;default:return}}},8024:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"cp",description:"Copy files and directories",args:[{name:"source",template:["filepaths","folders"],isVariadic:!0},{name:"target",template:["filepaths","folders"]}],options:[{name:"-a",description:"Preserves structure and attributes of files but not directory structure"},{name:"-f",description:"If the destination file cannot be opened, remove it and create a new file, without prompting for confirmation",exclusiveOn:["-n"]},{name:"-H",description:"If the -R option is specified, symbolic links on the command line are followed",exclusiveOn:["-L","-P"],dependsOn:["-R"]},{name:"-i",description:"Cause cp to write a prompt to the standard error output before copying a file that would overwrite an existing file",exclusiveOn:["-n"]},{name:"-L",description:"If the -R option is specified, all symbolic links are followed",exclusiveOn:["-H","-P"],dependsOn:["-R"]},{name:"-n",description:"Do not overwrite an existing file",exclusiveOn:["-f","-i"]},{name:"-P",description:"If the -R option is specified, no symbolic links are followed",exclusiveOn:["-H","-L"],dependsOn:["-R"]},{name:"-R",description:"If source designates a directory, cp copies the directory and the entire subtree connected at that point. If source ends in a /, the contents of the directory are copied rather than the directory itself"},{name:"-v",description:"Cause cp to be verbose, showing files as they are copied"},{name:"-X",description:"Do not copy Extended Attributes (EAs) or resource forks"},{name:"-c",description:"Copy files using clonefile"}]}},8045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"traceroute",description:"Print the route packets take to network host",options:[{name:["--help","-h"],description:"Show help for traceroute"},{name:"-a",description:"Turn on AS# lookups for each hop encountered"},{name:"-A",args:{name:"as_server"},description:"Turn on AS# lookups and use the given server instead of the default"},{name:"-d",description:"Enable socket level debugging"},{name:"-D",description:"When an ICMP response to our probe datagram is received, print the differences between the transmitted packet and the packet quoted by the ICMP response. A key showing the location of fields within the transmitted packet is printed, followed by the original packet in hex, followed by the quoted packet in hex. Bytes that are unchanged in the quoted packet are shown as underscores. Note, the IP checksum and the TTL of the quoted packet are not expected to match. By default, only one probe per hop is sent with this option"},{name:"-e",description:"Firewall evasion mode. Use fixed destination ports for UDP and TCP probes. The destination port does NOT increment with each packet sent"},{name:"-f",args:{name:"first_ttl"},description:"Set the initial time-to-live used in the first outgoing probe packet"},{name:"-F",description:"Set the `don't fragment` bit"},{name:"-g",args:{name:"gateway"},description:"Specify a loose source route gateway (8 maximum)"},{name:"-i",args:{name:"iface"},description:"Specify a network interface to obtain the source IP address for outgoing probe packets. This is normally only useful on a multihomed host. (See the -s flag for another way to do this.)"},{name:"-I",description:"Use ICMP ECHO instead of UDP datagrams. (A synonym for `-P icmp`)"},{name:"-M",args:{name:"first_ttl"},description:"Set the initial time-to-live value used in outgoing probe packets. The default is 1, i.e., start with the first hop"},{name:"-m",args:{name:"max_ttl"},description:"Set the max time-to-live (max number of hops) used in outgoing probe packets. The default is net.inet.ip.ttl hops (the same default used for TCP connections)"},{name:"-n",description:"Print hop addresses numerically rather than symbolically and numerically (saves a nameserver address-to-name lookup for each gateway found on the path)"},{name:"-P",args:{name:"proto"},description:"Send packets of specified IP protocol. The currently supported protocols are: UDP, TCP, GRE and ICMP Other protocols may also be specified (either by name or by number), though traceroute does not implement any special knowledge of their packet formats. This option is useful for determining which router along a path may be blocking packets based on IP protocol number. But see BUGS below"},{name:"-p",args:{name:"port"},description:"Protocol specific. For UDP and TCP, sets the base port number used in probes (default is 33434). traceroute hopes that nothing is listening on UDP ports base to base+nhops-1 at the destination host (so an ICMP PORT_UNREACHABLE message will be returned to terminate the route tracing). If something is listening on a port in the default range, this option can be used to pick an unused port range"},{name:"-q",args:{name:"nqueries"},description:"Set the number of probes per ``ttl'' to nqueries (default is three probes)"},{name:"-r",description:"Bypass the normal routing tables and send directly to a host on an attached network. If the host is not on a directly-attached network, an error is returned. This option can be used to ping a local host through an interface that has no route through it (e.g., after the interface was dropped by routed(8))"},{name:"-s",args:{name:"src_addr"},description:"Use the following IP address (which must be given as an IP number, not a hostname) as the source address in outgoing probe packets. On hosts with more than one IP address, this option can be used to force the source address to be something other than the IP address of the interface the probe packet is sent on. If the IP address is not one of this machine's interface addresses, an error is returned and nothing is sent. (See the -i flag for another way to do this.)"},{name:"-S",description:"Print a summary of how many probes were not answered for each hop"},{name:"-t",args:{name:"tos"},description:"Set the type-of-service in probe packets to the following value (default zero). The value must be a decimal integer in the range 0 to 255. This option can be used to see if different types-of- service result in different paths. (If you are not running a 4.4BSD or later system, this may be academic since the normal network services like telnet and ftp don't let you control the TOS). Not all values of TOS are legal or meaningful - see the IP spec for definitions. Useful values are probably `-t 16' (low delay) and `-t 8' (high throughput)"},{name:"-v",description:"Verbose output. Received ICMP packets other than TIME_EXCEEDED and UNREACHABLEs are listed"},{name:"-w",description:"Set the time (in seconds) to wait for a response to a probe (default 5 sec.)"},{name:"-x",description:"Toggle IP checksums. Normally, this prevents traceroute from calculating IP checksums. In some cases, the operating system can overwrite parts of the outgoing packet but not recalculate the checksum (so in some cases the default is to not calculate checksums and using -x causes them to be calculated). Note that checksums are usually required for the last hop when using ICMP ECHO probes ( -I ). So they are always calculated when using ICMP"},{name:"-z",args:{name:"pausemsecs"},description:"Set the time (in milliseconds) to pause between probes (default 0). Some systems such as Solaris and routers such as Ciscos rate limit ICMP messages. A good value to use with this this is 500 (e.g. 1/2 second)"}],args:{name:"host"}}},8110:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(5234),a=n(2961),s={name:"--filter",args:{template:"filepaths",name:"Filepath / Package",description:"To only select packages under the specified directory, you may specify any absolute path, typically in POSIX format"},description:"Filtering allows you to restrict commands to specific subsets of packages.\npnpm supports a rich selector syntax for picking packages by name or by relation.\nMore details: https://pnpm.io/filtering"},o=[{name:"--offline",description:"If true, pnpm will use only packages already available in the store. If a package won't be found locally, the installation will fail"},{name:"--prefer-offline",description:"If true, staleness checks for cached data will be bypassed, but missing data will be requested from the server. To force full offline mode, use --offline"},{name:"--ignore-scripts",description:"Do not execute any scripts defined in the project package.json and its dependencies"},{name:"--reporter",description:"Allows you to choose the reporter that will log debug info to the terminal about the installation progress",args:{name:"Reporter Type",suggestions:["silent","default","append-only","ndjson"]}}],r=[{name:["-P","--save-prod"],description:"Pnpm will not install any package listed in devDependencies if the NODE_ENV environment variable is set to production.\nUse this flag to instruct pnpm to ignore NODE_ENV and take its production status from this flag instead"},{name:["-D","--save-dev"],description:"Only devDependencies are installed regardless of the NODE_ENV"},{name:"--no-optional",description:"OptionalDependencies are not installed"},{name:"--lockfile-only",description:"When used, only updates pnpm-lock.yaml and package.json instead of checking node_modules and downloading dependencies"},{name:"--frozen-lockfile",description:"If true, pnpm doesn't generate a lockfile and fails to install if the lockfile is out of sync with the manifest / an update is needed or no lockfile is present"},{name:"--use-store-server",description:"Starts a store server in the background. The store server will keep running after installation is done. To stop the store server, run pnpm server stop"},{name:"--shamefully-hoist",description:"Creates a flat node_modules structure, similar to that of npm or yarn. WARNING: This is highly discouraged"}],c=[{name:["-P","--save-prod"],description:"Install the specified packages as regular dependencies"},{name:["-D","--save-dev"],description:"Install the specified packages as devDependencies"},{name:["-O","--save-optional"],description:"Install the specified packages as optionalDependencies"},{name:"--no-save",description:"Prevents saving to `dependencies`"},{name:["-E","--save-exact"],description:"Saved dependencies will be configured with an exact version rather than using pnpm's default semver range operator"},{name:"--save-peer",description:"Using --save-peer will add one or more packages to peerDependencies and install them as dev dependencies"},{name:["--ignore-workspace-root-check","-W#"],description:"Adding a new dependency to the root workspace package fails, unless the --ignore-workspace-root-check or -W flag is used.\nFor instance, pnpm add debug -W"},{name:["--global","-g"],description:"Install a package globally"},{name:"--workspace",description:"Only adds the new dependency if it is found in the workspace"},s],l=[{name:"add",description:"Installs a package and any packages that it depends on. By default, any new package is installed as a production dependency",args:{name:"package",generators:i.npmSearchGenerator,debounce:!0,isVariadic:!0},options:[...o,...c]},{name:["install","i"],description:"Pnpm install is used to install all dependencies for a project.\nIn a CI environment, installation fails if a lockfile is present but needs an update.\nInside a workspace, pnpm install installs all dependencies in all the projects.\nIf you want to disable this behavior, set the recursive-install setting to false",async generateSpec(e){const t=e.filter(e=>""!==e.trim()&&!e.startsWith("-")).length>2;return{name:"install",options:[...o,...t?c:r]}},args:{name:"package",isOptional:!0,generators:i.npmSearchGenerator,debounce:!0,isVariadic:!0}},{name:["install-test","it"],description:"Runs pnpm install followed immediately by pnpm test. It takes exactly the same arguments as pnpm install",options:[...o,...r]},{name:["update","upgrade","up"],description:"Pnpm update updates packages to their latest version based on the specified range.\nWhen used without arguments, updates all dependencies. You can use patterns to update specific dependencies",args:{name:"Package",isOptional:!0,filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},options:[{name:["--recursive","-r"],description:"Concurrently runs update in all subdirectories with a package.json (excluding node_modules)"},{name:["--latest","-L"],description:"Ignores the version range specified in package.json. Instead, the version specified by the latest tag will be used (potentially upgrading the packages across major versions)"},{name:"--global",description:"Update global packages"},{name:["-P","--save-prod"],description:"Only update packages in dependencies and optionalDependencies"},{name:["-D","--save-dev"],description:"Only update packages in devDependencies"},{name:"--no-optional",description:"Don't update packages in optionalDependencies"},{name:["--interactive","-i"],description:"Show outdated dependencies and select which ones to update"},{name:"--workspace",description:"Tries to link all packages from the workspace. Versions are updated to match the versions of packages inside the workspace.\nIf specific packages are updated, the command will fail if any of the updated dependencies are not found inside the workspace. For instance, the following command fails if express is not a workspace package: pnpm up -r --workspace express"},s]},{name:["remove","rm","uninstall","un"],description:"Removes packages from node_modules and from the project's package.json",args:{name:"Package",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},options:[{name:["--recursive","-r"],description:"When used inside a workspace, removes a dependency (or dependencies) from every workspace package.\nWhen used not inside a workspace, removes a dependency (or dependencies) from every package found in subdirectories"},{name:"--global",description:"Remove a global package"},{name:["-P","--save-prod"],description:"Only remove the dependency from dependencies"},{name:["-D","--save-dev"],description:"Only remove the dependency from devDependencies"},{name:["--save-optional","-O"],description:"Only remove the dependency from optionalDependencies"},s]},{name:["link","ln"],description:"Makes the current local package accessible system-wide, or in another location",args:[{name:"Package",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},{template:"filepaths"}],options:[{name:["--dir","-C"],description:"Changes the link location to <dir>"},{name:"--global",description:"Links the specified package (<pkg>) from global node_modules to the node_nodules of package from where this command was executed or specified via --dir option"}]},{name:"unlink",description:"Unlinks a system-wide package (inverse of pnpm link).\nIf called without arguments, all linked dependencies will be unlinked.\nThis is similar to yarn unlink, except pnpm re-installs the dependency after removing the external link",args:[{name:"Package",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},{template:"filepaths"}],options:[{name:["--recursive","-r"],description:"Unlink in every package found in subdirectories or in every workspace package, when executed inside a workspace"},s]},{name:"import",description:"Pnpm import generates a pnpm-lock.yaml from an npm package-lock.json (or npm-shrinkwrap.json) file"},{name:["rebuild","rb"],description:"Rebuild a package",args:[{name:"Package",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},{template:"filepaths"}],options:[{name:["--recursive","-r"],description:"This command runs the pnpm rebuild command in every package of the monorepo"},s]},{name:"prune",description:"Removes unnecessary packages",options:[{name:"--prod",description:"Remove the packages specified in devDependencies"},{name:"--no-optional",description:"Remove the packages specified in optionalDependencies"}]},{name:"fetch",description:"EXPERIMENTAL FEATURE: Fetch packages from a lockfile into virtual store, package manifest is ignored: https://pnpm.io/cli/fetch",options:[{name:"--prod",description:"Development packages will not be fetched"},{name:"--dev",description:"Only development packages will be fetched"}]},{name:"patch",description:"This command will cause a package to be extracted in a temporary directory intended to be editable at will",args:{name:"package",generators:{script:["pnpm","ls"],postProcess:function(e){return e.includes("ERR_PNPM")?[]:e.split("\n").slice(3).filter(e=>!!e&&!e.toLowerCase().includes("dependencies")&&!e.includes("link:")).map(e=>e.replace(/\s/,"@")).map(e=>({name:e,icon:"fig://icon?type=package"}))}}},options:[{name:"--edit-dir",description:"The package that needs to be patched will be extracted to this directory"}]},{name:"patch-commit",args:{name:"dir"},description:"Generate a patch out of a directory"},{name:"patch-remove",args:{name:"package",isVariadic:!0}}],d=[{name:["run","run-script"],description:"Runs a script defined in the package's manifest file",args:{name:"Scripts",filterStrategy:"fuzzy",generators:i.npmScriptsGenerator,isVariadic:!0},options:[{name:["-r","--recursive"],description:"This runs an arbitrary command from each package's \"scripts\" object. If a package doesn't have the command, it is skipped. If none of the packages have the command, the command fails"},{name:"--if-present",description:"You can use the --if-present flag to avoid exiting with a non-zero exit code when the script is undefined. This lets you run potentially undefined scripts without breaking the execution chain"},{name:"--parallel",description:"Completely disregard concurrency and topological sorting, running a given script immediately in all matching packages with prefixed streaming output. This is the preferred flag for long-running processes over many packages, for instance, a lengthy build process"},{name:"--stream",description:"Stream output from child processes immediately, prefixed with the originating package directory. This allows output from different packages to be interleaved"},s]},{name:"exec",description:"Execute a shell command in scope of a project.\nnode_modules/.bin is added to the PATH, so pnpm exec allows executing commands of dependencies",args:{name:"Scripts",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},options:[{name:["-r","--recursive"],description:"Execute the shell command in every project of the workspace.\nThe name of the current package is available through the environment variable PNPM_PACKAGE_NAME (supported from pnpm v2.22.0 onwards)"},{name:"--parallel",description:"Completely disregard concurrency and topological sorting, running a given script immediately in all matching packages with prefixed streaming output. This is the preferred flag for long-running processes over many packages, for instance, a lengthy build process"},s]},{name:["test","t","tst"],description:"Runs an arbitrary command specified in the package's test property of its scripts object.\nThe intended usage of the property is to specify a command that runs unit or integration testing for your program"},{name:"start",description:"Runs an arbitrary command specified in the package's start property of its scripts object. If no start property is specified on the scripts object, it will attempt to run node server.js as a default, failing if neither are present.\nThe intended usage of the property is to specify a command that starts your program"}],m=[{name:"publish",description:"Publishes a package to the registry.\nWhen publishing a package inside a workspace, the LICENSE file from the root of the workspace is packed with the package (unless the package has a license of its own).\nYou may override some fields before publish, using the publishConfig field in package.json. You also can use the publishConfig.directory to customize the published subdirectory (usually using third party build tools).\nWhen running this command recursively (pnpm -r publish), pnpm will publish all the packages that have versions not yet published to the registry",args:{name:"Branch",generators:{script:["git","branch","--no-color"],postProcess:function(e){const t=(e=>e.startsWith("warning:")||e.startsWith("error:")?e.split("\n").slice(1).join("\n"):e)(e);return t.startsWith("fatal:")?[]:t.split("\n").map(e=>{let t=e.trim();const n=e.match(/\S+/g);if(n&&n.length>1){if("*"==n[0])return{name:e.replace("*","").trim(),description:"Current branch",icon:"⭐️"};"+"==n[0]&&(t=e.replace("+","").trim())}return{name:t,description:"Branch",icon:"fig://icon?type=git"}})}}},options:[{name:"--tag",description:"Publishes the package with the given tag. By default, pnpm publish updates the latest tag",args:{name:"<tag>"}},{name:"--dry-run",description:"Does everything a publish would do except actually publishing to the registry"},{name:"--ignore-scripts",description:"Ignores any publish related lifecycle scripts (prepublishOnly, postpublish, and the like)"},{name:"--no-git-checks",description:"Don't check if current branch is your publish branch, clean, and up-to-date"},{name:"--access",description:"Tells the registry whether the published package should be public or restricted",args:{name:"Type",suggestions:["public","private"]}},{name:"--force",description:"Try to publish packages even if their current version is already found in the registry"},{name:"--report-summary",description:"Save the list of published packages to pnpm-publish-summary.json. Useful when some other tooling is used to report the list of published packages"},s]},{name:["recursive","m","multi","-r"],description:"Runs a pnpm command recursively on all subdirectories in the package or every available workspace",options:[{name:"--link-workspace-packages",description:"Link locally available packages in workspaces of a monorepo into node_modules instead of re-downloading them from the registry. This emulates functionality similar to yarn workspaces.\nWhen this is set to deep, local packages can also be linked to subdependencies.\nBe advised that it is encouraged instead to use npmrc for this setting, to enforce the same behaviour in all environments. This option exists solely so you may override that if necessary",args:{name:"bool or `deep`",suggestions:["dee["]}},{name:"--workspace-concurrency",description:"Set the maximum number of tasks to run simultaneously. For unlimited concurrency use Infinity",args:{name:"<number>"}},{name:"--bail",description:"Stops when a task throws an error"},{name:"--no-bail",description:"Don't stop when a task throws an error"},{name:"--sort",description:"Packages are sorted topologically (dependencies before dependents)"},{name:"--no-sort",description:"Disable packages sorting"},{name:"--reverse",description:"The order of packages is reversed"},s]},{name:"server",description:"Manage a store server",subcommands:[{name:"start",description:"Starts a server that performs all interactions with the store. Other commands will delegate any store-related tasks to this server",options:[{name:"--background",description:"Runs the server in the background, similar to daemonizing on UNIX systems"},{name:"--network-concurrency",description:"The maximum number of network requests to process simultaneously",args:{name:"number"}},{name:"--protocol",description:"The communication protocol used by the server. When this is set to auto, IPC is used on all systems except for Windows, which uses TCP",args:{name:"Type",suggestions:["auto","tcp","ipc"]}},{name:"--port",description:"The port number to use when TCP is used for communication. If a port is specified and the protocol is set to auto, regardless of system type, the protocol is automatically set to use TCP",args:{name:"port number"}},{name:"--store-dir",description:"The directory to use for the content addressable store",args:{name:"Path",template:"filepaths"}},{name:"--lock",description:"Set to make the package store immutable to external processes while the server is running or not"},{name:"--no-lock",description:"Set to make the package store mutable to external processes while the server is running or not"},{name:"--ignore-stop-requests",description:"Prevents you from stopping the server using pnpm server stop"},{name:"--ignore-upload-requests",description:"Prevents creating a new side effect cache during install"}]},{name:"stop",description:"Stops the store server"},{name:"status",description:"Prints information about the running server"}]},{name:"store",description:"Managing the package store",subcommands:[{name:"status",description:"Checks for modified packages in the store.\nReturns exit code 0 if the content of the package is the same as it was at the time of unpacking"},{name:"add",description:"Functionally equivalent to pnpm add,\nexcept this adds new packages to the store directly without modifying any projects or files outside of the store"},{name:"prune",description:"Removes orphan packages from the store.\nPruning the store will save disk space, however may slow down future installations involving pruned packages.\nUltimately, it is a safe operation, however not recommended if you have orphaned packages from a package you intend to reinstall.\nPlease read the FAQ for more information on unreferenced packages and best practices.\nPlease note that this is prohibited when a store server is running"},{name:"path",description:"Returns the path to the active store directory"}]},{name:"init",description:"Creates a basic package.json file in the current directory, if it doesn't exist already"},{name:"doctor",description:"Checks for known common issues with pnpm configuration"}],p=[...l,{name:"audit",description:"Checks for known security issues with the installed packages.\nIf security issues are found, try to update your dependencies via pnpm update.\nIf a simple update does not fix all the issues, use overrides to force versions that are not vulnerable.\nFor instance, if lodash@<2.1.0 is vulnerable, use overrides to force lodash@^2.1.0.\nDetails at: https://pnpm.io/cli/audit",options:[{name:"--audit-level",description:"Only print advisories with severity greater than or equal to <severity>",args:{name:"Audit Level",default:"low",suggestions:["low","moderate","high","critical"]}},{name:"--fix",description:"Add overrides to the package.json file in order to force non-vulnerable versions of the dependencies"},{name:"--json",description:"Output audit report in JSON format"},{name:["--dev","-D"],description:"Only audit dev dependencies"},{name:["--prod","-P"],description:"Only audit production dependencies"},{name:"--no-optional",description:"Don't audit optionalDependencies"},{name:"--ignore-registry-errors",description:"If the registry responds with a non-200 status code, the process should exit with 0. So the process will fail only if the registry actually successfully responds with found vulnerabilities"}]},{name:["list","ls"],description:'This command will output all the versions of packages that are installed, as well as their dependencies, in a tree-structure.\nPositional arguments are name-pattern@version-range identifiers, which will limit the results to only the packages named. For example, pnpm list "babel-*" "eslint-*" semver@5',options:[{name:["--recursive","-r"],description:"Perform command on every package in subdirectories or on every workspace package, when executed inside a workspace"},{name:"--json",description:"Log output in JSON format"},{name:"--long",description:"Show extended information"},{name:"--parseable",description:"Outputs package directories in a parseable format instead of their tree view"},{name:"--global",description:"List packages in the global install directory instead of in the current project"},{name:"--depth",description:"Max display depth of the dependency tree.\npnpm ls --depth 0 will list direct dependencies only. pnpm ls --depth -1 will list projects only. Useful inside a workspace when used with the -r option",args:{name:"number"}},{name:["--dev","-D"],description:"Only list dev dependencies"},{name:["--prod","-P"],description:"Only list production dependencies"},{name:"--no-optional",description:"Don't list optionalDependencies"},s]},{name:"outdated",description:"Checks for outdated packages. The check can be limited to a subset of the installed packages by providing arguments (patterns are supported)",options:[{name:["--recursive","-r"],description:"Check for outdated dependencies in every package found in subdirectories, or in every workspace package when executed inside a workspace"},{name:"--long",description:"Print details"},{name:"--global",description:"List outdated global packages"},{name:"--no-table",description:"Prints the outdated dependencies in a list format instead of the default table. Good for small consoles"},{name:"--compatible",description:"Prints only versions that satisfy specifications in package.json"},{name:["--dev","-D"],description:"Only list dev dependencies"},{name:["--prod","-P"],description:"Only list production dependencies"},{name:"--no-optional",description:"Doesn't check optionalDependencies"}]},{name:"why",description:"Shows all packages that depend on the specified package",args:{name:"Scripts",filterStrategy:"fuzzy",generators:a.dependenciesGenerator,isVariadic:!0},options:[{name:["--recursive","-r"],description:"Show the dependency tree for the specified package on every package in subdirectories or on every workspace package when executed inside a workspace"},{name:"--json",description:"Log output in JSON format"},{name:"--long",description:"Show verbose output"},{name:"--parseable",description:"Show parseable output instead of tree view"},{name:"--global",description:"List packages in the global install directory instead of in the current project"},{name:["--dev","-D"],description:"Only display the dependency tree for packages in devDependencies"},{name:["--prod","-P"],description:"Only display the dependency tree for packages in dependencies"},s]},...d,...m],h=["add","exec","install","list","outdated","publish","rebuild","remove","run","test","unlink","update","why"],u=p.filter(e=>Array.isArray(e.name)?e.name.some(e=>h.includes(e)):h.includes(e.name));m[1].subcommands=u;const f={name:"pnpm",description:"Fast, disk space efficient package manager",args:{name:"Scripts",filterStrategy:"fuzzy",generators:i.npmScriptsGenerator,isVariadic:!0},filterStrategy:"fuzzy",generateSpec:async(e,t)=>{const{script:n,postProcess:i}=a.dependenciesGenerator;if(void 0===i)return;const s=i((await t({command:n[0],args:n.slice(1)})).stdout,e)?.filter(e=>null!==e).map(({name:e})=>e),o=s?.filter(e=>a.nodeClis.has(e)).map(e=>({name:e,loadSpec:e,icon:"fig://icon?type=package"}));return{name:"pnpm",subcommands:o}},subcommands:p,options:[{name:["-C","--dir"],args:{name:"path",template:"folders"},isPersistent:!0,description:"Run as if pnpm was started in <path> instead of the current working directory"},{name:["-w","--workspace-root"],args:{name:"workspace"},isPersistent:!0,description:"Run as if pnpm was started in the root of the <workspace> instead of the current working directory"},{name:["-h","--help"],isPersistent:!0,description:"Output usage information"},{name:["-v","--version"],description:"Show pnpm's version"}]};t.default=f},8223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"tac",description:"Concatenate and print files in reverse",parserDirectives:{optionsMustPrecedeArguments:!0},options:[{name:"--help",description:"Display this help and exit"},{name:["--before","-b"],description:"Attach the separator before instead of after"},{name:["--regex","-r"],description:"Interpret the separator as a regular expression"},{name:["--separator","-s"],description:"Use STRING as the separator instead of newline",args:{name:"STRING"}},{name:"--version",description:"Output version information and exit"}],args:{name:"FILE",template:"filepaths"}}},8386:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={name:"echo",description:"Write arguments to the standard output",args:{name:"string",isVariadic:!0,optionsCanBreakVariadicArg:!1,suggestCurrentToken:!0,generators:{custom:async(e,t,n)=>e.length<3||e[e.length-1].startsWith("$")?Object.keys(n.environmentVariables).map(e=>({name:`$${e}`,type:"arg",description:"Environment Variable"})):[],trigger:"$"}},options:[{name:"-n",description:"Do not print the trailing newline character"},{name:"-e",description:"Interpret escape sequences"},{name:"-E",description:"Disable escape sequences"}]};t.default=n},8454:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Visibility=void 0,function(e){e.VISIBLE="visible",e.HIDDEN_UNTIL_KEYPRESS="hidden_until_keypress",e.HIDDEN_UNTIL_SHOWN="hidden_until_shown",e.HIDDEN_BY_INSERTION="insertion"}(n||(t.Visibility=n={}))},8490:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"more",description:"Opposite of less",options:[{name:["-d","--silent"],description:"Prompt with '[Press space to continue, 'q' to quit.]', and display '[Press 'h' for instructions.]' instead of ringing the bell when an illegal key is pressed"},{name:["-l","--logical"],description:"Do not pause after any line containing a ^L (form feed)"},{name:["-f","--no-pause"],description:"Count logical lines, rather than screen lines"},{name:["-p","--print-over"],description:"Instead, clear the whole screen and then display the text"},{name:["-c","--clean-print"],description:"Instead, paint each screen from the top, clearing the remainder of each line as it is displayed"},{name:["-s","--squeeze"],description:"Squeeze multiple blank lines into one"},{name:["-u","--plain"],description:"Silently ignored as backwards compatibility"},{name:["-n","--lines"],description:"Specify the number of lines per screenful",args:{name:"n"}},{name:"--help",description:"Display help text"},{name:["-V","--version"],description:"Display version information"}],args:{isVariadic:!0,template:"filepaths"}}},8507:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>({script:["bash","-c","brew services list | sed -e 's/ .*//' | tail -n +2"],postProcess:function(t){return t.split("\n").filter(e=>!e.includes("unbound")).map(t=>({name:t,icon:"fig://icon?type=package",description:`${e} ${t}`}))}}),i={script:["brew","list","-1"],postProcess:function(e){return e.split("\n").filter(e=>!e.includes("=")).map(e=>({name:e,icon:"🍺",description:"Installed formula"}))}},a={script:["brew","formulae"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:"🍺",description:"Formula",priority:51}))}},s={script:["brew","casks"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:"🍺",description:"Cask",priority:52}))}},o={script:["bash","-c",'find ~/.brew-aliases/ -type f ! -name "*.*" -d 1 | sed "s/.*\\///"'],postProcess:function(e){return e.split("\n").filter(e=>e&&""!==e.trim()).map(e=>({name:e,icon:"fig://icon?type=command",description:`Execute alias ${e}`}))}},r=[{name:["-d","--debug"],description:"Display any debugging information"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-v","--verbose"],description:"Make some output more verbose"},{name:["-h","--help"],description:"Show help message"}],c={name:"brew",description:"Package manager for macOS",subcommands:[{name:"list",description:"List all installed formulae",options:[...r,{name:["--formula","--formulae"],description:"List only formulae, or treat all named arguments as formulae"},{name:["--cask","--casks"],description:"List only casks, or treat all named arguments as casks"},{name:"--unbrewed",description:"List files in Homebrew's prefix not installed by Homebrew. (disabled; replaced by brew --prefix --unbrewed)"},{name:"--full-name",description:"Print formulae with fully-qualified names. Unless --full-name, --versions or"},{name:"--pinned",description:"List only pinned formulae, or only the specified (pinned) formulae if formula are provided"},{name:"--versions",description:"Show the version number for installed formulae, or only the specified formulae if formula are provided"},{name:"--multiple",description:"Only show formulae with multiple versions installed"},{name:"--pinned",description:"List only pinned formulae, or only the specified (pinned) formulae if formula are provided. See also pin, unpin"},{name:"-1",description:"Force output to be one entry per line. This is the default when output is not to a terminal"},{name:"-l",description:"List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument"},{name:"-r",description:"Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument"},{name:"-t",description:"Sort formulae and/or casks by time modified, listing most recently modified first. Has no effect when a formula or cask name is passed as an argument"}],args:{isOptional:!0,isVariadic:!0,name:"formula",generators:i}},{name:"ls",description:"List all installed formulae",options:[...r,{name:"--formula",description:"List only formulae, or treat all named arguments as formulae"},{name:"--cask",description:"List only casks, or treat all named arguments as casks"},{name:"--unbrewed",description:"List files in Homebrew's prefix not installed by Homebrew. (disabled; replaced by brew --prefix --unbrewed)"},{name:"--full-name",description:"Print formulae with fully-qualified names. Unless --full-name, --versions or"},{name:"--pinned",description:"List only pinned formulae, or only the specified (pinned) formulae if formula are provided"},{name:"--versions",description:"Show the version number for installed formulae, or only the specified formulae if formula are provided"},{name:"--multiple",description:"Only show formulae with multiple versions installed"},{name:"--pinned",description:"List only pinned formulae, or only the specified (pinned) formulae if formula are provided"},{name:"-1",description:"Force output to be one entry per line. This is the default when output is not to a terminal"},{name:"-l",description:"List formulae and/or casks in long format. Has no effect when a formula or cask name is passed as an argument"},{name:"-r",description:"Reverse the order of the formulae and/or casks sort to list the oldest entries first. Has no effect when a formula or cask name is passed as an argument"},{name:"-t",description:"Sort formulae and/or casks by time modified, listing most recently modified first. Has no effect when a formula or cask name is passed as an argument"}],args:{isOptional:!0,isVariadic:!0,name:"formula",generators:i}},{name:"leaves",description:"List installed formulae that are not dependencies of another installed formula",options:[{name:["-r","--installed-on-request"],description:"Show manually installed formula"},{name:["-p","--installed-as-dependency"],description:"Show installed formula as dependencies"}]},{name:"doctor",description:"Check your system for potential problems",options:[...r,{name:"--list-checks",description:"List all audit methods"},{name:["-D","--audit-debug"],description:"Enable debugging and profiling of audit methods"}]},{name:["abv","info"],description:"Display brief statistics for your Homebrew installation",args:{isVariadic:!0,isOptional:!0,name:"formula",description:"Formula or cask to summarize",generators:[a,s]},options:[{name:["--cask","--casks"],description:"List only casks, or treat all named arguments as casks"},{name:"--analytics",description:"List global Homebrew analytics data or, if specified, installation and build error data for formula"},{name:"--days",description:"How many days of analytics data to retrieve",exclusiveOn:["--analytics"],args:{name:"days",description:"Number of days of data to retrieve",suggestions:["30","90","365"]}},{name:"--category",description:"Which type of analytics data to retrieve",exclusiveOn:["--analytics"],args:{generators:{custom:async e=>e.slice(2,e.length-1).some(e=>"-"!==e[0])?["install","install-on-request","build-error"].map(e=>({name:e})):["cask-install","os-version"].map(e=>({name:e}))}}},{name:"--github",description:"Open the GitHub source page for formula in a browser"},{name:"--json",description:"Print a JSON representation"},{name:"--installed",exclusiveOn:["--json"],description:"Print JSON of formulae that are currently installed"},{name:"--all",exclusiveOn:["--json"],description:"Print JSON of all available formulae"},{name:["-v","--verbose"],description:"Show more verbose analytics data for formulae"},{name:"--formula",description:"Treat all named arguments as formulae"},{name:"--cash",description:"Treat all named arguments as casks"},{name:["-d","--debug"],description:"Display any debugging information"},{name:["-q","--quiet"],description:"List only the names of outdated kegs"},{name:["-h","--help"],description:"Get help with services command"}]},{name:"update",description:"Fetch the newest version of Homebrew and all formulae",options:[{name:["-f","--force"],description:"Always do a slower, full update check"},{name:["-v","--verbose"],description:"Print the directories checked and git operations performed"},{name:["-d","--debug"],description:"Display a trace of all shell commands as they are executed"},{name:["-h","--help"],description:"Show help message"},{name:"--merge",description:"Use git merge to apply updates (rather than git rebase)"},{name:"--preinstall",description:"Run on auto-updates (e.g. before brew install). Skips some slower steps"}]},{name:"outdated",description:"List installed casks and formulae that have an updated version available",options:[{name:["-d","--debug"],description:"Display any debugging information"},{name:["-q","--quiet"],description:"List only the names of outdated kegs"},{name:["-v","--verbose"],description:"Include detailed version information"},{name:["-h","--help"],description:"Show help message for the outdated command"},{name:"--cask",description:"List only outdated casks"},{name:"--fetch-HEAD",description:"Fetch the upstream repository to detect if the HEAD installation of the formula is outdated"},{name:"--formula",description:"List only outdated formulae"},{name:"--greedy",description:"Print outdated casks with auto_updates or version :latest"},{name:"--greedy-latest",description:"Print outdated casks including those with version :latest"},{name:"--greedy-auto-updates",description:"Print outdated casks including those with auto_updates true"},{name:"--json",description:"Print output in JSON format"}]},{name:"pin",description:"Pin formula, preventing them from being upgraded",options:r,args:{isVariadic:!0,name:"formula",generators:i}},{name:"unpin",description:"Unpin formula, allowing them to be upgraded",options:r,args:{isVariadic:!0,name:"formula",generators:i}},{name:"upgrade",description:"Upgrade outdated casks and outdated, unpinned formulae using the same options they were originally installed with, plus any appended brew formula options",options:[{name:["-d","--debug"],description:"If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory"},{name:["-f","--force"],description:"Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks, overwrite existing files (binaries and symlinks are excluded, unless originally from the same cask)"},{name:["-v","--verbose"],description:"Print the verification and postinstall steps"},{name:["-n","--dry-run"],description:"Show what would be upgraded, but do not actually upgrade anything"},{name:["-s","--build-from-source"],description:"Compile formula from source even if a bottle is provided. Dependencies will still be installed from bottles if they are available"},{name:["-i","--interactive"],description:"Download and patch formula, then open a shell"},{name:["-g","--git"],description:"Create a Git repository"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-h","--help"],description:"Show this message"},{name:["--formula","--formulae"],description:"Treat all named arguments as formulae. If no named arguments are specified, upgrade only outdated formulae"},{name:"--env",description:"Disabled other than for internal Homebrew use"},{name:"--ignore-dependencies",description:"An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you're not developing Homebrew, consider adjusting your PATH rather than using this flag"},{name:"--only-dependencies",description:"Install the dependencies with specified options but do not install the formula itself"},{name:"--cc",description:"Attempt to compile using the specified compiler, which should be the name of the compiler's executable",args:{name:"compiler",suggestions:["gcc-7","llvm_clang","clang"]}},{name:"--force-bottle",description:"Install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation"},{name:"--include-test",description:"Install testing dependencies required to run brew test formula"},{name:"--HEAD",description:"If formula defines it, install the HEAD version, aka. main, trunk, unstable, master"},{name:"--fetch-HEAD",description:"Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository's HEAD will only be checked for updates when a new stable or development version has been released"},{name:"--ignore-pinned",description:"Set a successful exit status even if pinned formulae are not upgraded"},{name:"--keep-tmp",description:"Retain the temporary files created during installation"},{name:"--build-bottle",description:"Prepare the formula for eventual bottling during installation, skipping any post-install steps"},{name:"--bottle-arch",description:"Optimise bottles for the specified architecture rather than the oldest architecture supported by the version of macOS the bottles are built on"},{name:"--display-times",description:"Print install times for each formula at the end of the run"},{name:["--cask","--casks"],description:"Treat all named arguments as casks. If no named arguments are specified, upgrade only outdated casks"},{name:"--binaries",description:"Disable/enable linking of helper executables (default: enabled)",exclusiveOn:["--no-binaries"]},{name:"--no-binaries",description:"Disable/enable linking of helper executables (default: enabled)",exclusiveOn:["--binaries"]},{name:"--require-sha",description:"Require all casks to have a checksum"},{name:"--quarantine",description:"Disable/enable quarantining of downloads (default: enabled)",exclusiveOn:["--no-quarantine"]},{name:"--no-quarantine",description:"Disable/enable quarantining of downloads (default: enabled)",exclusiveOn:["--quarantine"]},{name:"--skip-cask-deps",description:"Skip installing cask dependencies"},{name:"--greedy",description:"Also include casks with auto_updates true or version :latest",exclusiveOn:["--greedy-latest","--greedy-auto-updates"]},{name:"--greedy-latest",description:"Also include casks with version :latest"},{name:"--greedy-auto-updates",description:"Also include casks with auto_updates true"},{name:"--appdir",description:"Target location for Applications (default: /Applications)",args:{name:"location",template:"folders"}},{name:"--colorpickerdir",description:"Target location for Color Pickers (default: ~/Library/ColorPickers)",args:{name:"location",template:"folders"}},{name:"--prefpanedir",description:"Target location for Preference Panes (default: ~/Library/PreferencePanes)",args:{name:"location",template:"folders"}},{name:"--qlplugindir",description:"Target location for QuickLook Plugins (default: ~/Library/QuickLook)",args:{name:"location",template:"folders"}},{name:"--mdimporterdir",description:"Target location for Spotlight Plugins (default: ~/Library/Spotlight)",args:{name:"location",template:"folders"}},{name:"--dictionarydir",description:"Target location for Dictionaries (default: ~/Library/Dictionaries)",args:{name:"location",template:"folders"}},{name:"--fontdir",description:"Target location for Fonts (default: ~/Library/Fonts)",args:{name:"location",template:"folders"}},{name:"--servicedir",description:"Target location for Services (default: ~/Library/Services)",args:{name:"location",template:"folders"}},{name:"--input-methoddir",description:"Target location for Input Methods (default: ~/Library/Input Methods)",args:{name:"location",template:"folders"}},{name:"--internet-plugindir",description:"Target location for Internet Plugins (default: ~/Library/Internet Plug-Ins)",args:{name:"location",template:"folders"}},{name:"--audio-unit-plugindir",description:"Target location for Audio Unit Plugins (default: ~/Library/Audio/Plug-Ins/Components)",args:{name:"location",template:"folders"}},{name:"--vst-plugindir",description:"Target location for VST Plugins (default: ~/Library/Audio/Plug-Ins/VST)",args:{name:"location",template:"folders"}},{name:"--vst3-plugindir",description:"Target location for VST3 Plugins (default: ~/Library/Audio/Plug-Ins/VST3)",args:{name:"location",template:"folders"}},{name:"--screen-saverdir",description:"Target location for Screen Savers (default: ~/Library/Screen Savers)",args:{name:"location",template:"folders"}},{name:"--language",description:"Comma-separated list of language codes to prefer for cask installation. The first matching language is used, otherwise it reverts to the cask's default language. The default value is the language of your system"}],args:{isVariadic:!0,isOptional:!0,name:"outdated_formula|outdated_cask",generators:{script:["brew","outdated","-q"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:"🍺",description:"Outdated formula"}))}}}},{name:"search",description:"Perform a substring search of cask tokens and formula names",options:[...r,{name:"--formula",description:"Search online and locally for formulae"},{name:"--cask",description:"Search online and locally for casks"},{name:"--desc",description:"Search for formulae with a description matching text and casks with a name matching text"},{name:"--pull-request",description:"Search for GitHub pull requests containing text"},{name:"--open",description:"Search for only open GitHub pull requests"},{name:"--closed",description:"Search for only closed GitHub pull requests"},{name:["--repology","--macports"],description:"Search for text in the given database"},{name:["--fink","--opensuse"],description:"Search for text in the given database"},{name:["--fedora","--debian"],description:"Search for text in the given database"},{name:"--ubuntu",description:"Search for text in the given database"}]},{name:"config",description:"Show Homebrew and system configuration info"},{name:"postinstall",description:"Rerun the post install step for formula",options:[{name:["-d","--debug"],description:"Display any debugging information"},{name:["-v","--verbose"],description:"Make some output more verbose"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-h","--help"],description:"Show this message"}],args:{isVariadic:!0,name:"formula",generators:i}},{name:"install",description:"Install <formula>",options:[{name:["-f","--force"],description:"Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks"},{name:["-v","--verbose"],description:"Print the verification and postinstall steps"},{name:["-s","--build-from-source"],description:"Compile formula from source even if a bottle is provided. Dependencies will still be installed from bottles if they are available"},{name:["-i","--interactive"],description:"Download and patch formula"},{name:["-g","--git"],description:"Create a Git repository"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-h","--help"],description:"Show this message"},{name:"--formula",description:"Treat all named arguments as formulae"},{name:"--env",description:"Disabled other than for internal Homebrew use"},{name:"--ignore-dependencies",description:"An unsupported Homebrew development flag to skip installing any dependencies of any kind. If the dependencies are not already present, the formula will have issues. If you're not developing Homebrew, consider adjusting your PATH rather than using this flag"},{name:"--only-dependencies",description:"Install the dependencies with specified options but do not install the formula itself"},{name:"--cc",description:"Attempt to compile using the specified compiler, which should be the name of the compiler's executable",args:{name:"compiler",suggestions:["gcc-7","llvm_clang","clang"]}},{name:"--force-bottle",description:"Install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation"},{name:"--include-test",description:"Install testing dependencies required to run brew test formula"},{name:"--HEAD",description:"If formula defines it, install the HEAD version, aka. main, trunk, unstable, master"},{name:"--fetch-HEAD",description:"Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository's HEAD will only be checked for updates when a new stable or development version has been released"},{name:"--keep-tmp",description:"Retain the temporary files created during installation"},{name:"--build-bottle",description:"Prepare the formula for eventual bottling during installation, skipping any post-install steps"},{name:"--bottle-arch",description:"Optimise bottles for the specified architecture rather than the oldest architecture supported by the version of macOS the bottles are built on"},{name:"--display-times",description:"Print install times for each formula at the end of the run"},{name:"--cask",description:"--casks Treat all named arguments as casks"},{name:"--binaries",description:"Disable/enable linking of helper executables (default: enabled)"},{name:"--no-binaries",description:"Disable/enable linking of helper executables (default: enabled)"},{name:"--require-sha",description:"Require all casks to have a checksum"},{name:"--quarantine",description:"Disable/enable quarantining of downloads (default: enabled)"},{name:"--no-quarantine",description:"Disable/enable quarantining of downloads (default: enabled)"},{name:"--skip-cask-deps",description:"Skip installing cask dependencies"},{name:"--appdir",description:"Target location for Applications (default: /Applications)",args:{name:"location",template:"folders"}},{name:"--colorpickerdir",description:"Target location for Color Pickers (default: ~/Library/ColorPickers)",args:{name:"location",template:"folders"}},{name:"--prefpanedir",description:"Target location for Preference Panes (default: ~/Library/PreferencePanes)",args:{name:"location",template:"folders"}},{name:"--qlplugindir",description:"Target location for QuickLook Plugins (default: ~/Library/QuickLook)",args:{name:"location",template:"folders"}},{name:"--mdimporterdir",description:"Target location for Spotlight Plugins (default: ~/Library/Spotlight)",args:{name:"location",template:"folders"}},{name:"--dictionarydir",description:"Target location for Dictionaries (default: ~/Library/Dictionaries)",args:{name:"location",template:"folders"}},{name:"--fontdir",description:"Target location for Fonts (default: ~/Library/Fonts)",args:{name:"location",template:"folders"}},{name:"--servicedir",description:"Target location for Services (default: ~/Library/Services)",args:{name:"location",template:"folders"}},{name:"--input-methoddir",description:"Target location for Input Methods (default: ~/Library/Input Methods)",args:{name:"location",template:"folders"}},{name:"--internet-plugindir",description:"Target location for Internet Plugins (default: ~/Library/Internet Plug-Ins)",args:{name:"location",template:"folders"}},{name:"--audio-unit-plugindir",description:"Target location for Audio Unit Plugins (default: ~/Library/Audio/Plug-Ins/Components)",args:{name:"location",template:"folders"}},{name:"--vst-plugindir",description:"Target location for VST Plugins (default: ~/Library/Audio/Plug-Ins/VST)",args:{name:"location",template:"folders"}},{name:"--vst3-plugindir",description:"Target location for VST3 Plugins (default: ~/Library/Audio/Plug-Ins/VST3)",args:{name:"location",template:"folders"}},{name:"--screen-saverdir",description:"Target location for Screen Savers (default: ~/Library/Screen Savers)",args:{name:"location",template:"folders"}},{name:"--language",description:"Comma-separated list of language codes to prefer for cask installation. The first matching language is used, otherwise it reverts to the cask's default language. The default value is the language of your system"}],args:{isVariadic:!0,name:"formula",description:"Formula or cask to install",generators:[a,s]}},{name:"reinstall",description:"Uninstall and then reinstall a formula or cask using the same options it was originally installed with, plus any appended options specific to a formula",options:[{name:["-d","--debug"],description:"If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory"},{name:["-f","--force"],description:"Install formulae without checking for previously installed keg-only or non-migrated versions. When installing casks"},{name:["-v","--verbose"],description:"Print the verification and postinstall steps"},{name:["-s","--build-from-source"],description:"Compile formula from source even if a bottle is provided. Dependencies will still be installed from bottles if they are available"},{name:["-i","--interactive"],description:"Download and patch formula"},{name:["-g","--git"],description:"Create a Git repository"},{name:"--formula",description:"Treat all named arguments as formulae"},{name:"--force-bottle",description:"Install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation"},{name:"--keep-tmp",description:"Retain the temporary files created during installation"},{name:"--display-times",description:"Print install times for each formula at the end of the run"},{name:"--cask",description:"--casks Treat all named arguments as casks"},{name:"--binaries",description:"Disable/enable linking of helper executables (default: enabled)",exclusiveOn:["--no-binaries"]},{name:"--no-binaries",description:"Disable/enable linking of helper executables (default: enabled)",exclusiveOn:["--binaries"]},{name:"--require-sha",description:"Require all casks to have a checksum"},{name:"--quarantine",description:"Disable/enable quarantining of downloads (default: enabled)",exclusiveOn:["--no-quarantine"]},{name:"--no-quarantine",description:"Disable/enable quarantining of downloads (default: enabled)",exclusiveOn:["--quarantine"]},{name:"--skip-cask-deps",description:"Skip installing cask dependencies"}],args:{isVariadic:!0,name:"formula",generators:i}},{name:["uninstall","remove","rm"],description:"Uninstall a formula or cask",args:{isVariadic:!0,name:"formula",generators:i}},{name:"--prefix",description:"Prefix of <formula>",args:{isVariadic:!0,name:"formula",generators:i},options:[{name:"--unbrewed",description:"List files in Homebrew's prefix not installed by Homebrew"},{name:"--installed",description:"Outputs nothing and returns a failing status code if formula is not installed"}]},{name:"cask",description:"Homebrew Cask provides a friendly CLI workflow for the administration of macOS applications distributed as binaries",subcommands:[{name:"install",description:"Installs the given cask",args:{name:"cask",description:"Cask to install"}},{name:"uninstall",description:"Uninstalls the given cask",options:[...r,{name:"--zap",description:"Remove all files associated with a cask. May remove files which are shared between applications"},{name:"--ignore-dependencies",description:"Don't fail uninstall, even if formula is a dependency of any installed formulae"},{name:"--formula",description:"Treat all named arguments as formulae"},{name:"--cask",description:"Treat all named arguments as casks"}],args:{isVariadic:!0,generators:{script:["brew","list","-1","--cask"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:"🍺",description:"Installed formula"}))}}}}]},{name:"cleanup",description:"Remove stale lock files and outdated downloads for all formulae and casks and remove old versions of installed formulae",options:[...r,{name:["--prune","--prune=all"],description:"Remove all cache files older than specified days"},{name:["-n","--dry-run"],description:"Show what would be removed, but do not actually remove anything"},{name:"-s",description:"Scrub the cache, including downloads for even the latest versions"},{name:"--prune-prefix",description:"Only prune the symlinks and directories from the prefix and remove no other files"}],args:{isVariadic:!0,isOptional:!0,generators:n("Cleanup")}},{name:"services",description:"Manage background services with macOS' launchctl(1) daemon manager",options:[...r,{name:"--file",description:"Use the plist file from this location to start or run the service"},{name:"--all",description:"Run subcommand on all services"},{name:["-v","--verbose"],description:"Make some output more verbose"},{name:["-h","--help"],description:"Get help with services command"}],subcommands:[{name:"cleanup",description:"Remove all unused services"},{name:"list",description:"List all services"},{name:"run",description:"Run the service formula without registering to launch at login (or boot)",options:[{name:"--all",description:"Start all services"}],args:{isVariadic:!0,generators:n("Run")}},{name:"start",description:"Start the service formula immediately and register it to launch at login",options:[{name:"--all",description:"Start all services"}],args:{isVariadic:!0,generators:n("Start")}},{name:"stop",description:"Stop the service formula immediately and unregister it from launching at",options:[{name:"--all",description:"Start all services"}],args:{isVariadic:!0,generators:n("Stop")}},{name:"restart",description:"Stop (if necessary) and start the service formula immediately and register it to launch at login (or boot)",options:[{name:"--all",description:"Start all services"}],args:{isVariadic:!0,generators:n("Restart")}}]},{name:"analytics",description:"Manages analytics preferences",subcommands:[{name:"on",description:"Turns on analytics"},{name:"off",description:"Turns off analytics"},{name:"regenerate-uuid",description:"Regenerate the UUID used for analytics"}]},{name:"autoremove",description:"Uninstall formulae that were only installed as a dependency of another formula and are now no longer needed",options:[{name:["-n","--dry-run"],description:"List what would be uninstalled, but do not actually uninstall anything"}]},{name:"tap",description:"Tap a formula repository",options:[...r,{name:"--full",description:"Convert a shallow clone to a full clone without untapping"},{name:"--shallow",description:"Fetch tap as a shallow clone rather than a full clone"},{name:"--force-auto-update",description:"Auto-update tap even if it is not hosted on GitHub"},{name:"--repair",description:"Migrate tapped formulae from symlink-based to directory-based structure"},{name:"--list-pinned",description:"List all pinned taps"}],args:{name:"user/repo or URL"}},{name:"untap",description:"Remove a tapped formula repository",args:{name:"repository",generators:{script:["brew","tap"],postProcess:e=>e.split("\n").map(e=>({name:e}))}},options:[{name:["-f","--force"],description:"Untap even if formulae or casks from this tap are currently installed"},{name:["-d","--debug"],description:"Display any debugging information"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-v","--verbose"],description:"Make some output more verbose"},{name:["-h","--help"],description:"Show help message"}]},{name:"link",description:"Symlink all of formula's installed files into Homebrew's prefix",args:{isOptional:!0,isVariadic:!0,name:"formula",generators:i},options:[{name:"--overwrite",description:"Delete files that already exist in the prefix while linking"},{name:["-n","--dry-run"],description:"List files which would be linked or deleted by brew link --overwrite without actually linking or deleting any files"},{name:["-f","--force"],description:"Allow keg-only formulae to be linked"},{name:"--HEAD",description:"Link the HEAD version of the formula if it is installed"}]},{name:"unlink",description:"Remove symlinks for formula from Homebrew's prefix",args:{isOptional:!0,isVariadic:!0,name:"formula",generators:i},options:[{name:["-n","--dry-run"],description:"List files which would be unlinked without actually unlinking or deleting any files"}]},{name:"formulae",description:"List all available formulae"},{name:"casks",description:"List all available casks"},{name:"edit",description:"",args:{isVariadic:!0,isOptional:!0,name:"formula",description:"Formula or cask to install",generators:[a,s]},options:[...r,{name:["--formula","--formulae"],description:"Treat all named arguments as formulae"},{name:["--cask","--casks"],description:"Treat all named arguments as casks"}]},{name:["home","homepage"],description:"Open a formula, cask's homepage in a browser, or open Homebrew's own homepage if no argument is provided",args:{isVariadic:!0,isOptional:!0,name:"formula",description:"Formula or cask to open homepage for",generators:[a,s]},options:[...r,{name:["--formula","--formulae"],description:"Treat all named arguments as formulae"},{name:["--cask","--casks"],description:"Treat all named arguments as casks"}]},{name:"alias",description:"Manage custom user created brew aliases",options:[{name:"--edit",description:"Edit aliases in a text editor"},{name:["-d","--debug"],description:"Display any debugging information"},{name:["-q","--quiet"],description:"Make some output more quiet"},{name:["-v","--verbose"],description:"Make some output more verbose"},{name:["-h","--help"],description:"Show help message"}],args:{name:"alias",generators:o,description:"Display the alias command",isOptional:!0}},{name:"developer",description:"Display the current state of Homebrew's developer mode",args:{name:"state",description:"Turn Homebrew's developer mode on or off respectively",suggestions:["on","off"],isOptional:!0}}],options:[{name:"--version",description:"The current Homebrew version"}],args:{name:"alias",generators:o,description:"Custom user defined brew alias",isOptional:!0}};t.default=c},8538:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(1398)),c=n(2341),l=n(3907),d=e=>({name:e.nameWithOwner,description:e.description??void 0,icon:e.isPrivate?"🔒":"👀"}),m={listCustomRepositories:{trigger:"/",custom:async(e,t)=>{const n=e.pop();if(!n)return[];const i=n.split("/");if(0===i.length)return[];const a=i.shift();if(!a)return[];const{stdout:s,status:o}=await t({command:"gh",args:["repo","list",a,"--limit","9999","--json","nameWithOwner,description,isPrivate"]});return 0!==o?[]:JSON.parse(s).map(d)}},listRepositories:{script:["gh","api","graphql","--paginate","-f","query='query($endCursor: String) { viewer { repositories(first: 100, after: $endCursor) { nodes { isPrivate, nameWithOwner, description } pageInfo { hasNextPage endCursor }}}}'","--jq",".data.viewer.repositories.nodes[]"],postProcess:e=>{if(e){const t=`[${e.replace(/(?:\r\n|\r|\n)/g,",")}]`;try{return JSON.parse(t).map(d)}catch{return[]}}return[]}},listPR:{cache:{strategy:"stale-while-revalidate"},script:["gh","pr","list","--json=number,title,headRefName,state"],postProcess:e=>JSON.parse(e).map(e=>{const{number:t,title:n,headRefName:i,state:a}=e;return{name:t.toString(),displayName:n,description:`#${t} | ${i}`,icon:`vscode://icon?type=${"OPEN"===a?r.TerminalCompletionItemKind.PullRequest:r.TerminalCompletionItemKind.PullRequestDone}`}})},listAlias:{script:["gh","alias","list"],postProcess:e=>e.split("\n").map(e=>{const[t,n]=e.split(":");return{name:t.trim(),content:n.trim()}}).map(({name:e,content:t})=>({name:e,description:`Alias for '${t}'`,icon:"fig://icon?type=commandkey"}))},remoteBranches:{script:["git","--no-optional-locks","branch","-r","--no-color","--sort=-committerdate"],postProcess:e=>{const t=(e=>e.startsWith("warning:")||e.startsWith("error:")?e.split("\n").slice(1).join("\n"):e)(e);return t.startsWith("fatal:")?[]:t.split("\n").map(e=>{let t=e.trim().replace(/\w+\//,"");const n=e.match(/\S+/g);if(n.length>1){if("*"===n[0])return e.includes("HEAD detached")?{}:{name:e.replace("*","").trim(),description:"Current branch",priority:100,icon:"⭐️"};"+"===n[0]&&(t=e.replace("+","").trim())}return{name:t,description:"Branch",icon:`vscode://icon?type=${r.TerminalCompletionItemKind.ScmBranch}`,priority:75}})}}},p={name:["-c","--codespace"],description:"Name of the codespace",args:{name:"string"}},h={clone:{name:"--clone",description:"Clone the fork {true|false}"},cloneGitFlags:{name:"--",description:"Flags to pass to git when cloning",priority:25,args:{name:"flags",description:"Flags to pass to git when cloning",isVariadic:!0}},confirm:{name:["-y","--confirm"],description:"Skip the confirmation prompt"},all:{name:["--repo","-R"],description:"Select another repository",args:{name:"[HOST/]OWNER/REPO"}},env:{name:["-e","--env"],description:"List secrets for an environment",args:{name:"string"}},org:{name:["-o","--org"],description:"List secrets for an environment",args:{name:"string"}}},u={name:"gh",description:"GitHub's CLI tool",args:{name:"alias",description:"Custom user defined gh alias",isOptional:!0,generators:m.listAlias,parserDirectives:{alias:async(e,t)=>{const{stdout:n}=await t({command:"gh",args:["alias","list"]}),i=n.split("\n").find(t=>t.startsWith(`${e}:\t`));if(!i)throw new Error("Failed to parse alias");return i.slice(e.length+1).trim()}}},subcommands:[{name:"alias",description:"Create command shortcuts",subcommands:[{name:"delete",description:"Delete an alias",args:{name:"alias",generators:m.listAlias}},{name:"list",description:"List available aliases"},{name:"set",description:"Set an alias for a gh command",args:[{name:"alias",description:"A word that will expand to the gh command"},{name:"expansion",description:"The gh command to be invoked, more info with --help"}],options:[{name:["-s","--shell"],description:"Declare an alias to be passed through a shell interpreter"}]}]},{name:"api",description:"Make an authenticated GitHub API request",args:{name:"<endpoint> [flags]a"},options:[{name:"--cache",description:'Cache the response, e.g. "3600s", "60m", "1h"',args:{name:"duration"}},{name:["-F","--field"],description:"Add a typed parameter in key=value format",args:{name:"key:value"}},{name:"--hostname",description:'The GitHub hostname for the request (default "github.com")',args:{name:"string"}},{name:["-i","--include"],description:"Include HTTP response status line and headers in the output"},{name:"--input",description:'The file to use as body for the HTTP request (use "-" to read from standard input)',args:{name:"file"}},{name:["-q","--jq"],description:"Query to select values from the response using jq syntax",args:{name:"string"}},{name:["-X","--method"],description:"The HTTP method for the request",args:{name:"string",description:'(default "GET")'}},{name:"--paginate",description:"Make additional HTTP requests to fetch all pages of results"},{name:["-p","--preview"],description:'GitHub API preview names to request (without the "-preview" suffix)',args:{name:"names"}},{name:["-f","--raw-field"],description:"Add a string parameter in key=value format",args:{name:"key=value"}},{name:"--silent",description:"Do not print the response body"},{name:"--slurp",description:'Use with "--paginate" to return an array of all pages of either JSON arrays or objects'},{name:["-t","--template"],description:'Format JSON output using a Go template; see "gh help formatting"',args:{name:"string"}},{name:"--verbose",description:"Include full HTTP request and response in the output"}]},{name:"auth",description:"Authenticate gh and git with GitHub",subcommands:[{name:"login",description:"Gh auth login [flags]",options:[{name:["-p","--git-protocol"],description:"The protocol to use for git operations on this host: {ssh|https}",args:{name:"string"}},{name:["-h","--hostname"],description:"The hostname of the GitHub instance to authenticate with",args:{name:"string"}},{name:"--insecure-storage",description:"Save authentication credentials in plain text instead of credential store"},{name:["-s","--scopes"],description:"Additional authentication scopes to request",args:{name:"strings"}},{name:"--skip-ssh-key",description:"Skip generate/upload SSH key prompt"},{name:["-w","--web"],description:"Open a browser to authenticate"},{name:"--with-token",description:"Read token from standard input"}]},{name:"logout",description:"Gh auth logout [flags]",options:[{name:["-h","--hostname"],description:"The hostname of the GitHub instance to log out of",args:{name:"string"}},{name:["-u","--user"],description:"The account to log out of",args:{name:"string"}}]},{name:"refresh",description:"Gh auth refresh [flags]",options:[{name:["-h","--hostname"],description:"The GitHub host to use for authentication",args:{name:"string"}},{name:"--insecure-storage",description:"Save authentication credentials in plain text instead of credential store"},{name:["-r","--remove-scopes"],description:"Authentication scopes to remove from gh",args:{name:"strings"}},{name:"--reset-scopes",description:"Reset authentication scopes to the default minimum set of scopes"},{name:["-s","--scopes"],description:"Additional authentication scopes for gh to have",args:{name:"strings"}}]},{name:"setup-git",description:"Gh auth setup-git [flags]",options:[{name:["-f","--force"],description:"Force setup even if the host is not known. Must be used in conjunction with --hostname",args:{name:"--hostname"}},{name:["-h","--hostname"],description:"The hostname to configure git for",args:{name:"string"}}]},{name:"status",description:"View authentication status",options:[{name:["-a","--active"],description:"Display the active account only"},{name:["-h","--hostname"],description:"Check only a specific hostname's auth status",args:{name:"string"}},{name:["-t","--show-token"],description:"Display the auth token"}]},{name:"switch",description:"Switch the active account for a GitHub host",options:[{name:["-h","--hostname"],description:"The hostname of the GitHub instance to switch account for",args:{name:"string"}},{name:["-u","--user"],description:"The account to switch to",args:{name:"string"}}]},{name:"token",description:"Gh auth token [flags]",options:[{name:["-h","--hostname"],description:"The hostname of the GitHub instance authenticated with",args:{name:"string"}},{name:["-u","--user"],description:"The account to output the token for",args:{name:"string"}}]}]},{name:"gpg-key",description:"Manage GPG keys registered with your GitHub account",subcommands:[{name:"add",description:"Add a GPG key to your GitHub account"},{name:"list",description:"Lists GPG keys in your GitHub account"}]},{name:"browse",description:"Open the repository in the browser",args:{name:"[pr | issue | path[:line]",generators:m.listPR,suggestCurrentToken:!0},options:[{name:["-b","--branch"],description:"Select another branch by passing in the branch name",args:{name:"branch",generators:m.remoteBranches}},{name:["-c","--commit"],description:"Open the last commit"},{name:["-n","--no-browser"],description:"Print destination URL instead of opening the browser"},{name:["-p","--projects"],description:"Open repository projects"},{name:["-R","--repo"],description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"[HOST/]OWNER/REPO"}},{name:["-s","--settings"],description:"Open repository settings"},{name:["-w","--wiki"],description:"Open repository wiki"}]},{name:"completion",description:"Generate shell completion scripts",options:[{name:["-s","--shell"],args:{name:"shell",suggestions:["bash","zsh","fish","powershell"]}}]},{name:"config",description:"Manage configuration for gh",subcommands:[{name:"get",description:"Print the value of a given configuration key",args:{name:"key",suggestions:["git_protocol","editor","prompt","pager","http_unix_socket"]},options:[{name:["-h","--host"],args:{name:"host"},description:"Get per-host setting"}]},{name:"set",description:"Update configuration with a value for the given key",subcommands:[{name:"git_protocol",description:"The protocol to use for git clone and push operations",args:{name:"option",suggestions:["https","ssh"]}},{name:"editor",description:"The text editor program to use for authoring text",args:{name:"editor",suggestions:["vim","nano"]}},{name:"prompt",description:"Toggle interactive prompting in the terminal",args:{name:"value",suggestions:["enable","disable"]}},{name:"pager",insertValue:"pager {cursor}",description:"The terminal pager program to send standard output to",args:{name:"value"}},{name:"http_unix_socket",description:"The path to a unix socket through which to make HTTP connection",args:{name:"path"}}],options:[{name:["-h","--host"],args:{name:"host"},description:"Get per-host setting"}]}]},{name:"extensions",description:"Manage gh extensions",subcommands:[{name:"create",description:"Create a new extension",args:{name:"name"}},{name:"install",description:"Install a gh extension from a repository",args:{name:"repo"}},{name:"list",description:"List installed extension commands"},{name:"remove",description:"Remove an installed extension",args:{name:"name"}},{name:"upgrade",description:"Upgrade installed extensions",options:[{name:"--all",description:"Upgrade all extensions"},{name:"--force",description:"Force upgrade extensions"}],args:{name:"name"}}]},{name:"gist",description:"Manage gists",subcommands:[{name:"clone",description:"Clone a gist locally",args:[{name:"gist",description:"Gist ID or URL"},{name:"directory",isOptional:!0,template:"folders"}]},{name:"create",description:"Create a new gist",args:{name:"filename",template:"filepaths"},options:[{name:["-d","--desc"],description:"A description for this gist",insertValue:"-d '{cursor}'",args:{name:"description"}},{name:["-f","--filename"],description:"Provide a filename to be used when reading from STDIN",args:{name:"filename",template:"filepaths"}},{name:["-p","--public"],description:"List the gist publicly (default: secret)"},{name:["-w","--web"],description:"Open the web browser with created gist"}]},{name:"delete",description:"Delete a gist",args:{name:"gist",description:"Gist ID or URL"}},{name:"edit",description:"Edit one of your gists",args:{name:"gist",description:"Gist ID or URL"},options:[{name:["-a","--add"],description:"Add a new file to the gist",args:{name:"filename",template:"filepaths"}},{name:["-f","--filename"],description:"Select a file to edit"}]},{name:"list",description:"List your gists",options:[{name:["-L","--limit"],displayName:"-L, --limit",description:"Maximum number of gists to fetch (default 10)",args:{name:"int"}},{name:"--public",description:"Show only public gists"},{name:"--secret",description:"Show only secret gists"}]},{name:"view",description:"View a gist",args:{name:"gist",description:"Gist ID or URL"},options:[{name:["-f","--filename"],description:"Display a single file from the gist"},{name:"--files",description:"List file names from the gist"},{name:["-r","--raw"],description:"Print raw instead of rendered gist contents"},{name:["-w","--web"],description:"Open gist in the browser"}]}]},{name:"issue",description:"Manage issues",subcommands:[{name:"close",description:"Close issue",args:{name:"issue",description:"Number or URL"},options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}}]},{name:"comment",description:"Create a new issue comment",args:{name:"issue",description:"Number or URL"},options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:["-b","--body"],insertValue:"-b '{cursor}'",description:"Supply a body. Will prompt for one otherwise",args:{name:"string"}},{name:["-F","--body-file"],description:"Read body text from file",args:{name:"file",template:"filepaths"}},{name:["-e","--editor"],description:"Add body using editor",args:{name:"editor"}},{name:["-w","--web"],description:"Add body in browser"}]},{name:"create",description:"Create a new issue",options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:["-a","--assignee"],description:'Assign people by their login. Use "@me" to self-assign',args:{name:"login"}},{name:["-b","--body"],insertValue:"-b '{cursor}'",description:"Supply a body. Will prompt for one otherwise",args:{name:"string"}},{name:["-F","--body-file"],description:"Read body text from file",args:{name:"file",template:"filepaths"}},{name:["-l","--label"],insertValue:"-l '{cursor}'",description:"Add labels by name",args:{name:"name"}},{name:["-m","--milestone"],description:"Add the issue to a milestone by name",args:{name:"name"}},{name:["-p","--project"],insertValue:"-p '{cursor}'",description:"Add the issue to projects by name",args:{name:"name"}},{name:"--recover",insertValue:"--recover '{cursor}'",description:"Recover input from a failed run of create",args:{name:"string"}},{name:["-t","--title"],description:"Supply a title. Will prompt for one otherwise",insertValue:"-t '{cursor}'",args:{name:"string"}},{name:["-w","--web"],description:"Open the browser to create an issue"}]},{name:"delete",description:"Delete issue",options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}}]},{name:"edit",description:"Edit an issue",args:{name:"issue",description:"Number or URL"},options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:"--add-assignee",description:'Add assigned users by their login. Use "@me" to assign yourself',args:{name:"login"}},{name:"--add-label",description:"Add labels by name",args:{name:"name"}},{name:["-b","--body"],insertValue:"-b '{cursor}'",description:"Set the new body",args:{name:"string"}},{name:["-F","--body-file"],description:"Read body text from file",args:{name:"file",template:"filepaths"}},{name:["-m","--milestone"],description:"Edit the milestone the issue belongs to by name",args:{name:"name"}},{name:"--remove-assignee",description:'Remove assigned users by their login. Use "@me" to unassign yourself',args:{name:"login"}},{name:"--remove-label",description:"Remove labels by name",args:{name:"name"}},{name:"--remove-project",description:"Remove the issue from projects by name",args:{name:"name"}},{name:["-t","--title"],description:"Set the new title",insertValue:"-t '{cursor}'",args:{name:"string"}}]},{name:"list",description:"List and filter issues in this repository",options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:["-a","--assignee"],description:"Filter by assignee",args:{name:"string"}},{name:["-A","--author"],description:"Filter by author",args:{name:"string"}},{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-l","--label"],insertValue:"-l '{cursor}'",description:"Filter by labels",args:{name:"string"}},{name:["-L","--limit"],description:"Maximum number of issues to fetch (default 30)",args:{name:"int"}},{name:"--mention",description:"Filter by mention",args:{name:"string"}},{name:["-m","--milestone"],insertValue:"-m '{cursor}'",description:"Filter by milestone number or `title`",args:{name:"number",description:"Number or Title"}},{name:["-S","--search"],insertValue:"--search '{cursor}'",description:"Search issues with query",args:{name:"query"}},{name:["-s","--state"],description:'Filter by state (default "open")',args:{name:"state",suggestions:["open","closed","all"],default:"open",description:'(default "open")'}},{name:["-t","--template"],description:"Format JSON output using a Go template",args:{name:"string"}},{name:["-w","--web"],description:"Open the browser to list the issue(s)"}]},{name:"reopen",description:"Reopen issue",options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}}]},{name:"status",description:"Show status of relevant issues",options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-t","--template"],description:"Format JSON output using a Go template",args:{name:"string"}}]},{name:"transfer",description:"Transfer issue to another repository",args:[{name:"issue",description:"Number or URL"},{name:"destination-repo"}],options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}}]},{name:"view",description:"View an issue",args:{name:"issue",description:"Number or URL"},options:[{name:["-R","--repo"],insertValue:"-R '{cursor}'",description:"Select another repository using the [HOST/]OWNER/REPO format",args:{name:"repo"}},{name:["-c","--comments"],description:"View issue comments"},{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-t","--template"],description:"Format JSON output using a Go template",args:{name:"string"}},{name:["-w","--web"],description:"Open an issue in the browser"}]}]},{name:"pr",description:"Manage pull requests",subcommands:[{name:"checkout",description:"Check out a pull request in git",args:{name:"number | url | branch",generators:m.listPR},options:[{name:"--recurse-submodules",description:"Update all active submodules (recursively)"}]},{name:"checks",description:"Show CI status for a single pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-w","--web"],description:"Open the web browser to show details about checks"}]},{name:"close",description:"Close a pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-d","--delete-branch"],description:"Delete the local and remote branch after close"}]},{name:"edit",description:"Edit a pull request. Without an argument, the pull request that belongs to the current branch is selected",args:{name:"number | url | branch",generators:m.listPR},options:[{name:"--add-assignee",description:'Add assigned users by their login. Use "@me" to assign yourself',args:{name:"login"}},{name:"--add-label",description:"Add labels by name",args:{name:"name"}},{name:"--add-project",description:"Add the pull request to projects by name",args:{name:"name"}},{name:"--add-reviewer",description:"Add reviewers by their login",args:{name:"login"}},{name:["-B","--base"],description:"Change the base branch for this pull request",args:{name:"branch"}},{name:["-b","--body"],description:"Set the new body",args:{name:"string"}},{name:["-F","--body-file"],description:'Read body text from file (use "-" to read from standard input)',args:{name:"file"}},{name:["-m","--milestone"],description:"Edit the milestone the pull request belongs to by name",args:{name:"name"}},{name:"--remove-assignee",description:'Remove assigned users by their login. Use "@me" to unassign yourself',args:{name:"login"}},{name:"--remove-label",description:"Remove labels by name",args:{name:"name"}},{name:"--remove-project",description:"Remove the pull request from projects by name",args:{name:"name"}},{name:"--remove-reviewer",description:"Remove reviewers by their login",args:{name:"login"}},{name:["-t","--title"],description:"Set the new title",args:{name:"string"}},h.all]},{name:"comment",description:"Create a new pr comment",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-b","--body"],insertValue:"-b '{cursor}'",description:"Supply a body. Will prompt for one otherwise",args:{name:"message"}},{name:["-e","--editor"],description:"Add body using editor"},{name:["-w","--web"],description:"Add body in browser"}]},{name:"create",description:"Create a pull request",options:[{name:["-a","--assignee"],description:"Assign people by their login",args:{name:"login"}},{name:["-B","--base"],description:"The branch into which you want your code merged",args:{name:"branch",generators:m.remoteBranches}},{name:["-b","--body"],insertValue:"-b '{cursor}'",description:"Body for the pull request",args:{name:"body"}},{name:["-d","--draft"],description:"Mark pull request as a draft"},{name:["-f","--fill"],description:"Do not prompt for title/body and just use commit info"},{name:["-H","--head"],description:"The branch that contains commits for your pull request (default: current branch)",args:{name:"branch"}},{name:["-l","--label"],description:"The branch that contains commits for your pull request (default: current branch)",args:{name:"branch"}},{name:["-m","--milestone"],description:"Add the pull request to a milestone by name",args:{name:"name"}},{name:"--no-maintainer-edit",description:"Disable maintainer's ability to modify pull request"},{name:["-p","--project"],description:"Add the pull request to projects by name",args:{name:"name"}},{name:"-recover",description:"Recover input from a failed run of create",args:{name:"string"}},{name:["-r","--reviewer"],description:"Request reviews from people or teams by their handle",args:{name:"handle"}},{name:["-t","--title"],description:"Title for the pull request",args:{name:"string"}},{name:["-w","--web"],description:"Open the web browser to create a pull request"}]},{name:"diff",description:"View changes in a pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:"--color",description:"Use color in diff output: {always|never|auto}",args:{name:"choice"}}]},{name:"list",description:"List and filter pull requests in this repository",options:[{name:["-a","--assignee"],description:"Filter by assignee",args:{name:"string"}},{name:["-B","--base"],description:"Filter by base branch",args:{name:"string"}},{name:["-l","--label"],description:"Filter by labels",args:{name:"string"}},{name:["-L","--limit"],description:"Maximum number of items to fetch",args:{name:"int"}},{name:["-s","--state"],description:"Filter by state: {open|closed|merged|all}",args:{name:"string"}},{name:["-w","--web"],description:"Open the browser to list the pull requests",args:{name:"string"}}]},{name:"merge",description:"Merge a pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-d","--delete-branch"],description:"Delete the local and remote branch after merge"},{name:["-m","--merge"],description:"Merge the commits with the base branch"},{name:["-r","--rebase"],description:"Rebase the commits onto the base branch"},{name:["-s","--squash"],description:"Squash the commits into one commit and merge it into the base branch"}]},{name:"ready",description:"Mark a pull request as ready for review",args:{name:"number | url | branch",generators:m.listPR}},{name:"reopen",description:"Reopen a pull request",args:{name:"number | url | branch",generators:m.listPR}},{name:"review",description:"Add a review to a pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-a","--approve"],description:"Approve pull request"},{name:["-b","--body"],description:"Specify the body of a review",args:{name:"string"}},{name:["-c","--comment"],description:"Comment on a pull request"},{name:["-r","--request-changes"],description:"Request changes on a pull request"}]},{name:"status",description:"Show status of relevant pull requests"},{name:"view",description:"View a pull request",args:{name:"number | url | branch",generators:m.listPR},options:[{name:["-c","--comments"],description:"View pull request comments"},{name:["-w","--web"],description:"Open a pull request in the browser"}]}]},{name:"release",description:"Manage GitHub releases"},{name:"repo",description:"Work with GitHub repositories",subcommands:[{name:"archive",description:"Archive a GitHub repository. With no argument, archives the current repository",isDangerous:!0,args:{name:"repository",generators:m.listRepositories,isOptional:!0},options:[h.confirm]},{name:"clone",description:"Clone a GitHub repository locally.\nIf the \"OWNER/\" portion of the \"OWNER/REPO\" repository argument is omitted, it\ndefaults to the name of the authenticating user.\nPass additional 'git clone' flags by listing them after '--'",args:[{name:"repository",generators:[m.listRepositories,m.listCustomRepositories]},{name:"directory",isOptional:!0}],options:[h.cloneGitFlags,{name:["-u","--upstream-remote-name"],description:'Upstream remote name when cloning a fork (default "upstream")',args:{name:"string"}}]},{name:"create",description:"Create a new GitHub repository.\nTo create a repository interactively, use 'gh repo create' with no arguments.\nTo create a remote repository non-interactively, supply the repository name and one of '--public', '--private', or '--internal'.\nPass '--clone' to clone the new repository locally.\nTo create a remote repository from an existing local repository, specify the source directory with '--source'.\nBy default, the remote repository name will be the name of the source directory.\nPass '--push' to push any local commits to the new repository",args:{name:"name"},options:[h.confirm,{name:["-d","--description"],description:"Description of the repository",args:{name:"string"}},{name:["-h","--homepage"],description:"Repository home page URL",args:{name:"string"}},{name:"--public",description:"Make the repository public"},{name:"--private",description:"Make the repository private"},{name:"--internal",description:"Make the repository internal"},{name:["-p","--template"],description:"Make the new repository based on a template repository",args:{name:"string"}},{name:["-c","--clone"],description:"Clone the new repository to the current directory"},{name:"--disable-issues",description:"Disable issues in the new repository"},{name:"--disable-wiki",description:"Disable wiki in the new repository"},{name:["-g","--gitignore"],description:"Specify a gitignore template for the repository",args:{name:"string"}},{name:["-l","--license"],description:"Specify an Open Source License for the repository",args:{name:"string"}},{name:["-r","--remote"],description:"Specify remote name for the new repository",args:{name:"string"}},{name:["-s","--source"],description:"Specify path to local repository to use as source",args:{name:"string"}},{name:["-t","--team"],description:"The name of the organization team to be granted access",args:{name:"string"}},{name:"--include-all-branches",description:"Include all branches from template repository"},{name:"--push",description:"Push local commits to the new repository"},{name:"--add-readme",description:"Add a README file to the new repository"}]},{name:"deploy-key",description:"Manage deploy keys in a repository",subcommands:[{name:"add",description:"Add a deploy key to a GitHub repository",args:{name:"key-file",description:"Path to the public key file",template:"filepaths"},options:[{name:["-w","--allow-write"],description:"Allow write access for the key"},{name:["-t","--title"],description:"Title of the new key",args:{name:"string"}}]},{name:"delete",description:"Delete a deploy key from a GitHub repository",args:{name:"key-id",description:"ID of the key to delete"}},{name:"list",description:"List deploy keys in a GitHub repository"}],options:[{name:["-R","--repo"],description:"Select another repository using the `[HOST/]OWNER/REPO` format",args:{name:"[HOST/]OWNER/REPO"}}]},{name:"delete",description:'Delete a GitHub repository.\nWith no argument, deletes the current repository. Otherwise, deletes the specified repository.\nDeletion requires authorization with the "delete_repo" scope.\nTo authorize, run "gh auth refresh -s delete_repo"',isDangerous:!0,args:{name:"repository",generators:m.listRepositories,isOptional:!0},options:[h.confirm]},{name:"edit",description:"Edit repository settings",args:{name:"repository",generators:m.listRepositories,isOptional:!0},options:[h.clone,{name:"--add-topic",description:"Add repository topic",args:{name:"topic names"}},{name:"--allow-forking",description:"Allow forking of an organization repository"},{name:"--default-branch",description:"Set the default branch name for the repository",args:{name:"branch name"}},{name:"--delete-branch-on-merge",description:"Delete head branch when pull requests are merged"},{name:["-d","--description"],description:"Description of the repository",args:{name:"description"}},{name:"--enable-auto-merge",description:"Enable auto-merge functionality"},{name:"--enable-issues",description:"Enable issues in the repository"},{name:"--enable-merge-commit",description:"Enable merging pull requests via merge commit"},{name:"--enable-projects",description:"Enable projects in the repository"},{name:"--enable-rebase-merge",description:"Enable merging pull requests via rebase"},{name:"--enable-squash-merge",description:"Enable merging pull requests via squashed commit"},{name:"--enable-wiki",description:"Enable wiki in the repository"},{name:["-h","--homepage"],description:"Repository home page URL",args:{name:"URL"}},{name:"--remove-topic",description:"Remove repository topic",args:{name:"topic names"}},{name:"--template",description:"Make the repository available as a template repository"},{name:"--visibility",description:"Change the visibility of the repository to {public,private,internal}",args:{name:"string",suggestions:["public","private","internal"]}}]},{name:"fork",description:"Create a fork of a repository.\nWith no argument, creates a fork of the current repository. Otherwise, forks\nthe specified repository.\nBy default, the new fork is set to be your 'origin' remote and any existing\norigin remote is renamed to 'upstream'. To alter this behavior, you can set\na name for the new fork's remote with --remote-name.\nAdditional 'git clone' flags can be passed in by listing them after '--'",args:{name:"repository",generators:[m.listRepositories,m.listCustomRepositories]},options:[h.cloneGitFlags,{name:"--clone",description:"Clone the fork"},{name:"--remote",description:"Add remote for fork {true|false}"},{name:"--remote-name",description:'Specify a name for a fork\'s new remote. (default "origin")',args:{name:"string"}},{name:"--org",description:"Create the fork in an organization",args:{name:"string"}},{name:"--fork-name",description:"Rename the forked repository",args:{name:"string"}}]},{name:"list",description:"List repositories owned by user or organization.\nFor more information about output formatting flags, see 'gh help formatting'",args:{name:"owner",isOptional:!0},options:[{name:"--visibility",description:"Filter repositories by visibility",args:{name:"visibility",suggestions:["public","private","internal"]}},{name:"--archived",description:"Show only archived repositories"},{name:"--fork",description:"Show only forked repositories"},{name:["-l","--language"],description:"Filter by primary coding language"},{name:["-L","--limit"],description:"Maximum number of repositories to list (default 30)",args:{name:"string"}},{name:"--no-archived",description:"Omit archived repositories"},{name:"--source",description:"Show only non-forks"},{name:["-q","--jq"],description:"Filter JSON output using a jq expression"},{name:"--json",description:"Output JSON with the specified fields"},{name:["-t","--template"],description:"Format JSON output using a Go template"},{name:"--topic",description:"Filter by topic",args:{name:"topic"}},{name:"--private",description:"Show only private repositories",deprecated:!0},{name:"--public",description:"Show only public repositories",deprecated:!0}]},{name:"rename",description:"Rename a GitHub repository.\nBy default, this renames the current repository; otherwise renames the specified repository",args:{name:"new-name",isOptional:!0},options:[h.confirm,h.all,{name:["-R","--repo"],description:"Select another repository using the `[HOST/]OWNER/REPO` format",args:{name:"[HOST/]OWNER/REPO"}}]},{name:"set-default",description:"Sets the default remote repository to use when querying the GitHub API for the locally cloned repository",args:{name:"repository",isOptional:!0,generators:[m.listRepositories,m.listCustomRepositories]},options:[{name:["-u","--unset"],description:"Unset the current default repository"},{name:["-v","--view"],description:"View the current default repository"}]},{name:"sync",description:"Sync destination repository from source repository. Syncing uses the main branch\nof the source repository to update the matching branch on the destination\nrepository so they are equal. A fast forward update will be used execept when the\n'--force' flag is specified, then the two branches will\nby synced using a hard reset.\nWithout an argument, the local repository is selected as the destination repository.\nThe source repository is the parent of the destination repository by default.\nThis can be overridden with the '--source' flag",args:{name:"destination-repository",isOptional:!0},options:[{name:["-b","--branch"],description:"Branch to sync",args:{name:"branch name",default:"main"}},{name:"--force",description:"Hard reset the branch of the destination repository to match the source repository"},{name:["-s","--source"],description:"Source repository",args:{name:"source repository"}}]},{name:"view",description:"Display the description and the README of a GitHub repository.\nWith no argument, the repository for the current directory is displayed.\nWith '--web', open the repository in a web browser instead.\nWith '--branch', view a specific branch of the repository.\nFor more information about output formatting flags, see 'gh help formatting'",args:{name:"repository",isOptional:!0,generators:[m.listRepositories,m.listCustomRepositories]},options:[{name:["-b","--branch"],description:"View a specific branch of the repository",args:{name:"string"}},{name:["-w","--web"],description:"Open a repository in the browser"},{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-t","--template"],description:"Format JSON output using a Go template",args:{name:"string"}}]}]},{name:"run",description:"View details about workflow runs",options:[h.all],subcommands:[{name:"download",description:"Download artifacts generated by a workflow run",args:{name:"run-id"}},{name:"list",description:"List recent workflow runs",options:[h.all,{name:["-L","--limit"],description:"Maximum number of runs to fetch (default 20)",args:{name:"int"}},{name:["-w","--workflow"],description:"Filter runs by workflow",args:{name:"string"}}]},{name:"rerun",description:"Rerun a failed run",options:[h.all],args:{name:"run-id"}},{name:"view",description:"View a summary of a workflow run",options:[h.all,{name:"--exit-status",description:"Exit with non-zero status if run failed"},{name:["-j","--job"],description:"View a specific job ID from a run",args:{name:"string"}},{name:"--log",description:"View full log for either a run or specific job"},{name:"--log-failed",description:"View the log for any failed steps in a run or specific job"},{name:["-v","--verbose"],description:"Show job steps"},{name:["-w","--web"],description:"Open run in the browser"}],args:{name:"run-id"}},{name:"watch",description:"Watch a run until it completes, showing its progress",options:[h.all,{name:"--exit-status",description:"Exit with non-zero status if run fails"},{name:["-i","--interval"],description:"Refresh interval in seconds (default 3)",args:{name:"int"}}]}]},{name:"secret",description:"Manage GitHub secrets",options:[h.all],subcommands:[{name:"list",description:"List secrets for a repository, environment, or organization",options:[h.all,{name:["-e","--env"],description:"List secrets for an environment",args:{name:"string"}},{name:["-o","--org"],description:"List secrets for an environment",args:{name:"string"}}]},{name:"remove",description:"Remove secrets",options:[h.all,h.env,h.org]},{name:"set",description:"Create or update secrets",options:[h.all,h.env,h.org,{name:["-b","--body"],description:"A value for the secret. Reads from STDIN if not specified",args:{name:"string"}},{name:["-v","--visibility"],description:"Set visibility for an organization secret: all, `private`, or `selected` (default 'private')",args:{name:"string",suggestions:[{name:"private"},{name:"selected"},{name:"all"}]}}]}]},{name:"ssh-key",description:"Manage SSH keys",subcommands:[{name:"add",description:"Add an SSH key to your GitHub account",options:[h.all,{name:["-t","--title"],description:"Title for the new key"}],args:{name:"<key-file>",template:"filepaths"}},{name:"list",description:"Lists SSH keys in your GitHub account",options:[h.all]}]},{name:"workflow",description:"View details about GitHub Actions workflows",options:[h.all],subcommands:[{name:"disable",description:"Disable a workflow",options:[h.all],args:{name:"[<workflow-id> | <workflow-name>]"}},{name:"enable",description:"Enable a workflow",options:[h.all],args:{name:"[<workflow-id> | <workflow-name>]"}},{name:"list",description:"List workflows",options:[h.all,{name:["-a","--all"],description:"Show all workflows, including disabled workflows"},{name:["-L","--limit"],description:"Show all workflows, including disabled workflows",args:{name:"int",description:"Maximum number of workflows to fetch (default 50)"}}],args:{name:"[<workflow-id> | <workflow-name>]"}},{name:"run",description:"Run a workflow by creating a workflow_dispatch event",options:[h.all,{name:["-F","--field"],description:"Add a string parameter in key=value format, respecting @ syntax",args:{name:"key=value"}},{name:"--json",description:"Read workflow inputs as JSON via STDIN"},{name:["-f","--raw-field"],description:"Add a string parameter in key=value format",args:{name:"key=value"}},{name:["-r","--ref"],description:"The branch or tag name which contains the version of the workflow file you'd like to run",args:{name:"string"}}],args:{name:"[<workflow-id> | <workflow-name>]"}},{name:"view",description:"View the summary of a workflow",options:[h.all,{name:["-r","--ref"],description:"The branch or tag name which contains the version of the workflow file you'd like to view",args:{name:"string"}},{name:["-w","--web"],description:"Open workflow in the browser"},{name:["-y","--yaml"],description:"View the workflow yaml file"}],args:[{name:"workflow-id"},{name:"workflow-name"},{name:"filename",template:"filepaths"}]}]},{name:["codespace","cs"],description:"Connect to and manage codespaces",subcommands:[{name:"code",description:"Open a codespace in Visual Studio Code",options:[p,{name:"--insiders",description:"Use the insiders version of Visual Studio Code"},{name:["-w","--web"],description:"Use the web version of Visual Studio Code"}]},{name:"cp",description:"The cp command copies files between the local and remote file systems",options:[p,{name:["-e","--expand"],description:"Expand remote file names on remote shell"},{name:["-p","--profile"],description:"Name of the SSH profile to use",args:{name:"string"}},{name:["-r","--recursive"],description:"Recursively copy directories"}],args:[{name:"sources",isVariadic:!0},{name:"dest"}]},{name:"create",description:"Create a codespace",options:[{name:["-b","--branch"],description:"Repository branch"},{name:"--default-permissions",description:"Do not prompt to accept additional permissions requested by the codespace"},{name:"--devcontainer-path",description:"Path to the devcontainer.json file to use when creating codespace",args:{generators:(0,c.filepaths)({extensions:["json"]})}},{name:["-d","--display-name"],description:"Display name for the codespace",args:{name:"string"}},{name:"--idle-timeout",description:"Allowed inactivity before codespace is stopped",args:{name:"duration",description:"Example: '10m', '1h'"}},{name:["-l","--location"],description:"Determined automatically if not provided",args:{name:"location",suggestions:["EastUs","SouthEastAsia","WestEurope","WestUs2"]}},{name:["-m","--machine"],description:"Hardware specifications for the VM",args:{name:"string"}},{name:["-R","--repo"],description:"Repository name with owner: user/repo",args:{name:"string"}},{name:"--retention-period",description:"Allowed time after shutting down before the codespace is automatically deleted (maximum 30 days)",args:{name:"duration",description:"Example: '10m', '1h'"}},{name:["-s","--status"],description:"Show status of post-create command and dotfiles"}]},{name:"delete",description:"Delete codespaces based on selection criteria. All codespaces for the authenticated user can be deleted, as well as codespaces for a specific repository. Alternatively, only codespaces older than N days can be deleted. Organization administrators may delete any codespace billed to the organization",options:[p,{name:"--all",description:"Delete all codespaces"},{name:"--days",description:"Delete codespaces older than N days",args:{name:"N days"}},{name:["-f","--force"],description:"Skip confirmation for codespaces that contain unsaved changes",isDangerous:!0},{name:["-o","--org"],description:"The login handle of the organization (admin-only)",args:{name:"login"}},{name:["-r","--repo"],description:"Delete codespaces for a repository",args:{name:"repository"}},{name:["-u","--user"],description:"The username to delete codespaces for",args:{name:"username"}}]},{name:"edit",description:"Edit a codespace",options:[p,{name:["-d","--display-name"],description:"Set the display name",args:{name:"string"}},{name:["-m","--machine"],description:"Set hardware specifications for the VM",args:{name:"string"}}]},{name:"jupyter",description:"Open a codespace in JupyterLab",options:[p]},{name:"list",description:"List codespaces of the authenticated user. Alternatively, organization administrators may list all codespaces billed to the organization",options:[{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-L","--limit"],description:"Maximum number of codespaces to list",args:{name:"int",default:"30"}},{name:["-o","--org"],description:"The login handle of the organization to list codespaces for (admin-only)",args:{name:"login"}},{name:["-R","--repo"],description:"Repository name with owner: user/repo",args:{name:"string"}},{name:["-t","--template"],description:"Format JSON output using a Go template; see 'gh help formatting'",args:{name:"string"}},{name:["-u","--user"],description:"The username to list codespaces for",args:{name:"string"}}]},{name:"logs",description:"Access codespace logs",options:[p,{name:["-f","--follow"],description:"Tail and follow the logs"}]},{name:"ports",description:"List ports in a codespace",subcommands:[{name:"forward",description:"Forward ports",options:[p],args:{generators:(0,l.keyValue)({separator:":",cache:!0}),isVariadic:!0}},{name:"visibility",description:"Change the visibility of the forwarded port",options:[p],args:{generators:(0,l.keyValue)({separator:":",values:["public","private","org"],cache:!0}),isVariadic:!0}}],options:[p,{name:["-q","--jq"],description:"Filter JSON output using a jq expression",args:{name:"expression"}},{name:"--json",description:"Output JSON with the specified fields",args:{name:"fields"}},{name:["-t","--template"],description:"Format JSON output using a Go template; see 'gh help formatting'",args:{name:"string"}}]},{name:"rebuild",description:"Rebuild a codespace",options:[p]},{name:"ssh",description:"SSH into a codespace",options:[p,{name:"--config",description:"Write OpenSSH configuration to stdout"},{name:["-d","--debug"],description:"Log debug data to a file"},{name:"--debug-file",description:"Path of the file log to",args:{name:"file",template:"filepaths",suggestCurrentToken:!0}},{name:"--profile",description:"Name of the SSH profile to use",args:{name:"string"}},{name:"--server-port",description:"SSH server port number (0 => pick unused)",args:{name:"int"}}],args:{name:"command",isCommand:!0,isOptional:!0}},{name:"stop",description:"Stop running a codespace",options:[p,{name:["-o","--org"],description:"The login handle of the organization (admin-only)",args:{name:"login"}},{name:["-u","--user"],description:"The username to delete codespaces for",args:{name:"username"}}]}]},{name:"project",description:"Manage projects",subcommands:[{name:"create",description:"Create a project",options:[{name:"--title",description:"Title for the project",args:{name:"title"}},{name:"--owner",description:'Login of the owner. Use "@me" for the current user',args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"body"}}]},{name:"edit",description:"Edit a project",options:[{name:"--title",description:"New title of the project",args:{name:"title"}},{name:["-d","--description"],description:"New description of the project",args:{name:"description"}},{name:"--owner",description:'Login of the owner. Use "@me" for the current user',args:{name:"owner"}},{name:"--readme",description:"New readme for the project",args:{name:"readme"}},{name:"--visibility",description:"Change project visibility",args:{name:"visibility",suggestions:["PUBLIC","PRIVATE"]}}]},{name:"list",description:"List projects",options:[{name:"--closed",description:"Include closed projects",args:{name:"closed"}},{name:"--owner",description:"Login of the owner",args:{name:"owner"}},{name:["-L","--limit"],description:"Maximum number of projects to fetch",args:{name:"int",default:"30"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--web",description:"Open projects list in the browser"}]},{name:"delete",description:"Delete a project",options:[{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}}]},{name:"close",description:"Close a project",options:[{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--undo",description:"Reopen a closed project"}]},{name:"view",description:"View a project",options:[{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:["-w","--web"],description:"Open project in the browser"}]},{name:"copy",description:"Copy a project",options:[{name:"--title",description:"Title for the new project",args:{name:"title"}},{name:"--target-owner",description:"Login of the target owner. Use @me for the current user",args:{name:"target-owner"}},{name:"--source-owner",description:"Login of the source owner. Use @me for the current user",args:{name:"source-owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--drafts",description:"Include draft issues when copying"}]},{name:"field-create",description:"Create a project field",options:[{name:"--name",description:"Name of the field",args:{name:"name"}},{name:"--data-type",description:"DataType of the new field",args:{name:"data-type",suggestions:["TEXT","SINGLE_SELECT","DATE","NUMBER"]}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--single-select-options",description:"Options for SINGLE_SELECT data type",args:{name:"single-select-options"}}]},{name:"field-delete",description:"Delete a project field",options:[{name:"--id",description:"ID of the field to delete",args:{name:"id"}},{name:"--format",description:"Output format: {json}"}]},{name:"field-list",description:"List project fields",options:[{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}"},{name:["-L","--limit"],description:"Maximum number of fields to fetch",args:{name:"int",default:"30"}}]},{name:"item-create",description:"Create a draft issue item in a project",options:[{name:"--title",description:"Title for the draft issue",args:{name:"title"}},{name:"--body",description:"Body for the draft issue",args:{name:"body"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}}]},{name:"item-edit",description:"Edit a project item",options:[{name:"--id",description:"ID of the item to edit",args:{name:"id"}},{name:"--project-id",description:"ID of the project to which the field belongs to",args:{name:"project-id"}},{name:"--title",description:"Title of the draft issue item",args:{name:"title"}},{name:"--body",description:"Body of the draft issue item",args:{name:"body"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--field-id",description:"ID of the field to update",args:{name:"field-id"}},{name:"--iteration-id",description:"ID of the iteration value to set on the field",args:{name:"iteration-id"}},{name:"--text",description:"Text value for the field",args:{name:"text"}},{name:"--number",description:"Number value for the field",args:{name:"number"}},{name:"--single-select-option-id",description:"ID of the single select option value to set on the field",args:{name:"single-select-option-id"}},{name:"--date",description:"Date value for the field (YYYY-MM-DD)",args:{name:"date"}}]},{name:"item-delete",description:"Delete a project item",options:[{name:"--id",description:"ID of the item to delete",args:{name:"id"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}}]},{name:"item-list",description:"List project items",options:[{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:["-L","--limit"],description:"Maximum number of items to fetch",args:{name:"int",default:"30"}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}}]},{name:"item-add",description:"Add a pull request or an issue to a project",options:[{name:"--url",description:"URL of the issue or pull request to add to the project",args:{name:"url"}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}}]},{name:"item-archive",description:"Archive a project item",options:[{name:"--id",description:"ID of the item to archive",args:{name:"id"}},{name:"--format",description:"Output format: {json}",args:{name:"format"}},{name:"--owner",description:"Login of the owner. Use @me for the current user",args:{name:"owner"}},{name:"--undo",description:"Unarchive a project item"}]}]}],options:[{name:"--help",description:"Show help for command",isPersistent:!0}]};t.default=u},8595:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"cut",description:"Cut out selected portions of each line of a file",args:{template:"filepaths",isOptional:!0,isVariadic:!0},options:[{name:"-b",description:"Byte positions as a comma or - separated list of numbers",args:{name:"list",description:"Specifies byte positions"}},{name:"-c",description:"Column positions as a comma or - separated list of numbers",args:{name:"list",description:"Specifies column positions"}},{name:"-f",description:"Field positions as a comma or - separated list of numbers",args:{name:"list",description:"Specifies column positions"}},{name:"-n",description:"Do not split multi-byte characters"},{name:"-d",description:"Use delim as the field delimiter character instead of the tab character",args:{name:"delim",description:"Field deliminator to use instead of the tab character",isOptional:!0}},{name:"-s",description:"Suppress lines with no field delimiter characters. unless specified, lines with no delimiters are passed through unmodified"},{name:"-w",description:"Use whitespace (spaces and tabs) as the delimiter. Consecutive spaces and tabs count as one single field separator"}]}},8632:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"wget",description:"A non-interactive network retriever",args:{isVariadic:!0,name:"url",description:"The url(s) to retrieve"},options:[{name:["-V","--version"],description:"Display the version of Wget and exit"},{name:["-h","--help"],description:"Print this help"},{name:["-b","--background"],description:"Go to background after startup"},{name:["-e","--execute=COMMAND"],description:"Execute a `.wgetrc'-style command"},{name:["-o","--output-file=FILE"],description:"Log messages to FILE"},{name:["-a","--append-output=FILE"],description:"Append messages to FILE"},{name:["-q","--quiet"],description:"Quiet (no output)"},{name:["-v","--verbose"],description:"Be verbose (this is the default)"},{name:["-nv","--no-verbose"],description:"Turn off verboseness, without being quiet"},{name:"--report-speed=TYPE",description:"Output bandwidth as TYPE. TYPE can be bits"},{name:["-i","--input-file=FILE"],description:"Download URLs found in local or external FILE"},{name:["-F","--force-html"],description:"Treat input file as HTML"},{name:["-B","--base=URL"],description:"Resolves HTML input-file links (-i -F) relative to URL"},{name:"--config=FILE",description:"Specify config file to use"},{name:"--no-config",description:"Do not read any config file"},{name:"--rejected-log=FILE",description:"Log reasons for URL rejection to FILE"},{name:["-t","--tries=NUMBER"],description:"Set number of retries to NUMBER (0 unlimits)"},{name:"--retry-connrefused",description:"Retry even if connection is refused"},{name:"--retry-on-http-error",description:"Comma-separated list of HTTP errors to retry"},{name:["-O","--output-document=FILE"],description:"Write documents to FILE"},{name:["-nc","--no-clobber"],description:"Skip downloads that would download to existing files (overwriting them)"},{name:"--no-netrc",description:"Don't try to obtain credentials from .netrc"},{name:["-c","--continue"],description:"Resume getting a partially-downloaded file"},{name:"--start-pos=OFFSET",description:"Start downloading from zero-based position OFFSET"},{name:"--progress=TYPE",description:"Select progress gauge type"},{name:"--show-progress",description:"Display the progress bar in any verbosity mode"},{name:["-N","--timestamping"],description:"Don't re-retrieve files unless newer than local"},{name:["-S","--server-response"],description:"Print server response"},{name:"--spider",description:"Don't download anything"},{name:["-T","--timeout=SECONDS"],description:"Set all timeout values to SECONDS"},{name:"--dns-timeout=SECS",description:"Set the DNS lookup timeout to SECS"},{name:"--connect-timeout=SECS",description:"Set the connect timeout to SECS"},{name:"--read-timeout=SECS",description:"Set the read timeout to SECS"},{name:["-w","--wait=SECONDS"],description:"Wait SECONDS between retrievals"},{name:"--waitretry=SECONDS",description:"Wait 1..SECONDS between retries of a retrieval"},{name:"--random-wait",description:"Wait from 0.5*WAIT...1.5*WAIT secs between retrievals"},{name:"--no-proxy",description:"Explicitly turn off proxy"},{name:["-Q","--quota=NUMBER"],description:"Set retrieval quota to NUMBER"},{name:"--bind-address=ADDRESS",description:"Bind to ADDRESS (hostname or IP) on local host"},{name:"--limit-rate=RATE",description:"Limit download rate to RATE"},{name:"--no-dns-cache",description:"Disable caching DNS lookups"},{name:"--restrict-file-names=OS",description:"Restrict chars in file names to ones OS allows"},{name:"--ignore-case",description:"Ignore case when matching files/directories"},{name:["-4","--inet4-only"],description:"Connect only to IPv4 addresses"},{name:["-6","--inet6-only"],description:"Connect only to IPv6 addresses"},{name:"--user=USER",description:"Set both ftp and http user to USER"},{name:"--password=PASS",description:"Set both ftp and http password to PASS"},{name:"--ask-password",description:"Prompt for passwords"},{name:"--no-iri",description:"Turn off IRI support"},{name:"--local-encoding=ENC",description:"Use ENC as the local encoding for IRIs"},{name:"--remote-encoding=ENC",description:"Use ENC as the default remote encoding"},{name:"--unlink",description:"Remove file before clobber"},{name:"--xattr",description:"Turn on storage of metadata in extended file attributes"},{name:["-nd","--no-directories"],description:"Don't create directories"},{name:["-x","--force-directories"],description:"Force creation of directories"},{name:["-nH","--no-host-directories"],description:"Don't create host directories"},{name:"--protocol-directories",description:"Use protocol name in directories"},{name:["-P","--directory-prefix=PREFIX"],description:"Save files to PREFIX/"},{name:"--cut-dirs=NUMBER",description:"Ignore NUMBER remote directory components"},{name:"--http-user=USER",description:"Set http user to USER"},{name:"--http-password=PASS",description:"Set http password to PASS"},{name:"--no-cache",description:"Disallow server-cached data"},{name:["-E","--adjust-extension"],description:"Save HTML/CSS documents with proper extensions"},{name:"--ignore-length",description:"Ignore 'Content-Length' header field"},{name:"--header=STRING",description:"Insert STRING among the headers"},{name:"--compression=TYPE",description:"Choose compression, one of auto, gzip and none. (default: none)"},{name:"--max-redirect",description:"Maximum redirections allowed per page"},{name:"--proxy-user=USER",description:"Set USER as proxy username"},{name:"--proxy-password=PASS",description:"Set PASS as proxy password"},{name:"--referer=URL",description:"Include 'Referer: URL' header in HTTP request"},{name:"--save-headers",description:"Save the HTTP headers to file"},{name:["-U","--user-agent=AGENT"],description:"Identify as AGENT instead of Wget/VERSION"},{name:"--no-http-keep-alive",description:"Disable HTTP keep-alive (persistent connections)"},{name:"--no-cookies",description:"Don't use cookies"},{name:"--load-cookies=FILE",description:"Load cookies from FILE before session"},{name:"--save-cookies=FILE",description:"Save cookies to FILE after session"},{name:"--keep-session-cookies",description:"Load and save session (non-permanent) cookies"},{name:"--post-data=STRING",description:"Use the POST method; send STRING as the data"},{name:"--post-file=FILE",description:"Use the POST method; send contents of FILE"},{name:"--method=HTTPMethod",description:'Use method "HTTPMethod" in the request'},{name:"--body-data=STRING",description:"Send STRING as data. --method MUST be set"},{name:"--body-file=FILE",description:"Send contents of FILE. --method MUST be set"},{name:"--content-on-error",description:"Output the received content on server errors"},{name:"--secure-protocol=PR",description:"Choose secure protocol, one of auto, SSLv2,"},{name:"--https-only",description:"Only follow secure HTTPS links"},{name:"--no-check-certificate",description:"Don't validate the server's certificate"},{name:"--certificate=FILE",description:"Client certificate file"},{name:"--certificate-type=TYPE",description:"Client certificate type, PEM or DER"},{name:"--private-key=FILE",description:"Private key file"},{name:"--private-key-type=TYPE",description:"Private key type, PEM or DER"},{name:"--ca-certificate=FILE",description:"File with the bundle of CAs"},{name:"--ca-directory=DIR",description:"Directory where hash list of CAs is stored"},{name:"--crl-file=FILE",description:"File with bundle of CRLs"},{name:"--ciphers=STR",description:"Set the priority string (GnuTLS) or cipher list string (OpenSSL) directly"},{name:["-r","--recursive"],description:"Specify recursive download"},{name:["-l","--level=NUMBER"],description:"Maximum recursion depth (inf or 0 for infinite)"},{name:"--delete-after",description:"Delete files locally after downloading them"},{name:["-k","--convert-links"],description:"Make links in downloaded HTML or CSS point to local files"},{name:["-K","--backup-converted"],description:"Before converting file X, back up as X.orig"},{name:["-m","--mirror"],description:"Shortcut for -N -r -l inf --no-remove-listing"},{name:["-p","--page-requisites"],description:"Get all images, etc. needed to display HTML page"},{name:["-A","--accept=LIST"],description:"Comma-separated list of accepted extensions"},{name:["-R","--reject=LIST"],description:"Comma-separated list of rejected extensions"},{name:"--accept-regex=REGEX",description:"Regex matching accepted URLs"},{name:"--reject-regex=REGEX",description:"Regex matching rejected URLs"},{name:"--regex-type=TYPE",description:"Regex type (posix)"},{name:["-D","--domains=LIST"],description:"Comma-separated list of accepted domains"},{name:"--exclude-domains=LIST",description:"Comma-separated list of rejected domains"},{name:"--follow-ftp",description:"Follow FTP links from HTML documents"},{name:"--follow-tags=LIST",description:"Comma-separated list of followed HTML tags"},{name:"--ignore-tags=LIST",description:"Comma-separated list of ignored HTML tags"},{name:["-H","--span-hosts"],description:"Go to foreign hosts when recursive"},{name:["-L","--relative"],description:"Follow relative links only"},{name:["-I","--include-directories=LIST"],description:"List of allowed directories"},{name:["-X","--exclude-directories=LIST"],description:"List of excluded directories"},{name:["-np","--no-parent"],description:"Don't ascend to the parent directory"}]}},8697:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"truncate",description:"Shrink or extend the size of a file to the specified size",options:[{name:["--no-create","-c"],description:"Do not create any files"},{name:["--io-blocks","-o"],description:"Treat SIZE as number of IO blocks instead of bytes"},{name:["--reference","-r"],description:"Base size on RFILE",args:{name:"RFILE"}},{name:["--size","-s"],description:"Set or adjust the file size by SIZE bytes",args:{name:"SIZE",description:"The SIZE argument is an integer and optional unit; units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on"}},{name:"--help",description:"Show help for truncate"},{name:"--version",description:"Output version information and exit"}],args:{name:"FILE",isVariadic:!0,template:"filepaths"}}},8719:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"npx",description:"Execute binaries from npm packages",args:{name:"command",isCommand:!0,generators:{script:["bash","-c","until [[ -d node_modules/ ]] || [[ $PWD = '/' ]]; do cd ..; done; ls -1 node_modules/.bin/"],postProcess:function(e){return e.split("\n").map(e=>({name:e,icon:"fig://icon?type=command",loadSpec:e}))}},isOptional:!0},options:[{name:["--package","-p"],description:"Package to be installed",args:{name:"package"}},{name:"--cache",args:{name:"path",template:"filepaths"},description:"Location of the npm cache"},{name:"--always-spawn",description:"Always spawn a child process to execute the command"},{name:"-y",description:"Execute npx command without prompting for confirmation"},{description:"Skip installation if a package is missing",name:"--no-install"},{args:{name:"path",template:"filepaths"},description:"Path to user npmrc",name:"--userconfig"},{name:["--call","-c"],args:{name:"script"},description:"Execute string as if inside `npm run-script`"},{name:["--shell","-s"],description:"Shell to execute the command with, if any",args:{name:"shell",suggestions:[{name:"bash"},{name:"fish"},{name:"zsh"}]}},{args:{name:"shell-fallback",suggestions:[{name:"bash"},{name:"fish"},{name:"zsh"}]},name:"--shell-auto-fallback",description:'Generate shell code to use npx as the "command not found" fallback'},{name:"--ignore-existing",description:"Ignores existing binaries in $PATH, or in the localproject. This forces npx to do a temporary install and use the latest version"},{name:["--quiet","-q"],description:"Suppress output from npx itself. Subcommands will not be affected"},{name:"--npm",args:{name:"path to binary",template:"filepaths"},description:"Npm binary to use for internal operations"},{args:{},description:"Extra node argument when calling a node binary",name:["--node-arg","-n"]},{description:"Show version number",name:["--version","-v"]},{description:"Show help",name:["--help","-h"]}]}},8874:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"cd",description:"Change the shell working directory",args:{name:"folder",template:"folders",suggestions:[{name:"-",description:"Switch to the last used folder",hidden:!0}]}}},8920:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"htop",description:"Improved top (interactive process viewer)",options:[{name:["--help","-h"],description:"Show help for htop"},{name:["--no-color","-C"],description:"Use a monochrome color scheme"},{name:["--delay","-d"],description:"Delay between updates, in tenths of sec",args:{name:"delay",suggestions:["10","1","60"]}},{name:["--filter","-F"],description:"Filter commands",args:{name:"filter"}},{name:["--highlight-changes","-H"],description:"Highlight new and old processes",args:{name:"delay",description:"Delay between updates of highlights, in tenths of sec",suggestions:["10","1","60"],isOptional:!0}},{name:["--no-mouse","-M"],description:"Disable the mouse"},{name:["--pid","-p"],description:"Show only the given PIDs",args:{name:"PID",isVariadic:!0}},{name:["--sort-key","-s"],description:"Sort by COLUMN in list view",args:{name:"column"}},{name:["--tree","-t"],description:"Show the tree view"},{name:["--user","-u"],description:"Show only processes for a given user (or $USER)",args:{name:"user",isOptional:!0,suggestions:["$USER"]}},{name:["--no-unicode","-U"],description:"Do not use unicode but plain ASCII"},{name:["--version","-V"],description:"Print version info"}]}},8934:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"which",description:"Locate a program in the user's PATH",args:{name:"names",isVariadic:!0,generators:{script:["bash","-c",'for i in $(echo $PATH | tr ":" "\n"); do find $i -maxdepth 1 -perm -111 -type f; done'],postProcess:e=>e.split("\n").map(e=>e.split("/")[e.split("/").length-1]).map(e=>({name:e,description:"Executable file",type:"arg"}))},filterStrategy:"fuzzy",suggestCurrentToken:!0},options:[{name:"-s",description:"No output, return 0 if all the executables are found, 1 if not"},{name:"-a",description:"List all instances of executables found, instead of just the first"}]}},8955:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"ping",args:{name:"Hostname or IP"},description:"Send ICMP ECHO_REQUEST to network hosts",options:[{name:"-A",description:"Audible. Output a bell (ASCII 0x07) character when no packet is received before the next packet is transmitted. To cater for round-trip times that are longer than the interval between trans- missions, further missing packets cause a bell only if the maxi- mum number of unreceived packets has increased"},{name:"-a",description:"Audible. Include a bell (ASCII 0x07) character in the output when any packet is received. This option is ignored if other format options are present"},{name:"-b",description:"Bind the socket to interface boundif for sending. This option is an Apple addition",args:{name:"boundif"}},{name:"-C",description:"Prohibit the socket from using the cellular network interface. This option is an Apple addition"},{name:"-c",description:"Stop after sending (and receiving) count ECHO_RESPONSE packets. If this option is not specified, ping will operate until inter- rupted. If this option is specified in conjunction with ping sweeps, each sweep will consist of count packets",args:{name:"count"}},{name:"-D",description:"Set the Don't Fragment bit"},{name:"-d",description:"Set the SO_DEBUG option on the socket being used"},{name:"-f",description:"Flood ping. Outputs packets as fast as they come back or one hundred times per second, whichever is more. For every ECHO_REQUEST sent a period ``.'' is printed, while for every ECHO_REPLY received a backspace is printed. This provides a rapid display of how many packets are being dropped. Only the super-user may use this option. This can be very hard on a net- work and should be used with caution"},{name:"-G",description:"Sweepmaxsize Specify the maximum size of ICMP payload when sending sweeping pings. This option is required for ping sweeps",args:{name:"count"}},{name:"-g",description:"Specify the size of ICMP payload to start with when sending sweeping pings",args:{name:"sweepminsize",default:"0"}},{name:"-h",description:"Specify the number of bytes to increment the size of ICMP payload after each sweep when sending sweeping pings",args:{name:"sweepincrsize",default:"1"}},{name:"-I",description:"Source multicast packets with the given interface address. This flag only applies if the ping destination is a multicast address",args:{name:"iface"}},{name:"-i",description:"Wait wait seconds between sending each packet. The default is to wait for one second between each packet. The wait time may be fractional, but only the super-user may specify values less than 0.1 second. This option is incompatible with the -f option",args:{name:"wait"}},{name:"-k",description:"Specifies the traffic class to use for sending ICMP packets. By default ping uses the control traffic class (CTL). This option is an Apple addition",args:{name:"trafficclass",suggestions:["BK_SYS","BK","BE","RD","OAM","AV","RV","VI","VO","CTL"],default:"CTL"}},{name:"-K",description:"Specifies the network service type to use for sending ICMP pack- ets. Note this overrides the default traffic class (-k can still be specified after -K to use both). This option is an Apple addition",args:{name:"netservicetype",suggestions:["BK_SYS","BK","BE","RV","AV","RD","OAM","VI","SIG","VO"]}},{name:"-L",description:"Suppress loopback of multicast packets. This flag only applies if the ping destination is a multicast address"},{name:"-l",description:"If preload is specified, ping sends that many packets as fast as possible before falling into its normal mode of behavior. Only the super-user may use this option",args:{name:"preload"}},{name:"-M",description:"Use ICMP_MASKREQ or ICMP_TSTAMP instead of ICMP_ECHO. For mask, print the netmask of the remote machine. Set the net.inet.icmp.maskrepl MIB variable to enable ICMP_MASKREPLY. For time, print the origination, reception and transmission time- stamps",args:{name:"mask | time"}},{name:"-m",description:"Set the IP Time To Live for outgoing packets. If not specified, the kernel uses the value of the net.inet.ip.ttl MIB variable",args:{name:"ttl"}},{name:"-n",description:"Numeric output only. No attempt will be made to lookup symbolic names for host addresses"},{name:"-o",description:"Exit successfully after receiving one reply packet"},{name:"-P",description:"Policy specifies IPsec policy for the ping session. For details please refer to ipsec(4) and ipsec_set_policy(3)",args:{name:"policy"}},{name:"-p",description:"You may specify up to 16 'pad' bytes to fill out the packet you send. This is useful for diagnosing data-dependent problems in a network. For example, '-p ff' will cause the sent packet to be filled with all ones",args:{name:"pattern"}},{name:"-Q",description:"Somewhat quiet output. Don't display ICMP error messages that are in response to our query messages. Originally, the -v flag was required to display such errors, but -v displays all ICMP error messages. On a busy machine, this output can be overbear- ing. Without the -Q flag, ping prints out any ICMP error mes- sages caused by its own ECHO_REQUEST messages"},{name:"-q",description:"Quiet output. Nothing is displayed except the summary lines at startup time and when finished"},{name:"-R",description:"Record route. Includes the RECORD_ROUTE option in the ECHO_REQUEST packet and displays the route buffer on returned packets. Note that the IP header is only large enough for nine such routes; the traceroute(8) command is usually better at determining the route packets take to a particular destination. If more routes come back than should, such as due to an illegal spoofed packet, ping will print the route list and then truncate it at the correct spot. Many hosts ignore or discard the RECORD_ROUTE option"},{name:"-r",description:"Bypass the normal routing tables and send directly to a host on an attached network. If the host is not on a directly-attached network, an error is returned. This option can be used to ping a local host through an interface that has no route through it (e.g., after the interface was dropped by routed(8))"},{name:"-S",description:"Use the following IP address as the source address in outgoing packets. On hosts with more than one IP address, this option can be used to force the source address to be something other than the IP address of the interface the probe packet is sent on. If the IP address is not one of this machine's interface addresses, an error is returned and nothing is sent",args:{name:"src_addr"}},{name:"-s",description:"Specify the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data. This option cannot be used with ping sweeps",args:{name:"packetsize"}},{name:"-T",description:"Set the IP Time To Live for multicasted packets. This flag only applies if the ping destination is a multicast address",args:{name:"ttl"}},{name:"-t",description:"Specify a timeout, in seconds, before ping exits regardless of how many packets have been received",args:{name:"timeout"}},{name:"-v",description:"Verbose output. ICMP packets other than ECHO_RESPONSE that are received are listed"},{name:"-W",description:"Time in milliseconds to wait for a reply for each packet sent. If a reply arrives later, the packet is not printed as replied, but considered as replied when calculating statistics",args:{name:"waittime"}},{name:"-z",description:"Use the specified type of service",args:{name:"tos"}},{name:"--apple-connect",description:"Connects the socket to the destination address"},{name:"--apple-time",description:"Prints the time a packet was received"}]}},8990:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"source",description:"Source files in shell",args:{isVariadic:!0,name:"File to source",template:"filepaths"}}},9197:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"tail",description:"Display the last part of a file",args:{isVariadic:!0,template:"filepaths"},options:[{name:"-f",description:"Wait for additional data to be appended"},{name:"-r",description:"Display in reverse order"}]}},9210:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(2449),a={name:"rsync",description:"Rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm",args:[{name:"SRC",isVariadic:!0,generators:[i.knownHosts,i.configHosts,{template:["history","filepaths","folders"]}]},{name:"DEST",generators:[i.knownHosts,i.configHosts,{template:["history","filepaths","folders"]}]}],options:[{name:["-v","--verbose"],description:"Increase verbosity"},{name:"--info",description:"Fine-grained informational verbosity",requiresSeparator:!0,args:[{name:"BACKUP",description:"Mention files backed up"},{name:"COPY",description:"Mention files copied locally on the receiving side"},{name:"DEL",description:"Mention deletions on the receiving side"},{name:"FLIST",description:"Mention file-list receiving/sending (levels 1-2)"},{name:"MISC",description:"Mention miscellaneous information (levels 1-2)"},{name:"MOUNT",description:"Mention mounts that were found or skipped"},{name:"NAME",description:"Mention 1) updated file/dir names, 2) unchanged names"},{name:"PROGRESS",description:"Mention 1) per-file progress or 2) total transfer progress"},{name:"REMOVE",description:"Mention files removed on the sending side"},{name:"SKIP",description:"Mention files that are skipped due to options used"},{name:"STATS",description:"Mention statistics at end of run (levels 1-3)"},{name:"SYMSAFE",description:"Mention symlinks that are unsafe"},{name:"ALL",description:"Set all --info options (e.g. all4)"},{name:"NONE",description:"Silence all --info options (same as all0)"},{name:"HELP",description:"Output this help message"}]},{name:"--debug",description:"Fine-grained debug verbosity",requiresSeparator:!0,args:[{name:"BACKUP",description:"Mention files backed up"},{name:"COPY",description:"Mention files copied locally on the receiving side"},{name:"DEL",description:"Mention deletions on the receiving side"},{name:"FLIST",description:"Mention file-list receiving/sending (levels 1-2)"},{name:"MISC",description:"Mention miscellaneous information (levels 1-2)"},{name:"MOUNT",description:"Mention mounts that were found or skipped"},{name:"NAME",description:"Mention 1) updated file/dir names, 2) unchanged names"},{name:"PROGRESS",description:"Mention 1) per-file progress or 2) total transfer progress"},{name:"REMOVE",description:"Mention files removed on the sending side"},{name:"SKIP",description:"Mention files that are skipped due to options used"},{name:"STATS",description:"Mention statistics at end of run (levels 1-3)"},{name:"SYMSAFE",description:"Mention symlinks that are unsafe"},{name:"ALL",description:"Set all --info options (e.g. all4)"},{name:"NONE",description:"Silence all --info options (same as all0)"},{name:"HELP",description:"Output this help message"}]},{name:"--msgs2stderr",description:"Special output handling for debugging"},{name:["--quiet","-q"],description:"Suppress non-error messages"},{name:"--no-motd",description:"Suppress daemon-mode MOTD (see manpage caveat)"},{name:["--checksum","-c"],description:"Skip based on checksum, not mod-time & size"},{name:["-a","--archive"],description:"Archive mode; equals -rlptgoD (no -H,-A,-X)",exclusiveOn:["-H","-A","-X"]},{name:"--no-OPTION",description:"Turn off an implied OPTION (e.g. --no-D)"},{name:["-r","--recursive"],description:"Recurse into directories"},{name:["-R","--relative"],description:"Use relative path names"},{name:"--no-implied-dirs",description:"Don't send implied dirs with --relative",dependsOn:["--relative"]},{name:["-b","--backup"],description:"Make backups (see --suffix & --backup-dir)"},{name:"--backup-dir",description:"Make backups into hierarchy based in DIR",requiresSeparator:!0,args:{name:"DIR",template:"folders"}},{name:"--suffix",description:"Set backup suffix (default ~ w/o --backup-dir)",requiresSeparator:!0,args:{name:"SUFFIX"}},{name:["-u","--update"],description:"Skip files that are newer on the receiver"},{name:"--inplace",description:"Update destination files in-place (SEE MAN PAGE)"},{name:"--append",description:"Append data onto shorter files"},{name:"--append-verify",description:"Like --append, but with old data in file checksum"},{name:["-d","--dirs"],description:"Transfer directories without recursing",args:{name:"DIR",template:"folders"}},{name:["-l","--links"],description:"Copy symlinks as symlinks"},{name:["-L","--copy-links"],description:"Transform symlink into referent file/dir"},{name:"--copy-unsafe-links",description:'Only "unsafe" symlinks are transformed'},{name:"--safe-links",description:"Ignore symlinks that point outside the source tree"},{name:"--munge-links",description:"Munge symlinks to make them safer (but unusable)"},{name:["-k","--copy-dirlinks"],description:"Transform symlink to a dir into referent dir"},{name:["-K","--keep-dirlinks"],description:"Treat symlinked dir on receiver as dir"},{name:["-H","--hard-links"],description:"Preserve hard links"},{name:["-p","--perms"],description:"Preserve permissions"},{name:["-E","--executability"],description:"Preserve the file's executability"},{name:"--chmod",description:"Affect file and/or directory permissions",requiresSeparator:!0,args:{name:"CHMOD"}},{name:["-A","--acls"],description:"Preserve ACLs (implies --perms)",dependsOn:["--perms"]},{name:["-X","--xattrs"],description:"Preserve extended attributes"},{name:["-o","--owner"],description:"Preserve owner (super-user only)"},{name:["-g","--group"],description:"Preserve group"},{name:"--devices",description:"Preserve device files (super-user only)"},{name:"--copy-devices",description:"Copy device contents as regular file"},{name:"--specials",description:"Preserve special files"},{name:"-D",description:"Same as --devices --specials"},{name:["-t","--times"],description:"Preserve modification times"},{name:["-O","--omit-dir-times"],description:"Omit directories from --times",dependsOn:["--times"],args:{name:"DIR",template:"folders",isVariadic:!0}},{name:["-J","--omit-link-times"],description:"Omit symlinks from --times",dependsOn:["--times"]},{name:"--super",description:"Receiver attempts super-user activities"},{name:"--fake-super",description:"Store/recover privileged attrs using xattrs"},{name:["-S","--sparse"],description:"Turn sequences of nulls into sparse blocks"},{name:"--preallocate",description:"Allocate dest files before writing them"},{name:["-n","--dry-run"],description:"Perform a trial run with no changes made"},{name:["-W","--whole-file"],description:"Copy files whole (without delta-xfer algorithm)"},{name:"--checksum-choice",description:"Choose the checksum algorithms",requiresSeparator:!0,args:{name:"ALGORITHM",suggestions:["auto","md4","md5","none"]}},{name:["-x","--one-file-system"],description:"Don't cross filesystem boundaries"},{name:["-B","--block-size"],description:"Force a fixed checksum block-size",requiresSeparator:!0,args:{name:"SIZE"}},{name:["-e","--rsh"],description:"Specify the remote shell to use",requiresSeparator:!0,args:{name:"COMMAND"}},{name:"--rsync-path",description:"Specify the rsync to run on the remote machine",requiresSeparator:!0,args:{name:"PATH"}},{name:"--existing",description:"Skip creating new files on receiver"},{name:"--ignore-existing",description:"Skip updating files that already exist on receiver"},{name:"--remove-source-files",description:"Sender removes synchronized files (non-dirs)"},{name:"--delete",description:"Delete extraneous files from destination dirs"},{name:"--delete-before",description:"Receiver deletes before transfer, not during"},{name:["--delete-during","--del"],description:"Receiver deletes during the transfer"},{name:"--delete-delay",description:"Find deletions during, delete after"},{name:"--delete-after",description:"Receiver deletes after transfer, not during"},{name:"--delete-excluded",description:"Also delete excluded files from destination dirs"},{name:"--ignore-missing-args",description:"Ignore missing source args without error"},{name:"--delete-missing-args",description:"Delete missing source args from destination"},{name:"--ignore-errors",description:"Delete even if there are I/O errors"},{name:"--force",description:"Force deletion of directories even if not empty"},{name:"--max-delete",description:"Don't delete more than NUM files",requiresSeparator:!0,args:{name:"NUM"}},{name:"--max-size",description:"Don't transfer any file larger than SIZE",requiresSeparator:!0,args:{name:"SIZE"}},{name:"--min-size",description:"Don't transfer any file smaller than SIZE",requiresSeparator:!0,args:{name:"SIZE"}},{name:"--partial",description:"Keep partially transferred files"},{name:"--partial-dir=DIR",description:"Put a partially transferred file into DIR",requiresSeparator:!0,args:{name:"DIR",template:"folders"}},{name:"--delay-updates",description:"Put all updated files into place at transfer's end"},{name:["-m","--prune-empty-dirs"],description:"Prune empty directory chains from the file-list"},{name:"--numeric-ids",description:"Don't map uid/gid values by user/group name"},{name:"--usermap",description:"Custom username mapping",requiresSeparator:!0,args:{name:"STRING"}},{name:"--groupmap",description:"Custom groupname mapping",requiresSeparator:!0,args:{name:"STRING"}},{name:"--chown=USER:GROUP",description:"Simple username/groupname mapping",requiresSeparator:!0,args:{name:"USER:GROUP"}},{name:"--timeout",description:"Set I/O timeout in seconds",requiresSeparator:!0,args:{name:"SECONDS"}},{name:"--contimeout",description:"Set daemon connection timeout in seconds",requiresSeparator:!0,args:{name:"SECONDS"}},{name:["-I","--ignore-times"],description:"Don't skip files that match in size and mod-time"},{name:"-M",description:"Send OPTION to the remote side only",args:{name:"OPTION"}},{name:"--remote-option",description:"Send OPTION to the remote side only",requiresSeparator:!0,args:{name:"OPTION"}},{name:"--size-only",description:"Skip files that match in size"},{name:"-@",description:"Set the accuracy for mod-time comparisons",args:{name:"NUM"}},{name:"--modify-window",description:"Set the accuracy for mod-time comparisons",requiresSeparator:!0,args:{name:"NUM"}},{name:"-T",description:"Create temporary files in directory DIR",args:{name:"DIR",template:"folders"}},{name:"--temp-dir",description:"Create temporary files in directory DIR",requiresSeparator:!0,args:{name:"DIR",template:"folders"}},{name:["-y","--fuzzy"],description:"Find similar file for basis if no dest file"},{name:"--compare-dest",description:"Also compare destination files relative to DIR",requiresSeparator:!0,args:{name:"DIR",template:"folders"}},{name:"--copy-dest",description:"Also compare destination files relative to DIR and include copies of unchanged files",args:{name:"DIR",template:"folders"}},{name:"--link-dest",description:"Hardlink to files in DIR when unchanged",requiresSeparator:!0,args:{name:"DIR",template:"folders"}},{name:["-z","--compress"],description:"Compress file data during the transfer"},{name:"--compress-level",description:"Explicitly set compression level",requiresSeparator:!0,args:{name:"NUM",suggestions:Array.from(Array(10).keys()).map(e=>e.toString())}},{name:"--skip-compress",description:"Skip compressing files with a suffix in LIST",requiresSeparator:!0,args:{name:"LIST"}},{name:["-C","--cvs-exclude"],description:"Auto-ignore files the same way CVS does"},{name:"-f",description:"Add a file-filtering RULE",args:{name:"RULE"}},{name:"--filter",description:"Add a file-filtering RULE",requiresSeparator:!0,args:{name:"RULE"}},{name:"-F",description:"Same as --filter='dir-merge /.rsync-filter'",args:{name:"DIR",template:"folders",isVariadic:!0}},{name:"--exclude",description:"Exclude files matching PATTERN",requiresSeparator:!0,args:{name:"PATTERN"}},{name:"--exclude-from",description:"Read exclude patterns from FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--include",description:"Don't exclude files matching PATTERN",requiresSeparator:!0,args:{name:"PATTERN"}},{name:"--include-from",description:"Read include patterns from FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--files-from",description:"Read list of source-file names from FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:["-0","--from0"],description:"All *-from/filter files are delimited by 0s"},{name:["-s","--protect-args"],description:"No space-splitting; only wildcard special-chars"},{name:"--address",description:"Bind address for outgoing socket to daemon",requiresSeparator:!0,args:{name:"ADDRESS"}},{name:"--port",description:"Specify double-colon alternate port number",requiresSeparator:!0,args:{name:"PORT"}},{name:"--sockopts",description:"Specify custom TCP options",requiresSeparator:!0,args:{name:"OPTIONS"}},{name:"--blocking-io",description:"Use blocking I/O for the remote shell"},{name:"--stats",description:"Give some file-transfer stats"},{name:["-8","--8-bit-output"],description:"Leave high-bit chars unescaped in output"},{name:["-h","--human-readable"],description:"Output numbers in a human-readable format"},{name:"--progress",description:"Show progress during transfer"},{name:"-P",description:"Same as --partial --progress"},{name:["-i","--itemize-changes"],description:"Output a change-summary for all updates"},{name:"--out-format",description:"Output updates using the specified FORMAT",requiresSeparator:!0,args:{name:"FORMAT"}},{name:"--log-file",description:"Log what we're doing to the specified FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--log-file-format",description:"Log updates using the specified FMT",requiresSeparator:!0,args:{name:"FMT"}},{name:"--password-file",description:"Read daemon-access password from FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--list-only",description:"List the files instead of copying them"},{name:"--bwlimit",description:"Limit socket I/O bandwidth",requiresSeparator:!0,args:{name:"RATE"}},{name:"--stop-at",description:"Stop rsync at year-month-dayThour:minute",requiresSeparator:!0,args:{name:"y-m-dTh:m"}},{name:"--time-limit",description:"Stop rsync after MINS minutes have elapsed",requiresSeparator:!0,args:{name:"MINS"}},{name:"--outbuf",description:"Set output buffering to None, Line, or Block",requiresSeparator:!0,args:{name:"BUFFER",suggestions:["N","L","B"]}},{name:"--write-batch",description:"Write a batched update to FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--only-write-batch",description:"Like --write-batch but w/o updating destination",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--read-batch",description:"Read a batched update from FILE",requiresSeparator:!0,args:{name:"FILE",template:"filepaths"}},{name:"--protocol",description:"Force an older protocol version to be used",requiresSeparator:!0,args:{name:"NUM"}},{name:"--iconv",description:"Request charset conversion of filenames",requiresSeparator:!0,args:{name:"CONVERT_SPEC"}},{name:"--checksum-seed",description:"Set block/file checksum seed (advanced)",requiresSeparator:!0,args:{name:"NUM"}},{name:"--noatime",description:"Do not alter atime when opening source files"},{name:["-4","--ipv4"],description:"Prefer IPv4"},{name:["-6","--ipv6"],description:"Prefer IPv6"},{name:"--version",description:"Print version number"},{name:["-h","--help"],description:"Show help for rsync (-h is --help only if used alone)"}]};t.default=a},9481:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeAnyFileExtension=function(e){return e.replace(/\.[a-zA-Z0-9!#\$%&'\(\)\-@\^_`{}~\+,;=\[\]]+$/,"")}},9578:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={name:"less",description:"Opposite of more",args:{isVariadic:!0,template:"filepaths"},options:[{name:["-?","--help"],description:'This option displays a summary of the commands accepted by less (the same as the h command). (Depending on how your shell interprets the question mark, it may be necessary to quote the question mark, thus: "-?"'},{name:["-a","--search-skip-screen"],description:'By default, forward searches start at the top of the displayed\nscreen and backwards searches start at the bottom of the\ndisplayed screen (except for repeated searches invoked by the n\nor N commands, which start after or before the "target" line\nrespectively; see the -j option for more about the target line).\nThe -a option causes forward searches to instead start at the\nbottom of the screen and backward searches to start at the top\nof the screen, thus skipping all lines displayed on the screen'},{name:["-A","--SEARCH-SKIP-SCREEN"],description:"Causes all forward searches (not just non-repeated searches) to\nstart just after the target line, and all backward searches to\nstart just before the target line. Thus, forward searches will\nskip part of the displayed screen (from the first line up to and\nincluding the target line). Similarly backwards searches will\nskip the displayed screen from the last line up to and including\nthe target line. This was the default behavior in less versions\nprior to 441"},{name:["-b","--buffers"],args:{name:"n"},description:"Specifies the amount of buffer space less will use for each\nfile, in units of kilobytes (1024 bytes). By default 64 KB of\nbuffer space is used for each file (unless the file is a pipe;\nsee the -B option). The -b option specifies instead that n\nkilobytes of buffer space should be used for each file. If n is\n-1, buffer space is unlimited; that is, the entire file can be\nread into memory"},{name:["-B","--auto-buffers"],description:"By default, when data is read from a pipe, buffers are allocated\nautomatically as needed. If a large amount of data is read from\nthe pipe, this can cause a large amount of memory to be\nallocated. The -B option disables this automatic allocation of\nbuffers for pipes, so that only 64 KB (or the amount of space\nspecified by the -b option) is used for the pipe. Warning: use\nof -B can result in erroneous display, since only the most\nrecently viewed part of the piped data is kept in memory; any\nearlier data is lost"},{name:["-c","--clear-screen"],description:"Causes full screen repaints to be painted from the top line\ndown. By default, full screen repaints are done by scrolling\nfrom the bottom of the screen"},{name:["-C","--CLEAR-SCREEN"],description:"Same as -c, for compatibility with older versions of less"},{name:["-d","--dumb"],description:"The -d option suppresses the error message normally displayed if\nthe terminal is dumb; that is, lacks some important capability,\nsuch as the ability to clear the screen or scroll backward. The\n-d option does not otherwise change the behavior of less on a\ndumb terminal"},{name:["-D","--color"],args:{name:"xcolor"},description:'Changes the color of different parts of the displayed text. x\nis a single character which selects the type of text whose color\nis being set:\nB Binary characters.\nC Control characters.\nE Errors and informational messages.\nM Mark letters in the status column.\nN Line numbers enabled via the -N option.\nP Prompts.\nR The rscroll character.\nS Search results.\nW The highlight enabled via the -w option.\nd Bold text.\nk Blinking text.\ns Standout text.\nu Underlined text.\nThe uppercase letters can be used only when the --use-color\noption is enabled. When text color is specified by both an\nuppercase letter and a lowercase letter, the uppercase letter\ntakes precedence. For example, error messages are normally\ndisplayed as standout text. So if both "s" and "E" are given a\ncolor, the "E" color applies to error messages, and the "s"\ncolor applies to other standout text. The "d" and "u" letters\nrefer to bold and underline text formed by overstriking with\nbackspaces (see the -u option), not to text using ANSI escape\nsequences with the -R option.\nA lowercase letter may be followed by a + to indicate that both\nthe normal format change and the specified color should both be\nused. For example, -Dug displays underlined text as green\nwithout underlining; the green color has replaced the usual\nunderline formatting. But -Du+g displays underlined text as\nboth green and in underlined format.\ncolor is either a 4-bit color string or an 8-bit color string:\nA 4-bit color string is zero, one or two characters, where the\nfirst character specifies the foreground color and the second\nspecifies the background color as follows:\nb Blue\nc Cyan\ng Green\nk Black\nm Magenta\nr Red\nw White\ny Yellow\nThe corresponding upper-case letter denotes a brighter shade of\nthe color. For example, -DNGk displays line numbers as bright\ngreen text on a black background, and -DEbR displays error\nmessages as blue text on a bright red background. If either\ncharacter is a "-" or is omitted, the corresponding color is set\nto that of normal text.\nAn 8-bit color string is one or two decimal integers separated\nby a dot, where the first integer specifies the foreground color\nand the second specifies the background color. Each integer is\na value between 0 and 255 inclusive which selects a "CSI 38;5"\ncolor value (see\nhttps://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters)\nIf either integer is a "-" or is omitted, the corresponding\ncolor is set to that of normal text. On MS-DOS versions of\nless, 8-bit color is not supported; instead, decimal values are\ninterpreted as 4-bit CHAR_INFO.Attributes values (see\nhttps://docs.microsoft.com/en-us/windows/console/char-info-str)'},{name:["-e","--quit-at-eof"],description:'Causes less to automatically exit the second time it reaches\nend-of-file. By default, the only way to exit less is via the\n"q" command'},{name:["-E","--QUIT-AT-EOF"],description:"Causes less to automatically exit the first time it reaches end-\nof-file"},{name:["-f","--force"],description:"Forces non-regular files to be opened. (A non-regular file is a\ndirectory or a device special file.) Also suppresses the\nwarning message when a binary file is opened. By default, less\nwill refuse to open non-regular files. Note that some operating\nsystems will not allow directories to be read, even if -f is\nset"},{name:["-F","--quit-if-one-screen"],description:"Causes less to automatically exit if the entire file can be\ndisplayed on the first screen"},{name:["-g","--hilite-search"],description:"Normally, less will highlight ALL strings which match the last\nsearch command. The -g option changes this behavior to\nhighlight only the particular string which was found by the last\nsearch command. This can cause less to run somewhat faster than\nthe default"},{name:["-G","--HILITE-SEARCH"],description:"The -G option suppresses all highlighting of strings found by\nsearch commands"},{name:["-h","--max-back-scroll"],args:{name:"n"},description:"Specifies a maximum number of lines to scroll backward. If it\nis necessary to scroll backward more than n lines, the screen is\nrepainted in a forward direction instead. (If the terminal does\nnot have the ability to scroll backward, -h0 is implied.)"},{name:["-i","--ignore-case"],description:"Causes searches to ignore case; that is, uppercase and lowercase\nare considered identical. This option is ignored if any\nuppercase letters appear in the search pattern; in other words,\nif a pattern contains uppercase letters, then that search does\nnot ignore case"},{name:["-I","--IGNORE-CASE"],description:"Like -i, but searches ignore case even if the pattern contains\nuppercase letters"},{name:["-j","--jump-target"],args:{name:"n"},description:'Specifies a line on the screen where the "target" line is to be\npositioned. The target line is the line specified by any\ncommand to search for a pattern, jump to a line number, jump to\na file percentage or jump to a tag. The screen line may be\nspecified by a number: the top line on the screen is 1, the next\nis 2, and so on. The number may be negative to specify a line\nrelative to the bottom of the screen: the bottom line on the\nscreen is -1, the second to the bottom is -2, and so on.\nAlternately, the screen line may be specified as a fraction of\nthe height of the screen, starting with a decimal point: .5 is\nin the middle of the screen, .3 is three tenths down from the\nfirst line, and so on. If the line is specified as a fraction,\nthe actual line number is recalculated if the terminal window is\nresized, so that the target line remains at the specified\nfraction of the screen height. If any form of the -j option is\nused, repeated forward searches (invoked with "n" or "N") begin\nat the line immediately after the target line, and repeated\nbackward searches begin at the target line, unless changed by -a\nor -A. For example, if "-j4" is used, the target line is the\nfourth line on the screen, so forward searches begin at the\nfifth line on the screen. However nonrepeated searches (invoked\nwith "/" or "?") always begin at the start or end of the current\nscreen respectively'},{name:["-J","--status-column"],description:"Displays a status column at the left edge of the screen. The\nstatus column shows the lines that matched the current search,\nand any lines that are marked (via the m or M command)"},{name:["-k","--lesskey-file"],args:{name:"filename",template:"filepaths"},description:"Causes less to open and interpret the named file as a lesskey(1)\nfile. Multiple -k options may be specified. If the LESSKEY or\nLESSKEY_SYSTEM environment variable is set, or if a lesskey file\nis found in a standard place (see KEY BINDINGS), it is also used\nas a lesskey file"},{name:["-K","--quit-on-intr"],description:'Causes less to exit immediately (with status 2) when an\ninterrupt character (usually ^C) is typed. Normally, an\ninterrupt character causes less to stop whatever it is doing and\nreturn to its command prompt. Note that use of this option\nmakes it impossible to return to the command prompt from the "F"\ncommand'},{name:["-L","--no-lessopen"],description:"Ignore the LESSOPEN environment variable (see the INPUT\nPREPROCESSOR section below). This option can be set from within\nless, but it will apply only to files opened subsequently, not\nto the file which is currently open"},{name:["-m","--long-prompt"],description:"Causes less to prompt verbosely (like more), with the percent\ninto the file. By default, less prompts with a colon"},{name:["-M","--LONG-PROMPT"],description:"Causes less to prompt even more verbosely than more"},{name:["-n","--line-numbers"],description:"Suppresses line numbers. The default (to use line numbers) may\ncause less to run more slowly in some cases, especially with a\nvery large input file. Suppressing line numbers with the -n\noption will avoid this problem. Using line numbers means: the\nline number will be displayed in the verbose prompt and in the =\ncommand, and the v command will pass the current line number to\nthe editor (see also the discussion of LESSEDIT in PROMPTS\nbelow)"},{name:["-N","--LINE-NUMBERS"],description:"Causes a line number to be displayed at the beginning of each\nline in the display"},{name:["-o","--log-file"],args:{name:"filename",template:"filepaths"},description:"Causes less to copy its input to the named file as it is being\nviewed. This applies only when the input file is a pipe, not an\nordinary file. If the file already exists, less will ask for\nconfirmation before overwriting it"},{name:["-O","--LOG-FILE"],args:{name:"filename",template:"filepaths"},description:'The -O option is like -o, but it will overwrite an existing file\nwithout asking for confirmation.\nIf no log file has been specified, the -o and -O options can be\nused from within less to specify a log file. Without a file\nname, they will simply report the name of the log file. The "s"\ncommand is equivalent to specifying -o from within less'},{name:["-p","--pattern"],args:{name:"pattern"},description:"The -p option on the command line is equivalent to specifying\n+/pattern; that is, it tells less to start at the first\noccurrence of pattern in the file"},{name:["-P","--prompt"],args:{name:"prompt"},description:"Provides a way to tailor the three prompt styles to your own\npreference. This option would normally be put in the LESS\nenvironment variable, rather than being typed in with each less\ncommand. Such an option must either be the last option in the\nLESS variable, or be terminated by a dollar sign.\n-Ps followed by a string changes the default (short) prompt to\nthat string.\n-Pm changes the medium (-m) prompt.\n-PM changes the long (-M) prompt.\n-Ph changes the prompt for the help screen.\n-P= changes the message printed by the = command.\n-Pw changes the message printed while waiting for data (in the\nF command).\nAll prompt strings consist of a sequence of letters and special\nescape sequences. See the section on PROMPTS for more details"},{name:["-q","--quiet","--silent"],description:'Causes moderately "quiet" operation: the terminal bell is not\nrung if an attempt is made to scroll past the end of the file or\nbefore the beginning of the file. If the terminal has a "visual\nbell", it is used instead. The bell will be rung on certain\nother errors, such as typing an invalid character. The default\nis to ring the terminal bell in all such cases'},{name:["-Q","--QUIET","--SILENT"],description:'Causes totally "quiet" operation: the terminal bell is never\nrung. If the terminal has a "visual bell", it is used in all\ncases where the terminal bell would have been rung'},{name:["-r","--raw-control-chars"],description:'Causes "raw" control characters to be displayed. The default is\nto display control characters using the caret notation; for\nexample, a control-A (octal 001) is displayed as "^A". Warning:\nwhen the -r option is used, less cannot keep track of the actual\nappearance of the screen (since this depends on how the screen\nresponds to each type of control character). Thus, various\ndisplay problems may result, such as long lines being split in\nthe wrong place.\nUSE OF THE -r OPTION IS NOT RECOMMENDED'},{name:["-R","--RAW-CONTROL-CHARS"],description:'Like -r, but only ANSI "color" escape sequences and OSC 8\nhyperlink sequences are output in "raw" form. Unlike -r, the\nscreen appearance is maintained correctly, provided that there\nare no escape sequences in the file other than these types of\nescape sequences. Color escape sequences are only supported\nwhen the color is changed within one line, not across lines. In\nother words, the beginning of each line is assumed to be normal\n(non-colored), regardless of any escape sequences in previous\nlines. For the purpose of keeping track of screen appearance,\nthese escape sequences are assumed to not move the cursor.\nOSC 8 hyperlinks are sequences of the form:\nESC ] 8 ; \nANSI color escape sequences are sequences of the form:\nESC [ ... m\nwhere the "..." is zero or more color specification characters.\nYou can make less think that characters other than "m" can end\nANSI color escape sequences by setting the environment variable\nLESSANSIENDCHARS to the list of characters which can end a color\nescape sequence. And you can make less think that characters\nother than the standard ones may appear between the ESC and the\nm by setting the environment variable LESSANSIMIDCHARS to the\nlist of characters which can appear'},{name:["-s","--squeeze-blank-lines"],description:"Causes consecutive blank lines to be squeezed into a single\nblank line. This is useful when viewing nroff output"},{name:["-S","--chop-long-lines"],description:"Causes lines longer than the screen width to be chopped\n(truncated) rather than wrapped. That is, the portion of a long\nline that does not fit in the screen width is not displayed\nuntil you press RIGHT-ARROW. The default is to wrap long lines;\nthat is, display the remainder on the next line"},{name:["-t","--tag"],args:{name:"tag"},description:'The -t option, followed immediately by a TAG, will edit the file\ncontaining that tag. For this to work, tag information must be\navailable; for example, there may be a file in the current\ndirectory called "tags", which was previously built by ctags(1)\nor an equivalent command. If the environment variable\nLESSGLOBALTAGS is set, it is taken to be the name of a command\ncompatible with global(1), and that command is executed to find\nthe tag. (See http://www.gnu.org/software/global/global.html).\nThe -t option may also be specified from within less (using the\n- command) as a way of examining a new file. The command ":t"\nis equivalent to specifying -t from within less'},{name:["-T","--tag-file"],args:{name:"tagsfile"},description:'Specifies a tags file to be used instead of "tags"'},{name:["-u","--underline-special"],description:"Causes backspaces and carriage returns to be treated as\nprintable characters; that is, they are sent to the terminal\nwhen they appear in the input"},{name:["-U","--UNDERLINE-SPECIAL"],description:"Causes backspaces, tabs, carriage returns and \"formatting\ncharacters\" (as defined by Unicode) to be treated as control\ncharacters; that is, they are handled as specified by the -r\noption.\nBy default, if neither -u nor -U is given, backspaces which\nappear adjacent to an underscore character are treated\nspecially: the underlined text is displayed using the terminal's\nhardware underlining capability. Also, backspaces which appear\nbetween two identical characters are treated specially: the\noverstruck text is printed using the terminal's hardware\nboldface capability. Other backspaces are deleted, along with\nthe preceding character. Carriage returns immediately followed\nby a newline are deleted. Other carriage returns are handled as\nspecified by the -r option. Unicode formatting characters, such\nas the Byte Order Mark, are sent to the terminal. Text which is\noverstruck or underlined can be searched for if neither -u nor\n-U is in effect"},{name:["-V","--version"],description:"Displays the version number of less"},{name:["-w","--hilite-unread"],description:'Temporarily highlights the first "new" line after a forward\nmovement of a full page. The first "new" line is the line\nimmediately following the line previously at the bottom of the\nscreen. Also highlights the target line after a g or p command.\nThe highlight is removed at the next command which causes\nmovement. The entire line is highlighted, unless the -J option\nis in effect, in which case only the status column is\nhighlighted'},{name:["-W","--HILITE-UNREAD"],description:"Like -w, but temporarily highlights the first new line after any\nforward movement command larger than one line"},{name:["-x","--tabs="],args:{name:"n,..."},description:"Sets tab stops. If only one n is specified, tab stops are set\nat multiples of n. If multiple values separated by commas are\nspecified, tab stops are set at those positions, and then\ncontinue with the same spacing as the last two. For example,\n-x9,17 will set tabs at positions 9, 17, 25, 33, etc. The\ndefault for n is 8"},{name:["-X","--no-init"],description:"Disables sending the termcap initialization and deinitialization\nstrings to the terminal. This is sometimes desirable if the\ndeinitialization string does something unnecessary, like\nclearing the screen"},{name:["-y","--max-forw-scroll"],args:{name:"n"},description:"Specifies a maximum number of lines to scroll forward. If it is\nnecessary to scroll forward more than n lines, the screen is\nrepainted instead. The -c or -C option may be used to repaint\nfrom the top of the screen if desired. By default, any forward\nmovement causes scrolling"},{name:["-z","--window"],args:{name:"n"},description:'Changes the default scrolling window size to n lines. The\ndefault is one screenful. The z and w commands can also be used\nto change the window size. The "z" may be omitted for\ncompatibility with some versions of more. If the number n is\nnegative, it indicates n lines less than the current screen\nsize. For example, if the screen is 24 lines, -z-4 sets the\nscrolling window to 20 lines. If the screen is resized to 40\nlines, the scrolling window automatically changes to 36 lines'},{name:"--quotes",description:'Changes the filename quoting character. This may be necessary\nif you are trying to name a file which contains both spaces and\nquote characters. Followed by a single character, this changes\nthe quote character to that character. Filenames containing a\nspace should then be surrounded by that character rather than by\ndouble quotes. Followed by two characters, changes the open\nquote to the first character, and the close quote to the second\ncharacter. Filenames containing a space should then be preceded\nby the open quote character and followed by the close quote\ncharacter. Note that even after the quote characters are\nchanged, this option remains -" (a dash followed by a double\nquote)'},{name:["-~","--tilde"],description:"Normally lines after end of file are displayed as a single tilde\n(~). This option causes lines after end of file to be displayed\nas blank lines"},{name:["-#","--shift"],description:"Specifies the default number of positions to scroll horizontally\nin the RIGHTARROW and LEFTARROW commands. If the number\nspecified is zero, it sets the default number of positions to\none half of the screen width. Alternately, the number may be\nspecified as a fraction of the width of the screen, starting\nwith a decimal point: .5 is half of the screen width, .3 is\nthree tenths of the screen width, and so on. If the number is\nspecified as a fraction, the actual number of scroll positions\nis recalculated if the terminal window is resized, so that the\nactual scroll remains at the specified fraction of the screen\nwidth"},{name:"--follow-name",description:"Normally, if the input file is renamed while an F command is\nexecuting, less will continue to display the contents of the\noriginal file despite its name change. If --follow-name is\nspecified, during an F command less will periodically attempt to\nreopen the file by name. If the reopen succeeds and the file is\na different file from the original (which means that a new file\nhas been created with the same name as the original (now\nrenamed) file), less will display the contents of that new file"},{name:"--incsearch",description:'Subsequent search commands will be "incremental"; that is, less\nwill advance to the next line containing the search pattern as\neach character of the pattern is typed in'},{name:"--line-num-width",description:"Sets the minimum width of the line number field when the -N\noption is in effect. The default is 7 characters"},{name:"--mouse",description:'Enables mouse input: scrolling the mouse wheel down moves\nforward in the file, scrolling the mouse wheel up moves\nbackwards in the file, and clicking the mouse sets the "#" mark\nto the line where the mouse is clicked. The number of lines to\nscroll when the wheel is moved can be set by the --wheel-lines\noption. Mouse input works only on terminals which support X11\nmouse reporting, and on the Windows version of less'},{name:"--MOUSE",description:"Like --mouse, except the direction scrolled on mouse wheel\nmovement is reversed"},{name:"--no-keypad",description:"Disables sending the keypad initialization and deinitialization\nstrings to the terminal. This is sometimes useful if the keypad\nstrings make the numeric keypad behave in an undesirable manner"},{name:"--no-histdups",description:"This option changes the behavior so that if a search string or\nfile name is typed in, and the same string is already in the\nhistory list, the existing copy is removed from the history list\nbefore the new one is added. Thus, a given string will appear\nonly once in the history list. Normally, a string may appear\nmultiple times"},{name:"--rscroll",description:'This option changes the character used to mark truncated lines.\nIt may begin with a two-character attribute indicator like\nLESSBINFMT does. If there is no attribute indicator, standout\nis used. If set to "-", truncated lines are not marked'},{name:"--save-marks",description:"Save marks in the history file, so marks are retained across\ndifferent invocations of less"},{name:"--status-col-width",description:"Sets the width of the status column when the -J option is in\neffect. The default is 2 characters"},{name:"--use-backslash",description:"This option changes the interpretations of options which follow\nthis one. After the --use-backslash option, any backslash in an\noption string is removed and the following character is taken\nliterally. This allows a dollar sign to be included in option\nstrings"},{name:"--use-color",description:"Enables the colored text in various places. The -D option can\nbe used to change the colors. Colored text works only if the\nterminal supports ANSI color escape sequences (as defined in\nECMA-48 SGR; see\nhttps://www.ecma-international.org/publications-and-\nstandards/standards/ecma-48)"},{name:"--wheel-lines",args:{name:"n"},description:"Set the number of lines to scroll when the mouse wheel is rolled"}]}},9661:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"wc",description:"World, line, character, and byte count",options:[{name:"-c",description:"Output the number of bytes to the standard input"},{name:"-l",description:"Output the number of lines to the standard input"},{name:"-m",description:"Output the number of characters to the standard input"},{name:"-w",description:"Output the number of words to the standard input"}],args:{name:"file",description:"File to count in",template:"filepaths",isOptional:!0,isVariadic:!0}}},9708:function(e,t,n){"use strict";var i,a=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,a)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},i(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=i(e),o=0;o<n.length;o++)"default"!==n[o]&&a(t,e,n[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.getBashGlobals=async function(e,t){return[...await l(e),...await d(e,"compgen -b",t)]},t.getBuiltins=d,t.generateDetailAndDocs=m;const r=o(n(1398)),c=n(4539);async function l(e){const t="darwin"===process.platform?["-icl","alias"]:["-ic","alias"];return(0,c.getAliasesHelper)("bash",t,/^alias (?<alias>[a-zA-Z0-9\.:-]+)='(?<resolved>.+)'$/,e)}async function d(e,t,n){const i=(await(0,c.execHelper)(t,e)).split("\n").filter(e=>e&&!n?.has(e)),a=[];i.find(e=>"."===e)&&a.push({label:".",detail:"Source a file in the current shell",kind:r.TerminalCompletionItemKind.Method});for(const t of i)if("string"==typeof t)try{const n=(await(0,c.execHelper)(`help ${t}`,e))?.trim(),i=n?.split("\n"),s=i.splice(1).map(e=>e.trim()).join(""),o=i?.[0]?.split(" ").slice(1).join(" ").trim(),{detail:l,documentation:d,description:p}=m(s,o);a.push({label:{label:t,description:p},detail:l,documentation:new r.MarkdownString(d),kind:r.TerminalCompletionItemKind.Method})}catch(e){console.log(`Error getting info for ${e}`),a.push({label:t,kind:r.TerminalCompletionItemKind.Method})}return a}function m(e,t){let n,i="";return e&&(n=t,i=e=e.split(". ")[0]+"."),{detail:n,documentation:i,description:e}}},9778:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Cache=void 0;class n{lastFetch=0;promise=void 0;value=void 0;isInitialized=!1;get isFetching(){return!!this.promise}async fetchSync(e){return this.lastFetch=Date.now(),this.promise=e(),this.value=await this.promise,this.isInitialized||(this.isInitialized=!0),this.promise=void 0,this.value}async fetchAsync(e){return this.isFetching?(await this.promise,this.value):this.fetchSync(e)}async maxAgeCache(e,t){return Date.now()>t+this.lastFetch?this.fetchAsync(e):this.value}async swrCache(e,t=0){return!this.isFetching&&Date.now()>this.lastFetch+t?this.fetchAsync(e):this.value}async entry(e,t){if(!this.isInitialized)return this.fetchAsync(e);switch(t.strategy||"stale-while-revalidate"){case"max-age":return this.maxAgeCache(e,t.ttl);case"stale-while-revalidate":return this.swrCache(e,t.ttl);default:return this.fetchAsync(e)}}}t.Cache=class{cache=new Map;async entry(e,t,i){return this.cache.has(e)||this.cache.set(e,new n),this.cache.get(e).entry(t,i)}currentValue(e,t){return this.cache.has(e)||this.cache.set(e,new n),this.cache.get(e).value}clear(){this.cache.clear()}}},9896:e=>{"use strict";e.exports=require("fs")}},t={};function n(i){var a=t[i];if(void 0!==a)return a.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i=n(7830),a=exports;for(var s in i)a[s]=i[s];i.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})();
|
||
//# sourceMappingURL=https://main.vscode-cdn.net/sourcemaps/1e3c50d64110be466c0b4a45222e81d2c9352888/extensions/terminal-suggest/dist/terminalSuggestMain.js.map |