watson-ruby 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +44 -23
- data/assets/defaultConf +6 -6
- data/bin/watson +1 -1
- data/lib/watson.rb +17 -17
- data/lib/watson/bitbucket.rb +52 -52
- data/lib/watson/command.rb +66 -66
- data/lib/watson/config.rb +73 -73
- data/lib/watson/fs.rb +15 -15
- data/lib/watson/github.rb +60 -60
- data/lib/watson/parser.rb +36 -31
- data/lib/watson/printer.rb +33 -33
- data/lib/watson/remote.rb +23 -23
- data/lib/watson/version.rb +2 -2
- data/spec/config_spec.rb +11 -11
- data/spec/fs_spec.rb +1 -1
- data/spec/helper_spec.rb +1 -1
- data/spec/parser_spec.rb +73 -9
- data/watson.gemspec +4 -4
- metadata +2 -2
data/lib/watson/command.rb
CHANGED
@@ -2,16 +2,16 @@ module Watson
|
|
2
2
|
# Command line parser class
|
3
3
|
# Controls program flow and parses options given by command line
|
4
4
|
class Command
|
5
|
-
|
5
|
+
|
6
6
|
# Debug printing for this class
|
7
7
|
DEBUG = false
|
8
|
-
|
8
|
+
|
9
9
|
class << self
|
10
10
|
|
11
11
|
# Include for debug_print
|
12
12
|
include Watson
|
13
13
|
|
14
|
-
|
14
|
+
|
15
15
|
###########################################################
|
16
16
|
# Command line controller
|
17
17
|
# Manages program flow from given command line arguments
|
@@ -21,7 +21,7 @@ module Watson
|
|
21
21
|
|
22
22
|
# Identify method entry
|
23
23
|
debug_print "#{ self } : #{ __method__ }\n"
|
24
|
-
|
24
|
+
|
25
25
|
# List of possible flags, used later in parsing and for user reference
|
26
26
|
_flag_list = ["-c", "--context-depth",
|
27
27
|
"-d", "--dirs",
|
@@ -55,7 +55,7 @@ module Watson
|
|
55
55
|
@config = Watson::Config.new
|
56
56
|
@parser = Watson::Parser.new(@config)
|
57
57
|
@printer = Watson::Printer.new(@config)
|
58
|
-
|
58
|
+
|
59
59
|
# Capture Ctrl+C interrupt for clean exit
|
60
60
|
# [review] - Not sure this is the correct place to put the Ctrl+C capture
|
61
61
|
trap("INT") do
|
@@ -65,18 +65,18 @@ module Watson
|
|
65
65
|
|
66
66
|
# Parse command line options
|
67
67
|
# Begin by slicing off until we reach a valid flag
|
68
|
-
|
68
|
+
|
69
69
|
# Always look at first array element in case and then slice off what we need
|
70
70
|
# Accept parameters to be added / overwritten if called twice
|
71
71
|
# Slice out from argument until next argument
|
72
|
-
|
73
|
-
# Clean up argument list by removing elements until the first valid flag
|
72
|
+
|
73
|
+
# Clean up argument list by removing elements until the first valid flag
|
74
74
|
until _flag_list.include?(args[0]) || args.length == 0
|
75
75
|
# [review] - Make this non-debug print to user?
|
76
76
|
debug_print "Unrecognized flag #{ args[0] }\n"
|
77
77
|
args.slice!(0)
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
# Parse command line options
|
81
81
|
# Grab flag (should be first arg) then slice off args until next flag
|
82
82
|
# Repeat until all args have been dealt with
|
@@ -87,20 +87,20 @@ module Watson
|
|
87
87
|
|
88
88
|
debug_print "Current Flag: #{ _flag }\n"
|
89
89
|
|
90
|
-
# Go through args until we find the next valid flag or all args are parsed
|
90
|
+
# Go through args until we find the next valid flag or all args are parsed
|
91
91
|
_i = 0
|
92
|
-
until _flag_list.include?(args[_i]) || _i > (args.length - 1)
|
92
|
+
until _flag_list.include?(args[_i]) || _i > (args.length - 1)
|
93
93
|
debug_print "Arg: #{ args[_i] }\n"
|
94
|
-
_i = _i + 1
|
94
|
+
_i = _i + 1
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
# Slice off the args for the flag (inclusive) using index from above
|
98
98
|
# [review] - This is a bit messy (to slice by _i - 1) when we have control
|
99
99
|
# over the _i index above but I don't want to
|
100
100
|
# think about the logic right now so look at later
|
101
101
|
_flag_args = args.slice!(0..(_i-1))
|
102
102
|
|
103
|
-
case _flag
|
103
|
+
case _flag
|
104
104
|
when "-c", "--context-depth"
|
105
105
|
debug_print "Found -c/--context-depth argument\n"
|
106
106
|
set_context(_flag_args)
|
@@ -108,7 +108,7 @@ module Watson
|
|
108
108
|
when "-d", "--dirs"
|
109
109
|
debug_print "Found -d/--dirs argument\n"
|
110
110
|
set_dirs(_flag_args)
|
111
|
-
|
111
|
+
|
112
112
|
when "-f", "--files"
|
113
113
|
debug_print "Found -f/--files argument\n"
|
114
114
|
set_files(_flag_args)
|
@@ -120,7 +120,7 @@ module Watson
|
|
120
120
|
when "-p", "--parse-depth"
|
121
121
|
debug_print "Found -r/--parse-depth argument\n"
|
122
122
|
set_parse_depth(_flag_args)
|
123
|
-
|
123
|
+
|
124
124
|
when "-r", "--remote"
|
125
125
|
debug_print "Found -r/--remote argument\n"
|
126
126
|
# Run config to populate all the fields and such
|
@@ -128,10 +128,10 @@ module Watson
|
|
128
128
|
@config.check_conf
|
129
129
|
@config.read_conf
|
130
130
|
setup_remote(_flag_args)
|
131
|
-
|
131
|
+
|
132
132
|
# If setting up remote, exit afterwards
|
133
133
|
exit true
|
134
|
-
|
134
|
+
|
135
135
|
when "-t", "--tags"
|
136
136
|
debug_print "Found -t/--tags argument\n"
|
137
137
|
set_tags(_flag_args)
|
@@ -154,13 +154,13 @@ module Watson
|
|
154
154
|
|
155
155
|
|
156
156
|
###########################################################
|
157
|
-
# Print help for watson
|
157
|
+
# Print help for watson
|
158
158
|
def help
|
159
159
|
# [todo] - Add bold and colored printing
|
160
|
-
|
160
|
+
|
161
161
|
# Identify method entry
|
162
162
|
debug_print "#{ self } : #{ __method__ }\n"
|
163
|
-
|
163
|
+
|
164
164
|
print BOLD;
|
165
165
|
print "Usage: watson [OPTION]...\n"
|
166
166
|
print "Running watson with no arguments will parse with settings in RC file\n"
|
@@ -188,7 +188,7 @@ module Watson
|
|
188
188
|
print "watson home page: <http://goosecode.com/projects/watson>\n"
|
189
189
|
print "[goosecode] labs | 2012-2013\n"
|
190
190
|
print RESET;
|
191
|
-
|
191
|
+
|
192
192
|
return true
|
193
193
|
|
194
194
|
end
|
@@ -197,16 +197,16 @@ module Watson
|
|
197
197
|
###########################################################
|
198
198
|
# Print version information about watson
|
199
199
|
def version
|
200
|
-
|
200
|
+
|
201
201
|
# Identify method entry
|
202
202
|
debug_print "#{ self } : #{ __method__ }\n"
|
203
|
-
|
203
|
+
|
204
204
|
print "watson v1.0\n"
|
205
205
|
print "Copyright (c) 2012-2013 goosecode labs\n"
|
206
206
|
print "Licensed under MIT, see LICENSE for details\n"
|
207
207
|
print "\n"
|
208
208
|
|
209
|
-
print "Written by nhmood, see <http://goosecode.com/projects/watson>\n"
|
209
|
+
print "Written by nhmood, see <http://goosecode.com/projects/watson>\n"
|
210
210
|
return true
|
211
211
|
end
|
212
212
|
|
@@ -214,11 +214,11 @@ module Watson
|
|
214
214
|
###########################################################
|
215
215
|
# set_context
|
216
216
|
# Set context_depth parameter in config
|
217
|
-
def set_context(args)
|
218
|
-
|
217
|
+
def set_context(args)
|
218
|
+
|
219
219
|
# Identify method entry
|
220
220
|
debug_print "#{ self } : #{ __method__ }\n"
|
221
|
-
|
221
|
+
|
222
222
|
# Need at least one dir in args
|
223
223
|
if args.length <= 0
|
224
224
|
# [review] - Make this a non-debug print to user?
|
@@ -226,12 +226,12 @@ module Watson
|
|
226
226
|
return false
|
227
227
|
end
|
228
228
|
|
229
|
-
|
229
|
+
|
230
230
|
# For context_depth we do NOT append to RC, ALWAYS overwrite
|
231
|
-
# For each argument passed, make sure valid, then set @config.parse_depth
|
231
|
+
# For each argument passed, make sure valid, then set @config.parse_depth
|
232
232
|
args.each do | _context_depth |
|
233
233
|
if _context_depth.match(/^(\d+)/)
|
234
|
-
debug_print "Setting #{ _context_depth } to config context_depth\n"
|
234
|
+
debug_print "Setting #{ _context_depth } to config context_depth\n"
|
235
235
|
@config.context_depth = _context_depth.to_i
|
236
236
|
else
|
237
237
|
debug_print "#{ _context_depth } invalid depth, ignoring\n"
|
@@ -239,7 +239,7 @@ module Watson
|
|
239
239
|
end
|
240
240
|
|
241
241
|
# Doesn't make much sense to set context_depth for each individual post
|
242
|
-
# When you use this command line arg, it writes the config parameter
|
242
|
+
# When you use this command line arg, it writes the config parameter
|
243
243
|
@config.update_conf("context_depth")
|
244
244
|
|
245
245
|
debug_print "Updated context_depth: #{ @config.context_depth }\n"
|
@@ -248,13 +248,13 @@ module Watson
|
|
248
248
|
|
249
249
|
|
250
250
|
###########################################################
|
251
|
-
# set_dirs
|
252
|
-
# Set directories to be parsed by watson
|
253
|
-
def set_dirs(args)
|
251
|
+
# set_dirs
|
252
|
+
# Set directories to be parsed by watson
|
253
|
+
def set_dirs(args)
|
254
254
|
|
255
255
|
# Identify method entry
|
256
256
|
debug_print "#{ self } : #{ __method__ }\n"
|
257
|
-
|
257
|
+
|
258
258
|
# Need at least one dir in args
|
259
259
|
if args.length <= 0
|
260
260
|
# [review] - Make this a non-debug print to user?
|
@@ -263,9 +263,9 @@ module Watson
|
|
263
263
|
end
|
264
264
|
|
265
265
|
# Set config flag for CL entryset in config
|
266
|
-
@config.cl_entry_set = true
|
266
|
+
@config.cl_entry_set = true
|
267
267
|
debug_print "Updated cl_entry_set flag: #{ @config.cl_entry_set }\n"
|
268
|
-
|
268
|
+
|
269
269
|
# [review] - Should we clean the dir before adding here?
|
270
270
|
# For each argument passed, make sure valid, then add to @config.dir_list
|
271
271
|
args.each do | _dir |
|
@@ -288,13 +288,13 @@ module Watson
|
|
288
288
|
|
289
289
|
|
290
290
|
###########################################################
|
291
|
-
# set_files
|
292
|
-
# Set files to be parsed by watson
|
293
|
-
def set_files(args)
|
291
|
+
# set_files
|
292
|
+
# Set files to be parsed by watson
|
293
|
+
def set_files(args)
|
294
294
|
|
295
295
|
# Identify method entry
|
296
296
|
debug_print "#{ self } : #{ __method__ }\n"
|
297
|
-
|
297
|
+
|
298
298
|
# Need at least one file in args
|
299
299
|
if args.length <= 0
|
300
300
|
debug_print "No args passed, exiting\n"
|
@@ -302,7 +302,7 @@ module Watson
|
|
302
302
|
end
|
303
303
|
|
304
304
|
# Set config flag for CL entryset in config
|
305
|
-
@config.cl_entry_set = true
|
305
|
+
@config.cl_entry_set = true
|
306
306
|
debug_print "Updated cl_entry_set flag: #{ @config.cl_entry_set }\n"
|
307
307
|
|
308
308
|
# For each argument passed, make sure valid, then add to @config.file_list
|
@@ -323,12 +323,12 @@ module Watson
|
|
323
323
|
|
324
324
|
###########################################################
|
325
325
|
# set_ignores
|
326
|
-
# Set files and dirs to be ignored when parsing by watson
|
326
|
+
# Set files and dirs to be ignored when parsing by watson
|
327
327
|
def set_ignores(args)
|
328
328
|
|
329
329
|
# Identify method entry
|
330
330
|
debug_print "#{ self } : #{ __method__ }\n"
|
331
|
-
|
331
|
+
|
332
332
|
# Need at least one ignore in args
|
333
333
|
if args.length <= 0
|
334
334
|
debug_print "No args passed, exiting\n"
|
@@ -336,11 +336,11 @@ module Watson
|
|
336
336
|
end
|
337
337
|
|
338
338
|
# Set config flag for CL ignore set in config
|
339
|
-
@config.cl_ignore_set = true
|
339
|
+
@config.cl_ignore_set = true
|
340
340
|
debug_print "Updated cl_ignore_set flag: #{ @config.cl_ignore_set }\n"
|
341
341
|
|
342
342
|
|
343
|
-
# For ignores we do NOT overwrite RC, just append
|
343
|
+
# For ignores we do NOT overwrite RC, just append
|
344
344
|
# For each argument passed, add to @config.ignore_list
|
345
345
|
args.each do | _ignore |
|
346
346
|
debug_print "Adding #{ _ignore } to config ignore_list\n"
|
@@ -353,13 +353,13 @@ module Watson
|
|
353
353
|
|
354
354
|
|
355
355
|
###########################################################
|
356
|
-
# set_parse_depth
|
356
|
+
# set_parse_depth
|
357
357
|
# Set how deep to recursively parse directories
|
358
358
|
def set_parse_depth(args)
|
359
|
-
|
359
|
+
|
360
360
|
# Identify method entry
|
361
361
|
debug_print "#{ self } : #{ __method__ }\n"
|
362
|
-
|
362
|
+
|
363
363
|
# This should be a single, numeric, value
|
364
364
|
# If they pass more, just take the last valid value
|
365
365
|
if args.length <= 0
|
@@ -367,11 +367,11 @@ module Watson
|
|
367
367
|
return false
|
368
368
|
end
|
369
369
|
|
370
|
-
# For max_dpeth we do NOT append to RC, ALWAYS overwrite
|
371
|
-
# For each argument passed, make sure valid, then set @config.parse_depth
|
370
|
+
# For max_dpeth we do NOT append to RC, ALWAYS overwrite
|
371
|
+
# For each argument passed, make sure valid, then set @config.parse_depth
|
372
372
|
args.each do | _parse_depth |
|
373
373
|
if _parse_depth.match(/^(\d+)/)
|
374
|
-
debug_print "Setting #{ _parse_depth } to config parse_depth\n"
|
374
|
+
debug_print "Setting #{ _parse_depth } to config parse_depth\n"
|
375
375
|
@config.parse_depth = _parse_depth
|
376
376
|
else
|
377
377
|
debug_print "#{ _parse_depth } invalid depth, ignoring\n"
|
@@ -385,20 +385,20 @@ module Watson
|
|
385
385
|
|
386
386
|
###########################################################
|
387
387
|
# set_tags
|
388
|
-
# Set tags to look for when parsing files and folders
|
388
|
+
# Set tags to look for when parsing files and folders
|
389
389
|
def set_tags(args)
|
390
390
|
|
391
391
|
# Identify method entry
|
392
392
|
debug_print "#{ self } : #{ __method__ }\n"
|
393
|
-
|
393
|
+
|
394
394
|
# Need at least one tag in args
|
395
395
|
if args.length <= 0
|
396
396
|
debug_print "No args passed, exiting\n"
|
397
397
|
return false
|
398
398
|
end
|
399
|
-
|
399
|
+
|
400
400
|
# Set config flag for CL tag set in config
|
401
|
-
@config.cl_tag_set = true
|
401
|
+
@config.cl_tag_set = true
|
402
402
|
debug_print "Updated cl_tag_set flag: #{ @config.cl_tag_set }\n"
|
403
403
|
|
404
404
|
# If set from CL, we overwrite the RC parameters
|
@@ -415,16 +415,16 @@ module Watson
|
|
415
415
|
|
416
416
|
###########################################################
|
417
417
|
# setup_remote
|
418
|
-
# Handle setup of remote issue posting for GitHub and Bitbucket
|
418
|
+
# Handle setup of remote issue posting for GitHub and Bitbucket
|
419
419
|
def setup_remote(args)
|
420
420
|
|
421
421
|
# Identify method entry
|
422
422
|
debug_print "#{ self } : #{ __method__ }\n"
|
423
|
-
|
423
|
+
|
424
424
|
Printer.print_header
|
425
|
-
|
425
|
+
|
426
426
|
print BOLD + "Existing Remotes:\n" + RESET
|
427
|
-
|
427
|
+
|
428
428
|
# Check the config for any remote entries (GitHub or Bitbucket) and print
|
429
429
|
# We *should* always have a repo + API together, but API should be enough
|
430
430
|
if @config.github_api.empty? && @config.bitbucket_api.empty?
|
@@ -444,16 +444,16 @@ module Watson
|
|
444
444
|
|
445
445
|
# If github or bitbucket passed, setup
|
446
446
|
# If just -r (0 args) do nothing and only have above printed
|
447
|
-
# If more than 1 arg is passed, unrecognized, warn user
|
447
|
+
# If more than 1 arg is passed, unrecognized, warn user
|
448
448
|
if args.length == 1
|
449
449
|
case args[0].downcase
|
450
450
|
when "github"
|
451
451
|
debug_print "GitHub setup called from CL\n"
|
452
|
-
Watson::Remote::GitHub.setup(@config)
|
453
|
-
|
452
|
+
Watson::Remote::GitHub.setup(@config)
|
453
|
+
|
454
454
|
when "bitbucket"
|
455
455
|
debug_print "Bitbucket setup called from CL\n"
|
456
|
-
Watson::Remote::Bitbucket.setup(@config)
|
456
|
+
Watson::Remote::Bitbucket.setup(@config)
|
457
457
|
end
|
458
458
|
elsif args.length > 1
|
459
459
|
Printer.print_status "x", RED
|
@@ -464,7 +464,7 @@ module Watson
|
|
464
464
|
return false
|
465
465
|
end
|
466
466
|
end
|
467
|
-
|
467
|
+
|
468
468
|
end
|
469
469
|
end
|
470
470
|
end
|
data/lib/watson/config.rb
CHANGED
@@ -6,40 +6,40 @@ module Watson
|
|
6
6
|
|
7
7
|
# Include for debug_print
|
8
8
|
include Watson
|
9
|
-
|
9
|
+
|
10
10
|
# Debug printing for this class
|
11
|
-
DEBUG = false
|
12
|
-
|
11
|
+
DEBUG = false
|
12
|
+
|
13
13
|
# [review] - Combine into single statement (for performance or something?)
|
14
14
|
# [todo] - Add config options (rc file) for default max depth and context lines
|
15
15
|
|
16
|
-
# List of all files/folders to ignore when parsing
|
16
|
+
# List of all files/folders to ignore when parsing
|
17
17
|
attr_accessor :ignore_list
|
18
|
-
# List of directories to parse
|
18
|
+
# List of directories to parse
|
19
19
|
attr_accessor :dir_list
|
20
20
|
# List of all files to parse
|
21
|
-
attr_accessor :file_list
|
21
|
+
attr_accessor :file_list
|
22
22
|
# List of tags to look for when parsing
|
23
|
-
attr_accessor :tag_list
|
23
|
+
attr_accessor :tag_list
|
24
24
|
# Number of directories to parse recursively
|
25
25
|
attr_accessor :parse_depth
|
26
26
|
# Number of lines of issue context to grab
|
27
|
-
attr_accessor :context_depth
|
27
|
+
attr_accessor :context_depth
|
28
28
|
|
29
29
|
# Flag for command line setting of file/dir to parse
|
30
30
|
attr_accessor :cl_entry_set
|
31
31
|
# Flag for command line setting of file/dir to ignore
|
32
32
|
attr_accessor :cl_ignore_set
|
33
33
|
# Flag for command line setting of tag to parse for
|
34
|
-
attr_accessor :cl_tag_set
|
34
|
+
attr_accessor :cl_tag_set
|
35
35
|
|
36
36
|
# Flag for whether less is avaliable to print results
|
37
37
|
attr_reader :use_less
|
38
38
|
# Flag for where the temp file for printing is located
|
39
|
-
attr_reader :tmp_file
|
39
|
+
attr_reader :tmp_file
|
40
40
|
|
41
41
|
# Flag for whether remote access is avaliable
|
42
|
-
attr_accessor :remote_valid
|
42
|
+
attr_accessor :remote_valid
|
43
43
|
|
44
44
|
# Flag for whether GitHub access is avaliable
|
45
45
|
attr_accessor :github_valid
|
@@ -47,7 +47,7 @@ module Watson
|
|
47
47
|
attr_accessor :github_api
|
48
48
|
# GitHub repo associated with current directory + watson config
|
49
49
|
attr_accessor :github_repo
|
50
|
-
# Hash to hold list of all GitHub issues associated with repo
|
50
|
+
# Hash to hold list of all GitHub issues associated with repo
|
51
51
|
attr_accessor :github_issues
|
52
52
|
|
53
53
|
|
@@ -56,12 +56,12 @@ module Watson
|
|
56
56
|
# Bitbucket API key generated from Remote::Bitbucket setup (username for now)
|
57
57
|
attr_accessor :bitbucket_api
|
58
58
|
# Bitbucket password for access until OAuth is implemented for Bitbucket
|
59
|
-
attr_accessor :bitbucket_pw
|
59
|
+
attr_accessor :bitbucket_pw
|
60
60
|
# Bitbucket repo associated with current directory + watson config
|
61
61
|
attr_accessor :bitbucket_repo
|
62
|
-
# Hash to hold list of all Bitbucket issues associated with repo
|
63
|
-
attr_accessor :bitbucket_issues
|
64
|
-
|
62
|
+
# Hash to hold list of all Bitbucket issues associated with repo
|
63
|
+
attr_accessor :bitbucket_issues
|
64
|
+
|
65
65
|
|
66
66
|
###########################################################
|
67
67
|
# Config initialization method to setup necessary parameters, states, and vars
|
@@ -69,8 +69,8 @@ module Watson
|
|
69
69
|
|
70
70
|
# [review] - Read and store rc FP inside initialize?
|
71
71
|
# This way we don't need to keep reopening the FP to use it
|
72
|
-
# but then we need a way to reliably close the FP when done
|
73
|
-
|
72
|
+
# but then we need a way to reliably close the FP when done
|
73
|
+
|
74
74
|
# Identify method entry
|
75
75
|
debug_print "#{self.class} : #{__method__}\n"
|
76
76
|
|
@@ -95,10 +95,10 @@ module Watson
|
|
95
95
|
@dir_list = Array.new()
|
96
96
|
@file_list = Array.new()
|
97
97
|
@tag_list = Array.new()
|
98
|
-
|
98
|
+
|
99
99
|
# Remote options
|
100
100
|
@remote_valid = false
|
101
|
-
|
101
|
+
|
102
102
|
@github_valid = false
|
103
103
|
@github_api = ""
|
104
104
|
@github_repo = ""
|
@@ -118,17 +118,17 @@ module Watson
|
|
118
118
|
|
119
119
|
|
120
120
|
###########################################################
|
121
|
-
# Parse through configuration and obtain remote info if necessary
|
121
|
+
# Parse through configuration and obtain remote info if necessary
|
122
122
|
def run
|
123
|
-
|
123
|
+
|
124
124
|
# Identify method entry
|
125
125
|
debug_print "#{ self.class } : #{ __method__ }\n"
|
126
|
-
|
127
|
-
# check_conf should create if no conf found, exit entirely if can't do either
|
126
|
+
|
127
|
+
# check_conf should create if no conf found, exit entirely if can't do either
|
128
128
|
exit if check_conf == false
|
129
129
|
read_conf
|
130
|
-
|
131
|
-
unless @github_api.empty? && @
|
130
|
+
|
131
|
+
unless @github_api.empty? && @github_repo.empty?
|
132
132
|
Remote::GitHub.get_issues(self)
|
133
133
|
end
|
134
134
|
|
@@ -153,13 +153,13 @@ module Watson
|
|
153
153
|
if !Watson::FS.check_file(@rc_file)
|
154
154
|
debug_print "#{ @rc_file } not found\n"
|
155
155
|
debug_print "Creating default #{ @rc_file }\n"
|
156
|
-
|
156
|
+
|
157
157
|
# Create default .rc and return create_conf (true if created,
|
158
158
|
# false if not)
|
159
159
|
return create_conf
|
160
160
|
else
|
161
161
|
debug_print "#{ @rc_file } found\n"
|
162
|
-
return true
|
162
|
+
return true
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
@@ -169,16 +169,16 @@ module Watson
|
|
169
169
|
# Copies default config from /assets/defaultConf to the current directory
|
170
170
|
def create_conf
|
171
171
|
# [review] - Not sure if I should use the open/read/write or Fileutils.cp
|
172
|
-
|
172
|
+
|
173
173
|
# Identify method entry
|
174
174
|
debug_print "#{ self.class } : #{ __method__ }\n"
|
175
175
|
|
176
|
-
|
176
|
+
|
177
177
|
# Generate full path since File doesn't care about the LOAD_PATH
|
178
|
-
# [review] - gsub uses (.?)+ to grab anything after lib (optional), better regex?
|
178
|
+
# [review] - gsub uses (.?)+ to grab anything after lib (optional), better regex?
|
179
179
|
_full_path = __dir__.gsub(%r!/lib/watson(.?)+!, '') + "/assets/defaultConf"
|
180
180
|
debug_print "Full path to defaultConf (in gem): #{ _full_path }\n"
|
181
|
-
|
181
|
+
|
182
182
|
# Check to make sure we can access the default file
|
183
183
|
if !Watson::FS.check_file(_full_path)
|
184
184
|
print "Unable to open #{ _full_path }\n"
|
@@ -192,24 +192,24 @@ module Watson
|
|
192
192
|
# Open rc file in current directory in write mode and write default
|
193
193
|
_output = File.open(@rc_file, 'w')
|
194
194
|
_output.write(_default)
|
195
|
-
|
195
|
+
|
196
196
|
# Close both default and new rc files
|
197
197
|
_input.close
|
198
198
|
_output.close
|
199
199
|
|
200
200
|
debug_print "Successfully wrote defaultConf to current directory\n"
|
201
201
|
return true
|
202
|
-
end
|
202
|
+
end
|
203
203
|
end
|
204
204
|
|
205
205
|
|
206
206
|
###########################################################
|
207
|
-
# Read configuration file and populate Config container class
|
207
|
+
# Read configuration file and populate Config container class
|
208
208
|
def read_conf
|
209
209
|
|
210
210
|
# Identify method entry
|
211
211
|
debug_print "#{ self.class } : #{ __method__ }\n"
|
212
|
-
|
212
|
+
|
213
213
|
|
214
214
|
debug_print "Reading #{ @rc_file }\n"
|
215
215
|
if !Watson::FS.check_file(@rc_file)
|
@@ -224,11 +224,11 @@ module Watson
|
|
224
224
|
@use_less = check_less
|
225
225
|
|
226
226
|
|
227
|
-
# Add all the standard items to ignorelist
|
227
|
+
# Add all the standard items to ignorelist
|
228
228
|
# This gets added regardless of ignore list specified
|
229
229
|
# [review] - Keep *.swp in there?
|
230
230
|
# [todo] - Add conditional to @rc_file such that if passed by -f we accept it
|
231
|
-
# [todo] - Add current file (watson) to avoid accidentally printing app tags
|
231
|
+
# [todo] - Add current file (watson) to avoid accidentally printing app tags
|
232
232
|
@ignore_list.push(".")
|
233
233
|
@ignore_list.push("..")
|
234
234
|
@ignore_list.push("*.swp")
|
@@ -238,12 +238,12 @@ module Watson
|
|
238
238
|
# Open and read rc
|
239
239
|
# [review] - Not sure if explicit file close is required here
|
240
240
|
_rc = File.open(@rc_file, 'r').read
|
241
|
-
|
242
|
-
debug_print "\n\n"
|
243
|
-
|
241
|
+
|
242
|
+
debug_print "\n\n"
|
243
|
+
|
244
244
|
# Create temp section var to keep track of what we are populating in config
|
245
245
|
_section = ""
|
246
|
-
|
246
|
+
|
247
247
|
# Keep index to print what line we are on
|
248
248
|
# Could fool around with Enumerable + each_with_index but oh well
|
249
249
|
_i = 0;
|
@@ -261,15 +261,15 @@ module Watson
|
|
261
261
|
# [review] - More "Ruby" way of going to next line?
|
262
262
|
next
|
263
263
|
end
|
264
|
-
|
265
|
-
|
264
|
+
|
265
|
+
|
266
266
|
# [review] - Use if with match so we can call next on the line reading loop
|
267
267
|
# Tried using match(){|_mtch|} as well as do |_mtch| but those don't seem to
|
268
268
|
# register the next call to the outer loop, so this way will do for now
|
269
269
|
|
270
270
|
# Regex on line to find out if we are in a new [section] of
|
271
271
|
# config parameters. If so, store it into section var and move
|
272
|
-
# to next line
|
272
|
+
# to next line
|
273
273
|
_mtch = _line.match(/^\[(\w+)\]/)
|
274
274
|
if _mtch
|
275
275
|
debug_print "Found section #{ _mtch[1] }\n"
|
@@ -280,13 +280,13 @@ module Watson
|
|
280
280
|
|
281
281
|
case _section
|
282
282
|
when "context_depth"
|
283
|
-
# No need for regex on context value, command should read this in only as a #
|
283
|
+
# No need for regex on context value, command should read this in only as a #
|
284
284
|
# Chomp to get rid of any nonsense
|
285
285
|
@context_depth = _line.chomp!
|
286
286
|
|
287
287
|
|
288
288
|
when "parse_depth"
|
289
|
-
# No need for regex on parse value, command should read this in only as a #
|
289
|
+
# No need for regex on parse value, command should read this in only as a #
|
290
290
|
# Chomp to get rid of any nonsense
|
291
291
|
@parse_depth = _line.chomp!
|
292
292
|
|
@@ -297,26 +297,26 @@ module Watson
|
|
297
297
|
# [review] - Populate @dirs/files_list first, then check size instead
|
298
298
|
if @cl_entry_set
|
299
299
|
debug_print "Directories or files set from command line ignoring rc [dirs]\n"
|
300
|
-
next
|
300
|
+
next
|
301
301
|
end
|
302
|
-
|
302
|
+
|
303
303
|
# Regex to grab directory
|
304
304
|
# Then substitute trailing / (necessary for later formatting)
|
305
305
|
# Then push to @dir_list
|
306
306
|
_mtch = _line.match(/^((\w+)?\.?\/?)+/)[0].gsub(/(\/)+$/, "")
|
307
307
|
if !_mtch.empty?
|
308
|
-
@dir_list.push(_mtch)
|
308
|
+
@dir_list.push(_mtch)
|
309
309
|
debug_print "#{ _mtch } added to @dir_list\n"
|
310
310
|
end
|
311
311
|
debug_print "@dir_list --> #{ @dir_list }\n"
|
312
|
-
|
312
|
+
|
313
313
|
|
314
314
|
when "tags"
|
315
|
-
# Same as previous for tags
|
315
|
+
# Same as previous for tags
|
316
316
|
# [review] - Populate @tag_list, then check size instead
|
317
317
|
if @cl_tag_set
|
318
318
|
debug_print "Tags set from command line, ignoring rc [tags]\n"
|
319
|
-
next
|
319
|
+
next
|
320
320
|
end
|
321
321
|
|
322
322
|
# Same as previous for tags
|
@@ -329,36 +329,36 @@ module Watson
|
|
329
329
|
debug_print "#{ _mtch } added to @tag_list\n"
|
330
330
|
end
|
331
331
|
debug_print "@tag_list --> #{ @tag_list }\n"
|
332
|
-
|
332
|
+
|
333
333
|
|
334
334
|
when "ignore"
|
335
335
|
# Same as previous for ignores
|
336
336
|
# [review] - Populate @tag_list, then check size instead
|
337
|
-
|
337
|
+
|
338
338
|
if @cl_ignore_set
|
339
339
|
debug_print "Ignores set from command line, ignoring rc [ignores]\n"
|
340
340
|
next
|
341
341
|
end
|
342
|
-
|
342
|
+
|
343
343
|
# Same as previous for ignores (regex same as dirs)
|
344
344
|
# Don't eliminate trailing / because not sure if dir can have
|
345
345
|
# same name as file (Linux it can't, but not sure about Win/Mac)
|
346
346
|
# [review] - Can Win/Mac have dir + file with same name in same dir?
|
347
347
|
_mtch = _line.match(/^((\w+)?\.?\/?)+/)[0]
|
348
348
|
if !_mtch.empty?
|
349
|
-
@ignore_list.push(_mtch)
|
349
|
+
@ignore_list.push(_mtch)
|
350
350
|
debug_print "#{ _mtch } added to @ignore_list\n"
|
351
351
|
end
|
352
352
|
debug_print "@ignore_list --> #{ @ignore_list }\n"
|
353
353
|
|
354
|
-
|
354
|
+
|
355
355
|
when "github_api"
|
356
356
|
# No need for regex on API key, GitHub setup should do this properly
|
357
357
|
# Chomp to get rid of any nonsense
|
358
358
|
@github_api = _line.chomp!
|
359
359
|
debug_print "GitHub API: #{ @github_api }\n"
|
360
360
|
|
361
|
-
|
361
|
+
|
362
362
|
when "github_repo"
|
363
363
|
# Same as above
|
364
364
|
@github_repo = _line.chomp!
|
@@ -368,17 +368,17 @@ module Watson
|
|
368
368
|
when "bitbucket_api"
|
369
369
|
# Same as GitHub parse above
|
370
370
|
@bitbucket_api = _line.chomp!
|
371
|
-
debug_print "Bitbucket API: #{ @bitbucket_api }\n"
|
372
|
-
|
373
|
-
|
371
|
+
debug_print "Bitbucket API: #{ @bitbucket_api }\n"
|
372
|
+
|
373
|
+
|
374
374
|
when "bitbucket_repo"
|
375
375
|
# Same as GitHub repo parse above
|
376
376
|
@bitbucket_repo = _line.chomp!
|
377
377
|
debug_print "Bitbucket Repo: #{ @bitbucket_repo }\n"
|
378
378
|
|
379
379
|
|
380
|
-
else
|
381
|
-
debug_print "Unknown tag found #{_section}\n"
|
380
|
+
else
|
381
|
+
debug_print "Unknown tag found #{_section}\n"
|
382
382
|
end
|
383
383
|
|
384
384
|
end
|
@@ -411,20 +411,20 @@ module Watson
|
|
411
411
|
debug_print "Check your input(s) to update_conf\n"
|
412
412
|
params.slice!(_i)
|
413
413
|
end
|
414
|
-
end
|
414
|
+
end
|
415
|
+
|
415
416
|
|
416
|
-
|
417
417
|
# Read in currently saved RC and go through it line by line
|
418
418
|
# Only update params that were passed to update_conf
|
419
419
|
# This allows us to clean up the config file at the same time
|
420
420
|
|
421
|
-
|
421
|
+
|
422
422
|
# Open and read rc
|
423
423
|
# [review] - Not sure if explicit file close is required here
|
424
424
|
_rc = File.open(@rc_file, 'r').read
|
425
425
|
_update = File.open(@rc_file, 'w')
|
426
|
-
|
427
|
-
|
426
|
+
|
427
|
+
|
428
428
|
# Keep index to print what line we are on
|
429
429
|
# Could fool around with Enumerable + each_with_index but oh well
|
430
430
|
_i = 0;
|
@@ -440,7 +440,7 @@ module Watson
|
|
440
440
|
debug_print "#{ _i }: #{ _line }"
|
441
441
|
_i = _i + 1
|
442
442
|
|
443
|
-
|
443
|
+
|
444
444
|
# Look for sections and set section var
|
445
445
|
_mtch = _line.match(/^\[(\w+)\]/)
|
446
446
|
if _mtch
|
@@ -464,7 +464,7 @@ module Watson
|
|
464
464
|
debug_print "Current section NOT a param to update\n"
|
465
465
|
debug_print "Writing to new rc\n"
|
466
466
|
_update.write(_line)
|
467
|
-
|
467
|
+
|
468
468
|
# Reset newline
|
469
469
|
_nlc = 0
|
470
470
|
end
|
@@ -483,8 +483,8 @@ module Watson
|
|
483
483
|
_update.write("[#{ _param }]\n")
|
484
484
|
_update.write("#{ self.instance_variable_get("@#{ _param }") }")
|
485
485
|
_update.write("\n\n\n")
|
486
|
-
end
|
487
|
-
|
486
|
+
end
|
487
|
+
|
488
488
|
_update.close
|
489
489
|
end
|
490
490
|
|