-
Notifications
You must be signed in to change notification settings - Fork 26
/
nodejs-test.js
88 lines (71 loc) · 2.35 KB
/
nodejs-test.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// Import the optparse script
var optparse = require('../lib/optparse');
var sys= require('sys');
// Define some options
var SWITCHES = [
['-i', '--include-file FILE', "Includes a file"],
['-p', '--print [MESSAGE]', "Prints an optional message on screen"],
['-d', '--debug', "Enables debug mode"],
['-H', '--help', "Shows this help section"],
['--date DATE', "A date. A date is expected E.G. 2009-01-14"],
['--number NUMBER', "A Number. Supported formats are 123, 123.123, 0xA123"],
['--other NAME', "No handler defined for this option. Will be handled by the wildcard handler."],
];
// Create a new OptionParser with defined switches
var parser = new optparse.OptionParser(SWITCHES), print_summary = true,
first_arg;
parser.banner = 'Usage: nodejs-test.js [options]';
// Internal variable to store options.
var options = {
debug: true,
files: [],
number: undefined,
date: undefined
};
// Handle the first argument (switches excluded)
parser.on(0, function(value) {
first_arg = value;
});
// Handle the --include-file switch
parser.on('include-file', function(value) {
options.files.push(value);
});
// Handle the --print switch
parser.on('print', function(value) {
sys.puts('PRINT: ' + (value || 'No message entered'));
});
// Handle the --date switch
parser.on('date', function(value) {
options.date = value;
});
// Handle the --number switch
parser.on('number', function(value) {
options.number = value;
});
// Handle the --debug switch
parser.on('debug', function() {
options.debug = true;
});
// Handle the --help switch
parser.on('help', function() {
sys.puts(parser.toString());
print_summary = false;
});
// Set a default handler
parser.on('*', function(opt, value) {
sys.puts('wild handler for ' + opt + ', value=' + value);
});
// Parse command line arguments
parser.parse(process.ARGV);
if(print_summary) {
sys.puts("First non-switch argument is: " + first_arg);
// Output all files that was included.
sys.puts("No of files to include: " + options.files.length);
for(var i = 0; i < options.files.length; i++) {
sys.puts("File [" + (i + 1) + "]:" + options.files[i]);
}
// Is debug-mode enabled?
sys.puts("Debug mode is set to: " + options.debug);
sys.puts("Number value is: " + options.number);
sys.puts("Date value is: " + options.date);
}