glark 1.10.2 → 1.10.3
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.
- data/lib/glark/app/app.rb +2 -2
- data/lib/glark/app/info/options.rb +11 -11
- data/lib/glark/app/options.rb +18 -4
- data/lib/glark/app/rcfile.rb +2 -0
- data/lib/glark/app/runner.rb +2 -2
- data/lib/glark/input/filter/filter.rb +3 -1
- data/lib/glark/input/options.rb +3 -2
- data/lib/glark/input/range.rb +7 -13
- data/lib/glark/io/file/tar_gz_file.rb +3 -1
- data/lib/glark/io/file/zip_file.rb +3 -1
- data/lib/glark/match/and_distance.rb +7 -4
- data/lib/glark/match/expression.rb +0 -5
- data/lib/glark/match/factory.rb +2 -2
- data/lib/glark/match/options.rb +0 -1
- data/lib/glark/match/re_factory.rb +2 -1
- data/lib/glark/match/spec.rb +0 -1
- data/lib/glark/output/context.rb +9 -9
- data/lib/glark/output/file_header.rb +1 -1
- data/lib/glark/output/glark_format.rb +1 -1
- data/lib/glark/output/options.rb +1 -1
- data/lib/glark/output/results.rb +0 -2
- data/lib/glark/util/colors/options.rb +2 -6
- data/lib/glark/util/colors/spec.rb +0 -5
- data/lib/glark/util/highlight.rb +0 -14
- data/lib/glark/util/io/fileset.rb +4 -3
- data/lib/glark/util/io/filter/criteria.rb +3 -1
- data/lib/glark/util/option.rb +0 -2
- data/lib/glark/util/options.rb +2 -2
- data/man/glark.1 +1112 -0
- data/test/glark/app/options_test.rb +10 -8
- data/test/glark/input/directory_test.rb +1 -1
- data/test/glark/input/ext_test.rb +3 -3
- data/test/glark/input/size_limit_test.rb +3 -3
- data/test/glark/match_test.rb +1 -2
- data/test/glark/resources.rb +1 -1
- data/test/glark/tc.rb +6 -6
- data/test/resources/greet.rb +0 -3
- metadata +35 -2
data/lib/glark/app/app.rb
CHANGED
@@ -13,7 +13,7 @@ module Glark
|
|
13
13
|
class App
|
14
14
|
def initialize
|
15
15
|
begin
|
16
|
-
Log.set_widths(-15, -40, -40)
|
16
|
+
Logue::Log.set_widths(-15, -40, -40)
|
17
17
|
|
18
18
|
opts = AppOptions.new
|
19
19
|
opts.run ARGV
|
@@ -32,7 +32,7 @@ module Glark
|
|
32
32
|
rescue => e
|
33
33
|
# show the message, and the stack trace only if verbose:
|
34
34
|
$stderr.puts "error: #{e}"
|
35
|
-
if Log.verbose
|
35
|
+
if Logue::Log.verbose
|
36
36
|
$stderr.puts e.backtrace
|
37
37
|
raise
|
38
38
|
else
|
@@ -7,7 +7,7 @@ require 'glark/util/options'
|
|
7
7
|
|
8
8
|
module Glark
|
9
9
|
PACKAGE = 'glark'
|
10
|
-
VERSION = '1.10.
|
10
|
+
VERSION = '1.10.3'
|
11
11
|
|
12
12
|
class InfoOptions < Options
|
13
13
|
attr_reader :colors
|
@@ -24,8 +24,8 @@ module Glark
|
|
24
24
|
{
|
25
25
|
"known-nontext-files" => FileType.nontext_extensions.sort.join(' '),
|
26
26
|
"known-text-files" => FileType.text_extensions.sort.join(' '),
|
27
|
-
"quiet" => Log.quiet,
|
28
|
-
"verbose" => Log.verbose,
|
27
|
+
"quiet" => Logue::Log.quiet,
|
28
|
+
"verbose" => Logue::Log.verbose,
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
@@ -34,9 +34,9 @@ module Glark
|
|
34
34
|
"explain" => @explain,
|
35
35
|
"known_nontext_files" => FileType.nontext_extensions.join(", "),
|
36
36
|
"known_text_files" => FileType.text_extensions.join(", "),
|
37
|
-
"quiet" => Log.quiet,
|
37
|
+
"quiet" => Logue::Log.quiet,
|
38
38
|
"ruby version" => RUBY_VERSION,
|
39
|
-
"verbose" => Log.verbose,
|
39
|
+
"verbose" => Logue::Log.verbose,
|
40
40
|
"version" => Glark::VERSION,
|
41
41
|
}
|
42
42
|
end
|
@@ -53,25 +53,25 @@ module Glark
|
|
53
53
|
FileType.set_text ext
|
54
54
|
end
|
55
55
|
when "quiet"
|
56
|
-
Log.quiet = to_boolean(values.last)
|
56
|
+
Logue::Log.quiet = to_boolean(values.last)
|
57
57
|
when "verbose"
|
58
|
-
Log.verbose = to_boolean(values.last) ? 1 : nil
|
58
|
+
Logue::Log.verbose = to_boolean(values.last) ? 1 : nil
|
59
59
|
when "verbosity"
|
60
|
-
Log.verbose = values.last.to_i
|
60
|
+
Logue::Log.verbose = values.last.to_i
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
def add_as_options optdata
|
66
66
|
add_opt_blk(optdata, %w{ -V --version }) { show_version }
|
67
|
-
add_opt_blk(optdata, %w{ --verbose }) { Log.verbose = true }
|
67
|
+
add_opt_blk(optdata, %w{ --verbose }) { Logue::Log.verbose = true }
|
68
68
|
add_opt_blk(optdata, %w{ -? --help }) { Help.new.show_usage; exit 0 }
|
69
69
|
add_opt_blk(optdata, %w{ --man }) { Help.new.show_man; exit 0 }
|
70
70
|
|
71
71
|
add_opt_true optdata, :explain, %w{ --explain }
|
72
72
|
|
73
|
-
add_opt_blk(optdata, %w{ -q -s --quiet --messages }) { Log.quiet = true }
|
74
|
-
add_opt_blk(optdata, %w{ -Q -S --no-quiet --no-messages }) { Log.quiet = false }
|
73
|
+
add_opt_blk(optdata, %w{ -q -s --quiet --messages }) { Logue::Log.quiet = true }
|
74
|
+
add_opt_blk(optdata, %w{ -Q -S --no-quiet --no-messages }) { Logue::Log.quiet = false }
|
75
75
|
end
|
76
76
|
|
77
77
|
def show_version
|
data/lib/glark/app/options.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'riel/dir'
|
6
|
-
require '
|
6
|
+
require 'ragol/optproc/optproc'
|
7
|
+
require 'riel/env'
|
7
8
|
require 'glark/app/info/options'
|
8
9
|
require 'glark/app/rcfile'
|
9
10
|
require 'glark/app/spec'
|
@@ -13,8 +14,21 @@ require 'glark/output/options'
|
|
13
14
|
require 'glark/util/colors/options'
|
14
15
|
require 'glark/util/options'
|
15
16
|
require 'glark/util/optutil'
|
17
|
+
require 'pathname'
|
16
18
|
|
17
19
|
module Glark
|
20
|
+
class OptionSet < OptProc::OptionSet
|
21
|
+
include Logue::Loggable
|
22
|
+
|
23
|
+
def set_option results
|
24
|
+
# intercept these, which we'll use to create the expression:
|
25
|
+
%w{ -o --or --and -a \( \) --xor }.each do |tag|
|
26
|
+
return nil if results.current_arg.index(tag) == 0
|
27
|
+
end
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
18
32
|
class AppOptions < AppSpec
|
19
33
|
include OptionUtil
|
20
34
|
|
@@ -39,7 +53,7 @@ module Glark
|
|
39
53
|
|
40
54
|
super @input_options, @match_options, @output_options
|
41
55
|
|
42
|
-
@optset =
|
56
|
+
@optset = OptionSet.new optdata
|
43
57
|
end
|
44
58
|
|
45
59
|
def run args
|
@@ -161,8 +175,8 @@ module Glark
|
|
161
175
|
@info_options.show_version if @args.size == 1 && @args.first == "-v"
|
162
176
|
|
163
177
|
@match_options.expr = nil
|
164
|
-
|
165
|
-
|
178
|
+
|
179
|
+
@optset.process(@args)
|
166
180
|
|
167
181
|
unless @match_options.expr
|
168
182
|
read_expression
|
data/lib/glark/app/rcfile.rb
CHANGED
data/lib/glark/app/runner.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# vim: set filetype=ruby : set sw=2
|
4
4
|
|
5
5
|
require 'rubygems'
|
6
|
-
require '
|
6
|
+
require 'logue/loggable'
|
7
7
|
require 'glark/app/options'
|
8
8
|
require 'glark/io/file/binary_file'
|
9
9
|
require 'glark/io/file/gz_file'
|
@@ -17,7 +17,7 @@ $stderr.sync = true # unbuffer
|
|
17
17
|
module Glark
|
18
18
|
# The main processor.
|
19
19
|
class Runner
|
20
|
-
include Loggable
|
20
|
+
include Logue::Loggable
|
21
21
|
|
22
22
|
GZ_RE = Regexp.new '\.gz$'
|
23
23
|
TAR_GZ_RE = Regexp.new '\.(?:tgz|tar\.gz)$'
|
@@ -2,11 +2,13 @@
|
|
2
2
|
#!ruby -w
|
3
3
|
# vim: set filetype=ruby : set sw=2
|
4
4
|
|
5
|
+
require 'rubygems'
|
6
|
+
require 'logue/loggable'
|
5
7
|
require 'glark/util/io/filter/filter'
|
6
8
|
|
7
9
|
module Glark
|
8
10
|
class PatternFilter < Filter
|
9
|
-
include Loggable
|
11
|
+
include Logue::Loggable
|
10
12
|
|
11
13
|
attr_reader :pattern
|
12
14
|
|
data/lib/glark/input/options.rb
CHANGED
@@ -5,13 +5,14 @@
|
|
5
5
|
# Options for input.
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
|
+
require 'logue/loggable'
|
8
9
|
require 'glark/input/spec'
|
9
10
|
require 'glark/util/io/fileset'
|
10
11
|
require 'glark/util/options'
|
11
12
|
|
12
13
|
module Glark
|
13
14
|
class InputOptions < InputSpec
|
14
|
-
include OptionUtil, Loggable
|
15
|
+
include OptionUtil, Logue::Loggable
|
15
16
|
|
16
17
|
def initialize optdata
|
17
18
|
super()
|
@@ -104,7 +105,7 @@ module Glark
|
|
104
105
|
optdata << {
|
105
106
|
:tags => %w{ --binary-files },
|
106
107
|
:arg => [ :required, :regexp, re ],
|
107
|
-
:set => Proc.new { |md| @binary_files = md
|
108
|
+
:set => Proc.new { |md| @binary_files = md },
|
108
109
|
:rc => %w{ binary-files },
|
109
110
|
}
|
110
111
|
|
data/lib/glark/input/range.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
#!/usr/bin/ruby -w
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
|
+
require 'logue/loggable'
|
5
|
+
|
4
6
|
module Glark
|
5
7
|
class RangeError < RuntimeError
|
6
8
|
end
|
7
9
|
|
8
10
|
class Range
|
9
|
-
include Loggable, Comparable
|
11
|
+
include Logue::Loggable, Comparable
|
10
12
|
|
11
13
|
PCT_RE = Regexp.new '([\.\d]+)%'
|
12
14
|
|
@@ -77,27 +79,19 @@ module Glark
|
|
77
79
|
optdata << {
|
78
80
|
:tags => %w{ --after },
|
79
81
|
:arg => [ :required, :regexp, %r{ (\d+%?) $ }x ],
|
80
|
-
:set => Proc.new { |md| @from = md
|
82
|
+
:set => Proc.new { |md| @from = md }
|
81
83
|
}
|
82
84
|
|
83
85
|
optdata << {
|
84
86
|
:tags => %w{ --before },
|
85
87
|
:arg => [ :required, :regexp, %r{ (\d+%?) $ }x ],
|
86
|
-
:set => Proc.new { |md| @to = md
|
88
|
+
:set => Proc.new { |md| @to = md }
|
87
89
|
}
|
88
90
|
|
89
91
|
optdata << {
|
90
92
|
:tags => %w{ -R --range },
|
91
|
-
:arg => [ :required, :regexp, Regexp.new('(\d
|
92
|
-
:set => Proc.new
|
93
|
-
if md && md[1] && md[2]
|
94
|
-
@from = md[1]
|
95
|
-
@to = md[2]
|
96
|
-
else
|
97
|
-
@from = args.shift
|
98
|
-
@to = args.shift
|
99
|
-
end
|
100
|
-
end
|
93
|
+
:arg => [ :required, :regexp, Regexp.new('(\d+%?,\d+%?)') ],
|
94
|
+
:set => Proc.new { |md, opt, args| @from, @to = md.split(',') }
|
101
95
|
}
|
102
96
|
end
|
103
97
|
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
#!/usr/bin/ruby -w
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
|
+
require 'rubygems'
|
5
|
+
require 'logue/loggable'
|
4
6
|
require 'glark/io/file/gz_file'
|
5
7
|
require 'glark/io/file/tar_file'
|
6
8
|
|
7
9
|
module Glark
|
8
10
|
class TarGzFile
|
9
|
-
include Loggable
|
11
|
+
include Logue::Loggable
|
10
12
|
|
11
13
|
def initialize fname, range
|
12
14
|
@fname = fname
|
@@ -1,11 +1,13 @@
|
|
1
1
|
#!/usr/bin/ruby -w
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
|
+
require 'rubygems'
|
5
|
+
require 'logue/loggable'
|
4
6
|
require 'glark/io/file/archive_file'
|
5
7
|
|
6
8
|
module Glark
|
7
9
|
class ZipFile < ArchiveFile
|
8
|
-
include Loggable
|
10
|
+
include Logue::Loggable
|
9
11
|
|
10
12
|
def initialize fname, range, &blk
|
11
13
|
super fname, range
|
@@ -5,15 +5,12 @@
|
|
5
5
|
# Distance for and expression
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
|
-
require 'riel/string'
|
9
8
|
require 'glark/match/re'
|
10
9
|
require 'glark/match/ior'
|
11
10
|
require 'glark/match/xor'
|
12
11
|
require 'glark/match/and'
|
13
12
|
|
14
13
|
class AndDistance
|
15
|
-
include Loggable
|
16
|
-
|
17
14
|
# signifies no limit to the distance between matches, i.e., anywhere within
|
18
15
|
# the entire file is valid.
|
19
16
|
INFINITE_DISTANCE = -1
|
@@ -53,6 +50,12 @@ class AndDistance
|
|
53
50
|
end
|
54
51
|
|
55
52
|
def numeric? x
|
56
|
-
|
53
|
+
return nil unless x
|
54
|
+
return true if x.kind_of?(Fixnum) || x.to_i == INFINITE_DISTANCE
|
55
|
+
begin
|
56
|
+
Integer x
|
57
|
+
rescue ArgumentError
|
58
|
+
nil
|
59
|
+
end
|
57
60
|
end
|
58
61
|
end
|
@@ -4,13 +4,8 @@
|
|
4
4
|
|
5
5
|
# Extended regular-expression-based expressions.
|
6
6
|
|
7
|
-
require 'rubygems'
|
8
|
-
require 'riel'
|
9
|
-
|
10
7
|
# An expression, which can be applied (processed) against a Glark::File.
|
11
8
|
class Expression
|
12
|
-
include Loggable
|
13
|
-
|
14
9
|
attr_accessor :matches
|
15
10
|
|
16
11
|
def initialize
|
data/lib/glark/match/factory.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
8
|
require 'riel/regexp'
|
9
|
-
require '
|
9
|
+
require 'logue/loggable'
|
10
10
|
require 'glark/match/and'
|
11
11
|
require 'glark/match/and_distance'
|
12
12
|
require 'glark/match/ior'
|
@@ -14,7 +14,7 @@ require 'glark/match/re_factory'
|
|
14
14
|
require 'glark/match/xor'
|
15
15
|
|
16
16
|
class ExpressionFactory
|
17
|
-
include Loggable
|
17
|
+
include Logue::Loggable
|
18
18
|
|
19
19
|
attr_reader :expr
|
20
20
|
|
data/lib/glark/match/options.rb
CHANGED
data/lib/glark/match/spec.rb
CHANGED
data/lib/glark/output/context.rb
CHANGED
@@ -3,12 +3,13 @@
|
|
3
3
|
|
4
4
|
module Glark
|
5
5
|
class Context
|
6
|
+
include Logue::Loggable
|
7
|
+
|
6
8
|
attr_accessor :after
|
7
9
|
attr_accessor :before
|
8
10
|
|
9
|
-
def initialize
|
10
|
-
|
11
|
-
@before = 0
|
11
|
+
def initialize
|
12
|
+
clear
|
12
13
|
end
|
13
14
|
|
14
15
|
def clear
|
@@ -31,11 +32,11 @@ module Glark
|
|
31
32
|
|
32
33
|
def add_as_option optdata
|
33
34
|
optdata << {
|
34
|
-
:tags
|
35
|
-
:
|
36
|
-
:arg
|
37
|
-
:
|
38
|
-
:
|
35
|
+
:tags => %w{ -C --context },
|
36
|
+
:regexp => %r{ ^ - ([1-9]\d*) $ }x,
|
37
|
+
:arg => [ :optional, :integer ],
|
38
|
+
:process => Proc.new { |val, opt, args| @after = @before = val == true ? 2 : val },
|
39
|
+
:rcname => %w{ context },
|
39
40
|
}
|
40
41
|
|
41
42
|
optdata << {
|
@@ -54,4 +55,3 @@ module Glark
|
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
57
|
-
|
data/lib/glark/output/options.rb
CHANGED
@@ -90,7 +90,7 @@ module Glark
|
|
90
90
|
optdata << {
|
91
91
|
:tags => %w{ -u --highlight },
|
92
92
|
:arg => [ :optional, :regexp, %r{ ^ (?:(multi|single)|none) $ }x ],
|
93
|
-
:set => Proc.new { |md| val = md ? md
|
93
|
+
:set => Proc.new { |md| val = md ? md : "multi"; @colors.text_color_style = val }
|
94
94
|
}
|
95
95
|
|
96
96
|
optdata << {
|
data/lib/glark/output/results.rb
CHANGED
@@ -46,11 +46,7 @@ module Glark
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def make_color color
|
49
|
-
@highlighter.
|
50
|
-
end
|
51
|
-
|
52
|
-
def make_rgb_color red, green, blue, fgbg
|
53
|
-
@highlighter.make_rgb_color red, green, blue, fgbg
|
49
|
+
@highlighter.to_codes color
|
54
50
|
end
|
55
51
|
|
56
52
|
def make_colors limit = -1
|
@@ -70,7 +66,7 @@ module Glark
|
|
70
66
|
def text_color_style= tcstyle
|
71
67
|
@text_color_style = tcstyle
|
72
68
|
if @text_color_style
|
73
|
-
@highlighter = @text_color_style &&
|
69
|
+
@highlighter = @text_color_style && RainbowHighlighter.instance
|
74
70
|
@text_colors = case @text_color_style
|
75
71
|
when highlight_multi?(@text_color_style), true
|
76
72
|
multi_colors
|
data/lib/glark/util/highlight.rb
CHANGED
@@ -75,17 +75,3 @@ class RainbowHighlighter
|
|
75
75
|
end.join ''
|
76
76
|
end
|
77
77
|
end
|
78
|
-
|
79
|
-
class HlWrapper
|
80
|
-
def initialize
|
81
|
-
@hl = RainbowHighlighter.instance
|
82
|
-
end
|
83
|
-
|
84
|
-
def make_color color
|
85
|
-
@hl.to_codes color
|
86
|
-
end
|
87
|
-
|
88
|
-
def make_rgb_color red, green, blue, fgbg
|
89
|
-
@hl.instance.to_rgb_code red, green, blue, fgbg
|
90
|
-
end
|
91
|
-
end
|
@@ -3,13 +3,14 @@
|
|
3
3
|
# vim: set filetype=ruby : set sw=2
|
4
4
|
|
5
5
|
require 'rubygems'
|
6
|
+
require 'logue/loggable'
|
6
7
|
require 'glark/util/io/depth'
|
7
8
|
require 'riel/filetype'
|
8
9
|
|
9
10
|
module Glark
|
10
11
|
# Files and directories. And standard input, just for fun.
|
11
12
|
class FileSet
|
12
|
-
include Loggable, Enumerable
|
13
|
+
include Logue::Loggable, Enumerable
|
13
14
|
|
14
15
|
attr_reader :files
|
15
16
|
|
@@ -111,18 +112,18 @@ module Glark
|
|
111
112
|
subdepth = depth - 1
|
112
113
|
|
113
114
|
pn.children.sort.each do |entry|
|
114
|
-
next if @yielded_files.include?(entry)
|
115
115
|
if entry.file?
|
116
116
|
type = FileType.type entry.to_s
|
117
117
|
next if type == FileType::BINARY && @binary_files == 'skip'
|
118
118
|
end
|
119
|
-
@yielded_files << entry
|
120
119
|
handle_pathname entry, subdepth, &blk
|
121
120
|
end
|
122
121
|
end
|
123
122
|
|
124
123
|
def handle_file pn, &blk
|
125
124
|
return if @file_criteria.skipped? pn
|
125
|
+
return if @yielded_files.include? pn
|
126
|
+
@yielded_files << pn
|
126
127
|
|
127
128
|
type = FileType.type pn.to_s
|
128
129
|
case type
|
@@ -2,11 +2,13 @@
|
|
2
2
|
#!ruby -w
|
3
3
|
# vim: set filetype=ruby : set sw=2
|
4
4
|
|
5
|
+
require 'rubygems'
|
6
|
+
require 'logue/loggable'
|
5
7
|
require 'glark/util/io/filter/filter'
|
6
8
|
|
7
9
|
module Glark
|
8
10
|
class Criteria
|
9
|
-
include Loggable
|
11
|
+
include Logue::Loggable
|
10
12
|
|
11
13
|
def initialize
|
12
14
|
# by type (hash) => by positive/negative (hash) => filter list (array)
|
data/lib/glark/util/option.rb
CHANGED
data/lib/glark/util/options.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
# vim: set filetype=ruby : set sw=2
|
4
4
|
|
5
5
|
require 'glark/util/optutil'
|
6
|
-
require '
|
6
|
+
require 'logue/loggable'
|
7
7
|
|
8
8
|
module Glark
|
9
9
|
class Options
|
10
|
-
include Loggable, Glark::OptionUtil
|
10
|
+
include Logue::Loggable, Glark::OptionUtil
|
11
11
|
end
|
12
12
|
end
|