Path to this page:
./
devel/garden,
Grows and cultivates collections of Git trees
Branch: CURRENT,
Version: 1.9.1,
Package name: garden-1.9.1,
Maintainer: pinGarden streamlines development workflows that involve a loosely-coupled set
of multiple, independent Git trees.
Garden allows you to define dynamic relationships and workflows between these
repositories using a declarative YAML config file that can be shared and used
as a bootstrapping mechanism for getting a auditable, from-source project
cloned, built, installed and running with minimal effort for consumers
of a Garden file.
Garden sits above any individual project's build scripts and conventions.
Garden is all about making it easy to remix and reuse libraries maintained in
seperate Git repositories.
Master sites:
Filesize: 141.532 KB
Version history: (Expand)
- (2024-11-08) Updated to version: garden-1.9.1
- (2024-10-13) Updated to version: garden-1.9.0
- (2024-09-27) Updated to version: garden-1.8.0
- (2024-07-18) Updated to version: garden-1.7.0
- (2024-06-03) Updated to version: garden-1.6.0
- (2024-04-15) Updated to version: garden-1.5.0
CVS history: (Expand)
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)
|