hg
TypeScript icon, indicating that this package has built-in type declarations

0.3.3 • Public • Published

Node-hg

A node js command server client for Mercurial.

Installation

npm install hg

Example

var path = require("path");
 
var hg = require("hg");
 
// Clone into "../example-node-hg"
var destPath = path.resolve(path.join(process.cwd(), "..", "my-node-hg"));
 
hg.clone("http://bitbucket.org/jgable/node-hg", destPath, function(err, output) {
    if(err) {
        throw err;
    }
 
    output.forEach(function(line) {
        console.log(line.body);
    });
 
    // Add some files to the repo with fs.writeFile, omitted for brevity
 
    hg.add(destPath, ["someFile1.txt", "someFile2.txt"], function(err, output) {
        if(err) {
            throw err;
        }
 
        output.forEach(function(line) {
            console.log(line.body);
        });
 
        var commitOpts = {
            "-m": "Doing the needful"
        };
 
        // Commit our new files
        hg.commit(destPath, commitOpts, function(err, output) {
            if(err) {
                throw err;
            }
 
            console.log(hg.Parsers.text(output));
        });
 
        // Get command output as JSON
        hg.branches({"-T":"json"}, function(err, output) {
          if(err) {
                throw err;
            }
 
            var branches = hg.Parsers.json(output);
            branches.forEach(function(b) {
                console.log(b.branch + " - " + b.active);
            });
        });
    });
});

Exposed Base Classes

HGRepo

The base class for Mercurial Repo interaction. The exposed API is just wrappers around the functions available in HGRepo.

var hg = require("hg"),
    HGRepo = hg.HGRepo;
 
var repo = new HGRepo("/some/path/to/repo");
 
repo.summary(function(err, output) {
    if (err) {
        throw err;
    }
 
    output.forEach(function(line) {
        console.log(line.body);
    });
});
 
repo.add(["."], function(err, output) {
    if (err) {
        throw err;
    }
 
    output.forEach(function(line) {
        console.log(line.body);
    });
});
 
// And so on...
 

HGCommandServer

The base class responsible for instantiating and communicating with a Mercurial command server. Must be instantiated in an existing Mercurial repository (check out HGRepo.MakeTempRepo to quickly get a temporary repo up)

var hg = require("hg"),
    HGCommandServer = hg.HGCommandServer;
 
var serv = new HGCommandServer();
 
serv.start("/some/path/to/repo", function(err) {
    if (err) {
        throw err;
    }
 
    console.log("Command Server Started", serv.capabilities, serv.encoding);
 
    serv.on("output", function(err, lines) {
        lines.forEach(function(line) {
            console.log(line.body);
        });
    });
 
    serv.runcommand("summary");
});

Release Notes

0.3.1

Improvements

  • Added definitions

0.2.2

Improvements

  • Publish fix capabilities issue

0.2.0

Improvements

  • Parser for JSON output
  • Added commands
    • remove
    • branches
    • diff

LICENSE

MIT, No Attribution Required, Copyright 2013 Jacob Gable

Dependencies (3)

Dev Dependencies (10)

Package Sidebar

Install

npm i hg

Weekly Downloads

6

Version

0.3.3

License

MIT

Unpacked Size

39.4 kB

Total Files

16

Last publish

Collaborators

  • bustexz
  • cronink
  • jgable
  • quest