Fixes:
- Fix error message for invalid shard.yml (#516, thanks @straight-shoota)
- [Makefile] Fix shard.lock recipe (#515, thanks @straight-shoota)
- Fix pass no-color and verbose flags to crystal build (#517, thanks @straight-shoota)
Features:
- Resolver for Mercurial repositories (#458, thanks @f-fr)
- Update manpages with mercurial information (#526, thanks @straight-shoota)
- Add
!=
operator for version resolve (#520, thanks @syeopite) - Compress manpages on install (#524, thanks @straight-shoota)
Fixes:
- Let
shards build
error if no targets defined (#490, thanks @straight-shoota) - Fix to allow empty
shard.override.yml
(#495, thanks @straight-shoota) - Stop expecting master to be the default branch for git (#503, thanks @szabgab)
Features:
- Add documentation for
shard.override.yml
(#494, thanks @straight-shoota) - Warn only crystal version (#496, thanks @beta-ziliani, @bcardiff)
- Don't default the Crystal version to
<1.0.0
, use only the lower bound (#493, thanks @oprypin) - Add
--skip-executables
(#506, thanks @straight-shoota)
Others:
- Escape automatic ligatures in AsciiDoc (#489, thanks @elebow)
- Fix links in README (#500, #483, thanks @szabgab, @kimburgess)
- Correct list identation in shard.yml.adoc (#492, thanks @elebow)
- Add getting started section to README (#513, thanks @straight-shoota)
Fixes:
- Fix broken
SOURCE_DATE_EPOCH
indocs.mk
. (#479, thanks @straight-shoota)
Fixes:
- Improve error message when locked version is missing in source. (#466, thanks @straight-shoota)
- Fix touch install_path to not accidentally create file. (#478, thanks @straight-shoota)
Features:
- Add
--frozen
and--without-development
CLI flags. (#473, thanks @straight-shoota) - Add
--skip-postinstall
cli option to install and update. (#475, thanks @bcardiff) - Treat github sources as case insensitive. (#471, thanks @stakach)
Others:
- Rewrite manpages in Asciidoc. (#262, thanks @straight-shoota)
- CI improvements and housekeeping. (#454, #464, thanks @j8r, @Sija)
- Bump crystal-molinillo to 0.2.0. (#476, thanks @bcardiff)
Fixes:
- Fix outdated command for dependencies with no releases. (#455, thanks @straight-shoota)
- Fix outdated command with non-release installed. (#456, thanks @straight-shoota)
- Write lockfile even when there are no dependencies. (#453, thanks @straight-shoota)
- Touch install_path and lockfile to express dependency. (#444, thanks @straight-shoota)
- Improve git reliability by retrying on failures. (#450, thanks @fudanchii)
- Allow empty scalar for mappings/sequences. (#451, thanks @straight-shoota)
- Fix working directory in
capture
. (#457, thanks @f-fr)
Features:
- Add a fallback to alternate shards commands. (#202, thanks @Willamin)
Others:
- Use git's
checkout
feature directly to write out repo files. (#435, thanks @oprypin) - Use
Process.quote
instead of the old platform-specific helper. (#437, thanks @oprypin) - Don't use POSIX-specific shell constructs. (#436, thanks @oprypin)
- Don't use compile-time shell commands to determine build timestamp. (#438, thanks @oprypin)
- Expand Windows support + fix all specs. (#447, thanks @oprypin)
- Add continuous testing (including Windows) using GitHub Actions. (#448, thanks @oprypin)
- Cleanup unused code. (#460, thanks @f-fr)
- Fix outdated content in the
README.md
andSPEC.md
. (#434, #461, #462, thanks @kojix2, @straight-shoota, @KimBurgess)
Fixes:
- Disable interactive credential prompt for git resolver. (#411, thanks @straight-shoota)
- Display dependency name on parsing errors of
shard.yml
. (#408, thanks @straight-shoota) - Handle ambiguous dependencies and update
shard.lock
if source of dependency change. (#419, #429, thanks @bcardiff) - Reinstall when resolver changes. (#425, thanks @waj)
Features:
- Shards overrides. (#422, #429, thanks @bcardiff)
- Add
--ignore-crystal-version
related suggestion and warnings to guide user. (#418, thanks @bcardiff) - Allow shards to read
SHARDS_OPTS
for addition command options. (#417, #420, thanks @bcardiff) - Add convenient makefile arguments for packaging. (#414, thanks @bcardiff)
Others:
- Bump required Crystal to 0.35. (#424, thanks @bcardiff)
- Refactor: Move install responsibilities from
Resolver
toPackage
. (#426, thanks @waj) - Refactor: Use
Package
for locks and installed shards. (#428, thanks @waj) - Spec: Add
stdout
andstderr
toFailedCommand
message. (#410, thanks @straight-shoota) - Spec: Fix failure under 32-bit Linux. (#416, thanks @lugia-kun)
- Fix builds. (#421, #423, thanks @bcardiff)
Fixes:
- Support
crystal: x.y
values (without patch). (#404, thanks @bcardiff)
Features:
- (breaking-change) Use
crystal:
property to filter candidates version. (#395, thanks @waj, @bcardiff) - Introduce
shard.lock
2.0 format, runshards install
to migrate. (#349, #400, thanks @waj) - Support intersection in requirements
version: >= 1.0.0, < 2.0
. (#394, thanks @waj) - Install dependencies in reverse topological order. (#369, thanks @waj)
- Use less bright colors for output. (#373, thanks @waj)
- Add error on duplicate arguments in
shard.yml
. (#387, thanks @straight-shoota) - Replace
.sha1
files with a single.shards.info
. (#349, #366, #368, #401, thanks @waj)
Fixes:
- Improve
GitRef
dependencies and locks. (#388, #389, thanks @waj, @straight-shoota) - Fix crash when a shard version didn't contain a
shard.yml
. (#362, thanks @waj) - Avoid
shard.lock
being overwritten when dependencies are up to date. (#370, thanks @waj) - Detect version mismatches between
shard.yml
and git tags . (#341, thanks @RX14)
Others:
- Add compatibility with Crystal 0.35. Drop compatibility with < 0.34. (#379, #391, #397, thanks @waj, @bcardiff)
- Explicitly state build_options in help output. (#364, thanks @Darwinnn)
- Use YAML parser for
Dependency
andTarget
. (#306, thanks @straight-shoota) - Add lib to Makefile. (#344, #380, thanks @straight-shoota, @waj)
- Allow Makefile envvars to be overwritten from a command line. (#378, thanks @anatol)
- Rework of dependency and requirements. (#354, #358, thanks @waj)
- Add spec to check when there is a version mismatch. (#361, thanks @waj)
- Make sure tags in specs aren't signed. (#382, thanks @repomaa)
- Code clean-up. (#356, #375, thanks @straight-shoota)
Features:
- Use crystal-molinillo to resolve dependencies, drop the SAT solver. #322, #329, #336.
- Automatic unlock on install and update. #337
- Show the shard's name when running scripts. #326
- Support shard renames. #327
- Add SPEC for repository, homepage, documentation properties. #265
Fixes:
- Allow changes in the source protocol without triggering an actual change in the source. #315
- Make shards reproducible via
SOURCE_DATE_EPOCH
environment variable. #314 - Check non hidden files are not pruned. #330
- Validation of changes in production mode for dependencies referenced by commit. #340
Others:
- Upgrade to Crystal 0.34.0. #296, #331, #335
- Replace minitest in favor of std-lib spec. #334
- CI improvements and housekeeping. #333, #317, #323, #328
Fixes:
- Allow resolving pre-release when installing git refs;
- Report all available versions (Git resolver);
- Don't prune everything in
lib
directory.
Fixes:
- Exit with non-zero status on dependency resolve error;
- Install dependency at HEAD when no version tags are defined;
- Install executables using
shard.yml
at commit (not version).
Breaking changes:
- Dependency solver was overhauled;
- Git tag refs that match a version number are now an actual version (i.e.
tag: v1.0.0
is converted toversion: 1.0.0
).
Features:
- Update specified shards only, trying to keep other shards to their locked version if possible;
- Add
--local
argument to use the cache as-is, allowing to skip git fetches when you know the cache is up-to-date; - Add the outdated command to list dependencies that could be updated (matching constraints) as well as their latest version; including pre-release versions on demand.
- Add the lock command that behaves like the install and update commands but that only creates a lockfile, and doesn't install anything.
Fixes:
- Transitive dependencies are now available to all installed shards, allowing postinstall scripts to compile any Crystal application;
- Don't consider metadata when considering a pre-release version number.
Breaking changes:
- A
shard.yml
spec is now required in libraries. - Drop support for obsolete Projectfile.
Features:
- Experimental support for prereleases. Add a letter to a version number to
declare a pre-release. For example
1.2.3.alpha
or1.0.0-rc1
. - Ignore semver metadata (+abc).
Fixes:
- Approximate operator used to match invalid version numbers (e.g.
~> 0.1.0
wrongly matched0.10.0
). - Unbalanced version numbers, such as
1.0.0
and1.0.0.1
are now correctly ordered and compared as1.0.0.1 > 1.0.0
. - Force the 'v' prefix in version tags.
install -t
isn't supported on macOS.
Fixes:
- Git repositories cloned with v0.8.0 can't fetch new remote refs anymore,
which totally broke the
update
command. - The Path resolver incorrectly handled invalid symlinks.
Features:
- Install shard executables inside project bin folder on shard install. See #126.
Changes:
- Global cache for cloned Git repositories, aside crystal cache
(e.g.
~/.cache/shards
). Customizable withSHARDS_CACHE_PATH
. - Clone bare Git repositories instead of creating mirrors (fetch should be faster, and less space required on disk).
- Man pages are now in the
man
folder. - Allow loose shard versioning, accepting semver-like versions and alternatives such as calver.
Fixes:
- Compatibility with Crystal 0.25.
Features:
- Version command to print-out the project's version, see #147
Fixes:
- Don't consider a Git refs to be a version number, see #169
- Use installed spec for executing scripts, see #143
- Don't expect
shard.lock
whenshard.yml
has no dependencies, see #145 - Compatibility with Crystal 0.24.0 (unreleased)
- Harmonize error messages
- Correct shard.yml parse error line:column reporting
Fixes:
- correctly updates or keeps dependencies, see #107, #141
- upgrades minitest dependency so test do run
Features:
- Build command for
targets
entry in SPEC - New Crystal search path algorithm (see breaking changes below)
- Informational
crystal
entry in SPEC - Informational
libraries
entry in SPEC - Shorthand for gitlab.com dependencies
Breaking Changes:
- Dependencies are installed in the
lib
directory - Dependencies are now fully installed, instead of merely the
src
folder postinstall
scripts are now executed from the root of the dependency, not thesrc
directory
Fixes:
- crash when dependency keys were unordered
tar
command usage on OpenBSD- correctly report git errors
- the update command created a lockfile for empty dependencies
Fixes:
- Compatibility with Crystal 0.19.0
Fixes:
- Compatibility with Crystal > 0.15.0
- Relative paths for path dependencies, see #99
Fixes:
- Don't crash when git binary is missing.
Fixes:
- Compatibility with Crystal > 0.11.1
Features:
- prune command to remove extraneous libs
- init command to create an initial shard.yml
Fixes:
- print details when postinstall script fails, see #84
- path resolver didn't verify the path actually existed, see #77
- recursion when shard name doesn't match dependency name, see #72
Fixes:
- Compatibility with Crystal > 0.9.1
Fixes:
- Git resolver didn't install the locked commit when using branch, tag or commit or just failed to install the dependency, see #65 and #67
Fixes:
- compilation on Crystal 0.9.0
Fixes:
- always generate a
shard.yml
when installing legacy dependencies, see #60 - only create
libs
and.shards
folders when required, see #61
Breaking Change:
- renamed
--no-colors
option as--no-color
to match crystal
Features:
- nice error messages for invalid
shard.yml
files
Enhancements:
- upgraded to Crystal 0.8.0
- custom YAML parser for shard.yml compliant to the spec
- binary releases for OS X and Linux 32 bits
Fixes:
- install command fails to install dependencies on fresh projects
- check command breaks whenever a dependency is missing
- manager doesn't resolve dependencies of development dependencies recursively
- support for Git < 1.7.11 (eg: Ubuntu Precise and Debian Wheezy)
- don't generate lockfile for projects without dependencies
- don't fail when loading empty Projectfile
Features:
- lock resolved versions for indempotent installs across computers, see #27
--production
parameter to skip development dependencies- postintall hook to run a command after installing a dependency, see #19
Breaking Changes:
- dropped support for custom dependency groups (but kept
development_dependencies
), see #27
Fixes:
- compatibility with Crystal 0.7.7
Fixes:
- don't install dependencies from optional groups recursively
- manager didn't install path dependencies anymore
Features:
- optional groups of dependencies, see #8
- generates default
shard.yml
from Git tags andProjectfile
dependencies, see #6
Fixes:
- clone repository again when Git remote origin changes, see #4
Fixes:
- correctly accesses git versioned
shard.yml
files; - correctly links/extracts the
src
folder as thelibs/<name>
folder for both Git and path resolvers.
Initial release.