Easy Node.JS Hg wrapper with support for SSH keys. By default, the Hg CLI
tool will only use the SSH key of the current user (e.g. $HOME/.ssh/id_dsa
).
In order to be able to use Hg with an arbitrary SSH key, a wrapper shell script to invoke ssh -i <key>
must be written and the ui.ssh option
must point to that script (--config ui.ssh=).
Mercurane wraps all this plumbing for you. Simply pass the SSH private key you wish to run Hg with as a string argument and let Mercurane do the rest. Mercurane will clean up the temporary wrapper script after it is done.
Mercurane is available in NPM. npm install mercurane
var fs = require('fs')
var mercurane = require('mercurane')
var path = require('path')
// Use current working dir
var baseDir = process.cwd()
// Read private key from ~/.ssh/id_dsa
var privKey = fs.readFileSync(path.join(process.env.HOME, '.ssh/id_dsa'), 'utf8')
mercurane.run(baseDir, privKey, "hg clone ssh://hg@bitbucket.org/petrocloud/test",
function(err, stdout, stderr, exitCode) {
if (err) {
console.log("An error occurred: " + stderr)
process.exit(1)
}
console.log("Hg clone complete!")
})
Mercurane comes with tests. To run, simply execute npm test
.
Mercurane is released under a BSD license. It is a fork of Gitane originally written by Niall O'Higgins niallo@beyondfog.com (http://niallohiggins.com)
Niall O'Higgins niallo@beyondfog.com (http://niallohiggins.com) for doing the hard work of writing Gitane.
Molecule image courtesy of http://www.3quarksdaily.com