Node Git Tags
Gets and parses semver tags using Git and Node.js
Usage
Assuming you have the following git tags:
v1.0.1
v1.0.0
v0.1.0-beta
NonSemverTag
Get all semver tags
gittags.get([repo], callback(err, tags))
Argument | Type | Description |
---|
repo (optional) | string | Optional repo path. Defaults to process.cwd() |
callback | function | Required callback fn |
callback(err) | null | Error | Error, if there is one |
callback(tags) | Array.<string> | Array of semver tags found (e.g. ['1.0.1', '1.0.0'] ) |
var gittags = require('git-tags');
gittags.get(function(err, tags) {
if (err) throw err;
console.log(tags);
});
gittags.get('/foorepo', function(err, tags) {});
Latest
gittags.latest([repo], callback(err, latest))
Name | Type | Description |
---|
repo (optional) | string | Optional repo path. Defaults to process.cwd() |
callback | function | Required callback |
err | null | Error | Error if, there is one |
latest | string | Latest semver tag found (e.g. '1.0.1' ) |
gittags.latest(function(err, latest) {
console.log(latest);
});
Oldest
gittags.oldest([repo], callback(err, oldest))
Same as latest
but opposite.
gittags.oldest(function(err, oldest) {
console.log(oldest);
});
Semver Parse
Two functions relating to semver exist for convenience. parse
is just semver.parse
, and mmp
which stands for "Major, Minor, Patch". If you need more semver stuff, you should use the node-semver module directly.
gittags.parse(tag) -> SemVer
Name | Type | Description |
---|
tag | string | Version string to parse (e.g. 'v1.0.2-beta' ). See node-semver for more info. |
gittags.mmp(tag) -> formattedTag
Name | Type | Description |
---|
tag | string | Tag to format (e.g. 'v1.0.2-beta' ) |
formattedTag | string | Major.Minor.Patch formatted tag (e.g. '1.0.2' ) |
gittags.mmp('v1.3.10-beta.12');
var version = gittags.parse('v1.3.10-beta.12');
version.prerelease;
version.compare('v1.3.10');
version.compare('v1.3.9');
Note
Stating the obvious, this module uses the callback fashion of async handling. This makes them easy to integrate w/ promises.
Bluebird, for example
var Q = require('bluebird');
var gittags = Q.promisifyAll(require('gittags'));
gittags.latestAsync().then(console.log);
I originally intended this to use child_process.spawn
and return a stream, but I then realized these are blocking in Linux/Unix, limiting the usefulness of that. And it's Git tags so who cares?
If you want streams, you can use something like highland.js which is awesome, BTW.
License
MIT