0.2.4 • Published 10 years ago

git-tags v0.2.4

Weekly downloads
878
License
MIT
Repository
github
Last release
10 years ago

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))

ArgumentTypeDescription
repo (optional)stringOptional repo path. Defaults to process.cwd()
callbackfunctionRequired callback fn
callback(err)null \| ErrorError, 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);
  // ['1.0.1', '1.0.0', '0.1.0-beta']
});

// Also takes a repo location:
gittags.get('/foorepo', function(err, tags) {});

Latest

gittags.latest([repo], callback(err, latest))

NameTypeDescription
repo (optional)stringOptional repo path. Defaults to process.cwd()
callbackfunctionRequired callback
errnull \| ErrorError if, there is one
lateststringLatest semver tag found (e.g. '1.0.1')
gittags.latest(function(err, latest) {
  console.log(latest);
  // '1.0.1'
});

Oldest

gittags.oldest([repo], callback(err, oldest))

Same as latest but opposite.

gittags.oldest(function(err, oldest) {
  console.log(oldest);
  // '0.1.0-beta'
});

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

NameTypeDescription
tagstringVersion string to parse (e.g. 'v1.0.2-beta'). See node-semver for more info.

gittags.mmp(tag) -> formattedTag

NameTypeDescription
tagstringTag to format (e.g. 'v1.0.2-beta')
formattedTagstringMajor.Minor.Patch formatted tag (e.g. '1.0.2')
gittags.mmp('v1.3.10-beta.12');
// => '1.3.10'

var version = gittags.parse('v1.3.10-beta.12');
// <SemVer "1.3.10-beta.12">
version.prerelease;
// ['beta', 12]
version.compare('v1.3.10');
// -1
version.compare('v1.3.9');
// 1
// etc...

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);
// 1.0.1

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

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago