Crates.io | cranko |
lib.rs | cranko |
version | 0.16.0 |
source | src |
created_at | 2020-09-06 02:15:01.617129 |
updated_at | 2023-12-14 18:49:40.670358 |
description | A cross-platform, cross-language release automation tool |
homepage | https://pkgw.github.io/cranko/ |
repository | https://github.com/pkgw/cranko |
max_upload_size | |
id | 285266 |
size | 479,886 |
Cranko is a release automation tool implementing the just-in-time versioning workflow. It is cross-platform, installable as a single executable, supports multiple languages and packaging systems, and is designed from the ground up to work with monorepos.
To learn more, check out the book!
In order to use Cranko, it has to have explicit support for the language/project/package type(s) that you're using. It currently supports:
In order to add support for new languages, one has to implement a "loader" that detects project files and extracts metadata, and one or more "rewriters" that can update those files with the new versions that Cranko determines. Simple support can usually be accomplished with a few hundred lines of Rust code.
Cranko is delivered as a single standalone executable for easy installation on
continuous integration systems. On Unix-like systems (including macOS), the
following command will drop an executable named cranko
in the current
directory:
curl --proto '=https' --tlsv1.2 -sSf https://pkgw.github.io/cranko/fetch-latest.sh | sh
On Windows systems, the following command will do the same in a PowerShell window:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://pkgw.github.io/cranko/fetch-latest.ps1'))
For more details and additional methods, see the Installation section of the book.
Because Cranko is a workflow tool, to really start using it you’ll need to learn a bit about how it works and then think about how to integrate it into your development processes. To learn more, check out the Getting Started and Just-in-Time Versioning sections of the book.
Cranko is still a new project and is lacking many features that would be useful. Here are some potential directions for future work:
The cranko
Cargo package provides the following optional features:
vendored-openssl
— builds the git2 dependency with its vendored-openssl
feature, which uses a builtin OpenSSL library rather than attempting to link
with the system version. This is useful when cross-compiling because often the
target environment lacks OpenSSL.Are welcome! Please open pull requests or issues against the pkgw/cranko repository.
Cranko copyrights are held by Peter Williams and the Cranko project contributors. Source code is licensed under the MIT License.