utils 0.21.1 → 0.23.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4acf9179f8893734592685b7801d3535fafb7f7e8a7570242a29d14f43b70ca7
4
- data.tar.gz: b9e7fd5e52c177280e2b16486f99181430834b6ad62397d93cc58e66c5bbe4c4
3
+ metadata.gz: d1eec90814c18451158aaec73c458c953236f2dcc69d8841da8ad023a923aad0
4
+ data.tar.gz: 30eac26e2ce180020d3b24203f71db4107bc40dbc0cc580186c3037331b4f151
5
5
  SHA512:
6
- metadata.gz: c68f43798710b4fbf89d5ce7fa04e277a3e64b1bda9a3902a2cef102d3c5204fed1fb06f52e78e495351e8494563a4717fa5afbbafb7b51f60c331857eca18c8
7
- data.tar.gz: c87ba6f18c4da23680f734bcb2f366913e03485ebd5f948e33a51afcd729a3eca3265a7ec599f5ce186044ac6ea244e913349e35c5652f1c7993ad72c37f4bc6
6
+ metadata.gz: a1c55f5b0b475aca353044b2e724eca2b85d2243442255931d5245441e86633e9d646898bf45afaaa4399eaca28e2608b32f489cf0585c69d58dbce6d16cb353
7
+ data.tar.gz: 0c80321f83a823d7359e5cb33f33b37502e1a6d2d89876f618b57511fffd9242646ed6ee48667fad75d73da45c1cd2b1867c9c3aa37224388e48c7df66d586ef
data/Rakefile CHANGED
@@ -20,7 +20,8 @@ GemHadar do
20
20
  dependency 'term-ansicolor', '~>1.3'
21
21
  dependency 'pstree', '~>0.3'
22
22
  dependency 'infobar'
23
- dependency 'mize'
23
+ dependency 'mize'
24
+ dependency 'search_ui'
24
25
 
25
26
  install_library do
26
27
  libdir = CONFIG["sitelibdir"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.21.1
1
+ 0.23.1
@@ -4,6 +4,8 @@ require 'utils'
4
4
  include Utils
5
5
  require 'tins/xt'
6
6
  include Tins::GO
7
+ require 'search_ui'
8
+ include SearchUI
7
9
 
8
10
  def edit_files(*paths, pick: false, wait: true)
9
11
  editor = Utils::Editor.new
@@ -83,22 +85,28 @@ when args[?s]
83
85
  pattern = pattern.dup
84
86
  args[?n] = Term::ANSIColor.terminal_lines - 1
85
87
  path = nil
86
- found = Utils::SearchUI.new(
87
- query: -> answer, selector {
88
+ found = Search.new(
89
+ match: -> answer {
88
90
  pattern.replace answer
89
91
  f = finder.()
90
- f.search.output.each_with_index.map { |l, i| (i == selector ? '> ' : ' ') + l }.join(?\n)
92
+ matches = f.search.output
93
+ matches.first(Tins::Terminal.lines - 1)
91
94
  },
92
- found: -> answer, selector {
93
- f and path = f.paths[selector]
95
+ query: -> _answer, matches, selector {
96
+ matches.each_with_index.map { |l, i| (i == selector ? '> ' : ' ') + l }.join(?\n)
97
+ },
98
+ found: -> _answer, matches, selector {
99
+ if f
100
+ path = f.paths[selector]
101
+ end
94
102
  },
95
103
  output: STDERR
96
104
  ).start
97
105
  if found
98
106
  if args[?e]
99
- edit_files path, wait: false
107
+ edit_files found, wait: false
100
108
  else
101
- found and puts path
109
+ found and puts found
102
110
  end
103
111
  exit 0
104
112
  else
data/bin/edit CHANGED
@@ -43,10 +43,6 @@ editor = Editor.new do |c|
43
43
  c.mkdir = $opt[?m]
44
44
  end
45
45
 
46
- if ENV['TMUX']
47
- system "tmux rename-window #{File.basename($0)}"
48
- end
49
-
50
46
  if $opt[?l]
51
47
  puts editor.serverlist
52
48
  exit 0
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ PREFIX=$(brew --prefix)
4
+ sudo chgrp -R brew $PREFIX
5
+ sudo chmod -R g+w $PREFIX
@@ -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
- -r HOSTNAME name of the remote host (defaults to #{Utils::IRB::Service.hostname})
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:r:p:l:h'
26
+ $opts = go 'e:u:l:h'
28
27
  $opts[?h] and usage
29
28
 
30
- proxy = Utils::IRB::Service.connect($opts[?r], $opts[?p])
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
@@ -35,4 +35,4 @@ end
35
35
 
36
36
  path.uniq!
37
37
 
38
- puts "#{'export ' if $opt[?e]}PATH=#{path * path_separator}"
38
+ puts "#{'export ' if $opts[?e]}PATH=#{path * path_separator}"
@@ -10,7 +10,6 @@ module Utils
10
10
  require 'utils/probe_server'
11
11
  require 'utils/ssh_tunnel_specification'
12
12
  require 'utils/line_blamer'
13
- require 'utils/search_ui'
14
13
  begin
15
14
  require 'utils/line_formatter'
16
15
  rescue LoadError
@@ -15,12 +15,11 @@ module Utils
15
15
  yield self if block_given?
16
16
  end
17
17
 
18
- def derive_server_name
18
+ private def derive_server_name
19
19
  name = ENV['VIM_SERVER'] || Dir.pwd
20
20
  RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ and name = "G_#{name}"
21
21
  name.upcase
22
22
  end
23
- private :derive_server_name
24
23
 
25
24
  attr_accessor :pause_duration
26
25
 
@@ -90,14 +89,13 @@ module Utils
90
89
  end
91
90
  end
92
91
 
93
- def make_dirs(*filenames)
92
+ private def make_dirs(*filenames)
94
93
  if mkdir
95
94
  for filename in filenames
96
95
  FileUtils.mkdir_p File.dirname(filename)
97
96
  end
98
97
  end
99
98
  end
100
- private :make_dirs
101
99
 
102
100
  def edit_file(*filenames)
103
101
  make_dirs(*filenames)
@@ -129,7 +127,13 @@ module Utils
129
127
  )
130
128
  end
131
129
 
130
+ private def rename_window
131
+ return if started?
132
+ ENV['TMUX'] and system "tmux rename-window #{File.basename($0)}"
133
+ end
134
+
132
135
  def start
136
+ rename_window
133
137
  started? or cmd(*vim, '--servername', servername)
134
138
  end
135
139
 
@@ -165,14 +169,17 @@ module Utils
165
169
  end
166
170
 
167
171
  def edit_remote(*args)
172
+ rename_window
168
173
  cmd(*vim, '--servername', servername, '--remote', *args)
169
174
  end
170
175
 
171
176
  def edit_remote_wait(*args)
177
+ rename_window
172
178
  cmd(*vim, '--servername', servername, '--remote-wait', *args)
173
179
  end
174
180
 
175
181
  def edit_remote_send(*args)
182
+ rename_window
176
183
  cmd(*vim, '--servername', servername, '--remote-send', *args)
177
184
  end
178
185
 
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.21.1'
3
+ VERSION = '0.23.1'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -1,19 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.21.1 ruby lib
2
+ # stub: utils 0.23.1 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.21.1"
6
+ s.version = "0.23.1"
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-02-05"
11
+ s.date = "2020-10-03"
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, "unquarantine_apps".freeze, "ssh-tunnel".freeze, "xmp".freeze, "brakeman2err".freeze, "search".freeze, "chroot-exec".freeze, "edit".freeze, "tmproc".freeze, "json_check".freeze, "edit_wait".freeze, "errf".freeze, "untest".freeze, "blameline".freeze, "remote_copy".freeze, "git-empty".freeze, "create_cstags".freeze, "vacuum_firefox_sqlite".freeze, "same_files".freeze, "chroot-libs".freeze, "git-versions".freeze, "strip_spaces".freeze, "number_files".freeze, "rssr".freeze, "serve".freeze, "vcf2alias".freeze, "on_change".freeze, "utils-utilsrc".freeze, "myex".freeze, "long_lines".freeze, "dialog-pick".freeze, "probe".freeze, "create_tags".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/search_ui.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_cstags".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/tmproc".freeze, "bin/unquarantine_apps".freeze, "bin/untest".freeze, "bin/utils-utilsrc".freeze, "bin/vacuum_firefox_sqlite".freeze, "bin/vcf2alias".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/search_ui.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]
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, "fix-brew".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
+ 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/classify".freeze, "bin/create_cstags".freeze, "bin/create_tags".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".freeze, "bin/fix-brew".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
19
  s.rubygems_version = "3.1.2".freeze
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_runtime_dependency(%q<pstree>.freeze, ["~> 0.3"])
31
31
  s.add_runtime_dependency(%q<infobar>.freeze, [">= 0"])
32
32
  s.add_runtime_dependency(%q<mize>.freeze, [">= 0"])
33
+ s.add_runtime_dependency(%q<search_ui>.freeze, [">= 0"])
33
34
  else
34
35
  s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
35
36
  s.add_dependency(%q<tins>.freeze, ["~> 1.14"])
@@ -37,5 +38,6 @@ Gem::Specification.new do |s|
37
38
  s.add_dependency(%q<pstree>.freeze, ["~> 0.3"])
38
39
  s.add_dependency(%q<infobar>.freeze, [">= 0"])
39
40
  s.add_dependency(%q<mize>.freeze, [">= 0"])
41
+ s.add_dependency(%q<search_ui>.freeze, [">= 0"])
40
42
  end
41
43
  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.21.1
4
+ version: 0.23.1
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-02-05 00:00:00.000000000 Z
11
+ date: 2020-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: search_ui
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: This ruby gem provides some useful command line utilities
98
112
  email: flori@ping.de
99
113
  executables:
@@ -104,36 +118,25 @@ executables:
104
118
  - ascii7
105
119
  - path
106
120
  - enum
107
- - unquarantine_apps
108
121
  - ssh-tunnel
109
- - xmp
110
- - brakeman2err
111
122
  - search
112
- - chroot-exec
113
123
  - edit
114
- - tmproc
115
124
  - json_check
116
125
  - edit_wait
117
- - errf
118
126
  - untest
119
127
  - blameline
120
- - remote_copy
121
128
  - git-empty
122
129
  - create_cstags
123
- - vacuum_firefox_sqlite
124
- - same_files
125
- - chroot-libs
126
130
  - git-versions
127
131
  - strip_spaces
132
+ - fix-brew
128
133
  - number_files
129
- - rssr
130
134
  - serve
131
135
  - vcf2alias
132
136
  - on_change
133
137
  - utils-utilsrc
134
138
  - myex
135
139
  - long_lines
136
- - dialog-pick
137
140
  - probe
138
141
  - create_tags
139
142
  extensions: []
@@ -152,7 +155,6 @@ extra_rdoc_files:
152
155
  - lib/utils/md5.rb
153
156
  - lib/utils/patterns.rb
154
157
  - lib/utils/probe_server.rb
155
- - lib/utils/search_ui.rb
156
158
  - lib/utils/ssh_tunnel_specification.rb
157
159
  - lib/utils/version.rb
158
160
  - lib/utils/xt/source_location_extension.rb
@@ -165,18 +167,14 @@ files:
165
167
  - VERSION
166
168
  - bin/ascii7
167
169
  - bin/blameline
168
- - bin/brakeman2err
169
- - bin/chroot-exec
170
- - bin/chroot-libs
171
170
  - bin/classify
172
171
  - bin/create_cstags
173
172
  - bin/create_tags
174
- - bin/dialog-pick
175
173
  - bin/discover
176
174
  - bin/edit
177
175
  - bin/edit_wait
178
176
  - bin/enum
179
- - bin/errf
177
+ - bin/fix-brew
180
178
  - bin/git-empty
181
179
  - bin/git-versions
182
180
  - bin/irb_connect
@@ -187,21 +185,14 @@ files:
187
185
  - bin/on_change
188
186
  - bin/path
189
187
  - bin/probe
190
- - bin/remote_copy
191
- - bin/rssr
192
- - bin/same_files
193
188
  - bin/search
194
189
  - bin/sedit
195
190
  - bin/serve
196
191
  - bin/ssh-tunnel
197
192
  - bin/strip_spaces
198
- - bin/tmproc
199
- - bin/unquarantine_apps
200
193
  - bin/untest
201
194
  - bin/utils-utilsrc
202
- - bin/vacuum_firefox_sqlite
203
195
  - bin/vcf2alias
204
- - bin/xmp
205
196
  - lib/utils.rb
206
197
  - lib/utils/config_file.rb
207
198
  - lib/utils/editor.rb
@@ -215,7 +206,6 @@ files:
215
206
  - lib/utils/md5.rb
216
207
  - lib/utils/patterns.rb
217
208
  - lib/utils/probe_server.rb
218
- - lib/utils/search_ui.rb
219
209
  - lib/utils/ssh_tunnel_specification.rb
220
210
  - lib/utils/version.rb
221
211
  - lib/utils/xt/source_location_extension.rb
@@ -223,7 +213,7 @@ files:
223
213
  homepage: http://github.com/flori/utils
224
214
  licenses: []
225
215
  metadata: {}
226
- post_install_message:
216
+ post_install_message:
227
217
  rdoc_options:
228
218
  - "--title"
229
219
  - Utils - Some useful command line utilities
@@ -243,7 +233,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
233
  version: '0'
244
234
  requirements: []
245
235
  rubygems_version: 3.1.2
246
- signing_key:
236
+ signing_key:
247
237
  specification_version: 4
248
238
  summary: Some useful command line utilities
249
239
  test_files: []
@@ -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
@@ -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"
@@ -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
@@ -1,11 +0,0 @@
1
- #!/bin/bash
2
-
3
- text=${1:-Pick}
4
- tags=`cat`
5
- lines=$(tput lines)
6
- columns=$(tput cols)
7
-
8
- result=$(dialog --no-items --menu "$text" $((lines - 5)) $((columns - 5)) $((lines - 10)) $tags 2>&1 1>/dev/tty)
9
- exitcode=$?
10
- echo $result
11
- exit $exitcode
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
@@ -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
@@ -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'
@@ -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
@@ -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
@@ -1,75 +0,0 @@
1
- require 'term/ansicolor'
2
-
3
- class Utils::SearchUI
4
- include Term::ANSIColor
5
-
6
- def initialize(query:, found:, output: STDOUT, prompt: 'Search? %s')
7
- @selector = 0
8
- @query = query
9
- @found = found
10
- @output = output
11
- @prompt = prompt
12
- @answer = ''
13
- end
14
-
15
- def start
16
- @output.print clear_screen, move_home, reset
17
- loop do
18
- @output.print move_home { @prompt % @answer }
19
- case getc
20
- when true
21
- @output.print clear_screen, move_home, reset
22
- if result = @found.(@answer, @selector)
23
- return result
24
- else
25
- return nil
26
- end
27
- when false
28
- return nil
29
- end
30
- result = @query.(@answer, @selector)
31
- @output.print clear_screen
32
- unless @answer.empty?
33
- @output.print move_home { ?\n + result }
34
- end
35
- end
36
- end
37
-
38
- private
39
-
40
- def getc
41
- system 'stty raw -echo'
42
- c = STDIN.getc
43
- system 'stty cooked echo'
44
- case c
45
- when "\x03"
46
- false
47
- when "\e"
48
- STDIN.getc == ?[ or return nil
49
- STDIN.getc =~ /\A([AB])\z/ or return nil
50
- if $1 == ?A
51
- @selector -= 1
52
- else
53
- @selector += 1
54
- end
55
- @selector = [ @selector, 0 ].max
56
- nil
57
- when ?\r
58
- true
59
- when "\x7f"
60
- @selector = 0
61
- @answer.chop!
62
- nil
63
- when "\v"
64
- @selector = 0
65
- @answer.clear
66
- nil
67
- when /\A[\x00-\x1f]\z/
68
- nil
69
- else
70
- @selector = 0
71
- @answer << c
72
- nil
73
- end
74
- end
75
- end