# Deno Scripts ## Scripts - [`codium-extensions`]: save and install VS Codium extensions using their identifier. - [`copy-nixos-config`]: copies NixOS configuration from `$BAUKE_DIR/nix//` to `/etc/nixos/`. - [`desktop-wallpaper`]: desktop wallpaper changer. - [`drg-data-entry`]: Deep Rock Galactic data tracker. - [`edit-youtube-video`]: edit a YouTube video via the Data API. - [`project-avatar`]: image generator for projects. - [`simple-git-push`]: `git push` with extra semantics. - [`tauon-controls`]: remote control CLI for Tauon Music Box. [`codium-extensions`]: ./scripts/codium-extensions.ts [`copy-nixos-config`]: ./scripts/copy-nixos-config.ts [`desktop-wallpaper`]: ./scripts/desktop-wallpaper.ts [`drg-data-entry`]: ./scripts/drg-data-entry.ts [`edit-youtube-video`]: ./scripts/edit-youtube-video.ts [`project-avatar`]: ./scripts/project-avatar.ts [`simple-git-push`]: ./scripts/simple-git-push.ts [`tauon-controls`]: ./scripts/tauon-controls.ts ## Cliffy For CLI creation [Cliffy] is used, a Deno-specific framework for handling input and parsing arguments. * A simple command with a `--file ` argument: ```ts // Assuming the script location is `$BAUKE_DIR/scripts`. import { Command } from "./dependencies.ts"; const { options } = await new Command() // CLI information, shown in --help. .name("example-cli") .description("Description of the program.") // Add the --file option with a default value. .option("-f, --file ", "Example file", { default: "example.txt" }) .parse(Deno.args); console.log(options.file); ``` [Cliffy]: https://cliffy.io ## Why `bin/` + `scripts/` Deno has [some issues](https://github.com/denoland/deno/issues/17195) with running files without a file extension (like what you'd want in `bin/`). So instead all the scripts are located in `scripts/` with proper file extensions and the `bin/` files call those scripts using `deno run`. Though even if Deno didn't have these issues, having massive shebangs would also not be nice, so this setup is fine.