Releases: dazuma/toys
toys 0.13.1
toys/v0.13.1 release: Release 2 gems (#173)
toys-core 0.13.1
toys-core/v0.13.1 release: Release 2 gems (#173)
toys 0.13.0
v0.13.0 / 2022-02-08
Toys 0.13.0 is a major release with significant improvements to the testing framework and git cache, along with compatibility improvements and bug fixes.
Breaking changes:
- Passing
--directory=
totoys system test
now restricts the search to only that directory, excluding global and builtin tools. - Renamed
Toys::Testing#exec_tool
toToys::Testing#toys_exec_tool
. - Removed the methods of
Toys::Testing
that were specific to "capture", "control", or "separate" spawning (i.e.#exec_separate_tool
,#capture_tool
,#capture_separate_tool
,#control_tool
, and#control_separate_tool
). The generalToys::Testing#toys_exec_tool
now either controls or captures depending on whether a block is present. Spawn-based execution is no longer available.
New functionality:
- Provided several builtin system tools for viewing and managing the git cache.
- The
load_git
directive and the underlyingToys::Utils::GitCache
class now support updating from git based on cache age. - The
Toys::Utils::GitCache
class supports supports copying git content into a provided directory, querying repo information, and deleting cache data. - The
Toys::Utils::GitCache
class makes files read-only, to help prevent clients from interfering with one another. - The
:terminal
mixin and the underlyingToys::Utils::Terminal
class now honor theNO_COLOR
environment variable. toys system test
now understands--minitest-focus
and--minitest-rg
to activate those plugins.toys system test
now understands--minitest-version=
to set the minitest version requirement.- Added
Toys::Testing#toys_run_tool
to run a tool in-process for testing. - Added
Toys::Testing#toys_load_tool
to load a tool in-process and provide a way to test individual methods. - Added
:custom_paths
and:include_builtins
arguments to theToys::StandardCLI
constructor.
Fixes and compatibility:
- Bundler install/updates are now spawned in subprocesses for compatibility with bundler 2.3. The bundler integration also now requires bundler 2.2 or later.
- The
exec_tool
andexec_proc
methods in the:exec
mixin now log their execution in the same way as other exec functions. - Minor compatibility fixes to provide partial support for TruffleRuby.
Other notes:
- The internal GitCache representation has changed significantly to support additional features and improve robustness and performance. This will force existing caches to update, but should not break existing usage.
- Significant updates to the readme and user guide, including a section in the user guide on the test framework.
- Toys-core docs are now embedded into the toys gem, so that all the links will work in rubydoc.info.
toys-core 0.13.0
v0.13.0 / 2022-02-08
Toys-Core 0.13.0 is a major release with significant improvements to the git cache, along with compatibility improvements and bug fixes.
New functionality:
- The
load_git
directive and the underlyingToys::Utils::GitCache
class now support updating from git based on cache age. - The
Toys::Utils::GitCache
class supports copying git content into a provided directory, querying repo information, and deleting cache data. - The
Toys::Utils::GitCache
class makes files read-only, to help prevent clients from interfering with one another. - The
:terminal
mixin and the underlyingToys::Utils::Terminal
class now honor theNO_COLOR
environment variable. - Added
Toys::CLI#load_tool
, which is useful for testing tools.
Fixes and compatibility updates:
- Bundler install/updates are now spawned in subprocesses for compatibility with bundler 2.3. The bundler integration also now requires bundler 2.2 or later.
- The
exec_tool
andexec_proc
methods in the:exec
mixin now log their execution in the same way as other exec functions. - Minor compatibility fixes to provide partial support for TruffleRuby.
Other notes:
- The internal GitCache representation has changed significantly to support additional features and improve robustness and performance. This will force existing caches to update, but should not break existing usage.
toys 0.12.2
v0.12.2 / 2021-08-30
- FIXED: Tool context inspect string is no longer overwhelmingly long
- FIXED: Fixed an exception in GitCache and load_git when updating a changed ref
toys-core 0.12.2
v0.12.2 / 2021-08-30
- FIXED: Tool context inspect string is no longer overwhelmingly long
- FIXED: Fixed an exception in GitCache when updating a changed ref
toys 0.12.1
v0.12.1 / 2021-08-17
- FIXED: Fixed a regression in 0.12.0 where bundler could use the wrong Gemfile if you set a custom context directory
toys-core 0.12.1
v0.12.1 / 2021-08-17
- FIXED: Fixed a regression in 0.12.0 where bundler could use the wrong Gemfile if you set a custom context directory
toys 0.12.0
v0.12.0 / 2021-08-05
Toys 0.12.0 is a major release with significant new features and bug fixes, and a few minor breaking changes. Additionally, this release now requires Ruby 2.4 or later.
Breaking changes:
- Defining a tool with whitespace, control characters, or certain punctuation in the name, now raises ToolDefinitionError.
- The Toys::Tool class (for the object returned by the Toys::Context::Key::TOOL attribute) has been renamed to Toys::ToolDefinition so that the old name can be used for class-based tool definition.
New functionality:
- The DSL now supports a class-based tool definition syntax (in addition to the existing block-based syntax). Some users may prefer this new class-based style as more Ruby-like.
- The subtool list on help screens is now split into sections by source directory
- You can now load tools from a remote git repository using the load_git directive.
- Whitespace is now automatically considered a name delimiter when defining tools.
- There is experimental support for providing tests for tools.
- There is now an extensible settings mechanism to activate less-common tool behavior. Currently there is one setting, which causes subtools to inherit their parent's methods by default.
- The load directive can load into a new tool.
- You can now set the context directory individually for the standard build tools.
- Added a new standard mixin that provides XDG Base Directory information.
- Added a new standard mixin that provides cached access to remote git repos.
Fixes:
- Fixed some bundler integration issues that occurred when the bundle is being installed in a separate path such as a vendor directory.
- Exceptions raised from internal classes now include the full backtrace.
toys-core 0.12.0
v0.12.0 / 2021-08-05
Toys-Core 0.12.0 is a major release with significant new features and bug fixes, and a few breaking interface changes. Additionally, this release now requires Ruby 2.4 or later.
Breaking interface changes:
- The Toys::Tool class has been renamed Toys::ToolDefinition so that the old name can be used for class-based tool definition.
- Tool definition now raises ToolDefinitionError if whitespace, control characters, or certain punctuation are used in a tool name.
- Toys::Loader#add_path no longer supports multiple paths. Use add_path_set instead.
- The "name" argument was renamed to "source_name" in Toys::Loader#add_block and Toys::CLI#add_config_block
New functionality:
- The DSL now supports a class-based tool definition syntax (in addition to the existing block-based syntax). Some users may prefer this new class-based style as more Ruby-like.
- You can now load tools from a remote git repository using the load_git directive.
- Whitespace is now automatically considered a name delimiter when defining tools.
- There is now an extensible settings mechanism to activate less-common tool behavior. Currently there is one setting, which causes subtools to inherit their parent's methods by default.
- The load directive can load into a new tool.
- Added a new utility class and mixin that provides XDG Base Directory information.
- Added a new utility class and mixin that provides cached access to remote git repos.
- The help text generator now supports splitting the subtool list by source.
- Loader and CLI methods that add tool configs now uniformly provide optional source_name and context_directory arguments.
- Toys::SourceInfo now supports getting the root ancestor and priority of a source.
- Toys::ToolDefinition now has a direct accessor for the source root. This is always set for a tool, even if it isn't marked as finished.
Fixes:
- Fixed some bundler integration issues that occurred when the bundle is being installed in a separate path such as a vendor directory.
- Toys::ContextualError now includes the full backtrace of the cause.
- Cleaned up some unused memory objects during tool loading and lookup.