utils 0.8.0 → 0.9.0
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/VERSION +1 -1
- data/bin/ascii7 +14 -0
- data/bin/blameline +1 -5
- data/bin/brakeman2err +2 -2
- data/bin/classify +9 -9
- data/bin/discover +5 -5
- data/bin/edit +9 -9
- data/bin/enum +6 -6
- data/bin/git-versions +25 -0
- data/bin/irb_connect +5 -5
- data/bin/myex +3 -3
- data/bin/path +2 -2
- data/bin/probe +12 -12
- data/bin/search +9 -8
- data/bin/serve +0 -0
- data/bin/ssh-tunnel +12 -12
- data/bin/strip_spaces +8 -4
- data/lib/utils/config_file.rb +1 -1
- data/lib/utils/finder.rb +7 -7
- data/lib/utils/grepper.rb +23 -23
- data/lib/utils/line_blamer.rb +8 -0
- data/lib/utils/patterns.rb +2 -0
- data/lib/utils/probe_server.rb +1 -1
- data/lib/utils/version.rb +1 -1
- data/utils.gemspec +31 -31
- metadata +9 -6
- data/utils.gemspec +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f866a94b2e6d4f176cb526c5ba15e7721f2cdf48
|
4
|
+
data.tar.gz: 7e3e202ebb2c42ef0f66fa803cf6f772bf39588c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 625a650bcdda5ed20739478be0b423022e7956582d643c5310c08600505ad451f787830c55b3d2ad67a1966c668277e09740a77a152cf15f0563d89f6e955837
|
7
|
+
data.tar.gz: 02e4866d3c84fb13880deff73a8bcb6a531dd7913eddb20ea88d37ae392a869610d2d7e0d11dd967b0f4df49b900c2c449f39a39247d6e79f96f45515a171eb2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
data/bin/ascii7
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
map = Hash.new { |h, k| h[k] = k }.merge(
|
4
|
+
" " => "Spc",
|
5
|
+
"\x7f" => "DEL"
|
6
|
+
).merge(%w[
|
7
|
+
NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI DLE DC1 DC2
|
8
|
+
DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
|
9
|
+
].each_with_index.map { |s, i| [ i.chr, s ] }.to_h)
|
10
|
+
prefixes = 0..0b11
|
11
|
+
puts ([ '' ] + prefixes.map { |p| '%02b' % p }) * ?\t
|
12
|
+
(1 << 5).times do |x|
|
13
|
+
puts ([ "%05b" % x ] + prefixes.map { |p| map[((p << 5) | x).chr] }) * ?\t
|
14
|
+
end
|
data/bin/blameline
CHANGED
@@ -21,9 +21,5 @@ else
|
|
21
21
|
end
|
22
22
|
|
23
23
|
for line in lines
|
24
|
-
|
25
|
-
blame = blamer.perform or next
|
26
|
-
blame.sub!(/^[0-9a-f^]+/) { Term::ANSIColor.yellow($&) }
|
27
|
-
blame.sub!(/\(([^)]+)\)/) { "(#{Term::ANSIColor.red($1)})" }
|
28
|
-
puts blame
|
24
|
+
Utils::LineBlamer.blame(line).full? { |l| puts l }
|
29
25
|
end
|
data/bin/brakeman2err
CHANGED
@@ -5,8 +5,8 @@ require 'tins/xt'
|
|
5
5
|
require 'tins/go'
|
6
6
|
include Tins::GO
|
7
7
|
|
8
|
-
|
9
|
-
if
|
8
|
+
opts = go 'c'
|
9
|
+
if opts[?c]
|
10
10
|
brakeman = `bundle exec which brakeman`.full? or fail "cannot find brakeman in path"
|
11
11
|
system *%w'bundle exec brakeman -q -s brakeman_ignore --url-safe-methods brakeman_ignore -o .brakeman.json' or fail "calling brakeman failed"
|
12
12
|
end
|
data/bin/classify
CHANGED
@@ -18,9 +18,9 @@ def path_shifter(string, separator: ?/, n: nil)
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def underscore(string)
|
21
|
-
string = path_shifter(string, n: $opts[
|
21
|
+
string = path_shifter(string, n: $opts[?n], separator: '::')
|
22
22
|
string = Tins::StringUnderscore.instance_method(:underscore).bind(string).()
|
23
|
-
$opts[
|
23
|
+
$opts[?s] and string << '.rb'
|
24
24
|
string
|
25
25
|
end
|
26
26
|
|
@@ -29,7 +29,7 @@ def parameterize(string, separator)
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def camelize(string)
|
32
|
-
string = path_shifter(string, n: $opts[
|
32
|
+
string = path_shifter(string, n: $opts[?n])
|
33
33
|
string = string.gsub(/#{Regexp.quote(File.extname(string))}\Z/, '')
|
34
34
|
string.camelize
|
35
35
|
end
|
@@ -58,13 +58,13 @@ string = Term::ANSIColor.uncolor string
|
|
58
58
|
config = Utils::ConfigFile.new
|
59
59
|
config.configure_from_paths
|
60
60
|
|
61
|
-
$opts[
|
61
|
+
$opts[?n] ||= compute_shift(config, string)
|
62
62
|
|
63
|
-
$opts[
|
63
|
+
$opts[?b] and $opts[?n] = '-1'
|
64
64
|
print case
|
65
|
-
when $opts[
|
65
|
+
when $opts[?t]
|
66
66
|
if camelcase?(string)
|
67
|
-
if separator = $opts[
|
67
|
+
if separator = $opts[?p]
|
68
68
|
parameterize string, separator
|
69
69
|
else
|
70
70
|
underscore string
|
@@ -72,8 +72,8 @@ when $opts['t']
|
|
72
72
|
else
|
73
73
|
camelize string
|
74
74
|
end
|
75
|
-
when $opts[
|
76
|
-
if separator = $opts[
|
75
|
+
when $opts[?d]
|
76
|
+
if separator = $opts[?p]
|
77
77
|
parameterize string, separator
|
78
78
|
else
|
79
79
|
underscore string
|
data/bin/discover
CHANGED
@@ -47,15 +47,15 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
47
47
|
end
|
48
48
|
|
49
49
|
args = go 'I:a:rceEbvh'
|
50
|
-
args[
|
50
|
+
args[?h] and usage
|
51
51
|
pattern = ARGV.shift or usage
|
52
52
|
roots = (ARGV.empty? ? [ Dir.pwd ] : ARGV).map { |f| File.expand_path(f) }
|
53
53
|
|
54
|
-
Term::ANSIColor.coloring = (STDIN.tty? && ENV['TERM'] !~ /dumb/) && !args[
|
54
|
+
Term::ANSIColor.coloring = (STDIN.tty? && ENV['TERM'] !~ /dumb/) && !args[?c]
|
55
55
|
STDOUT.sync = true
|
56
56
|
config = Utils::ConfigFile.new
|
57
57
|
config.configure_from_paths
|
58
|
-
args[
|
58
|
+
args[?b] ||= config.discover.binary
|
59
59
|
finder = Finder.new(
|
60
60
|
:pattern => pattern,
|
61
61
|
:args => args,
|
@@ -64,9 +64,9 @@ finder = Finder.new(
|
|
64
64
|
).search
|
65
65
|
|
66
66
|
case
|
67
|
-
when args[
|
67
|
+
when args[?E]
|
68
68
|
edit_files finder.paths, pick: true
|
69
|
-
when args[
|
69
|
+
when args[?e]
|
70
70
|
edit_files finder.paths
|
71
71
|
else
|
72
72
|
puts finder.paths
|
data/bin/edit
CHANGED
@@ -30,19 +30,19 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
30
30
|
end
|
31
31
|
|
32
32
|
$opt = go 'p:S:c:g:wsmh'
|
33
|
-
$opt[
|
33
|
+
$opt[?h] and usage
|
34
34
|
|
35
35
|
config = Utils::ConfigFile.new
|
36
36
|
config.configure_from_paths
|
37
37
|
|
38
38
|
editor = Editor.new do |c|
|
39
|
-
c.wait = $opt[
|
40
|
-
c.pause_duration = ($opt[
|
41
|
-
s = $opt[
|
42
|
-
c.mkdir = $opt[
|
39
|
+
c.wait = $opt[?w]
|
40
|
+
c.pause_duration = ($opt[?p] || 1).to_i
|
41
|
+
s = $opt[?S] and c.servername = s
|
42
|
+
c.mkdir = $opt[?m]
|
43
43
|
end
|
44
44
|
|
45
|
-
if $opt[
|
45
|
+
if $opt[?s]
|
46
46
|
begin
|
47
47
|
until STDIN.eof?
|
48
48
|
line = STDIN.gets
|
@@ -53,9 +53,9 @@ if $opt['s']
|
|
53
53
|
exit 1
|
54
54
|
end
|
55
55
|
exit 0
|
56
|
-
elsif command = $opt[
|
56
|
+
elsif command = $opt[?c]
|
57
57
|
editor.edit_remote_send "\e:#{command}\n"
|
58
|
-
elsif command = $opt[
|
58
|
+
elsif command = $opt[?C]
|
59
59
|
editor.edit_remote_send command
|
60
60
|
end
|
61
61
|
|
@@ -71,7 +71,7 @@ if argv.empty?
|
|
71
71
|
argv << file.path
|
72
72
|
end
|
73
73
|
end
|
74
|
-
case git_files_arg = $opt[
|
74
|
+
case git_files_arg = $opt[?g]
|
75
75
|
when ?g
|
76
76
|
argv.concat `git diff HEAD --name-only`.lines.map(&:chomp).uniq
|
77
77
|
when /\A[mcdo]\z/
|
data/bin/enum
CHANGED
@@ -150,18 +150,18 @@ $opts = {
|
|
150
150
|
}.update(go('p:e:f:h')) do |o,default,set|
|
151
151
|
set || default
|
152
152
|
end
|
153
|
-
usage if $opts[
|
153
|
+
usage if $opts[?h] || ARGV.size != 1
|
154
154
|
$ranges = ARGV.shift
|
155
|
-
$limited = $opts[
|
155
|
+
$limited = $opts[?p] ? Limited.new($opts[?p]) : nil
|
156
156
|
ranges = parse_ranges($ranges)
|
157
157
|
generator = Generator.new(ranges)
|
158
|
-
$opts[
|
158
|
+
$opts[?f] ||= %w[ %s ] * generator.size * ':'
|
159
159
|
|
160
160
|
generator.each do |tuple|
|
161
|
-
if $opts[
|
162
|
-
execute_command($opts[
|
161
|
+
if $opts[?e]
|
162
|
+
execute_command($opts[?e], $opts[?f], tuple)
|
163
163
|
else
|
164
|
-
puts $opts[
|
164
|
+
puts $opts[?f] % tuple
|
165
165
|
end
|
166
166
|
end
|
167
167
|
exit 0
|
data/bin/git-versions
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'tins/xt'
|
4
|
+
require 'term/ansicolor'
|
5
|
+
include Tins::GO
|
6
|
+
|
7
|
+
$opts = go 'r:v'
|
8
|
+
|
9
|
+
class String
|
10
|
+
include Term::ANSIColor
|
11
|
+
end
|
12
|
+
|
13
|
+
regexp = $opts[?r] && Regexp.new($opts[?r]) || /^v((?:\d+\.)*\d+)/
|
14
|
+
|
15
|
+
versions = `git tag`.lines.map(&:chomp).grep(regexp).sort_by { |x|
|
16
|
+
x[regexp, 1].version
|
17
|
+
}.reverse
|
18
|
+
versions.each_cons(2) do |new, old|
|
19
|
+
puts "Version #{new}".red.bold
|
20
|
+
if $opts[?v]
|
21
|
+
puts `git log --color --stat -u #{old}..#{new}`
|
22
|
+
else
|
23
|
+
puts `git log --color --stat #{old}..#{new}`
|
24
|
+
end
|
25
|
+
end
|
data/bin/irb_connect
CHANGED
@@ -24,14 +24,14 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
24
24
|
end
|
25
25
|
|
26
26
|
|
27
|
-
$
|
28
|
-
$
|
27
|
+
$opts = go 'e:r:p:l:h'
|
28
|
+
$opts[?h] and usage
|
29
29
|
|
30
|
-
proxy = Utils::IRB::Service.connect($
|
30
|
+
proxy = Utils::IRB::Service.connect($opts[?r], $opts[?p])
|
31
31
|
case
|
32
|
-
when load_path = $
|
32
|
+
when load_path = $opts[?l]
|
33
33
|
proxy.load(load_path)
|
34
|
-
when code = $
|
34
|
+
when code = $opts[?e]
|
35
35
|
p proxy.eval(code)
|
36
36
|
else
|
37
37
|
puts proxy.eval(STDIN.read)
|
data/bin/myex
CHANGED
@@ -49,7 +49,7 @@ when 'create'
|
|
49
49
|
STDIN.grep(/^CREATE TABLE `([^`]+)` \(/) do |stmt|
|
50
50
|
table = $1
|
51
51
|
next unless ARGV.empty? or ARGV.member?(table)
|
52
|
-
if opts[
|
52
|
+
if opts[?d]
|
53
53
|
puts "DROP TABLE IF EXISTS `#{table}`;"
|
54
54
|
warn "Dropped table #{table}."
|
55
55
|
end
|
@@ -74,8 +74,8 @@ when 'insert'
|
|
74
74
|
puts "SET FOREIGN_KEY_CHECKS = 0;"
|
75
75
|
STDIN.grep(/^INSERT (?:IGNORE )?INTO `(#{ARGV.empty? ? '[^`]+' : ARGV * '|'})`/) do |stmt|
|
76
76
|
table = $1
|
77
|
-
stmt.sub!(/(^INSERT) (INTO)/, '\1 IGNORE \2') if opts[
|
78
|
-
if opts[
|
77
|
+
stmt.sub!(/(^INSERT) (INTO)/, '\1 IGNORE \2') if opts[?i]
|
78
|
+
if opts[?t] and not truncated.key?(table)
|
79
79
|
puts "TRUNCATE TABLE `#{table}`;"
|
80
80
|
truncated[table] = true
|
81
81
|
warn "Truncated table #{table}."
|
data/bin/path
CHANGED
@@ -9,7 +9,7 @@ path_separator = RUBY_PLATFORM =~ /mswin32/ ? ';' : ':'
|
|
9
9
|
path = (ENV['PATH'] || '').split(path_separator)
|
10
10
|
path.map! { |part| File.expand_path(part) }
|
11
11
|
|
12
|
-
$
|
12
|
+
$opts = go('e')
|
13
13
|
|
14
14
|
case cmd = ARGV.shift
|
15
15
|
when 'prefix', 'postfix'
|
@@ -35,4 +35,4 @@ end
|
|
35
35
|
|
36
36
|
path.uniq!
|
37
37
|
|
38
|
-
puts "#{'export ' if $opt[
|
38
|
+
puts "#{'export ' if $opt[?e]}PATH=#{path * path_separator}"
|
data/bin/probe
CHANGED
@@ -73,7 +73,7 @@ end
|
|
73
73
|
def connect_server
|
74
74
|
DRb.start_service
|
75
75
|
probe_server = DRbObject.new_with_uri($uri)
|
76
|
-
if setting = $
|
76
|
+
if setting = $opts[?C]
|
77
77
|
case setting
|
78
78
|
when /\A([^=]+)=([^=]+)\z/
|
79
79
|
probe_server.env[$1] = $2
|
@@ -83,8 +83,8 @@ def connect_server
|
|
83
83
|
usage
|
84
84
|
end
|
85
85
|
end
|
86
|
-
if $
|
87
|
-
opts = $
|
86
|
+
if $opts[?c]
|
87
|
+
opts = $opts.subhash('n', 't').each_with_object([]) { |(k, v), a|
|
88
88
|
v.full? and a.concat [ "-#{k}", v ]
|
89
89
|
}
|
90
90
|
probe_server.enqueue opts + $args
|
@@ -101,23 +101,23 @@ if i = ARGV.index('--')
|
|
101
101
|
else
|
102
102
|
$args = ARGV.dup
|
103
103
|
end
|
104
|
-
$
|
105
|
-
$
|
104
|
+
$opts = go 'lct:n:u:C:h', $args
|
105
|
+
$opts[?h] and usage
|
106
106
|
|
107
|
-
$uri = $
|
107
|
+
$uri = $opts[?u] || 'drbunix:probe.socket'
|
108
108
|
|
109
109
|
case
|
110
|
-
when $
|
110
|
+
when $opts[?l]
|
111
111
|
start_server
|
112
112
|
exit
|
113
|
-
when $
|
113
|
+
when $opts[?c], $opts[?C]
|
114
114
|
connect_server
|
115
115
|
end
|
116
116
|
|
117
117
|
$args.empty? and exit
|
118
118
|
puts "Running tests in #{$args.inspect}"
|
119
119
|
|
120
|
-
case ($
|
120
|
+
case ($opts[?t] || $config.probe.test_framework).to_sym
|
121
121
|
when :rspec
|
122
122
|
case
|
123
123
|
when spring?
|
@@ -128,7 +128,7 @@ when :rspec
|
|
128
128
|
rspec = [ find_cmd('rspec', 'spec') ] << '-rutils' << '-f' <<
|
129
129
|
'Utils::LineFormatter'
|
130
130
|
end
|
131
|
-
if linenumber = $
|
131
|
+
if linenumber = $opts[?n]
|
132
132
|
cmd 'ruby', '-I', $config.probe.include_dirs_argument, *rspec, '-l',
|
133
133
|
linenumber, *($args + testrunner_args)
|
134
134
|
else
|
@@ -148,7 +148,7 @@ when :'test-unit'
|
|
148
148
|
else
|
149
149
|
testrb = find_cmd('testrb')
|
150
150
|
end
|
151
|
-
if testname = $
|
151
|
+
if testname = $opts[?n]
|
152
152
|
cmd 'ruby', '-I', $config.probe.include_dirs_argument, *testrb,
|
153
153
|
'-n', testname, *($args + testrunner_args)
|
154
154
|
else
|
@@ -170,7 +170,7 @@ when :'test-unit'
|
|
170
170
|
end
|
171
171
|
when :cucumber
|
172
172
|
cucumber = find_cmd('cucumber')
|
173
|
-
if linenumber = $
|
173
|
+
if linenumber = $opts[?n]
|
174
174
|
cmd 'ruby', cucumber, '-r', $config.probe.include_dirs_argument, '-l',
|
175
175
|
linenumber, *($args + testrunner_args)
|
176
176
|
else
|
data/bin/search
CHANGED
@@ -125,7 +125,8 @@ Options are
|
|
125
125
|
-e open the matching files with edit command
|
126
126
|
-E pick one file to edit
|
127
127
|
-r REPLACE replace the searched match with REPLACE
|
128
|
-
-b
|
128
|
+
-b also search binary files
|
129
|
+
-g use git to determine author of the line
|
129
130
|
-a CSET use only character set CSET from PATTERN
|
130
131
|
-v be verbose
|
131
132
|
-h display this help
|
@@ -135,12 +136,12 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
135
136
|
exit 1
|
136
137
|
end
|
137
138
|
|
138
|
-
args = go 'r:I:A:B:C:s:S:n:N:a:
|
139
|
-
args[
|
139
|
+
args = go 'r:I:A:B:C:s:S:n:N:a:RciflLeEvbgh'
|
140
|
+
args[?h] and usage
|
140
141
|
pattern = ARGV.shift or usage
|
141
142
|
roots = (ARGV.empty? ? [ Dir.pwd ] : ARGV).map { |f| File.expand_path(f) }
|
142
143
|
|
143
|
-
Term::ANSIColor.coloring = (STDIN.tty? && ENV['TERM'] !~ /dumb/) && !args[
|
144
|
+
Term::ANSIColor.coloring = (STDIN.tty? && ENV['TERM'] !~ /dumb/) && !args[?c]
|
144
145
|
STDOUT.sync = true
|
145
146
|
config = Utils::ConfigFile.new
|
146
147
|
config.configure_from_paths
|
@@ -151,8 +152,8 @@ grepper = Grepper.new(
|
|
151
152
|
:config => config
|
152
153
|
).search
|
153
154
|
case
|
154
|
-
when args[
|
155
|
-
when args[
|
156
|
-
when args[
|
157
|
-
when args[
|
155
|
+
when args[?r] then edit_files grepper.pattern, grepper.paths, replace: args[?r]
|
156
|
+
when args[?E] then edit_files grepper.pattern, grepper.paths, pick: true
|
157
|
+
when args[?e] then edit_files grepper.pattern, grepper.paths
|
158
|
+
when args[?l] then puts grepper.paths
|
158
159
|
end
|
data/bin/serve
CHANGED
File without changes
|
data/bin/ssh-tunnel
CHANGED
@@ -49,9 +49,9 @@ config = Utils::ConfigFile.new
|
|
49
49
|
arguments = ARGV
|
50
50
|
opts = go 't:n:C:m:e:hNTd', arguments
|
51
51
|
|
52
|
-
$DEBUG = opts[
|
52
|
+
$DEBUG = opts[?d]
|
53
53
|
|
54
|
-
if opts[
|
54
|
+
if opts[?T]
|
55
55
|
tunnels = PSTree.new.select { |pt| pt.user == ENV['USER'] && pt.cmd =~ /ssh.*-L/ }
|
56
56
|
tunnels.map! do |pt|
|
57
57
|
cmd = pt.cmd
|
@@ -63,7 +63,7 @@ if opts['T']
|
|
63
63
|
exit 0
|
64
64
|
end
|
65
65
|
|
66
|
-
case opts[
|
66
|
+
case opts[?C]
|
67
67
|
when 'ssh-default'
|
68
68
|
STDOUT.puts SSH_CONFIG; exit
|
69
69
|
when 'rc-default'
|
@@ -75,9 +75,9 @@ end
|
|
75
75
|
|
76
76
|
config.configure_from_paths
|
77
77
|
|
78
|
-
usage if opts[
|
78
|
+
usage if opts[?h] or arguments.size != 1
|
79
79
|
|
80
|
-
if multiplexer = opts[
|
80
|
+
if multiplexer = opts[?m]
|
81
81
|
config.ssh_tunnel.terminal_multiplexer = multiplexer
|
82
82
|
end
|
83
83
|
|
@@ -96,11 +96,11 @@ ssh_dir = File.expand_path('~/.ssh')
|
|
96
96
|
mkdir_p ssh_dir
|
97
97
|
sock_file = "#{ssh_dir}/#{user}@#{remote}:#{rport}.sock"
|
98
98
|
if env_user = ENV['USER']
|
99
|
-
opts[
|
99
|
+
opts[?n] ||= env_user
|
100
100
|
else
|
101
|
-
opts[
|
101
|
+
opts[?n] ||= 'session'
|
102
102
|
end
|
103
|
-
if opts[
|
103
|
+
if opts[?N]
|
104
104
|
cmd "ssh -p #{rport} -S #{sock_file} #{user}@#{remote} #{config.ssh_tunnel.multiplexer_list}"
|
105
105
|
else
|
106
106
|
File.exist? sock_file and rm_f sock_file
|
@@ -109,7 +109,7 @@ else
|
|
109
109
|
env << "COPY_REMOTE_HOST_PORT='#{t.bind_address}:#{t.port}'"
|
110
110
|
tunnels << "-R #{t}"
|
111
111
|
end
|
112
|
-
opts[
|
112
|
+
opts[?t].to_a.each do |tunnel_spec|
|
113
113
|
if arg = Utils::SshTunnelSpecification.new(tunnel_spec).valid?
|
114
114
|
tunnels << "-L #{arg}"
|
115
115
|
else
|
@@ -119,12 +119,12 @@ else
|
|
119
119
|
config.ssh_tunnel.env.each do |var, val|
|
120
120
|
ENV[var.to_s] = val.to_s
|
121
121
|
end
|
122
|
-
opts[
|
122
|
+
opts[?e].to_a.each do |setting|
|
123
123
|
var, val = setting.split('=', 2)
|
124
124
|
ENV[var] = val
|
125
125
|
end
|
126
126
|
cmd "ssh -p #{rport} -Mt "\
|
127
127
|
"-S #{sock_file} #{user}@#{remote} #{tunnels * ' '} "\
|
128
|
-
"'env #{env * ' '} #{config.ssh_tunnel.multiplexer_new(opts[
|
129
|
-
"#{config.ssh_tunnel.multiplexer_attach(opts[
|
128
|
+
"'env #{env * ' '} #{config.ssh_tunnel.multiplexer_new(opts[?n])} || "\
|
129
|
+
"#{config.ssh_tunnel.multiplexer_attach(opts[?n])}'"
|
130
130
|
end
|
data/bin/strip_spaces
CHANGED
@@ -21,6 +21,7 @@ stripped.
|
|
21
21
|
|
22
22
|
Options are
|
23
23
|
|
24
|
+
-t COLUMNS turn tabs into COLUMNS spaces
|
24
25
|
-I SUFFIXES list of suffixes
|
25
26
|
-h display this help
|
26
27
|
|
@@ -29,14 +30,14 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
29
30
|
exit 1
|
30
31
|
end
|
31
32
|
|
32
|
-
args = go 'I:h'
|
33
|
-
args[
|
33
|
+
args = go 'I:t:h'
|
34
|
+
args[?h] and usage
|
34
35
|
|
35
36
|
unless ARGV.empty?
|
36
37
|
paths = ARGV.map { |p| File.expand_path(p) }
|
37
38
|
end
|
38
39
|
|
39
|
-
suffix = args[
|
40
|
+
suffix = args[?I].ask_and_send(:split, /[\s,]+/).to_a
|
40
41
|
|
41
42
|
config = Utils::ConfigFile.new
|
42
43
|
config.configure_from_paths
|
@@ -52,12 +53,15 @@ if paths
|
|
52
53
|
s.file? or next
|
53
54
|
config.strip_spaces.skip?(bn) and next
|
54
55
|
File.ascii?(filename) or next
|
55
|
-
STDOUT.puts "Stripping spaces from #{filename.inspect}."
|
56
|
+
STDOUT.puts "Stripping spaces/tabs from #{filename.inspect}."
|
56
57
|
secure_write(filename) do |output|
|
57
58
|
File.open(filename) do |file|
|
58
59
|
old_mode = file.stat.mode
|
59
60
|
file.each do |line|
|
60
61
|
line.gsub!(/[ \t\v]+$/, '')
|
62
|
+
if tabs = args[?t]
|
63
|
+
line.gsub!(/\t/, ' ' * Integer(tabs))
|
64
|
+
end
|
61
65
|
output.write line
|
62
66
|
end
|
63
67
|
File.chmod old_mode, output.path
|
data/lib/utils/config_file.rb
CHANGED
data/lib/utils/finder.rb
CHANGED
@@ -15,11 +15,11 @@ class Utils::Finder
|
|
15
15
|
@roots = discover_roots(opts[:roots])
|
16
16
|
@config = opts[:config] || Utils::ConfigFile.new
|
17
17
|
pattern_opts = opts.subhash(:pattern) | {
|
18
|
-
:cset => @args[
|
18
|
+
:cset => @args[?a],
|
19
19
|
:icase => @args.fetch('i', true),
|
20
20
|
}
|
21
|
-
@binary = @args[
|
22
|
-
@pattern = @args[
|
21
|
+
@binary = @args[?b]
|
22
|
+
@pattern = @args[?r] ?
|
23
23
|
RegexpPattern.new(pattern_opts) :
|
24
24
|
FuzzyPattern.new(pattern_opts)
|
25
25
|
@paths = []
|
@@ -44,16 +44,16 @@ class Utils::Finder
|
|
44
44
|
|
45
45
|
def search
|
46
46
|
paths = []
|
47
|
-
suffixes = @args[
|
47
|
+
suffixes = @args[?I].ask_and_send(:split, /[\s,]+/).to_a
|
48
48
|
find(*(@roots + [ { :suffix => suffixes } ])) do |filename|
|
49
49
|
begin
|
50
50
|
bn, s = filename.pathname.basename, filename.stat
|
51
51
|
if !s || s.directory? && @config.discover.prune?(bn)
|
52
|
-
@args[
|
52
|
+
@args[?v] and warn "Pruning #{filename.inspect}."
|
53
53
|
prune
|
54
54
|
end
|
55
55
|
if s.file? && @config.discover.skip?(bn)
|
56
|
-
@args[
|
56
|
+
@args[?v] and warn "Skipping #{filename.inspect}."
|
57
57
|
next
|
58
58
|
end
|
59
59
|
paths << filename
|
@@ -62,7 +62,7 @@ class Utils::Finder
|
|
62
62
|
paths.uniq!
|
63
63
|
paths.map! { |p| a = File.split(p) ; a.unshift(p) ; a }
|
64
64
|
paths = paths.map! do |path, dir, file|
|
65
|
-
if do_match = attempt_match?(path) and @args[
|
65
|
+
if do_match = attempt_match?(path) and @args[?v]
|
66
66
|
warn "Attempt match of #{path.inspect}"
|
67
67
|
end
|
68
68
|
if do_match and match = @pattern.match(path)
|
data/lib/utils/grepper.rb
CHANGED
@@ -42,22 +42,22 @@ class Utils::Grepper
|
|
42
42
|
end
|
43
43
|
@paths = []
|
44
44
|
pattern_opts = opts.subhash(:pattern) | {
|
45
|
-
:cset => @args[
|
46
|
-
:icase => @args[
|
45
|
+
:cset => @args[?a],
|
46
|
+
:icase => @args[?i],
|
47
47
|
}
|
48
|
-
@pattern = @args[
|
48
|
+
@pattern = @args[?R] ?
|
49
49
|
FuzzyPattern.new(pattern_opts) :
|
50
50
|
RegexpPattern.new(pattern_opts)
|
51
51
|
@name_pattern =
|
52
|
-
if name_pattern = @args[
|
52
|
+
if name_pattern = @args[?N]
|
53
53
|
RegexpPattern.new(:pattern => name_pattern)
|
54
|
-
elsif name_pattern = @args[
|
54
|
+
elsif name_pattern = @args[?n]
|
55
55
|
FuzzyPattern.new(:pattern => name_pattern)
|
56
56
|
end
|
57
57
|
@skip_pattern =
|
58
|
-
if skip_pattern = @args[
|
58
|
+
if skip_pattern = @args[?S]
|
59
59
|
RegexpPattern.new(:pattern => skip_pattern)
|
60
|
-
elsif skip_pattern = @args[
|
60
|
+
elsif skip_pattern = @args[?s]
|
61
61
|
FuzzyPattern.new(:pattern => skip_pattern)
|
62
62
|
end
|
63
63
|
end
|
@@ -71,40 +71,40 @@ class Utils::Grepper
|
|
71
71
|
@output = []
|
72
72
|
bn, s = File.basename(filename), File.stat(filename)
|
73
73
|
if !s || s.directory? && @config.search.prune?(bn)
|
74
|
-
@args[
|
74
|
+
@args[?v] and warn "Pruning #{filename.inspect}."
|
75
75
|
prune
|
76
76
|
end
|
77
77
|
if s.file? && !@config.search.skip?(bn) &&
|
78
78
|
(!@name_pattern || @name_pattern.match(bn))
|
79
79
|
then
|
80
|
-
File.open(filename, 'rb') do |file|
|
81
|
-
if file.binary? != true
|
82
|
-
@args[
|
83
|
-
if @args[
|
80
|
+
File.open(filename, 'rb', encoding: Encoding::UTF_8) do |file|
|
81
|
+
if @args[?b] && !@args[?g] || file.binary? != true
|
82
|
+
@args[?v] and warn "Matching #{filename.inspect}."
|
83
|
+
if @args[?f]
|
84
84
|
@output << filename
|
85
85
|
else
|
86
86
|
match_lines file
|
87
87
|
end
|
88
88
|
else
|
89
|
-
@args[
|
89
|
+
@args[?v] and warn "Skipping binary file #{filename.inspect}."
|
90
90
|
end
|
91
91
|
end
|
92
92
|
else
|
93
|
-
@args[
|
93
|
+
@args[?v] and warn "Skipping #{filename.inspect}."
|
94
94
|
end
|
95
95
|
unless @output.empty?
|
96
96
|
case
|
97
|
-
when @args[
|
97
|
+
when @args[?g]
|
98
98
|
@output.uniq!
|
99
99
|
@output.each do |l|
|
100
100
|
blamer = LineBlamer.for_line(l)
|
101
101
|
if blame = blamer.perform
|
102
102
|
blame.sub!(/^[0-9a-f^]+/) { Term::ANSIColor.yellow($&) }
|
103
103
|
blame.sub!(/\(([^)]+)\)/) { "(#{Term::ANSIColor.red($1)})" }
|
104
|
-
puts "#{
|
104
|
+
puts "#{blame.chomp} #{Term::ANSIColor.blue(l)}"
|
105
105
|
end
|
106
106
|
end
|
107
|
-
when @args[
|
107
|
+
when @args[?l], @args[?e], @args[?E], @args[?r]
|
108
108
|
@output.uniq!
|
109
109
|
@paths.concat @output
|
110
110
|
else
|
@@ -122,21 +122,21 @@ class Utils::Grepper
|
|
122
122
|
line[m.begin(0)...m.end(0)] = black on_white m[0]
|
123
123
|
@queue and @queue << line
|
124
124
|
case
|
125
|
-
when @args[
|
125
|
+
when @args[?l]
|
126
126
|
@output << @filename
|
127
|
-
when @args[
|
127
|
+
when @args[?L], @args[?r], @args[?g]
|
128
128
|
@output << "#{@filename}:#{file.lineno}"
|
129
|
-
when @args[
|
129
|
+
when @args[?e], @args[?E]
|
130
130
|
@output << "#{@filename}:#{file.lineno}"
|
131
131
|
break
|
132
132
|
else
|
133
133
|
@output << red("#{@filename}:#{file.lineno}")
|
134
|
-
if @args[
|
134
|
+
if @args[?B] or @args[?C]
|
135
135
|
@output.concat @queue.data
|
136
136
|
else
|
137
137
|
@output << line
|
138
138
|
end
|
139
|
-
if @args[
|
139
|
+
if @args[?A] or @args[?C]
|
140
140
|
where = file.tell
|
141
141
|
lineno = file.lineno
|
142
142
|
@queue.max_size.times do
|
@@ -156,7 +156,7 @@ class Utils::Grepper
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def search
|
159
|
-
suffixes = @args[
|
159
|
+
suffixes = @args[?I].ask_and_send(:split, /[\s,]+/).to_a
|
160
160
|
find(*(@roots + [ { :suffix => suffixes } ])) do |filename|
|
161
161
|
match(filename)
|
162
162
|
end
|
data/lib/utils/line_blamer.rb
CHANGED
@@ -8,6 +8,14 @@ module Utils
|
|
8
8
|
location = line.source_location and new *location
|
9
9
|
end
|
10
10
|
|
11
|
+
def self.blame(line)
|
12
|
+
blamer = for_line(line)
|
13
|
+
if blame = blamer.perform
|
14
|
+
blame.sub!(/^[0-9a-f^]+/) { Term::ANSIColor.yellow($&) }
|
15
|
+
blame.sub!(/\(([^)]+)\)/) { "(#{Term::ANSIColor.red($1)})" }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
11
19
|
def perform(options = '')
|
12
20
|
`git 2>/dev/null blame #{options} -L #@lineno,+1 "#@file"`.full?
|
13
21
|
end
|
data/lib/utils/patterns.rb
CHANGED
data/lib/utils/probe_server.rb
CHANGED
data/lib/utils/version.rb
CHANGED
data/utils.gemspec
CHANGED
@@ -1,45 +1,45 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: utils 0.
|
2
|
+
# stub: utils 0.9.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name = "utils"
|
6
|
-
s.version = "0.
|
5
|
+
s.name = "utils".freeze
|
6
|
+
s.version = "0.9.0"
|
7
7
|
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.require_paths = ["lib"]
|
10
|
-
s.authors = ["Florian Frank"]
|
11
|
-
s.date = "
|
12
|
-
s.description = "This ruby gem provides some useful command line utilities"
|
13
|
-
s.email = "flori@ping.de"
|
14
|
-
s.executables = ["blameline", "brakeman2err", "chroot-exec", "chroot-libs", "classify", "create_tags", "dialog-pick", "discover", "edit", "edit_wait", "enum", "errf", "git-empty", "irb_connect", "json_check", "long_lines", "myex", "number_files", "on_change", "path", "probe", "remote_copy", "rssr", "same_files", "search", "sedit", "serve", "ssh-tunnel", "strip_spaces", "unquarantine_apps", "untest", "utils-utilsrc", "vacuum_firefox_sqlite", "xmp"]
|
15
|
-
s.extra_rdoc_files = ["README.md", "lib/utils.rb", "lib/utils/config_file.rb", "lib/utils/editor.rb", "lib/utils/file_xt.rb", "lib/utils/finder.rb", "lib/utils/grepper.rb", "lib/utils/irb.rb", "lib/utils/irb/service.rb", "lib/utils/line_blamer.rb", "lib/utils/line_formatter.rb", "lib/utils/md5.rb", "lib/utils/patterns.rb", "lib/utils/probe_server.rb", "lib/utils/ssh_tunnel_specification.rb", "lib/utils/version.rb", "lib/utils/xt/source_location_extension.rb"]
|
16
|
-
s.files = [".gitignore", "COPYING", "Gemfile", "README.md", "Rakefile", "VERSION", "bin/blameline", "bin/brakeman2err", "bin/chroot-exec", "bin/chroot-libs", "bin/classify", "bin/create_tags", "bin/dialog-pick", "bin/discover", "bin/edit", "bin/edit_wait", "bin/enum", "bin/errf", "bin/git-empty", "bin/irb_connect", "bin/json_check", "bin/long_lines", "bin/myex", "bin/number_files", "bin/on_change", "bin/path", "bin/probe", "bin/remote_copy", "bin/rssr", "bin/same_files", "bin/search", "bin/sedit", "bin/serve", "bin/ssh-tunnel", "bin/strip_spaces", "bin/unquarantine_apps", "bin/untest", "bin/utils-utilsrc", "bin/vacuum_firefox_sqlite", "bin/xmp", "lib/utils.rb", "lib/utils/config_file.rb", "lib/utils/editor.rb", "lib/utils/file_xt.rb", "lib/utils/finder.rb", "lib/utils/grepper.rb", "lib/utils/irb.rb", "lib/utils/irb/service.rb", "lib/utils/line_blamer.rb", "lib/utils/line_formatter.rb", "lib/utils/md5.rb", "lib/utils/patterns.rb", "lib/utils/probe_server.rb", "lib/utils/ssh_tunnel_specification.rb", "lib/utils/version.rb", "lib/utils/xt/source_location_extension.rb", "utils.gemspec"
|
17
|
-
s.homepage = "http://github.com/flori/utils"
|
18
|
-
s.rdoc_options = ["--title", "Utils - Some useful command line utilities", "--main", "README.md"]
|
19
|
-
s.rubygems_version = "2.
|
20
|
-
s.summary = "Some useful command line utilities"
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
|
+
s.authors = ["Florian Frank".freeze]
|
11
|
+
s.date = "2017-02-07"
|
12
|
+
s.description = "This ruby gem provides some useful command line utilities".freeze
|
13
|
+
s.email = "flori@ping.de".freeze
|
14
|
+
s.executables = ["ascii7".freeze, "blameline".freeze, "brakeman2err".freeze, "chroot-exec".freeze, "chroot-libs".freeze, "classify".freeze, "create_tags".freeze, "dialog-pick".freeze, "discover".freeze, "edit".freeze, "edit_wait".freeze, "enum".freeze, "errf".freeze, "git-empty".freeze, "git-versions".freeze, "irb_connect".freeze, "json_check".freeze, "long_lines".freeze, "myex".freeze, "number_files".freeze, "on_change".freeze, "path".freeze, "probe".freeze, "remote_copy".freeze, "rssr".freeze, "same_files".freeze, "search".freeze, "sedit".freeze, "serve".freeze, "ssh-tunnel".freeze, "strip_spaces".freeze, "unquarantine_apps".freeze, "untest".freeze, "utils-utilsrc".freeze, "vacuum_firefox_sqlite".freeze, "xmp".freeze]
|
15
|
+
s.extra_rdoc_files = ["README.md".freeze, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/file_xt.rb".freeze, "lib/utils/finder.rb".freeze, "lib/utils/grepper.rb".freeze, "lib/utils/irb.rb".freeze, "lib/utils/irb/service.rb".freeze, "lib/utils/line_blamer.rb".freeze, "lib/utils/line_formatter.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/patterns.rb".freeze, "lib/utils/probe_server.rb".freeze, "lib/utils/ssh_tunnel_specification.rb".freeze, "lib/utils/version.rb".freeze, "lib/utils/xt/source_location_extension.rb".freeze]
|
16
|
+
s.files = [".gitignore".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/ascii7".freeze, "bin/blameline".freeze, "bin/brakeman2err".freeze, "bin/chroot-exec".freeze, "bin/chroot-libs".freeze, "bin/classify".freeze, "bin/create_tags".freeze, "bin/dialog-pick".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".freeze, "bin/errf".freeze, "bin/git-empty".freeze, "bin/git-versions".freeze, "bin/irb_connect".freeze, "bin/json_check".freeze, "bin/long_lines".freeze, "bin/myex".freeze, "bin/number_files".freeze, "bin/on_change".freeze, "bin/path".freeze, "bin/probe".freeze, "bin/remote_copy".freeze, "bin/rssr".freeze, "bin/same_files".freeze, "bin/search".freeze, "bin/sedit".freeze, "bin/serve".freeze, "bin/ssh-tunnel".freeze, "bin/strip_spaces".freeze, "bin/unquarantine_apps".freeze, "bin/untest".freeze, "bin/utils-utilsrc".freeze, "bin/vacuum_firefox_sqlite".freeze, "bin/xmp".freeze, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/file_xt.rb".freeze, "lib/utils/finder.rb".freeze, "lib/utils/grepper.rb".freeze, "lib/utils/irb.rb".freeze, "lib/utils/irb/service.rb".freeze, "lib/utils/line_blamer.rb".freeze, "lib/utils/line_formatter.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/patterns.rb".freeze, "lib/utils/probe_server.rb".freeze, "lib/utils/ssh_tunnel_specification.rb".freeze, "lib/utils/version.rb".freeze, "lib/utils/xt/source_location_extension.rb".freeze, "utils.gemspec".freeze]
|
17
|
+
s.homepage = "http://github.com/flori/utils".freeze
|
18
|
+
s.rdoc_options = ["--title".freeze, "Utils - Some useful command line utilities".freeze, "--main".freeze, "README.md".freeze]
|
19
|
+
s.rubygems_version = "2.6.8".freeze
|
20
|
+
s.summary = "Some useful command line utilities".freeze
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
s.specification_version = 4
|
24
24
|
|
25
25
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_development_dependency(%q<gem_hadar
|
27
|
-
s.add_runtime_dependency(%q<tins
|
28
|
-
s.add_runtime_dependency(%q<term-ansicolor
|
29
|
-
s.add_runtime_dependency(%q<pstree
|
30
|
-
s.add_runtime_dependency(%q<pry-editline
|
26
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
|
27
|
+
s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.8"])
|
28
|
+
s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.3"])
|
29
|
+
s.add_runtime_dependency(%q<pstree>.freeze, ["~> 0.1"])
|
30
|
+
s.add_runtime_dependency(%q<pry-editline>.freeze, [">= 0"])
|
31
31
|
else
|
32
|
-
s.add_dependency(%q<gem_hadar
|
33
|
-
s.add_dependency(%q<tins
|
34
|
-
s.add_dependency(%q<term-ansicolor
|
35
|
-
s.add_dependency(%q<pstree
|
36
|
-
s.add_dependency(%q<pry-editline
|
32
|
+
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
|
33
|
+
s.add_dependency(%q<tins>.freeze, ["~> 1.8"])
|
34
|
+
s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.3"])
|
35
|
+
s.add_dependency(%q<pstree>.freeze, ["~> 0.1"])
|
36
|
+
s.add_dependency(%q<pry-editline>.freeze, [">= 0"])
|
37
37
|
end
|
38
38
|
else
|
39
|
-
s.add_dependency(%q<gem_hadar
|
40
|
-
s.add_dependency(%q<tins
|
41
|
-
s.add_dependency(%q<term-ansicolor
|
42
|
-
s.add_dependency(%q<pstree
|
43
|
-
s.add_dependency(%q<pry-editline
|
39
|
+
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
|
40
|
+
s.add_dependency(%q<tins>.freeze, ["~> 1.8"])
|
41
|
+
s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.3"])
|
42
|
+
s.add_dependency(%q<pstree>.freeze, ["~> 0.1"])
|
43
|
+
s.add_dependency(%q<pry-editline>.freeze, [">= 0"])
|
44
44
|
end
|
45
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.9.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.9.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tins
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,6 +83,7 @@ dependencies:
|
|
83
83
|
description: This ruby gem provides some useful command line utilities
|
84
84
|
email: flori@ping.de
|
85
85
|
executables:
|
86
|
+
- ascii7
|
86
87
|
- blameline
|
87
88
|
- brakeman2err
|
88
89
|
- chroot-exec
|
@@ -96,6 +97,7 @@ executables:
|
|
96
97
|
- enum
|
97
98
|
- errf
|
98
99
|
- git-empty
|
100
|
+
- git-versions
|
99
101
|
- irb_connect
|
100
102
|
- json_check
|
101
103
|
- long_lines
|
@@ -143,6 +145,7 @@ files:
|
|
143
145
|
- README.md
|
144
146
|
- Rakefile
|
145
147
|
- VERSION
|
148
|
+
- bin/ascii7
|
146
149
|
- bin/blameline
|
147
150
|
- bin/brakeman2err
|
148
151
|
- bin/chroot-exec
|
@@ -156,6 +159,7 @@ files:
|
|
156
159
|
- bin/enum
|
157
160
|
- bin/errf
|
158
161
|
- bin/git-empty
|
162
|
+
- bin/git-versions
|
159
163
|
- bin/irb_connect
|
160
164
|
- bin/json_check
|
161
165
|
- bin/long_lines
|
@@ -194,7 +198,6 @@ files:
|
|
194
198
|
- lib/utils/version.rb
|
195
199
|
- lib/utils/xt/source_location_extension.rb
|
196
200
|
- utils.gemspec
|
197
|
-
- 'utils.gemspec '
|
198
201
|
homepage: http://github.com/flori/utils
|
199
202
|
licenses: []
|
200
203
|
metadata: {}
|
@@ -218,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
221
|
version: '0'
|
219
222
|
requirements: []
|
220
223
|
rubyforge_project:
|
221
|
-
rubygems_version: 2.
|
224
|
+
rubygems_version: 2.6.8
|
222
225
|
signing_key:
|
223
226
|
specification_version: 4
|
224
227
|
summary: Some useful command line utilities
|
data/utils.gemspec
DELETED
File without changes
|