Skip to content

bfricka/node-git-tags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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);
  // ['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))

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

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');
// => '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('git-tags'));

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

About

Gets and parses git tags in Node.

Resources

License

Stars

Watchers

Forks

Packages

No packages published