Skip to content

Commit 58c5f56

Browse files
committed
Merge branch 'master' of https://github.com/qw3rtman/gg
2 parents 33e4eaa + 1d03b50 commit 58c5f56

File tree

3 files changed

+137
-124
lines changed

3 files changed

+137
-124
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,4 @@ Fork our code, make a new branch, and send a pull request.
197197
* undo last commit
198198
* add custom files/directories to .gitignore
199199
* **introduction scene to Git** (for those new to Git)
200+
* [switch to previously selected branch](https://github.com/qw3rtman/gg/issues/40)

bin/gg

Lines changed: 127 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -9,130 +9,133 @@ var cli = require('cli');
99

1010
cli.parse(null, ['v', 'version', '-v', '--version', 'i', 'init', 'initialize', 'ig', 'ignore', 'cl', 'clone', 'a', 'aa', 'add', 'c', 'ci', 'commit', 'cn', 'commitnoadd', 'p', 'push', 'pl', 'pull', 'f', 'fetch', 'fa', 's', 'status', 'l', 'log', 'b', 'branch', 'ch', 'checkout']);
1111

12-
switch (cli.command) {
13-
// Version.
14-
case 'v':
15-
case 'version':
16-
case '-v':
17-
case '--version':
18-
gg.version();
19-
break;
20-
21-
// Initialize.
22-
case 'i':
23-
case 'init':
24-
case 'initialize':
25-
gg.init();
26-
break;
27-
28-
// .gitignores.
29-
case 'ig':
30-
case 'ignore':
31-
var template = cli.args.join('-');
32-
33-
gg.ignore(template);
34-
break;
35-
36-
// Clone.
37-
case 'cl':
38-
case 'clone':
39-
var repository = cli.args[0];
40-
41-
if (typeof repository === 'undefined') {
42-
repository = '';
43-
}
44-
45-
if (repository.substring(0, 7) === 'http://' || repository.substring(0, 8) === 'https://') { // URL.
46-
gg.clone(repository);
47-
} else if (repository.indexOf('@') > -1 && repository.indexOf(':') > -1) { // SSH.
48-
gg.clone(repository);
49-
} else {
50-
gg.cloneGitHub(repository);
51-
}
52-
break;
53-
54-
// Add.
55-
case 'a':
56-
case 'add':
57-
if (cli.args[1] === '' || typeof cli.args[1] !== 'undefined') {
58-
var options = cli.args[0];
59-
var target = cli.args[1];
60-
gg.addOptions(options, target);
61-
} else {
62-
var target = cli.args[0];
63-
gg.addSingle(target);
64-
}
65-
break;
66-
67-
// Add all.
68-
case 'aa': // Short for 'add all'.
69-
gg.addAll();
70-
break;
71-
72-
// Commit.
73-
case 'c':
74-
case 'ci':
75-
case 'commit':
76-
var message = cli.args.join(' ');
77-
gg.commit(message, true);
78-
break;
79-
80-
// Commit without adding.
81-
case 'cn':
82-
var message = cli.args.join(' ');
83-
gg.commit(message, false);
84-
break;
85-
86-
// Push.
87-
case 'p':
88-
case 'push':
89-
gg.push();
90-
break;
91-
92-
// Pull.
93-
case 'pl':
94-
case 'pull':
95-
gg.pull();
96-
break;
97-
98-
// Fetch.
99-
case 'f':
100-
case 'fetch':
101-
gg.fetch();
102-
break;
103-
104-
// Fetch all.
105-
case 'fa': // Short for 'fetch --all'.
106-
gg.fetchAll();
107-
break;
108-
109-
// Status.
110-
case 's':
111-
case 'st':
112-
case 'status':
113-
gg.status();
114-
break;
115-
116-
// Log.
117-
case 'l':
118-
case 'log':
119-
var file = cli.args.join(' ');
120-
gg.log(file);
121-
break;
122-
123-
// Branch.
124-
case 'b':
125-
case 'branch':
126-
var branch = cli.args.join('-');
127-
gg.branch(branch);
128-
break;
129-
130-
// Checkout.
131-
case 'ch':
132-
case 'checkout':
133-
var branch = cli.args.join('-');
134-
gg.checkout(branch);
135-
break;
12+
gg.repoCheck(parseCommand);
13+
function parseCommand() {
14+
switch (cli.command) {
15+
// Version.
16+
case 'v':
17+
case 'version':
18+
case '-v':
19+
case '--version':
20+
gg.version();
21+
break;
22+
23+
// Initialize.
24+
case 'i':
25+
case 'init':
26+
case 'initialize':
27+
gg.init();
28+
break;
29+
30+
// .gitignores.
31+
case 'ig':
32+
case 'ignore':
33+
var template = cli.args.join('-');
34+
35+
gg.ignore(template);
36+
break;
37+
38+
// Clone.
39+
case 'cl':
40+
case 'clone':
41+
var repository = cli.args[0];
42+
43+
if (typeof repository === 'undefined') {
44+
repository = '';
45+
}
46+
47+
if (repository.substring(0, 7) === 'http://' || repository.substring(0, 8) === 'https://') { // URL.
48+
gg.clone(repository);
49+
} else if (repository.indexOf('@') > -1 && repository.indexOf(':') > -1) { // SSH.
50+
gg.clone(repository);
51+
} else {
52+
gg.cloneGitHub(repository);
53+
}
54+
break;
55+
56+
// Add.
57+
case 'a':
58+
case 'add':
59+
if (cli.args[1] === '' || typeof cli.args[1] !== 'undefined') {
60+
var options = cli.args[0];
61+
var target = cli.args[1];
62+
gg.addOptions(options, target);
63+
} else {
64+
var target = cli.args[0];
65+
gg.addSingle(target);
66+
}
67+
break;
68+
69+
// Add all.
70+
case 'aa': // Short for 'add all'.
71+
gg.addAll();
72+
break;
73+
74+
// Commit.
75+
case 'c':
76+
case 'ci':
77+
case 'commit':
78+
var message = cli.args.join(' ');
79+
gg.commit(message, true);
80+
break;
81+
82+
// Commit without adding.
83+
case 'cn':
84+
var message = cli.args.join(' ');
85+
gg.commit(message, false);
86+
break;
87+
88+
// Push.
89+
case 'p':
90+
case 'push':
91+
gg.push();
92+
break;
93+
94+
// Pull.
95+
case 'pl':
96+
case 'pull':
97+
gg.pull();
98+
break;
99+
100+
// Fetch.
101+
case 'f':
102+
case 'fetch':
103+
gg.fetch();
104+
break;
105+
106+
// Fetch all.
107+
case 'fa': // Short for 'fetch --all'.
108+
gg.fetchAll();
109+
break;
110+
111+
// Status.
112+
case 's':
113+
case 'st':
114+
case 'status':
115+
gg.status();
116+
break;
117+
118+
// Log.
119+
case 'l':
120+
case 'log':
121+
var file = cli.args.join(' ');
122+
gg.log(file);
123+
break;
124+
125+
// Branch.
126+
case 'b':
127+
case 'branch':
128+
var branch = cli.args.join('-');
129+
gg.branch(branch);
130+
break;
131+
132+
// Checkout.
133+
case 'ch':
134+
case 'checkout':
135+
var branch = cli.args.join('-');
136+
gg.checkout(branch);
137+
break;
138+
}
136139
}
137140

138141
gg.upToDate(false, true);

lib/gg.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,3 +600,12 @@ exports.checkout = function(branch) {
600600
});
601601
}
602602
};
603+
604+
exports.repoCheck = function(callback) {
605+
exec('git rev-parse', function(error, stdout, stderr) {
606+
if (stderr.length === 0) {
607+
return callback();
608+
}
609+
console.log(whoops('[✖] Not in a valid git repository! Run "gg i" to initialise one.'));
610+
});
611+
};

0 commit comments

Comments
 (0)