./devel/garden, Grows and cultivates collections of Git trees

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.5.0, Package name: garden-1.5.0, Maintainer: pin

Garden 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: 134.32 KB

Version history: (Expand)


CVS history: (Expand)


   2024-04-15 09:42:54 by pin | Files touched by this commit (3) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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)