-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
114 lines (99 loc) · 4.09 KB
/
index.js
File metadata and controls
114 lines (99 loc) · 4.09 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
const keypress = require('keypress');
const clear = require('clear');
const out = require('./lib/output');
const extra = require('./lib/extra');
const emoji = require('./lib/emoji');
const git = require('./lib/git');
const profile = require('./lib/commands/commandsProfile');
const quit = require('./lib/commands/quit');
const help = require('./lib/commands/help');
const clearConsole = require('./lib/commands/clearConsole');
const appendEmptyLineInConsole = require('./lib/commands/appendEmptyLineInConsole');
const displayOptions = require('./lib/commands/displayOptions');
const moveToNext = require('./lib/commands/moveToNext');
const moveToPrevious = require('./lib/commands/moveToPrevious');
const moveToFirst = require('./lib/commands/moveToFirst');
const displayCurrentCommit = require('./lib/commands/displayCurrentCommit');
const displayCurrentCommitFiles = require('./lib/commands/displayCurrentCommitFiles');
const displayCurrentCommitBody = require('./lib/commands/displayCurrentCommitBody');
const displayCherryPickFile = require('./lib/commands/displayCherryPickFile');
const addCommitToCherryPickFile = require('./lib/commands/addCommitToCherryPickFile');
const removeCommitFromCherryPickFile = require('./lib/commands/removeCommitFromCherryPickFile');
const loadCherryPickFile = require('./lib/commands/loadCherryPickFile');
const writeCherryPickFile = require('./lib/commands/writeCherryPickFile');
const executeCherryPick = require('./lib/commands/executeCherryPick');
const clearCherryPickFile = require('./lib/commands/clearCherryPickFile');
const abortCherryPick = require('./lib/commands/abortCherryPick');
const continueCherryPick = require('./lib/commands/continueCherryPick');
const quitCherryPick = require('./lib/commands/quitCherryPick');
const gitStatus = require('./lib/commands/gitStatus');
const gitCommitAllowEmpty = require('./lib/commands/gitCommitAllowEmpty');
const gitReset = require('./lib/commands/gitReset');
let args = process.argv;
extra.load(args);
keypress(process.stdin);
process.stdin.on('keypress', function(ch, key) {
executeKeyPressEvent(ch, key);
});
clear();
const defaultProfile = profile.get('default');
defaultProfile.setRawMode(true);
const defaultCommands = defaultProfile.commands();
defaultCommands.add(help);
defaultCommands.add(clearConsole);
defaultCommands.add(appendEmptyLineInConsole);
defaultCommands.add(displayOptions);
defaultCommands.add(moveToNext);
defaultCommands.add(moveToPrevious);
defaultCommands.add(moveToFirst);
defaultCommands.add(displayCurrentCommit);
defaultCommands.add(displayCurrentCommitFiles);
defaultCommands.add(displayCurrentCommitBody);
defaultCommands.add(displayCherryPickFile);
defaultCommands.add(addCommitToCherryPickFile);
defaultCommands.add(removeCommitFromCherryPickFile);
defaultCommands.add(loadCherryPickFile);
defaultCommands.add(writeCherryPickFile);
defaultCommands.add(clearCherryPickFile);
defaultCommands.add(executeCherryPick);
defaultCommands.add(quit);
const cherryPickProfile = profile.get('cherryPick');
cherryPickProfile.setRawMode(true);
const cherryPickCommands = cherryPickProfile.commands();
cherryPickCommands.add(help);
cherryPickCommands.add(appendEmptyLineInConsole);
cherryPickCommands.add(abortCherryPick);
cherryPickCommands.add(continueCherryPick);
cherryPickCommands.add(quitCherryPick);
cherryPickCommands.add(gitStatus);
cherryPickCommands.add(gitCommitAllowEmpty);
cherryPickCommands.add(gitReset);
profile.define('default');
function executeKeyPressEvent(ch, key) {
if (key && key.ctrl && key.name == 'c') {
out.println(
emoji.get('middle_finger'),
'next time use'.red,
'q'.yellow,
'to exit or'.red,
'?'.yellow,
'to help!'.red
);
out.println();
process.stdin.pause();
}
profile.current().commands().forEach(function(command) {
if (command.canProcess(ch, key)) {
command.execute();
}
});
}
out.println(emoji.get('cherries'), 'Welcome to the Cherry Pick Tool!');
out.println();
out.println('If you need help, press', 'h'.yellow, 'or', '?'.yellow, 'anytime.');
out.println();
out.println();
git.load(function() {
moveToNext.execute();
});