-
Notifications
You must be signed in to change notification settings - Fork 2
/
push.js
69 lines (55 loc) · 1.64 KB
/
push.js
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
67
68
/*!
* CPM - Couch Package Manager
* Copyright (c) 2010 Caolan McMahon
* MIT Licensed
*/
/**
* Module dependencies
*/
var logger = require('./logger'),
packages = require('./packages'),
help = require('./help'),
url = require('url');
/**
* Executes the push command
*/
module.exports = function (args, options) {
if (!args || !args.length) return help();
var pkg = (args.length < 2) ? '.': args[1];
logger.info('Package:', pkg);
try { process.chdir(pkg); }
catch (e) { return logger.error(e); }
var parsed = url.parse(args[0]);
var instance = {
hostname: parsed.hostname,
port: parsed.port,
db: (parsed.pathname || '').substr(1)
};
if (!instance.hostname) {
return logger.error('You must specify a hostname');
}
if (!instance.port) {
return logger.error('You must specify a port');
}
if (!instance.db) {
return logger.error('You must specify a database');
}
logger.info('Hostname:', instance.hostname);
logger.info('Port:', instance.port);
logger.info('DB:', instance.db);
packages.loadPackage('.', function (err, pkg, _design) {
if (err) return logger.error(err);
var pkgs = {};
pkgs[pkg.name] = _design;
if(pkg.app) {
try { packages.loadApp(pkgs, pkg.name, pkg.app); }
catch (e) { return logger.error(e); }
}
logger.debug('package.json:', pkg);
logger.debug('_design:', _design);
packages.push(instance, pkgs, function (err) {
if (err) return logger.error(err);
logger.end();
});
});
};