# Bautils > **Bauke's Ad-hoc Utilities.** ## Commands ### Arguments ```sh fruits=("apple" "banana" "coconut") bautils arguments count -- $fruits # Outputs: 3 ``` ### Date ```sh # Outputs the current date with the ISO 8601 format. bautils date now # Set a custom format using `-f` or `--format`. bautils date now -f '%F %T' ``` ### Directory ```sh # Checks whether a directory exists, returning an exit code of 1 # when it doesn't. This specifically checks for a directory so if # a path exists but it isn't a directory this will also return 1. bautils directory exists 'source' ``` ### File ```sh # Checks whether a file exists, with the same logic as the # `directory exists` command. bautils file exists 'Cargo.toml' # Returns metadata of a file, for example `--modified` returning # when the file was last modified. bautils file metadata 'Cargo.toml' --modified # Returns parts of a file name. bautils file parts 'source/main.rs' --directory # Outputs: source bautils file parts 'source/main.rs' --basename # Outputs: main bautils file parts 'source/main.rs' --extension # Outputs: rs ``` ### Log ```sh # Logs data to a file, creating the file if it doesn't exist. bautils log -- 'The data to log!' # The log file can be specified with `-f` or `--file`. bautils log -f 'logfile.txt' -- 'More data!' ``` ### Match ```sh # Matches a regular expression, returning an exit code of 1 if it # is succesful. bautils match regex --pattern '\d' '123' ``` ## Development With [Nix flakes](https://nixos.wiki/wiki/Flakes) and [direnv](https://direnv.net/) installed and enabled, all the required dependencies are automatically loaded from [`shell.nix`](./shell.nix). Then [cargo-make](https://sagiegurari.github.io/cargo-make/) can be used to build, deploy and lint the code. The available tasks are all described in the [`Makefile.toml`](Makefile.toml) configuration. ## License Distributed under the [AGPL-3.0-or-later](https://spdx.org/licenses/AGPL-3.0-or-later.html) license, see [LICENSE](https://git.bauke.xyz/Bauke/bautils/src/branch/main/LICENSE) for more information.