utils 0.22.1 → 0.23.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/irb_connect +3 -4
- data/bin/path +1 -1
- data/lib/utils/version.rb +1 -1
- data/utils.gemspec +6 -6
- metadata +6 -30
- data/bin/brakeman2err +0 -33
- data/bin/chroot-exec +0 -15
- data/bin/chroot-libs +0 -26
- data/bin/dialog-pick +0 -11
- data/bin/errf +0 -32
- data/bin/remote_copy +0 -13
- data/bin/rssr +0 -37
- data/bin/same_files +0 -38
- data/bin/tmproc +0 -21
- data/bin/unquarantine_apps +0 -13
- data/bin/vacuum_firefox_sqlite +0 -23
- data/bin/xmp +0 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c2e2fbdc130decfb576faf32be9adbc99de6517bd79b752408f6605fc4a9d36
|
4
|
+
data.tar.gz: a6d5d6857dd83b51cf9b33dea7dc1bc2d7be22531eb7c25628d4884bb0ef9f5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '080b67ed1a27784fbe1368ebf3cbad9865872ccb63b5ce84653dc7fbf08ca31b20e49a19fbaede5f00b0a2dc8a9245b2dd6d5c7b58d5970f5babaa04fa4f8c85'
|
7
|
+
data.tar.gz: fd80c9b73e39b2233ea9e36ca2efeb530064c2cc5452098318f9d8f1066e0aeaf2d829c4b099ed091f7a2f901506342fe063cd0b5b371bc82fea6a983b41dbad
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.23.0
|
data/bin/irb_connect
CHANGED
@@ -14,8 +14,7 @@ Options are
|
|
14
14
|
|
15
15
|
-e CODE CODE is execute on the remote irb
|
16
16
|
-l PATH load file PATH into remote irb context
|
17
|
-
-
|
18
|
-
-p PORTNUMBER number of the remote port (defaults to #{Utils::IRB::Service.port})
|
17
|
+
-u URL druby url to connect to
|
19
18
|
-h display this help
|
20
19
|
|
21
20
|
Version is #{File.basename($0)} #{Utils::VERSION}.
|
@@ -24,10 +23,10 @@ Version is #{File.basename($0)} #{Utils::VERSION}.
|
|
24
23
|
end
|
25
24
|
|
26
25
|
|
27
|
-
$opts = go 'e:
|
26
|
+
$opts = go 'e:u:l:h'
|
28
27
|
$opts[?h] and usage
|
29
28
|
|
30
|
-
proxy = Utils::IRB::Service.connect($opts[?
|
29
|
+
proxy = Utils::IRB::Service.connect($opts[?u])
|
31
30
|
case
|
32
31
|
when load_path = $opts[?l]
|
33
32
|
proxy.load(load_path)
|
data/bin/path
CHANGED
data/lib/utils/version.rb
CHANGED
data/utils.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: utils 0.
|
2
|
+
# stub: utils 0.23.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "utils".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.23.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2020-
|
11
|
+
s.date = "2020-09-25"
|
12
12
|
s.description = "This ruby gem provides some useful command line utilities".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
|
-
s.executables = ["discover".freeze, "classify".freeze, "sedit".freeze, "irb_connect".freeze, "ascii7".freeze, "path".freeze, "enum".freeze, "
|
14
|
+
s.executables = ["discover".freeze, "classify".freeze, "sedit".freeze, "irb_connect".freeze, "ascii7".freeze, "path".freeze, "enum".freeze, "ssh-tunnel".freeze, "search".freeze, "edit".freeze, "json_check".freeze, "edit_wait".freeze, "untest".freeze, "blameline".freeze, "git-empty".freeze, "create_cstags".freeze, "git-versions".freeze, "strip_spaces".freeze, "number_files".freeze, "serve".freeze, "vcf2alias".freeze, "on_change".freeze, "utils-utilsrc".freeze, "myex".freeze, "long_lines".freeze, "probe".freeze, "create_tags".freeze]
|
15
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/
|
16
|
+
s.files = [".gitignore".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/ascii7".freeze, "bin/blameline".freeze, "bin/classify".freeze, "bin/create_cstags".freeze, "bin/create_tags".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".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/search".freeze, "bin/sedit".freeze, "bin/serve".freeze, "bin/ssh-tunnel".freeze, "bin/strip_spaces".freeze, "bin/untest".freeze, "bin/utils-utilsrc".freeze, "bin/vcf2alias".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
17
|
s.homepage = "http://github.com/flori/utils".freeze
|
18
18
|
s.rdoc_options = ["--title".freeze, "Utils - Some useful command line utilities".freeze, "--main".freeze, "README.md".freeze]
|
19
|
-
s.rubygems_version = "3.1.
|
19
|
+
s.rubygems_version = "3.1.4".freeze
|
20
20
|
s.summary = "Some useful command line utilities".freeze
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
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.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -118,36 +118,24 @@ executables:
|
|
118
118
|
- ascii7
|
119
119
|
- path
|
120
120
|
- enum
|
121
|
-
- unquarantine_apps
|
122
121
|
- ssh-tunnel
|
123
|
-
- xmp
|
124
|
-
- brakeman2err
|
125
122
|
- search
|
126
|
-
- chroot-exec
|
127
123
|
- edit
|
128
|
-
- tmproc
|
129
124
|
- json_check
|
130
125
|
- edit_wait
|
131
|
-
- errf
|
132
126
|
- untest
|
133
127
|
- blameline
|
134
|
-
- remote_copy
|
135
128
|
- git-empty
|
136
129
|
- create_cstags
|
137
|
-
- vacuum_firefox_sqlite
|
138
|
-
- same_files
|
139
|
-
- chroot-libs
|
140
130
|
- git-versions
|
141
131
|
- strip_spaces
|
142
132
|
- number_files
|
143
|
-
- rssr
|
144
133
|
- serve
|
145
134
|
- vcf2alias
|
146
135
|
- on_change
|
147
136
|
- utils-utilsrc
|
148
137
|
- myex
|
149
138
|
- long_lines
|
150
|
-
- dialog-pick
|
151
139
|
- probe
|
152
140
|
- create_tags
|
153
141
|
extensions: []
|
@@ -178,18 +166,13 @@ files:
|
|
178
166
|
- VERSION
|
179
167
|
- bin/ascii7
|
180
168
|
- bin/blameline
|
181
|
-
- bin/brakeman2err
|
182
|
-
- bin/chroot-exec
|
183
|
-
- bin/chroot-libs
|
184
169
|
- bin/classify
|
185
170
|
- bin/create_cstags
|
186
171
|
- bin/create_tags
|
187
|
-
- bin/dialog-pick
|
188
172
|
- bin/discover
|
189
173
|
- bin/edit
|
190
174
|
- bin/edit_wait
|
191
175
|
- bin/enum
|
192
|
-
- bin/errf
|
193
176
|
- bin/git-empty
|
194
177
|
- bin/git-versions
|
195
178
|
- bin/irb_connect
|
@@ -200,21 +183,14 @@ files:
|
|
200
183
|
- bin/on_change
|
201
184
|
- bin/path
|
202
185
|
- bin/probe
|
203
|
-
- bin/remote_copy
|
204
|
-
- bin/rssr
|
205
|
-
- bin/same_files
|
206
186
|
- bin/search
|
207
187
|
- bin/sedit
|
208
188
|
- bin/serve
|
209
189
|
- bin/ssh-tunnel
|
210
190
|
- bin/strip_spaces
|
211
|
-
- bin/tmproc
|
212
|
-
- bin/unquarantine_apps
|
213
191
|
- bin/untest
|
214
192
|
- bin/utils-utilsrc
|
215
|
-
- bin/vacuum_firefox_sqlite
|
216
193
|
- bin/vcf2alias
|
217
|
-
- bin/xmp
|
218
194
|
- lib/utils.rb
|
219
195
|
- lib/utils/config_file.rb
|
220
196
|
- lib/utils/editor.rb
|
@@ -235,7 +211,7 @@ files:
|
|
235
211
|
homepage: http://github.com/flori/utils
|
236
212
|
licenses: []
|
237
213
|
metadata: {}
|
238
|
-
post_install_message:
|
214
|
+
post_install_message:
|
239
215
|
rdoc_options:
|
240
216
|
- "--title"
|
241
217
|
- Utils - Some useful command line utilities
|
@@ -254,8 +230,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
230
|
- !ruby/object:Gem::Version
|
255
231
|
version: '0'
|
256
232
|
requirements: []
|
257
|
-
rubygems_version: 3.1.
|
258
|
-
signing_key:
|
233
|
+
rubygems_version: 3.1.4
|
234
|
+
signing_key:
|
259
235
|
specification_version: 4
|
260
236
|
summary: Some useful command line utilities
|
261
237
|
test_files: []
|
data/bin/brakeman2err
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'utils'
|
4
|
-
require 'json'
|
5
|
-
require 'tins/xt'
|
6
|
-
require 'tins/go'
|
7
|
-
include Tins::GO
|
8
|
-
require 'infobar'
|
9
|
-
|
10
|
-
opts = go 'ce'
|
11
|
-
if opts[?c]
|
12
|
-
brakeman = `bundle exec which brakeman`.full? or fail "cannot find brakeman in path"
|
13
|
-
Infobar.busy(label: 'Computing brakeman results') do
|
14
|
-
system 'bundle exec brakeman -q -i config/brakeman.yml -o .brakeman.json 2>/dev/null' or fail "calling brakeman failed"
|
15
|
-
end
|
16
|
-
else
|
17
|
-
results = JSON File.read('.brakeman.json'), object_class: JSON::GenericObject
|
18
|
-
if opts[?e]
|
19
|
-
puts "Found #{results.errors.size} errors and #{results.warnings.size} warnings.",
|
20
|
-
"_" * 80
|
21
|
-
for error in results.errors
|
22
|
-
puts error.location, "Error #{error.error.inspect}"
|
23
|
-
end
|
24
|
-
else
|
25
|
-
puts "Found #{results.warnings.size} warnings.", "_" * 80
|
26
|
-
end
|
27
|
-
for warning in results.warnings
|
28
|
-
puts "#{warning.file}:#{warning.line}",
|
29
|
-
"#{warning.warning_type} (#{warning.confidence}) #{warning.message.inspect}",
|
30
|
-
warning.code, "See: #{warning.link}"
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
data/bin/chroot-exec
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils
|
5
|
-
|
6
|
-
dir = ARGV.shift or fail 'require directory to chroot into'
|
7
|
-
prg = ARGV.shift || '/bin/bash'
|
8
|
-
system "mount -t proc none #{dir}/proc"
|
9
|
-
system "mount -o bind /dev #{dir}/dev"
|
10
|
-
File.exist?(resolv = "#{dir}/etc/resolv.conf") and
|
11
|
-
cp resolv, resolv + '.bak'
|
12
|
-
cp '/etc/resolv.conf', resolv
|
13
|
-
system "chroot #{dir} #{prg}"
|
14
|
-
system "umount #{dir}/proc"
|
15
|
-
system "umount #{dir}/dev"
|
data/bin/chroot-libs
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils::Verbose
|
5
|
-
|
6
|
-
msg = "Usage: #$0 EXECUTABLE DIR [LIB ..]"
|
7
|
-
executable = ARGV.shift or fail msg
|
8
|
-
dir = ARGV.shift or fail msg
|
9
|
-
dir = File.expand_path dir
|
10
|
-
mkdir_p dir
|
11
|
-
|
12
|
-
unless executable.start_with? '/'
|
13
|
-
executable = `which #{executable}`.chomp
|
14
|
-
end
|
15
|
-
libs = `ldd #{executable}`.gsub(/^(?:.*?\s+=>\s+|\s+)(.*?)\(.*/, '\1').lines.grep(/\S/).map { |x| x.strip }
|
16
|
-
libs.concat ARGV
|
17
|
-
cd dir do
|
18
|
-
cp executable, File.basename(executable)
|
19
|
-
for l in libs
|
20
|
-
begin
|
21
|
-
cp l, File.basename(l)
|
22
|
-
rescue Errno::ENOENT => e
|
23
|
-
warn "Caught #{e.class}: #{e}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/bin/dialog-pick
DELETED
data/bin/errf
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'term/ansicolor'
|
4
|
-
|
5
|
-
class String
|
6
|
-
include Term::ANSIColor
|
7
|
-
end
|
8
|
-
|
9
|
-
file = ARGV.shift
|
10
|
-
name = ARGV.shift
|
11
|
-
ENV['RUBYOPT'] = "#{ENV['RUBYOPT']} -Iext:lib:test:tests"
|
12
|
-
|
13
|
-
STDOUT.sync = true
|
14
|
-
begin
|
15
|
-
output =
|
16
|
-
if name
|
17
|
-
IO.popen("testrb -p '' -n #{name} #{file}", 'r')
|
18
|
-
else
|
19
|
-
IO.popen("testrb -p '' #{file}", 'r')
|
20
|
-
end
|
21
|
-
until output.eof?
|
22
|
-
line = output.readline.uncolored
|
23
|
-
new_line = line.chomp
|
24
|
-
if new_line.sub!(%r(^(?:\s|[\/\[])*([^:]+):(\d+):(.*))) { "#$1:#$2:#$3" }
|
25
|
-
puts new_line
|
26
|
-
else
|
27
|
-
puts line
|
28
|
-
end
|
29
|
-
end
|
30
|
-
ensure
|
31
|
-
output and output.close
|
32
|
-
end
|
data/bin/remote_copy
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'socket'
|
4
|
-
|
5
|
-
copy_remote_host_port = ENV['COPY_REMOTE_HOST_PORT'] and
|
6
|
-
copy_remote_host_port =~ /\A([^:]+):([^:]+)\z/ or
|
7
|
-
fail "environment variable COPY_REMOTE_HOST_PORT of form host:port required"
|
8
|
-
copy_remote_host, copy_remote_port = $1, $2
|
9
|
-
|
10
|
-
clipboard = TCPSocket.new(copy_remote_host, copy_remote_port)
|
11
|
-
until STDIN.eof?
|
12
|
-
clipboard.write STDIN.read(1 << 16)
|
13
|
-
end
|
data/bin/rssr
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rss'
|
4
|
-
require 'tins'
|
5
|
-
require 'open-uri'
|
6
|
-
require 'term/ansicolor'
|
7
|
-
|
8
|
-
|
9
|
-
class String
|
10
|
-
include Term::ANSIColor
|
11
|
-
|
12
|
-
def wrap(cols: Tins::Terminal.cols)
|
13
|
-
split(?\n).each do |line|
|
14
|
-
line.size > cols and line.gsub!(/(.{1,#{cols}})(\s+|$)/, "\\1\n")
|
15
|
-
line.strip!
|
16
|
-
end * ?\n
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
IO.popen(ENV.fetch('PAGER', `which less`.chomp << ' -r'), 'w') do |pager|
|
21
|
-
url = ARGV.shift
|
22
|
-
open(url) do |rss|
|
23
|
-
feed = RSS::Parser.parse(rss)
|
24
|
-
pager.puts "Feed: #{feed.channel.title}",
|
25
|
-
?– * Tins::Terminal.cols
|
26
|
-
feed.items.sort_by { |item| -item.date.to_f }.each do |item|
|
27
|
-
pager.puts(
|
28
|
-
"Title: #{item.title.bright_blue}",
|
29
|
-
"Link: #{item.link.red}",
|
30
|
-
"Date: #{item.date.strftime('%FT%T%z')}",
|
31
|
-
"",
|
32
|
-
item.description.wrap.chomp.white,
|
33
|
-
?– * Tins::Terminal.cols
|
34
|
-
)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/bin/same_files
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'utils'
|
4
|
-
require 'tins/find'
|
5
|
-
include Utils::MD5
|
6
|
-
|
7
|
-
def find_same(*paths)
|
8
|
-
files = Hash.new { |h,k| h[k] = {} }
|
9
|
-
Tins::Find.find(*paths) do |filename|
|
10
|
-
file_stat = File.stat(filename)
|
11
|
-
if file_stat.file?
|
12
|
-
size = file_stat.size
|
13
|
-
$DEBUG and warn "Encountered '#{filename}' (#{size} bytes)."
|
14
|
-
files[size][filename] = true
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
files = files.inject({}) do |h, (_,fs)|
|
19
|
-
keys = fs.keys
|
20
|
-
if keys.size >= 2
|
21
|
-
keys.each { |k| h[k] = true }
|
22
|
-
end
|
23
|
-
h
|
24
|
-
end.keys
|
25
|
-
|
26
|
-
md5s = Hash.new { |h,k| h[k] = [] }
|
27
|
-
for filename in files
|
28
|
-
md5sum = md5 filename
|
29
|
-
md5s[md5sum] << filename
|
30
|
-
end
|
31
|
-
files = md5s.values
|
32
|
-
files.reject! { |fs| fs.size < 2 }
|
33
|
-
files
|
34
|
-
end
|
35
|
-
|
36
|
-
puts find_same(*ARGV).map { |fs| [ fs.size, fs ] }.sort.map { |c, fs|
|
37
|
-
"#{c}\t#{fs.sort.map { |f| "'#{f}'" } * "\t"}"
|
38
|
-
}
|
data/bin/tmproc
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
require 'tins'
|
5
|
-
|
6
|
-
filename = ARGV.shift || 'Procfile'
|
7
|
-
procfile = YAML.load_file(filename)
|
8
|
-
|
9
|
-
unless ENV['TMUX']
|
10
|
-
name = File.basename(Dir.pwd)
|
11
|
-
exec 'tmux', 'new-session', '-s', name, '-n', ?s, '-A', $0, filename
|
12
|
-
end
|
13
|
-
|
14
|
-
tmux_pane = ENV.fetch('TMUX_PANE')
|
15
|
-
lines = Tins::Terminal.lines
|
16
|
-
|
17
|
-
procfile.each_value do |process|
|
18
|
-
system "(tmux select-pane -t #{tmux_pane} \\; split-window -l #{lines / procfile.size} #{process}) &"
|
19
|
-
end
|
20
|
-
|
21
|
-
exec 'tmux', 'new-window', '-n', 'e', 'edit', ?;, 'split-window', '-h', 'bundle', 'exec', 'probe', '-l'
|
data/bin/unquarantine_apps
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils::Verbose
|
5
|
-
|
6
|
-
prefix = ARGV.shift || ''
|
7
|
-
directory = File.join(prefix, 'Applications')
|
8
|
-
if File.directory?(directory)
|
9
|
-
cd directory do
|
10
|
-
STDERR.puts 'xattr -rd com.apple.quarantine'
|
11
|
-
system 'xattr -rd com.apple.quarantine'
|
12
|
-
end
|
13
|
-
end
|
data/bin/vacuum_firefox_sqlite
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils
|
5
|
-
|
6
|
-
case `uname -s`.chomp
|
7
|
-
when 'Darwin'
|
8
|
-
profiles="#{ENV['HOME']}/Library/Application Support/Firefox/Profiles"
|
9
|
-
else
|
10
|
-
profiles="#{ENV['HOME']}/.mozilla/firefox"
|
11
|
-
end
|
12
|
-
|
13
|
-
cd profiles do
|
14
|
-
for p in Dir['*.default']
|
15
|
-
cd p do
|
16
|
-
for db in Dir['*.sqlite']
|
17
|
-
print "Vacuuming #{db}..."
|
18
|
-
system "sqlite3 #{db} VACUUM"
|
19
|
-
puts "done."
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/bin/xmp
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'open3'
|
3
|
-
|
4
|
-
class String
|
5
|
-
unless method_defined?(:lines)
|
6
|
-
def lines
|
7
|
-
self
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
MARKER = "!XMP#{Time.new.to_i}_#{rand(1000000)}!"
|
13
|
-
XMPRE = Regexp.new("^" + Regexp.escape(MARKER) + '\[([0-9]+)\] => (.*)')
|
14
|
-
VAR = "_xmp_#{Time.new.to_i}_#{rand(1000000)}"
|
15
|
-
WARNING_RE = /-:([0-9]+): warning: (.*)/
|
16
|
-
interpreter = ARGV
|
17
|
-
interpreter << 'ruby' << '-w' if interpreter.empty?
|
18
|
-
|
19
|
-
IO.popen(interpreter.first, 'w') do |script|
|
20
|
-
script.write <<-TEST
|
21
|
-
begin
|
22
|
-
require 'rubygems'
|
23
|
-
rescue LoadError
|
24
|
-
exit 1
|
25
|
-
end
|
26
|
-
exit 0
|
27
|
-
TEST
|
28
|
-
end
|
29
|
-
if $?.exitstatus == 1
|
30
|
-
ENV['RUBYOPT'] = ENV['RUBYOPT'].gsub(/-rr?ubygems/i, '')
|
31
|
-
end
|
32
|
-
code = STDIN.read
|
33
|
-
|
34
|
-
idx = 0
|
35
|
-
newcode = code.gsub(/^(.*) # =>.*/) do |l|
|
36
|
-
expr = $1
|
37
|
-
(/^\s*#/ =~ l) ? l :
|
38
|
-
%!((#{VAR} = (#{expr}); $stderr.puts("#{MARKER}[#{idx+=1}] => " + #{VAR}.inspect) || #{VAR}))!
|
39
|
-
end
|
40
|
-
stdin, stdout, stderr = Open3::popen3(*interpreter)
|
41
|
-
stdin.puts newcode
|
42
|
-
stdin.close
|
43
|
-
output = stderr.readlines
|
44
|
-
|
45
|
-
results = Hash.new{|h,k| h[k] = []}
|
46
|
-
output.grep(XMPRE).each do |line|
|
47
|
-
result_id, result = XMPRE.match(line).captures
|
48
|
-
results[result_id.to_i] << result
|
49
|
-
end
|
50
|
-
|
51
|
-
idx = 0
|
52
|
-
annotated = code.gsub(/^(.*) # =>.*/) do |l|
|
53
|
-
expr = $1
|
54
|
-
(/^\s*#/ =~ l) ? l : "#{expr} # => " + (results[idx+=1] || []).join(", ")
|
55
|
-
end.gsub(/ # !>.*/, '').gsub(/# (>>|~>)[^\n]*\n/m, "");
|
56
|
-
|
57
|
-
warnings = {}
|
58
|
-
output.join.lines.grep(WARNING_RE).map do |x|
|
59
|
-
md = WARNING_RE.match(x)
|
60
|
-
warnings[md[1].to_i] = md[2]
|
61
|
-
end
|
62
|
-
idx = 0
|
63
|
-
annotated = annotated.lines.map do |line|
|
64
|
-
w = warnings[idx+=1]
|
65
|
-
w ? (line.chomp + " # !> #{w}") : line
|
66
|
-
end
|
67
|
-
puts annotated
|
68
|
-
output.reject!{|x| /^-:[0-9]+: warning/.match(x)}
|
69
|
-
if exception = /^-:[0-9]+:.*/m.match(output.join)
|
70
|
-
puts exception[0].map{|line| "# ~> " + line }
|
71
|
-
end
|
72
|
-
if (s = stdout.read) != ""
|
73
|
-
puts "# >> #{s.inspect}"
|
74
|
-
end
|