From e997ed82b6f8cc6e03c2f3f2f70920f3f1561015 Mon Sep 17 00:00:00 2001 From: Buddy Date: Tue, 14 Jan 2025 10:45:31 -0800 Subject: [PATCH] Update nushell config and cloud sdk to zsh --- dot_config/nushell/completions/docker.nu | 681 ++++++++++++++++++ dot_config/nushell/completions/mod.nu | 1 + .../nushell/{config.nu => config.nu.tmpl} | 11 +- dot_config/nushell/lib/dark_theme.nu | 71 -- .../nushell/lib/{light_theme.nu => themes.nu} | 69 +- .../nushell/lib/work/encrypted_mod.nu.age | 608 ++++++++-------- dot_zshrc.tmpl | 22 +- 7 files changed, 1080 insertions(+), 383 deletions(-) create mode 100644 dot_config/nushell/completions/docker.nu rename dot_config/nushell/{config.nu => config.nu.tmpl} (99%) delete mode 100644 dot_config/nushell/lib/dark_theme.nu rename dot_config/nushell/lib/{light_theme.nu => themes.nu} (52%) diff --git a/dot_config/nushell/completions/docker.nu b/dot_config/nushell/completions/docker.nu new file mode 100644 index 0000000..d9995b5 --- /dev/null +++ b/dot_config/nushell/completions/docker.nu @@ -0,0 +1,681 @@ +# https://github.com/nushell/nu_scripts/blob/main/custom-completions/docker/docker-completions.nu +# remove docker from extern to avoid `$ docker docker command` + +def "nu-complete docker containers" [] { + ^docker ps -a --format "{{.ID}} {{.Names}}" | lines + | parse "{value} {description}" +} + +def "nu-complete docker images" [] { + ^docker images --format "{{.ID}} {{.Repository}}" | lines + | parse "{value} {description}" +} + +def "nu-complete docker run" [] { + (nu-complete docker images) + | append (nu-complete docker containers) +} + +def "nu-complete docker pull" [] { + [always, missing, never] +} + +def "nu-complete docker remove image" [] { + [local, all] +} + +def "nu-complete local files" [] { + ^ls | lines +} + +def "nu-complete docker compose ps" [] { + ^docker compose ps -a --format "{{.ID}} {{.Names}}" | lines + | parse "{value} {description}" +} + +def "nu-complete docker compose service status" [] { + [paused restarting removing running dead created exited] +} + +# Log in to a Docker registry +export extern login [ + server?: string # Docker registry URL + --password(-p): string # Password + --password-stdin # Take the password from stdin + --username(-u): string # Username +] + +# Log out from a Docker registry +export extern logout [ + server?: string # Docker registry URL +] + +# Search Docker Hub for images +export extern search [ + term?: string + --filter(-f): string # Filter output based on conditions provided + --format: string # Pretty-print search using a Go template + --limit: int # Max number of search results + --no-trunc # Don't truncate output +] + +# Show the docker version information +export extern version [ + --format(-f): string # Format the output using the given Go template + --kubeconfig: string # Kubernetes config file +] + +# Inspect changes to files or directories on a container's filesystem +export extern "system events" [ + --filter(-f): string # Filter output based on conditions provided + --format: string # Pretty-print images using a Go template + --since: string # Show all events created since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) + --until: string # Stream events until this timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) +] + +# Attach local standard input, output, and error streams to a running container +export extern "container attach" [ + container?: string@"nu-complete docker containers" + --detach-keys:string # Override the key sequence for detaching a container + --no-stdin # Do not attach STDIN + --sig-proxy # Proxy all received signals to the process +] + +# Create a new image from a container's changes +export extern "container commit" [ + container?: string@"nu-complete docker containers" + --author(-a): string # Author (e.g., "John Hannibal Smith " + --change(-c): string # Apply Dockerfile instruction to the created image + --message(-m): string # Commit message + --pause(-p) # Pause container during commit (default true) +] + +# Create a new container +export extern "container create" [ + image?: string@"nu-complete docker images" # The image to create the container from + command?: string # Command to run inside the container + ...args: string + --add-host: string # Add a custom host-to-IP mapping (host:ip) + --annotation: string # Add an annotation to the container (passed through to the OCI runtime) (default map[]) + --attach: string # Attach to STDIN, STDOUT or STDERR + --blkio-weight: int # Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) + --blkio-weight-device: string # Block IO weight (relative device weight) (default []) + --cap-add: string # Add Linux capabilities + --cap-drop: string # Drop Linux capabilities + --cgroup-parent: string # Optional parent cgroup for the container + --cgroupns: string # Cgroup namespace to use (host|private) + --cidfile: string # Write the container ID to the file + --cpu-period: int # Limit CPU CFS (Completely Fair Scheduler) period + --cpu-quota: int # Limit CPU CFS (Completely Fair Scheduler) quota + --cpu-rt-period: int # Limit CPU real-time period in microseconds + --cpu-rt-runtime: int # Limit CPU real-time runtime in microseconds + --cpu-shares(-c): int # CPU shares (relative weight) + --cpus: int # Number of CPUs + --cpuset-cpus: string # CPUs in which to allow execution (0-3, 0,1) + --cpuset-mems: string # MEMs in which to allow execution (0-3, 0,1) + --detach(-d) # Run container in background and print container ID + --detach-keys: string # Override the key sequence for detaching a container + --device: string # Add a host device to the container + --device-cgroup-rule: string # Add a rule to the cgroup allowed devices list + --device-read-bps: int # Limit read rate (bytes per second) from a device (default []) + --device-read-iops: int # Limit read rate (IO per second) from a device (default []) + --device-write-bps: int # Limit write rate (bytes per second) to a device (default []) + --device-write-iops: int # Limit write rate (IO per second) to a device (default []) + --disable-content-trust # Skip image verification (default true) + --dns: int # Set custom DNS servers + --dns-option: string # Set DNS options + --dns-search: string # Set custom DNS search domains + --domainname: string # Container NIS domain name + --entrypoint: string # Overwrite the default ENTRYPOINT of the image + --env(-e): string # Set environment variables + --env-file: string # Read in a file of environment variables + --expose: string # Expose a port or a range of ports + --gpus: string # GPU devices to add to the container ('all' to pass all GPUs) + --group-add: string # Add additional groups to join + --health-cmd: string # Command to run to check health + --health-interval: duration # Time between running the check (ms|s|m|h) (default 0s) + --health-retries: int # Consecutive failures needed to report unhealthy + --health-start-interval: duration # Time between running the check during the start period (ms|s|m|h) (default 0s) + --health-start-period: duration # Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) + --health-timeout: duration # Maximum time to allow one check to run (ms|s|m|h) (default 0s) + --help # Print usage + --hostname(-h): string # Container host name + --init # Run an init inside the container that forwards signals and reaps processes + --interactive(-i) # Keep STDIN open even if not attached + --ip: string # IPv4 address (e.g., 172.30.100.104) + --ip6: string # IPv6 address (e.g., 2001:db8::33) + --ipc: string # IPC mode to use + --isolation: string # Container isolation technology + --kernel-memory: int # Kernel memory limit + --label(-l): string # Set meta data on a container + --label-file: string # Read in a line delimited file of labels + --link: string # Add link to another container + --link-local-ip: string # Container IPv4/IPv6 link-local addresses + --log-driver: string # Logging driver for the container + --log-opt: string # Log driver options + --mac-address: string # Container MAC address (e.g., 92:d0:c6:0a:29:33) + --memory(-m): int # Memory limit + --memory-reservation: int # Memory soft limit + --memory-swap: int # Swap limit equal to memory plus swap: '-1' to enable unlimited swap + --memory-swappiness: int # Tune container memory swappiness (0 to 100) (default -1) + --mount: string # Attach a filesystem mount to the container + --name: string # Assign a name to the container + --network: string # Connect a container to a network + --network-alias: string # Add network-scoped alias for the container + --no-healthcheck # Disable any container-specified HEALTHCHECK + --oom-kill-disable # Disable OOM Killer + --oom-score-adj: int # Tune host's OOM preferences (-1000 to 1000) + --pid: string # PID namespace to use + --pids-limit: int # Tune container pids limit (set -1 for unlimited) + --platform: string # Set platform if server is multi-platform capable + --privileged # Give extended privileges to this container + --publish(-p): string # Publish a container's port(s) to the host + --publish-all(-P) # Publish all exposed ports to random ports + --pull: string@"nu-complete docker pull" # Pull image before running ("always", "missing", "never") (default "missing") + --quiet(-q) # Suppress the pull output + --read-only # Mount the container's root filesystem as read only + --restart: string # Restart policy to apply when a container exits (default "no") + --rm # Automatically remove the container when it exits + --runtime: string # Runtime to use for this container + --security-opt: string # Security Options + --shm-size: int # Size of /dev/shm + --sig-proxy # Proxy received signals to the process (default true) + --stop-signal: string # Signal to stop the container + --stop-timeout: int # Timeout (in seconds) to stop a container + --storage-opt: string # Storage driver options for the container + --sysctl: string # Sysctl options (default map[]) + --tmpfs: string # Mount a tmpfs directory + --tty(-t) # Allocate a pseudo-TTY + --ulimit: int # Ulimit options (default []) + --user(-u): string # Username or UID (format: [:]) + --userns: string # User namespace to use + --uts: string # UTS namespace to use + --volume(-v): string # Bind mount a volume + --volume-driver: string # Optional volume driver for the container + --volumes-from: string # Mount volumes from the specified container(s) + --workdir(-w): string # Working directory inside the container +] + +# Inspect changes to files or directories on a container's filesystem +export extern "container diff" [ + container?: string@"nu-complete docker containers" +] + +# Run a command in a running container +export extern "container exec" [ + container?: string@"nu-complete docker containers" + --detach(-d) # Detached mode: run command in the background + --env(-e): string # Set environment variables + --interactive(-i) # Keep STDIN open even if not attached + --privileged # Give extended privileges to the command + --tty(-t) # Allocate a pseudo-TTY + --user(-u): string # Username or UID (format: [:]) + --workdir(-w): string # Working directory inside the container +] + +# Export a container's filesystem as a tar archive +export extern "container export" [ + container?: string@"nu-complete docker containers" + --output(-o): string # Write to a file, instead of STDOUT +] + +# Display detailed information on one or more containers +export extern "container inspect" [ + container?: string@"nu-complete docker containers" + --format(-f):string # Format the output using the given Go template + --size(-s) # Display total file sizes + --type:string # Return JSON for specified type +] + +# Kill one or more running containers +export extern "container kill" [ + container?: string@"nu-complete docker containers" + --signal(-s):string # Signal to send to the container +] + +# Fetch the logs of a container +export extern "container logs" [ + container?: string@"nu-complete docker containers" + --details # Show extra details provided to logs + --follow(-f) # Follow log output + --since: string # Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) + --tail(-n): string # Number of lines to show from the end of the logs + --timestamps(-t) # Show timestamps + --until: string # Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) +] + +# List containers +export extern "container ls" [ + --all(-a) # Show all containers (default shows just running) + --filter: string # Filter output based on conditions provided + --format: string # Pretty-print containers using a Go template + --last(-n): int # Show n last created containers (includes all states) (default -1) + --latest(-l) # Show the latest created container (includes all states) + --no-trunc # Don't truncate output + --quiet(-q) # Only display numeric IDs + --size(-s) # Display total file sizes +] + +# Pause all processes within one or more containers +export extern "container pause" [ + container?: string@"nu-complete docker containers" +] + +# Remove all stopped containers +export extern "container prune" [ + --filter: string # Provide filter values (e.g. 'until=24h') + --force(-f) # Do not prompt for confirmation +] + +# List port mappings or a specific mapping for the container +export extern "container port" [ + container?: string@"nu-complete docker containers" +] + +# Rename a container +export extern "container rename" [ + container?: string@"nu-complete docker containers" + name?: string +] + +# Restart one or more containers +export extern "container restart" [ + container?: string@"nu-complete docker containers" + --time(-t): int # Seconds to wait for stop before killing the container + --signal(-s): string # Signal to stop the container +] + +# Remove one or more containers +export extern "container rm" [ + container?: string@"nu-complete docker containers" +] + +# Run a command in a new container +export extern "container run" [ + image?: string@"nu-complete docker run" # The image to create the container from + command?: string # Command to run inside the container + ...args: string + --add-host: string # Add a custom host-to-IP mapping (host:ip) + --annotation: string # Add an annotation to the container (passed through to the OCI runtime) (default map[]) + --attach: string # Attach to STDIN, STDOUT or STDERR + --blkio-weight: int # Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) + --blkio-weight-device: string # Block IO weight (relative device weight) (default []) + --cap-add: string # Add Linux capabilities + --cap-drop: string # Drop Linux capabilities + --cgroup-parent: string # Optional parent cgroup for the container + --cgroupns: string # Cgroup namespace to use (host|private) + --cidfile: string # Write the container ID to the file + --cpu-period: int # Limit CPU CFS (Completely Fair Scheduler) period + --cpu-quota: int # Limit CPU CFS (Completely Fair Scheduler) quota + --cpu-rt-period: int # Limit CPU real-time period in microseconds + --cpu-rt-runtime: int # Limit CPU real-time runtime in microseconds + --cpu-shares(-c): int # CPU shares (relative weight) + --cpus: int # Number of CPUs + --cpuset-cpus: string # CPUs in which to allow execution (0-3, 0,1) + --cpuset-mems: string # MEMs in which to allow execution (0-3, 0,1) + --detach(-d) # Run container in background and print container ID + --detach-keys: string # Override the key sequence for detaching a container + --device: string # Add a host device to the container + --device-cgroup-rule: string # Add a rule to the cgroup allowed devices int + --device-read-bps: int # Limit read rate (bytes per second) from a device (default []) + --device-read-iops: int # Limit read rate (IO per second) from a device (default []) + --device-write-bps: int # Limit write rate (bytes per second) to a device (default []) + --device-write-iops: int # Limit write rate (IO per second) to a device (default []) + --disable-content-trust # Skip image verification (default true) + --dns: int # Set custom DNS servers + --dns-option: string # Set DNS options + --dns-search: string # Set custom DNS search domains + --domainname: string # Container NIS domain name + --entrypoint: string # Overwrite the default ENTRYPOINT of the image + --env(-e): string # Set environment variables + --env-file: string # Read in a file of environment variables + --expose: string # Expose a port or a range of ports + --gpus: string # GPU devices to add to the container ('all' to pass all GPUs) + --group-add: string # Add additional groups to join + --health-cmd: string # Command to run to check health + --health-interval: duration # Time between running the check (ms|s|m|h) (default 0s) + --health-retries: int # Consecutive failures needed to report unhealthy + --health-start-interval: duration # Time between running the check during the start period (ms|s|m|h) (default 0s) + --health-start-period: duration # Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) + --health-timeout: duration # Maximum time to allow one check to run (ms|s|m|h) (default 0s) + --help # Print usage + --hostname(-h): string # Container host name + --init # Run an init inside the container that forwards signals and reaps processes + --interactive(-i) # Keep STDIN open even if not attached + --ip: string # IPv4 address (e.g., 172.30.100.104) + --ip6: string # IPv6 address (e.g., 2001:db8::33) + --ipc: string # IPC mode to use + --isolation: string # Container isolation technology + --kernel-memory: int # Kernel memory limit + --label(-l): string # Set meta data on a container + --label-file: string # Read in a line delimited file of labels + --link: string # Add link to another container + --link-local-ip: string # Container IPv4/IPv6 link-local addresses + --log-driver: string # Logging driver for the container + --log-opt: string # Log driver options + --mac-address: string # Container MAC address (e.g., 92:d0:c6:0a:29:33) + --memory(-m): int # Memory limit + --memory-reservation: int # Memory soft limit + --memory-swap: int # Swap limit equal to memory plus swap: '-1' to enable unlimited swap + --memory-swappiness: int # Tune container memory swappiness (0 to 100) (default -1) + --mount: string # Attach a filesystem mount to the container + --name: string # Assign a name to the container + --network: string # Connect a container to a network + --network-alias: string # Add network-scoped alias for the container + --no-healthcheck # Disable any container-specified HEALTHCHECK + --oom-kill-disable # Disable OOM Killer + --oom-score-adj: int # Tune host's OOM preferences (-1000 to 1000) + --pid: string # PID namespace to use + --pids-limit: int # Tune container pids limit (set -1 for unlimited) + --platform: string # Set platform if server is multi-platform capable + --privileged # Give extended privileges to this container + --publish(-p): string # Publish a container's port(s) to the host + --publish-all(-P) # Publish all exposed ports to random ports + --pull: string@"nu-complete docker pull" # Pull image before running ("always", "missing", "never") (default "missing") + --quiet(-q) # Suppress the pull output + --read-only # Mount the container's root filesystem as read only + --restart: string # Restart policy to apply when a container exits (default "no") + --rm # Automatically remove the container when it exits + --runtime: string # Runtime to use for this container + --security-opt: string # Security Options + --shm-size: int # Size of /dev/shm + --sig-proxy # Proxy received signals to the process (default true) + --stop-signal: string # Signal to stop the container + --stop-timeout: int # Timeout (in seconds) to stop a container + --storage-opt: string # Storage driver options for the container + --sysctl: string # Sysctl options (default map[]) + --tmpfs: string # Mount a tmpfs directory + --tty(-t) # Allocate a pseudo-TTY + --ulimit: int # Ulimit options (default []) + --user(-u): string # Username or UID (format: [:]) + --userns: string # User namespace to use + --uts: string # UTS namespace to use + --volume(-v): string # Bind mount a volume + --volume-driver: string # Optional volume driver for the container + --volumes-from: string # Mount volumes from the specified container(s) + --workdir(-w): string # Working directory inside the container +] + +# Start one or more stopped containers +export extern "container start" [ + container?: string@"nu-complete docker containers" + --attach(-a) # Attach STDOUT/STDERR and forward signals + --interactive(-i) # Attach container's STDIN + --detach-keys: string # Override the key sequence for detaching a container +] + +# Display a live stream of container(s) resource usage statistics +export extern "container stats" [ + container?: string@"nu-complete docker containers" + --all(-a) # Show all containers (default shows just running) + --format: string # Pretty-print images using a Go template + --no-stream # Disable streaming stats and only pull the first result + --no-trunc # Do not truncate output +] + +# Stop one or more running containers +export extern "container stop" [ + container?: string@"nu-complete docker containers" + --time(-t): int # Seconds to wait for stop before killing the container + --signal(-s): int # Signal to stop the container +] + +# Display the running processes of a container +export extern "container top" [ + container?: string@"nu-complete docker containers" +] + +# Unpause all processes within one or more containers +export extern "container unpause" [ + container?: string@"nu-complete docker containers" +] + +# Update configuration of one or more containers +export extern "container update" [ + container?: string@"nu-complete docker containers" + --blkio-weight: int # Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) + --cpu-period: int # Limit CPU CFS (Completely Fair Scheduler) period + --cpu-quota: int # Limit CPU CFS (Completely Fair Scheduler) quota + --cpu-rt-period: int # Limit CPU real-time period in microseconds + --cpu-rt-runtime: int # Limit CPU real-time runtime in microseconds + --cpu-shares(-c): int # CPU shares (relative weight) + --cpus: float # Number of CPUs + --cpuset-cpus: string # CPUs in which to allow execution (0-3, 0,1) + --cpuset-mems: string # MEMs in which to allow execution (0-3, 0,1) + --memory(-m): binary # Memory limit + --memory-reservation: binary # Memory soft limit + --memory-swap: binary # Swap limit equal to memory plus swap: '-1' to enable unlimited swap + --pids-limit: int # Tune container pids limit (set -1 for unlimited) + --restart: string # Restart policy to apply when a container exits (default "no") +] + +# Block until one or more containers stop, then print their exit codes +export extern "container wait" [ + container?: string@"nu-complete docker containers" +] + +# Build an image from a Dockerfile +export extern "image build" [ + --add-host: string # Add a custom host-to-IP mapping (host:ip) + --build-arg: string # Set build-time variables + --cache-from: string # Images to consider as cache sources + --cgroup-parent: string # Optional parent cgroup for the container + --compress # Compress the build context using gzip + --file(-f): string@"nu-complete local files" # Name of the Dockerfile (Default is 'PATH/Dockerfile') + --iidfile: string # Write the image ID to the file + --isolation: string # Container isolation technology + --label: string # Set metadata for an image + --network: string # Set the networking mode for the RUN instructions during build (default "default") + --no-cache # Do not use cache when building the image + --platform: string # Set platform if server is multi-platform capable + --progress: string # Set type of progress output (auto, plain, tty). Use plain to show container output + --pull # Always attempt to pull a newer version of the image + --quiet(-q) # Suppress the build output and print image ID on success + --secret: string # Secret file to expose to the build (only if BuildKit enabled): id=mysecret,src=/local/secret + --ssh: string # SSH agent socket or keys to expose to the build (only if BuildKit enabled) + --tag(-t): string # Name and optionally a tag in the 'name:tag' format + --target: string # Set the target build stage to build + --ulimit: string # Ulimit options (default []) +] + +# Show the history of an images +export extern "image history" [ + image?: string@"nu-complete docker images" + --format: string # Pretty-print images using a Go template + --no-trunc # Don't truncate output + --quiet(-q) # Only show numeric IDs +] + +# Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE +export extern "image tag" [ + source?: string@"nu-complete docker images" + target?: string@"nu-complete docker images" +] + +# List images +export extern "image ls" [ + --all(-a) # Show all images (default hides intermediate images) + --digests # Show digests + --filter: string # Filter output based on conditions provided + --format: string # Pretty-print images using a Go template + --no-trunc # Don't truncate output + --quiet(-q) # Only show numeric IDs +] + +# Download an image from a registry +export extern "image pull" [ + image?: string@"nu-complete docker images" + --all-tags(-a) # Push all tags of the specified image + --disable-content-trust # Skip image verification (default true) + --plataform: string # Set platform if server is multi-platform capable + --quiet(-q) # Suppress the push output +] + +# Upload an image to a registry +export extern "image push" [ + image?: string@"nu-complete docker images" + --all-tags(-a) # Push all tags of the specified image + --disable-content-trust # Skip image verification (default true) + --quiet(-q) # Suppress the push output +] + +# Save one or more images to a tar archive (streamed to STDOUT by default) +export extern "image save" [ + image?: string@"nu-complete docker images" + --output(-o): string # Write to a file, instead of STDOUT +] + +# Extended build capabilities with BuildKit +export extern buildx [ + --builder: string # Override the configured builder instance (default "default") +] + +# Stop and remove containers, networks +export extern "compose down" [ + --dry-run # Execute command in dry run mode + --remove-orphans # Remove containers for services not defined in the Compose file + --rmi: string@"nu-complete docker remove image" # Remove images used by services. "local" remove only images that don't have a custom tag ("local"|"all") + --timeout(-t): int # Specify a shutdown timeout in seconds + --volumes(-v) # Remove named volumes declared in the "volumes" section of the Compose file and anonymous volumes attached to containers +] + +# List containers +export extern "compose ps" [ + --all(-a) # Show all stopped containers (including those created by the run command) + --dry-run # Execute command in dry run mode + --filter: string # Filter services by a property (supported filters: status) + --format: string # Format output using a custom template: 'table': Print output in table; format with column headers (default) 'table TEMPLATE': Print output in table; format using the given Go template 'json': Print in JSON format; 'TEMPLATE': Print output using the given Go template; Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates (default "table") + --no-truncate # Don't truncate output + --orphans # Include orphaned services (not declared by project) (default true) + --quite(-q) # Only display IDs + --services # Display services + --status: string@"nu-complete docker compose service status" # Filter services by status. Values: [paused | restarting | removing | running | dead | created | exited] +] + +# Stop containers +export extern "compose stop" [ + --dry-run # Execute command in dry run mode + --timeout(-t): int # Specify a shutdown timeout in seconds +] + +# Restart service containers +export extern "compose restart" [ + --dry-run # Execute command in dry run mode + --no-deps # Don't restart dependent services + --timeout(-t): int # Specify a shutdown timeout in seconds +] + +# Create and start containers +export extern "compose up" [ + --abort-on-container-exit # Stops all containers if any container was stopped. Incompatible with -d/--detach + --abort-on-container-failure # Stops all containers if any container had a non-zero exit code. Incompatible with -d/--detach + --always-recreate-deps # Recreate dependent containers. Incompatible with --no-recreate + --attach: string # Restrict attaching to the specified services. Incompatible with --attach-dependencies + --attach-dependencies # Automatically attach to log output of all dependent services + --build # Build images before starting containers + --detach(-d) # Detached mode: Run containers in the background + --dry-run # Execute command in dry run mode + --exit-code-from: string # Return the exit code of the selected service container. Implies --abort-on-container-exit + --force-recreate # Recreate containers even if their configuration and image haven't changed + --menu # Enable interactive shortcuts when running attached. Incompatible with --detach. Can also be enable/disable + --no-attach: string # Do not attach (stream logs) to the specified services + --no-build # Don't build an image, even if it's policy + --no-color # Produce monochrome output + --no-deps # Don't start linked services + --no-log-prefix # Don't print prefix in logs + --no-recreate # If containers already exist, don't recreate them. Incompatible with --force-recreate + --no-start # Don't start the services after creating them + --pull: string@"nu-complete docker pull" # Pull image before running ("always"|"missing"|"never") (default "policy") + --quite-pull # Pull without printing progress information + --remove-orphans # Remove containers for services not defined in the Compose file + --renew-anon-volumes(-V) # Recreate anonymous volumes instead of retrieving data from the previous containers + # --scale: scale # Scale SERVICE to NUM instances. Overrides the scale setting in the Compose file if present + --timeout(-t): int # Use this timeout in seconds for container shutdown when attached or when containers are already running + --timestamps # Show timestamps + --wait # Wait for services to be running|healthy. Implies detached mode + --wait-timeout: int # Maximum duration to wait for the project to be running|healthy + --watch(-w) # Watch source code and rebuild|refresh containers when files are updated +] + +# An open-source container management platform. +export extern main [ + --config: string # Location of client config files (default "/root/.docker") + --context(-c): string # Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") + --debug(-D) # Enable debug mode + --host(-H): string # Daemon socket(s) to connect to + --log-level(-l): string # Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") + --tls # Use TLS; implied by --tlsverify + --tlscacert: string # Trust certs signed only by this CA + --tlscert: string # Path to TLS certificate file + --tlskey: string # Path to TLS key file + --tlsverify # Use TLS and verify the remote + --version(-v) # Print version information and quit +] + +# Attach local standard input, output, and error streams to a running container +export alias "docker attach" = docker container attach +# Create a new image from a container's changes +export alias "docker commit" = docker container commit +export alias "docker cp" = docker container cp +# Create a new container +export alias "docker create" = docker container create +# Inspect changes to files or directories on a container's filesystem +export alias "docker diff" = docker container diff +# Execute a command in a running container +export alias "docker exec" = docker container exec +# Export a container's filesystem as a tar archive +export alias "docker export" = docker container export +# Display detailed information on one or more containers +export alias "docker inspect" = docker container inspect +# Kill one or more running containers +export alias "docker kill" = docker container kill +# Fetch the logs of a container +export alias "docker logs" = docker container logs +# Pause all processes within one or more containers +export alias "docker pause" = docker container pause +# List port mappings or a specific mapping for the container +export alias "docker port" = docker container port +# Rename a container +export alias "docker rename" = docker container rename +# Restart one or more containers +export alias "docker restart" = docker container restart +# List containers +export alias "docker ps" = docker container ls +# Remove one or more containers +export alias "docker rm" = docker container rm +# Run a command in a new container +export alias "docker run" = docker container run +# Start one or more stopped containers +export alias "docker start" = docker container start +# Display a live stream of container(s) resource usage statistics +export alias "docker stats" = docker container stats +# Stop one or more running containers +export alias "docker stop" = docker container stop +# Display the running processes of a container +export alias "docker top" = docker container top +# Unpause all processes within one or more containers +export alias "docker unpause" = docker container unpause +# Update configuration of one or more containers +export alias "docker update" = docker container update +# Block until one or more containers stop, then print their exit codes +export alias "docker wait" = docker container wait + +# Build an image from a Dockerfile +export alias "docker build" = docker image build +# Show the history of an image +export alias "docker history" = docker image history +# Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE +export alias "docker tag" = docker image tag +# List images +export alias "docker images" = docker image ls +# Remove one or more images +export alias "docker rmi" = docker image rm +# Download an image from a registry +export alias "docker pull" = docker image pull +# Upload an image to a registry +export alias "docker push" = docker image push +# Save one or more images to a tar archive (streamed to STDOUT by default) +export alias "docker save" = docker image save + +# Inspect changes to files or directories on a container's filesystem +export alias "docker events" = docker system events diff --git a/dot_config/nushell/completions/mod.nu b/dot_config/nushell/completions/mod.nu index c97bbe9..9cd2ad7 100644 --- a/dot_config/nushell/completions/mod.nu +++ b/dot_config/nushell/completions/mod.nu @@ -1,2 +1,3 @@ export module bat.nu +export module docker.nu export module git.nu diff --git a/dot_config/nushell/config.nu b/dot_config/nushell/config.nu.tmpl similarity index 99% rename from dot_config/nushell/config.nu rename to dot_config/nushell/config.nu.tmpl index f2dff84..01f8bd8 100644 --- a/dot_config/nushell/config.nu +++ b/dot_config/nushell/config.nu.tmpl @@ -1,12 +1,17 @@ -source light_theme.nu -source dark_theme.nu +# chezmoi:template:left-delimiter=#{{ +#{{- /* vim: set filetype=nu: */ -}} + source xdg.nu +use themes.nu use completions * +#{{- if .work }} +use work * +#{{- end }} $env.config = { buffer_editor: null - color_config: $dark_theme + color_config: $themes.dark edit_mode: emacs error_style: fancy float_precision: 2 diff --git a/dot_config/nushell/lib/dark_theme.nu b/dot_config/nushell/lib/dark_theme.nu deleted file mode 100644 index 7ad6b7b..0000000 --- a/dot_config/nushell/lib/dark_theme.nu +++ /dev/null @@ -1,71 +0,0 @@ -# For more information on defining custom themes, see -# https://www.nushell.sh/book/coloring_and_theming.html -# And here is the theme collection -# https://github.com/nushell/nu_scripts/tree/main/themes -let dark_theme = { - # color for nushell primitives - separator: white - # no fg, no bg, attr none effectively turns this off - leading_trailing_space_bg: { attr: n } - header: green_bold - empty: blue - # Closures can be used to choose colors for specific values. - # The value (in this case, a bool) is piped into the closure. - # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } - bool: light_cyan - int: white - filesize: cyan - duration: white - date: purple - range: white - float: white - string: white - nothing: white - binary: white - cell-path: white - row_index: green_bold - record: white - list: white - block: white - hints: dark_gray - search_result: { bg: red fg: white } - shape_and: purple_bold - shape_binary: purple_bold - shape_block: blue_bold - shape_bool: light_cyan - shape_closure: green_bold - shape_custom: green - shape_datetime: cyan_bold - shape_directory: cyan - shape_external: cyan - shape_externalarg: green_bold - shape_external_resolved: light_yellow_bold - shape_filepath: cyan - shape_flag: blue_bold - shape_float: purple_bold - # shapes are used to change the cli syntax highlighting - shape_garbage: { fg: white bg: red attr: b } - shape_glob_interpolation: cyan_bold - shape_globpattern: cyan_bold - shape_int: purple_bold - shape_internalcall: cyan_bold - shape_keyword: cyan_bold - shape_list: cyan_bold - shape_literal: blue - shape_match_pattern: green - shape_matching_brackets: { attr: u } - shape_nothing: light_cyan - shape_operator: yellow - shape_or: purple_bold - shape_pipe: purple_bold - shape_range: yellow_bold - shape_record: cyan_bold - shape_redirection: purple_bold - shape_signature: green_bold - shape_string: green - shape_string_interpolation: cyan_bold - shape_table: blue_bold - shape_variable: purple - shape_vardecl: purple - shape_raw_string: light_purple -} diff --git a/dot_config/nushell/lib/light_theme.nu b/dot_config/nushell/lib/themes.nu similarity index 52% rename from dot_config/nushell/lib/light_theme.nu rename to dot_config/nushell/lib/themes.nu index b7eec57..d221878 100644 --- a/dot_config/nushell/lib/light_theme.nu +++ b/dot_config/nushell/lib/themes.nu @@ -2,7 +2,7 @@ # https://www.nushell.sh/book/coloring_and_theming.html # And here is the theme collection # https://github.com/nushell/nu_scripts/tree/main/themes -let light_theme = { +export const light = { # color for nushell primitives separator: dark_gray # no fg, no bg, attr none effectively turns this off @@ -70,3 +70,70 @@ let light_theme = { shape_raw_string: light_purple } +export const dark = { + # color for nushell primitives + separator: white + # no fg, no bg, attr none effectively turns this off + leading_trailing_space_bg: { attr: n } + header: green_bold + empty: blue + # Closures can be used to choose colors for specific values. + # The value (in this case, a bool) is piped into the closure. + # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } + bool: light_cyan + int: white + filesize: cyan + duration: white + date: purple + range: white + float: white + string: white + nothing: white + binary: white + cell-path: white + row_index: green_bold + record: white + list: white + block: white + hints: dark_gray + search_result: { bg: red fg: white } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + # shapes are used to change the cli syntax highlighting + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} diff --git a/dot_config/nushell/lib/work/encrypted_mod.nu.age b/dot_config/nushell/lib/work/encrypted_mod.nu.age index 4398138..2d8efb3 100644 --- a/dot_config/nushell/lib/work/encrypted_mod.nu.age +++ b/dot_config/nushell/lib/work/encrypted_mod.nu.age @@ -1,307 +1,305 @@ -----BEGIN AGE ENCRYPTED FILE----- -YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvZjhkblhvUEgzcEFyeWdD -eVpRMkRVbGtnOU5UTmNsV2N5T244d0prYXhZCkFKZHIwMFRaYUtnSzBYZS90K1p2 -RjE4Q0lSaVRudlI3L2lGQzJrYzViTnMKLS0tIC83RlNRU3pOSG1JMlpwWEx2alhW -MVh0L3cxUWhaUmEyZ1ZwaGZUdDhqb1EKVhg2DYLvUjKd4TChlR/76as9hVnEPn6A -xCH87PK7tz9UTcRmnUlL9cJHGcfdGitHZmfokfTLwa8MMjLvrUdscnE7h6ybBmwq -zS7zkeaL3tuePW8iVgGEc1mT6b19VmilD5HGF5tOk+hjwTnLZPXd8ki9zyXkhxeU -NcqxCkzcs7kTxTa0VkBWbAQTsYcj0G7KGjAMyEziGz1FBc7zKhx/yCpPwTBEgf/m -f6RX0x3gtS9Poi5R6ZW3VPLvVwPSy58RzC5JeAk7vg5UgP6Y3YlqqeE8PoMuDAj2 -FqTTrvjdrvVFCrssRz3bot/7Rk5mTic8iP2FwIIEwc9wOXoz2weD9vglYytR35Rl -ji+8vYmgbKx4sL9be9fbC+ISnE7wSW1GoiIrtCSAPufdIY+RHYX0lBkj6KqhYYxY -XDnSgd2GfidltUReGQRxjf2T5Pk6CwzxN0NUfiXTHyQ6h+ujFmx4d1E7Q5W37h7h -EINuqAi0kBoTqRXB11T8ZoWE4mYu0fy9KYl5BJcVuXFxZjpV794bXHO7lZDwlnri -Yb7xsEDkDz7Zf5FhUdGe18owE9nq5utfgmjszNjObpfhD2uwrf63CwXKifBDMARp -qcw0290bytbha3z5SAZNOWrRiIVlaaCXtcUX9YGZJ12V80KaFn8J/3zEEQz+mZU+ -NFtAeuZwlCy1xs+BxuzcnCU5V95/QvScXGi0pRePP32ww32qBX3cbh4c9ymHedGW -pvSvn8XwwSVtRo6C40xPEXbZcTDruepAlxtttnyYxIGI86B/hBAed+8zKx5bh09E -xa3SEP5oXGo8zejxoVtl0zFKIPH1Zz4c6AiICOI/XUDVZY4D9PfSISpfzWIEOYaN -NeS2hspA/gQ8c7W26q5PVjXIWoglfj+ACffEj0dq2HSykC1VNq2FJ1b61cZ4rmqV -QsOjLDXrjLb3pwQuQD5NENP9Ms4dRUDgttK8WKToWxSyBu0FEf5cZDv97lPpkrXi -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 -ZomRe1pvoA6VmOdKMeRJs6TUMeCsJeQuqEFTgDVqAQBSE8QRrpYJnmhvbLoWLB1+ -o0REd7h9LT3iLLTWVZt4sqRjW3fqY3kPwg/bqQupIw1D5UZKTy9DR7yHmZlFbgyn -ryYpaj9R6KWT12QIxAtQ3DzIs8HPm1j2Je6q+1l72xt9jQReti1/Llc4Lr8zdcr8 -zzRil+MHXLEAr2cozwUcC5Hd2atzPClA+7qrx+QtjpoXUnZLLBDxGTU37hl1YYKU -1qmKKOZqRBlQBRvzz0eCLR00wRf7O9xdV5DMMY2ER2c1Pdit8IkTLPWGEd4PfwBO -q3jZzidEEMRLDeIwAWEePZMxprtwU0a91aNpA28yBYsR7gy7oVt1XIud1Lm57Of/ -ui7l0nU22bZohV1wNrJmoxqJV8HFApGysm+CS1puGCVv7v5g5oSb5g9C7WHioyNe -5/UAlRXLN6J9WmFUyhB/eSxfAbDADRlrQweRHJCsT5CxS9tgpAE6voUz1JUnCX2y -V+R5sXfIBX/U3DqAVnsklzuOzM37Ko50OvVbiy9vUg+tymQQ1XCiU2zM9JlRMqEH -TwGjsFkWCs6I+JtiCyfUb97psSev5S38Mqh/G3AsnviSO1OxqTUVdk86veIzTLyG -RdtLwpMJDhgX43CunLJxYE+Tutd9X3lGV2epYRoD1jMlJ4SWBfRe4XbfqLNDMy+X -/lsRM/BDZiqFB16FP2clf/6zvBvHK8Al3v/QS2Dj6DfeX8sTbNVfHIW46S7Bc0QE -ACHKaS3F7vM3DZF08p8yHuU0l729cUNkw/7aIggokkZ6Hm/DBJH4mHdilPDtpOky -K4QZcd6Q36ntdkPGh6QyWupeTOPdIm+hmcg2jIfi5rRz/5UXXz9Z/AB1IqSdi+9R -2nVFlqE8wau61UCthJS0uScgP3M1rV05TcWGXsB9YZx8YWrFU1SUJvxIJ6DgUMyu -iE0ehaszL9VfNytFZkcGUBUDwEt8ossLgzua3VSclCsE4Go5hF+r0JtzkymbK0k8 -dMZx63N79hE0vKIObqABS+h3uGd/C6MpNuCIx5TxuSdE7L6xr7ZfDAZhFj7+51CX -f9WZjNeDSQLmkcEbGbRYE3xricPwXpX6XHJZ9vxlM+G1alhM8Hg8tpTYWrLdMtiJ -K0+ZUGozweOHxbih7DdVkmkNWO8y/AcI2FmQHObypOZoW+o4itE4YMimISAL3+g2 -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 -GfQuTEw= +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQUFByVG5qNVR1SktBSS91 +WnN0RXdJdDVtYk1DclovdVBRT3FoS0JpdWdzCkNmUHF0dGoyT2VORmFBSFkyamgr +aEo4Z3ZZTXR0OHZoamZjS3JIamEveDgKLS0tIFYyUzloUXN5UTZTSXIrc00rNWFZ +NmVLSUtwVHc3Y081LzFEcTVQeGhaMW8KHSC5LdIF26CyjxImksw+Ti61zxR/+2WO +wMWjE+SpN2RaClv3cbUCgWrRRfqjdIi0L33Ir5XAZJXnwjXQcTfxv+O2C4R0Yhuz +PUlYg4mb57ZQbWoLqqYw5S17te4s0kakIJ/u239oIZG9MuKdgqzrfBV13bicu7Eo +2nWkqvrTJ/5KMHdGfb8YQjbaC+D70+WF0fA319eo2MT5Lt48+wKYTYHbN9X9asBG +L2xit1oMSh3mK+UexNS8jt0rYbbqNV7Ap0LVdvbrdrrPJo2RGgNOxtUytjJJvbLY +8x1QsMWgvGMTfZvtZ6ijzIXbr5VShi1uCuwdqybm83htJid9sMIEZOe7h4LlrUxP +4A1Kx/bN4Uouv38ZWaD2rDUPNGqPpV3s5ER15tcfDXmpHPW+JT4WVY95+jcQWgaW +mDweGI0KAlnG5IOW4wKfuI5QCFqKsPSh0Xzkjsaoxs/B977pMj0HgRQyW2pshURU +kW+lPdW/4jslN3akXpOJdw8ZA6fDUaHXiunxOLxoKVHkPBumkdDYtxHwYcXnwmeq +V2jG/zui0fqI1H1VEwwlqmEzK9ofYGlCHr7ST+6gqUMalNqt7Lza7uiJJ3qWcAYg +QlKmzQQVMzPC6UE1uKA5sas9cJjZX16D1WRlVJWmr/fDVIL8ziTY7M7mvKiXrzTx +j1ai4Xl5pwkstaiuF7/wM6YHfSi7UkBXxwRltADFH7ng/IcbtGM3yQVhOSEIOEjK +/CP47+p2OXVyqVpv9LOTDcy6x6qu4NOjakF8zK5OXZ3PzKPD1rMD5kibnbdau3q3 +oPzKrAZYm+zmSJMeeXHsV/Vl24S7MqpHFZFyUFxjOnYZJLYkrnXXPnT7y3OcMyNU +zLntDYnoO1ZGv5m0PT7B1gCcvWYpsU46F62Ll4D0ONeJ1JgpLZHgxU1IDSxvsoqO +g+YpBCbRkZpFDzBir/mmiQRVyHS0hx3pJzojSJ7H7sZF7e8d+9iepcvSjyvkSYJY +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 -----END AGE ENCRYPTED FILE----- diff --git a/dot_zshrc.tmpl b/dot_zshrc.tmpl index 6af33cd..42e28a6 100644 --- a/dot_zshrc.tmpl +++ b/dot_zshrc.tmpl @@ -1,7 +1,23 @@ # chezmoi:template:left-delimiter=#{{ #{{- /* vim: set filetype=zsh: */ -}} -#{{- $home := .chezmoi.homeDir -}} -#{{- range $file := (glob (joinPath $home ".config" "zsh" "zshrc.d" "*.zsh")) -}} +#{{- if stat "/opt/homebrew/bin/brew" -}} +eval "$(/opt/homebrew/bin/brew shellenv)" +#{{- end }} + +#{{- $home := .chezmoi.homeDir }} +#{{- range $file := (glob (joinPath $home ".config" "zsh" "zshrc.d" "*.zsh")) }} source "#{{ replace $home "${HOME}" $file }}" -#{{ end -}} +#{{- end }} + +#{{- if stat (joinPath .chezmoi.homeDir "google-cloud-sdk" "path.zsh.inc" ) }} +# The next line updates PATH for the Google Cloud SDK. +if [ -f '#{{ .chezmoi.homeDir }}/google-cloud-sdk/path.zsh.inc' ]; then + . '#{{ .chezmoi.homeDir }}/google-cloud-sdk/path.zsh.inc'; +fi + +# The next line enables shell command completion for gcloud. +if [ -f '#{{ .chezmoi.homeDir }}/google-cloud-sdk/completion.zsh.inc' ]; then + . '#{{ .chezmoi.homeDir }}/google-cloud-sdk/completion.zsh.inc'; +fi +#{{- end }}