jtag 0.1.16 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/jtag +39 -41
- data/lib/jtag/jekylltag.rb +16 -10
- data/lib/jtag/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f68f1e95a41e56ce886f6b77f116f7617918d99374b0a8bc093d06f55ec63fa1
|
4
|
+
data.tar.gz: b1e2d8fe246baba7cc17b2fe86e867e91f0beed1c631021b6b02512ef8ed2641
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 767f4d931006ff59a30fb32d0f156703026f34b5c12c86fbdc02ebb56b0f3580618a411cfda9666fb299793dd88d34dec6b4dcf0804932f4f46df6dfd86b864f
|
7
|
+
data.tar.gz: f9c405479a2bb93999598387815fe37d626e84391fce3f650c308bc1b4c4f1ac48a6dbb6a1e7927dedb03cd41c32c847c2a0c612d423b9105e912c085976cc0b
|
data/bin/jtag
CHANGED
@@ -11,10 +11,11 @@ version Jtag::VERSION
|
|
11
11
|
|
12
12
|
@config_files = %w{blacklist.txt config.yml stopwords.txt synonyms.yml}
|
13
13
|
@config_target = File.expand_path("~/.jtag")
|
14
|
+
@piped_content = nil
|
14
15
|
|
15
16
|
def config_files_complete?
|
16
17
|
@config_files.each do |file|
|
17
|
-
return false unless File.exists?(File.join(@config_target,file))
|
18
|
+
return false unless File.exists?(File.join(@config_target, file))
|
18
19
|
end
|
19
20
|
true
|
20
21
|
end
|
@@ -22,18 +23,18 @@ end
|
|
22
23
|
desc 'Debug level'
|
23
24
|
default_value '0'
|
24
25
|
arg_name 'debug_level'
|
25
|
-
flag [
|
26
|
+
flag %i[d debug], :must_match => /\d+/, :type => Integer, :default_value => 0
|
26
27
|
|
27
28
|
desc 'Run silently'
|
28
|
-
switch [
|
29
|
+
switch %i[s silent]
|
29
30
|
|
30
31
|
desc 'Perform case-insensitive matches and searches'
|
31
|
-
switch [
|
32
|
+
switch %i[i case_insensitive]
|
32
33
|
|
33
34
|
desc "Test (dry run, don't update files)"
|
34
35
|
long_desc "Run all commands and show results on the command line, but don't overwrite/update any files"
|
35
36
|
default_value false
|
36
|
-
switch [
|
37
|
+
switch %i[t test]
|
37
38
|
|
38
39
|
def console_log(msg="", options={})
|
39
40
|
err = options[:err] || false
|
@@ -52,7 +53,7 @@ def console_log(msg="", options={})
|
|
52
53
|
unless err
|
53
54
|
$stdout.puts msg
|
54
55
|
else
|
55
|
-
|
56
|
+
warn msg
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -110,12 +111,12 @@ command :search do |c|
|
|
110
111
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
111
112
|
c.arg_name 'output_format'
|
112
113
|
c.default_value 'yaml'
|
113
|
-
c.flag [
|
114
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/i, :type => String
|
114
115
|
|
115
116
|
c.desc 'Include tag counts'
|
116
117
|
c.arg_name 'counts'
|
117
118
|
c.default_value false
|
118
|
-
c.switch [
|
119
|
+
c.switch %i[c counts]
|
119
120
|
|
120
121
|
c.action do |global_options,options,args|
|
121
122
|
tags = @jt.get_tags({:counts => true})
|
@@ -152,12 +153,12 @@ command :posts_tagged do |c|
|
|
152
153
|
c.desc 'Boolean operator for multiple tags (AND/OR/NOT)'
|
153
154
|
c.arg_name 'bool'
|
154
155
|
c.default_value 'OR'
|
155
|
-
c.flag [
|
156
|
+
c.flag %i[b bool], :must_match => /(AND|OR|NOT)/i, :type => String
|
156
157
|
|
157
158
|
c.desc 'Format to use when outputting file list: list, json, plist, csv or yaml. Defaults to list.'
|
158
159
|
c.arg_name 'output_format'
|
159
160
|
c.default_value 'list'
|
160
|
-
c.flag [
|
161
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
161
162
|
|
162
163
|
c.desc 'If output format is list, print without newlines.'
|
163
164
|
c.switch [:print0]
|
@@ -225,22 +226,22 @@ command :loners do |c|
|
|
225
226
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
226
227
|
c.arg_name 'output_format'
|
227
228
|
c.default_value 'yaml'
|
228
|
-
c.flag [
|
229
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
229
230
|
|
230
231
|
c.desc 'Upper limit for how many posts a tag can be attached to and still be a loner'
|
231
232
|
c.arg_name 'max'
|
232
233
|
c.default_value '2'
|
233
|
-
c.flag [
|
234
|
+
c.flag %i[m max], :default_value => 2, :must_match => /^\d+$/
|
234
235
|
|
235
236
|
c.desc "Remove tags with fewer than X posts attached"
|
236
|
-
c.switch [
|
237
|
+
c.switch %i[r remove], :default_value => false
|
237
238
|
|
238
239
|
c.desc "Display output without attached occurence counts"
|
239
240
|
c.switch [:no_counts], :default_value => false
|
240
241
|
|
241
242
|
c.desc 'Output a file list of tags that can be edited and passed back in for removing'
|
242
243
|
c.arg_name 'filename'
|
243
|
-
c.flag [
|
244
|
+
c.flag %i[e edit], :default_value => false, :type => String
|
244
245
|
|
245
246
|
c.action do |global_options,options,args|
|
246
247
|
max = options[:m].to_i
|
@@ -310,7 +311,7 @@ command :loners do |c|
|
|
310
311
|
}
|
311
312
|
}
|
312
313
|
unless global_options[:t]
|
313
|
-
@jt.update_file_tags(file,tags)
|
314
|
+
@jt.update_file_tags(file, tags)
|
314
315
|
console_log "Updated tags for #{file}", :log => true
|
315
316
|
end
|
316
317
|
|
@@ -333,15 +334,15 @@ command :tags do |c|
|
|
333
334
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
334
335
|
c.arg_name 'output_format'
|
335
336
|
c.default_value 'yaml'
|
336
|
-
c.flag [
|
337
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
337
338
|
|
338
339
|
c.action do |global_options,options,args|
|
339
340
|
|
340
341
|
if @piped_content
|
341
|
-
tags = @jt.post_tags(@piped_content,true)
|
342
|
+
tags = @jt.post_tags(@piped_content, true)
|
342
343
|
if args.length > 1
|
343
344
|
console_log
|
344
|
-
console_log
|
345
|
+
console_log 'STDIN:'
|
345
346
|
end
|
346
347
|
if tags.empty? || tags.nil?
|
347
348
|
console_log "No tags in post", {:err => true}
|
@@ -375,7 +376,7 @@ command :sort do |c|
|
|
375
376
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
376
377
|
c.arg_name 'output_format'
|
377
378
|
c.default_value 'yaml'
|
378
|
-
c.flag [
|
379
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
379
380
|
|
380
381
|
c.action do |global_options,options,args|
|
381
382
|
args.each{|file|
|
@@ -404,7 +405,7 @@ command :merge do |c|
|
|
404
405
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
405
406
|
c.arg_name 'output_format'
|
406
407
|
c.default_value 'yaml'
|
407
|
-
c.flag [
|
408
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
408
409
|
|
409
410
|
c.action do |global_options, options, args|
|
410
411
|
files = []
|
@@ -469,7 +470,7 @@ command :add do |c|
|
|
469
470
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
470
471
|
c.arg_name 'output_format'
|
471
472
|
c.default_value 'yaml'
|
472
|
-
c.flag [
|
473
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
473
474
|
|
474
475
|
|
475
476
|
c.action do |global_options,options,args|
|
@@ -497,7 +498,7 @@ command :add do |c|
|
|
497
498
|
tags.uniq!
|
498
499
|
tags.sort!
|
499
500
|
unless global_options[:t]
|
500
|
-
@jt.update_file_tags(file,tags)
|
501
|
+
@jt.update_file_tags(file, tags)
|
501
502
|
console_log "Updated tags for #{file}", :log => true
|
502
503
|
end
|
503
504
|
|
@@ -514,12 +515,12 @@ command :remove do |c|
|
|
514
515
|
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Defaults to yaml.'
|
515
516
|
c.arg_name 'output_format'
|
516
517
|
c.default_value 'yaml'
|
517
|
-
c.flag [
|
518
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
518
519
|
|
519
520
|
c.desc 'A filepath to a list of tags to be removed'
|
520
521
|
c.long_desc 'One tag per line, and leading numbers and pipes (|) will be ignored. This file format is generated automatically by the `loners` command, but any text file will do the trick.'
|
521
522
|
c.arg_name 'input_file'
|
522
|
-
c.flag [
|
523
|
+
c.flag %i[p path], :type => String
|
523
524
|
|
524
525
|
c.action do |global_options,options,args|
|
525
526
|
files = []
|
@@ -565,7 +566,7 @@ command :remove do |c|
|
|
565
566
|
}
|
566
567
|
}
|
567
568
|
unless global_options[:t]
|
568
|
-
@jt.update_file_tags(file,tags)
|
569
|
+
@jt.update_file_tags(file, tags)
|
569
570
|
console_log "Updated tags for #{file}", :log => true
|
570
571
|
end
|
571
572
|
|
@@ -579,20 +580,21 @@ end
|
|
579
580
|
desc 'Generate a list of recommended tags, optionally updating the file'
|
580
581
|
arg_name 'file_pattern', :multiple
|
581
582
|
command :tag do |c|
|
582
|
-
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml.
|
583
|
+
c.desc 'Format to use when outputting tags to console: list, json, plist, csv or yaml. Use "complete" to output full text when input is STDIN.'
|
583
584
|
c.arg_name 'output_format'
|
584
|
-
c.default_value 'yaml'
|
585
|
-
c.flag [:f,:format], :must_match => /^(csv|list|yaml|json|plist)$/, :type => String
|
585
|
+
c.flag %i[f format], :must_match => /^(csv|list|yaml|json|plist|complete)$/, :type => String, :default_value => 'yaml'
|
586
586
|
|
587
|
-
c.action do |global_options,options,args|
|
587
|
+
c.action do |global_options, options, args|
|
588
588
|
if @piped_content
|
589
589
|
suggestions = @jt.suggest(@piped_content)
|
590
|
-
if
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
590
|
+
if args.length > 0
|
591
|
+
console_log
|
592
|
+
console_log 'STDIN:', :err => true
|
593
|
+
end
|
594
|
+
if options[:format] == 'complete'
|
595
|
+
@jt.update_file_tags(@piped_content, suggestions, true)
|
596
|
+
else
|
597
|
+
output_tags(suggestions, :format => options[:format], :filename => nil)
|
596
598
|
end
|
597
599
|
end
|
598
600
|
args.each {|file|
|
@@ -670,7 +672,7 @@ end
|
|
670
672
|
# end
|
671
673
|
# end
|
672
674
|
|
673
|
-
pre do |global,command,options,args|
|
675
|
+
pre do |global, command, options, args|
|
674
676
|
# Use skips_pre before a command to skip this block
|
675
677
|
# on that command only
|
676
678
|
@silent = global[:silent]
|
@@ -690,11 +692,7 @@ pre do |global,command,options,args|
|
|
690
692
|
global[:config] = YAML::load(File.open(configfile,"r"))
|
691
693
|
global[:support] = File.expand_path("~/.jtag")
|
692
694
|
|
693
|
-
|
694
|
-
@piped_content = STDIN.read
|
695
|
-
else
|
696
|
-
@piped_content = false
|
697
|
-
end
|
695
|
+
@piped_content = STDIN.stat.size > 0 ? STDIN.read : nil
|
698
696
|
|
699
697
|
@jt = JTag.new(global[:support], global[:config])
|
700
698
|
|
data/lib/jtag/jekylltag.rb
CHANGED
@@ -78,8 +78,8 @@ class JTag
|
|
78
78
|
compiled
|
79
79
|
end
|
80
80
|
|
81
|
-
def split_post(file)
|
82
|
-
input = IO.read(file)
|
81
|
+
def split_post(file, piped = false)
|
82
|
+
input = piped ? file : IO.read(file)
|
83
83
|
# Check to see if it's a full post with YAML headers
|
84
84
|
post_parts = input.split(/^[\.\-]{3}\s*$/)
|
85
85
|
if post_parts.length >= 3
|
@@ -94,7 +94,7 @@ class JTag
|
|
94
94
|
|
95
95
|
def post_tags(file, piped=false)
|
96
96
|
begin
|
97
|
-
input = piped ? file : IO.read(file)
|
97
|
+
input = piped ? file.strip : IO.read(file)
|
98
98
|
yaml = YAML::load(input)
|
99
99
|
return yaml[@tags_key] || []
|
100
100
|
rescue
|
@@ -191,15 +191,21 @@ class JTag
|
|
191
191
|
end
|
192
192
|
end
|
193
193
|
|
194
|
-
def update_file_tags(file, tags)
|
194
|
+
def update_file_tags(file, tags, piped = false)
|
195
195
|
begin
|
196
|
-
if File.exists?(file)
|
197
|
-
yaml, after = split_post(file)
|
196
|
+
if File.exists?(file) || piped
|
197
|
+
yaml, after = split_post(file, piped)
|
198
198
|
yaml[@tags_key] = tags
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
199
|
+
if piped
|
200
|
+
puts yaml.to_yaml
|
201
|
+
puts "---"
|
202
|
+
puts after
|
203
|
+
else
|
204
|
+
File.open(file,'w+') do |f|
|
205
|
+
f.puts yaml.to_yaml
|
206
|
+
f.puts "---"
|
207
|
+
f.puts after
|
208
|
+
end
|
203
209
|
end
|
204
210
|
else
|
205
211
|
raise "File does not exist: #{file}"
|
data/lib/jtag/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jtag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|