blob: 425dc5c76e07999174f275c6f43825a1192c7daf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
var tusk = require("../tusk");
var os = require("os");
var util = require("util");
var args = require("args");
var parser = exports.parser = new args.Parser();
parser.help('clones a package from its version control system.')
parser.args('package');
parser.option('-o', '--owner', 'owner')
.help("clone from the owner's repository")
.bool()
.inverse();
parser.option('-u', '--user', 'user')
.help('overrides the user name from which to clone the package')
.set();
parser.action(function (options) {
var self = this;
if (!util.len(options.args))
throw new Error("Package name required");
var packagesDirectory = tusk.getPackagesDirectory();
var sources = tusk.readSources().packages;
var catalog = tusk.readCatalog().packages;
var owner = options.owner;
options.args.forEach(function (name) {
if (!util.has(sources, name))
throw new Error("Package does not exist: " + name);
var source = util.get(sources, name);
if (source.type !== "github")
throw new Error("Package " + util.enquote(name) + " is not a Github package.");
});
options.args.forEach(function (name) {
var source = util.get(sources, name);
var githubName = util.get(source, 'name', name);
var user = options.user || source.user;
var command = [
'git',
'clone',
owner ?
(
'git@github.com:' + user +
'/' + githubName + '.git'
):
(
'git://github.com/' +
user + '/' + githubName + '.git'
),
packagesDirectory.join(name)
];
self.print('\0cyan(' + command.map(function (term) {
var enquoted = os.enquote(term);
if (enquoted != "'" + term + "'")
return enquoted;
return term;
}).join(' ') + '\0)');
os.system(command);
});
});
parser.helpful();
|