2024-04-15 09:42:54 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.5.0 v1.5.0 - Released 2024-04-14 Features: - Running garden init inside a Git repository will now record the current directory as a tree with its path set to ${GARDEN_CONFIG_DIR}. (#34) - Custom commands skip missing trees by default. A new -f | --force option can be used to make garden run commands on missing trees. (#33) - garden plant now avoids updating the configuration when a tree is re-planted and its configuration contains expressions that evaluate to the same value as currently exist in git. (#31) (#32) Packaging: - Prebuilt binaries are now available! Development: - The original github repository under davvid's namespace was transferred to the garden-rs organization on github. - The yaml-rust2 dependency was upgraded to 0.8.0 to avoid the encoding crate (RUSTSEC-2021-0153). |
2024-03-23 20:09:40 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.4.1 Released 2024-03-22 Features: - The empty directory detection in garden grow was improved. Development: - The internal APIs were updated to use AsRef<Path> wherever possible. |
2024-03-21 12:29:36 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.4.0 v1.4.0 Released 2024-03-21 Features: - Custom commands can now specify an interpreter to use on a per-command basis. If a command uses a shebang #! line then the command's text will be passed as the next argument to the specified command. For example, using #!python3 -c as the first line in a custom command will cause python3 -c <command> to be executed. - Trees can now use branches defined in separate remotes when configuring the default branch to checkout. garden grow will now fetch the remote associated with the configured branch switching branches in order to make this possible. - Trees can now use any upstream branch from any configured remote in the \ branches section. Previously, branches associated with non-default remotes could not be created unless they were fetched beforehand. garden grow will now fetch the associated remote before creating the local branch. - garden grow now detects empty directories (e.g. the directories that are created when using uninitialized Git submodules) and will properly clone into the empty \ directories instead of treating them like an already-grown tree. (#30) Development: - garden can now be built on Windows. Symlink trees and the XDG base directory \ support is UNIX-only and disabled on Windows. (#17) - yaml-rust2 is now used instead of the yaml-rust-davvid fork that was being maintained by @davvid for use by garden. (#29) |
2024-02-20 22:27:07 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.3.0 v1.3.0 Released 2023-02-19 Features: garden eval and garden expressions in general will now resolve variables defined within environment blocks. Environment blocks were previously not considered when resolving variables. Environment blocks are now resolved and checked for variables when ${variable} expressions do not find the variable in scopes with higher precedence. The precedence order, from strongest to weakest, is the variables block in a garden's scope, the variables block in a tree's scope, the variables block in global configuration scope, the environments block in a garden's scope, the environments block in a tree's scope, the environments block in global configuration scope and, lastly, OS environment variables. The first entry found is used when expanding variable expressions. (#23) Evaluation cycles (i.e. circular variable dependencies) are now prevented when evaluating garden variables. The evaluation engine will now return empty strings when a variable with a cyclical expression is evaluated. (#24) When zsh is used as the garden.shell, which happens automatically when zsh is installed, garden will now use zsh -o shwordsplit in order to enable word-splitting of $variable expressions by default. This makes zsh behave just like other shells by default, which improves the portability of commands. Configure garden.shell-wordsplit to false or use the garden <cmd> -z | --no-wordsplit option to opt-out of this behavior. (#25) garden.shell can now be configured to use arbitrary commands for executing command strings. Garden uses the configured garden.shell as-is and does not augment its options (e.g. -e or -o shwordsplit) when a custom command is used. Custom commands are identified as commands that expand to 2 or more command-line arguments. Thus, python3 is not considered a custom command and garden will run python3 -c <string> to run commands. On the other hand, specifying ruby -e is considered a custom command because it expands to ["ruby", "-e"] under the hood. If you need to use \ a custom command that takes no additional command-line arguments then you can use env as an extra argument to have it be considered as a custom shell. For example, env custom-shell will cause garden to run env custom-shell <string>, which is equivalent to custom-shell <string>. Using just custom-shell would have resulted in garden running custom-shell -c <string> instead, which may not be desired. (#26) The garden shell command can now be configured to use an interactive command shell that is distinct from the command specified in the garden.shell configuration by configuring the garden.interactive-shell value. (#26) garden shell can now be run without any arguments. The tree query now defaults to . so that the tree in the current directory is used when nothing is specified. (#26) Custom commands now have access to a ${GARDEN_CMD_VERBOSE} and ${GARDEN_CMD_QUIET} variables which can be used to forward the --verbose and --quiet arguments down into child garden invocations. ${GARDEN_CMD_VERBOSE} uses the short -v flag in the value to support the case where the verbose option is specified multiples times to increase the verbosity level (e.g. -vv). (#27) |
2024-02-09 14:53:45 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.2.1 Development: - The yaml-rust-davvid dependency was upgraded to v0.6.0. - Documentation and code maintenance. |
2024-01-28 07:47:09 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.2.0 Released 2023-01-27 - v1.2.0 Features: - If a garden file has no trees defined at all then an implicit tree called `.` will now be synthesized into existence. The presence of this implicit tree allows garden files that define just the current directory as a tree to omit the entire `trees` section altogether. This consequently makes it easier to use garden as a simple command runner because the `commands` section is the only section required in order to run `garden` commands. - When `garden.root` is not configured `garden` will behave as if `garden.root` is configured to `${GARDEN_CONFIG_DIR}`. This allows garden files to omit `garden.root` from their configuration in typical scenarios. - Configuring `garden.root` to an empty string (`""`) will behave as if `garden.root` is configured to the current directory from which `garden` was run. - When a `garden.yaml` file does not exist in the current directory then garden will walk up the file system searching for `garden.yaml` or the name specified using `garden -c <name>`. Garden will behave as if it were launched from the directory containing the garden file when a configuration file is found. - The `GARDEN_CEILING_DIRS` and `GIT_CEILING_DIRS` environment variables can be used to limit the `garden.yaml` discovery by preventing `garden` from traversing into and beyond the specified directories when discovering garden files. - `garden exec`, `garden cmd` `garden grow`, `garden ls` and custom garden commands can now filter the trees they operate over by passing a glob pattern using `-t | --trees` option. These commands will only operate on the trees whose names match the pattern. This allows you to specify a garden as the tree query and use the full set of environment variables from all trees in the query while executing commands over a subset of the trees in that garden. - `garden init` will now add the current directory to the `trees` block when the current directory contains a Git repository. Use `garden init --empty` to disable this behavior. Development: - The `shlex` dependency was upgraded to `1.3.0`, which includes fixes for [RUSTSEC-2024-0006](https://rustsec.org/advisories/RUSTSEC-2024-0006.html) a.k.a. \ [GHSA-r7qv-8r2h-pg27](https://github.com/comex/rust-shlex/security/advisories/GHSA-r7qv-8r2h-pg27). |
2024-01-16 22:27:13 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.1.0 v1.1.0 Features - garden ls now displays information about trees, groups, gardens and commands. - garden ls -c (i.e. --no-commands) hides command details from the output. - garden plant -s (i.e. --sort) sorts all of the configured trees entries after planting the specified trees. - garden exec -n (i.e. --dry-run) performs a trial run without executing any commands. - garden.shell-errexit can now be configured to false in garden.yaml to opt-out of using the -e exit-on-error shell option when running custom commands. - garden.shell can now be configured to bun, fish, node, perl and python3 in addition to the traditional bash, zsh, dash, ksh and sh shells. This allows you to use these interpreters to run custom commands. Development: - Garden is now using shellexpand v3. |
2023-12-28 21:45:02 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 1.0.0 v1.0.0 Features - Commands can now specify pre-commands and post-commands that are run before/after the specified command. (#3) (documentation) - The default origin remote name can now be configured using tree.<tree>.default-remote. (#16) - Commands now display the tree's current branch alongside the tree name. (#18) - garden -vv exec and garden -vv shell now display the command being run. Packaging: - garden can now be installed as a nix flake package. A flake.nix file is now provided. (#16) |
2023-11-20 08:44:35 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 0.9.1 v0.9.1 Fixes - garden -D name=value now overrides variables in all scopes. Variables defined in tree scope were not subject to overrides and will now get properly overridden by the --define / -D command-line options. v0.9.0 Features - garden grow now sets git config remote.$name.tagopt --no-tags when adding additional remotes. This prevents accidentally fetching tags when interacting with remotes. |
2023-07-19 07:59:35 by pin | Files touched by this commit (3) | |
Log message: devel/garden: update to 0.8.1 v0.8.1 Fixes - garden grow was fixed to detect existing branches when growing - git worktree-created child worktrees. Development: - strum is now used to implement FromStr for enum ColorMode. - is-terminal is now used instead of the unmaintained atty crate. |