version_from_shard
Version, currently 1.2.59 versions
github.com/hugopl/version_from_shard
A macro to declare the VERSION constant from the value found in shard.yml, so you don't need to write the same version number in multiple places.
10 stars
1 dependent
License: MIT
Installation
# Add this to your shard.yml
dependencies:
version_from_shard:
github: hugopl/version_from_shard
version: ~> 1.2.5Then run:
shards installshard.yml
- Crystal
>= 0.36.1- License
- MIT
- Author
- Hugo Parente Lima <hugo.pl@gmail.com>
Dependencies
This version declares no dependencies.
README

# Version From Shard
A macro to declare the VERSION constant from the value found in `shard.yml`, so you don't need to write the same version number in multiple places.
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
version_from_shard:
github: hugopl/version_from_shard
```
2. Run `shards install`
## Usage
```crystal
require "version_from_shard"
module MyAwesomeApp
VersionFromShard.declare
end
puts MyAwesomeApp::VERSION # Should print the version value found in shard.yml, e.g. "1.0.0"
```
If you are developing a library is necessary to pass \_\_DIR__ to the declare macro, otherwise when compiling a
application using your library it will show the version of the application instead the version of your library.
So, on libraries do:
```crystal
module MyAwesomeLib
VersionFromShard.declare(__DIR__)
end
# Then, the App code can safely do:
puts "Awesome app v#{MyAwesomeApp::VERSION} using awesome lib v#{MyAwesomeLib::VERSION}"
```
When compiling a development version, i.e. not a tagged commit, the version will try to
use `git describe --tags` output (ignoring tag prefixes) for the version string. If git isn't
found or someone is compiling the project from a tarball, normal version will be used.
Example:
You have `version: 1.0.0` on your shard.yml file but your master branch is 1 commit ahead of the tag named `v1.0.0` that you released yesterday, in this case VersionFromShard.declare will declare a VERSION constant with the value `1.0.0+1.g2dd5299`, assuming `2dd5299` is the current commit hash, note the `g` prefix, that means git.
## About Semantic Version
[This issue](https://github.com/semver/semver/issues/200) summarize the problems with semantic version and nightly builds
when you don't know yet if the final version of your software will increase a major, minor or patch version.
## Development
Suggestions are welcome.
## Contributing
1. Fork it (<https://github.com/hugopl/version_from_shard/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Hugo Parente Lima](https://github.com/hugopl) - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
1.2.5- Tagged
- Jan 19, 2022
- Commit
1affb5ccf3b3- Crystal
>= 0.36.1- Indexed
- yes
Dependents
Repository
github.com/hugopl/version_from_shard
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 9