yankee
Version:
Easy release management with YAML changelogs
120 lines (89 loc) • 4.52 kB
Plain Text
YANKEE(1) YANKEE(1)
NNAAMMEE
yyaannkkeeee - Easy release management with YAML changelogs
SSYYNNOOPPSSIISS
yankee [<path>]
yankee --help
DDEESSCCRRIIPPTTIIOONN
The file CChhaannggeelloogg..yyaammll is the single source of information about your
releases. It should be an object with one key per release and an
optional mmaasstteerr:: key at the top. Here^as an example:
master:
new features:
- The cool new flag `--verbose`.
2.0.1:
date: 1992-02-09
fixed bugs:
- Got rid of a nasty IO bug.
- Improved the docs.
2.0.0:
date: 1982-03-15
breaking changes:
- API redesign. See the readme for details.
1.0.0:
date: 1970-01-01
note: Initial release.
When you call yyaannkkeeee, we^all determine what version number comes next
and update the file accordingly. We^all replace mmaasstteerr:: with the new
version and add a ddaattee:: property with the current day right below that.
If the mmaasstteerr:: object contains the key bbrreeaakkiinngg cchhaannggeess::, we^all make it
a major release (X.y.z). If it contains the key nneeww ffeeaattuurreess::, we^all
make a minor bump (x.Y.z). Otherwise, make sure your mmaasstteerr:: changelog
has the key ffiixxeedd bbuuggss:: ^a we^all release it as a patch (x.y.Z).
The version number against which we^all be bumping is the first key in
your CChhaannggeelloogg..yyaammll except mmaasstteerr::. If there^as no other key, we^all
always tag the release as 1.0.0.
If you call yyaannkkeeee without any options, we^all only output the version
number, so that it^as easy for you to process with scripts.
OOPPTTIIOONNSS
[[ppaatthh]]
The path to your project directory. Should contain a CChhaannggeelloogg..yyaammll.
Default: $$((ppwwdd)).
--nn,, ----nnppmm
Attempt to update the vveerrssiioonn field in ppaacckkaaggee..jjssoonn and
nnppmm--sshhrriinnkkwwrraapp..jjssoonn.
--cc,, ----ccoommmmiitt
Commit changes. The commit message will be the raw version number.
--tt,, ----ttaagg
Tag the commit with an annotated tag. The tag name will be the raw ver-
sion number preceeded with a ^av^a. Implies ----ccoommmmiitt.
--hh,, ----hheellpp
You^are looking at it.
EEXXAAMMPPLLEE
Here a simple example using ccaatt and here docs
_h_t_t_p_s_:_/_/_e_n_._w_i_k_i_p_e_d_i_a_._o_r_g_/_w_i_k_i_/_H_e_r_e___d_o_c_u_m_e_n_t_#_U_n_i_x___s_h_e_l_l_s. When creating
your package, you start off with a simple changelog:
$ cat << ^a^a^a > Changelog.yaml
master:
note: Initial release.
^a^a^a
When you^are ready for a 1.0.0 release, just call yyaannkkeeee:
$ yankee
1.0.0
$ cat Changelog.yaml
1.0.0:
date: 2016-05-20
note: Initial release.
Working on new stuff, update the changelog accordingly:
$ cat << ^a^a^a > Changelog.yaml
master:
new features:
- Cool new stuff!
$(cat Changelog.yaml)
^a^a^a
When ready for a release, yyaannkkeeee will figure out what the release num-
ber should be:
$ yankee
1.1.0
$ cat Changelog.yaml
1.1.0:
date: 2016-05-20
new features:
- Cool new stuff!
1.0.0:
date: 2016-05-20
note: Initial release.
LLIICCEENNSSEE
MIT _h_t_t_p_s_:_/_/_g_i_t_h_u_b_._c_o_m_/_s_t_u_d_i_o_-_b_1_2_/_y_a_n_k_e_e_/_L_i_c_e_n_s_e_._m_d ^A(C) Studio B12
_h_t_t_p_:_/_/_s_t_u_d_i_o_-_b_1_2_._d_e
v1.0.8 October 2017 YANKEE(1)