-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.js
More file actions
executable file
·115 lines (89 loc) · 3.02 KB
/
cli.js
File metadata and controls
executable file
·115 lines (89 loc) · 3.02 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env node
'use strict';
var chalk = require('chalk');
var Configstore = require('configstore');
var linky = require('./index.js');
var notifier = require('update-notifier')({
packagePath: './package.json'
});
var path = require('path');
var optimist = require('optimist');
var argv = optimist.argv;
var conf = new Configstore('linky');
var normalizeDestFolder = function(src) {
if(src) {
var dirs = src.split(path.sep);
if(dirs.length !== 0) {
if(dirs[dirs.length-1] === '') {
return dirs[dirs.length-2];
} else {
return dirs[dirs.length-1];
}
}
}
return '[source-folder]'; //No source set so we don't know what the folder will be called
};
var doLink = function() {
var src = argv.src || conf.get('src');
var dest = argv.dest || conf.get('dest');
if(!src) {
var srcmsg = chalk.red('Source not set, run ') +
chalk.cyan('sym src') +
chalk.red(' first.');
return console.error(srcmsg);
}
if(!dest) {
var destmsg = chalk.red('Destination not set, run ') +
chalk.cyan('sym dest') +
chalk.red(' first.');
return console.error(destmsg);
}
dest = path.join(dest, normalizeDestFolder(src));
linky(src, dest);
console.log(chalk.green('Link created'));
};
var setSource = function() {
conf.set('src', process.cwd());
var msg = chalk.cyan('Source set to: ') + chalk.cyan.bold(process.cwd());
console.log(msg);
};
var setDest = function() {
conf.set('dest', process.cwd());
var msg = chalk.cyan('Destination set to: ') + chalk.cyan.bold(process.cwd() + path.sep + '[src-folder]');
console.log(msg);
};
// Is there an update?
if(notifier.update) {
notifier.notify(true);
}
// I know this is hideous and I promise I will refactor
// it when I get a chance. It works for now.
if(argv._.length === 0) {
var padding = ' ';
var usage = padding + chalk.cyan('sym src') + ' - sets the current working directory as the source\n' +
padding + chalk.cyan('sym dest') + ' - sets the current working directory as the destination\n' +
padding + chalk.cyan('sym link') + ' - creates the symbolic link\n' +
padding + padding + chalk.white('Optionally specify the src and dest using the flags ') + chalk.cyan('-src') + ' and ' + chalk.cyan('-dest');
console.log(usage);
console.log('\n\n\n');
var src = conf.get('src');
var dest = conf.get('dest');
if(src) {
console.log(padding + 'Source set to:\n' + padding + padding + chalk.cyan.bold(src));
}
if(dest) {
var destFolder = normalizeDestFolder(src);
console.log(padding + 'Destination set to:\n' + padding + padding + chalk.cyan.bold(dest + path.sep + destFolder));
}
return;
}
var command = argv._[0];
if(command === 'src') {
setSource();
}
if(command === 'dest') {
setDest();
}
if(command === 'link' || argv.f) {
doLink();
}