hookapp 2.0.3 → 2.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/AUTHORS.md +4 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +49 -66
- data/LICENSE +21 -0
- data/README.md +52 -19
- data/Rakefile +7 -3
- data/bin/hook +114 -78
- data/buildnotes.md +30 -0
- data/hook.rdoc +35 -11
- data/hookapp.gemspec +2 -2
- data/html/App.html +6 -18
- data/html/GLI/Commands/Doc.html +2 -10
- data/html/GLI/Commands/MarkdownDocumentListener.html +34 -230
- data/html/GLI/Commands.html +2 -10
- data/html/GLI.html +2 -10
- data/html/Hook.html +2 -15
- data/html/HookApp.html +99 -319
- data/html/Hooker.html +46 -24
- data/html/README_rdoc.html +49 -23
- data/html/String.html +28 -120
- data/html/created.rid +8 -8
- data/html/css/rdoc.css +21 -1
- data/html/index.html +38 -29
- data/html/js/navigation.js.gz +0 -0
- data/html/js/search_index.js +1 -1
- data/html/js/search_index.js.gz +0 -0
- data/html/js/searcher.js.gz +0 -0
- data/html/table_of_contents.html +33 -77
- data/lib/helpers/fuzzyfilefinder +0 -0
- data/lib/hook/hookapp.rb +39 -21
- data/lib/hook/hooker.rb +5 -2
- data/lib/hook/markdown_document_listener.rb +12 -2
- data/lib/hook/string.rb +4 -0
- data/lib/hook/version.rb +1 -1
- data/lib/hook.rb +5 -4
- data/test/helpers/hook-helpers.rb +76 -0
- data/test/hook_clip_test.rb +24 -0
- data/test/hook_clone_test.rb +30 -0
- data/test/hook_encode_test.rb +30 -0
- data/test/hook_link_test.rb +39 -0
- data/test/hook_list_test.rb +25 -0
- data/test/hook_remove_test.rb +34 -0
- data/test/hook_scripts_test.rb +21 -0
- metadata +19 -22
- data/test/default_test.rb +0 -14
- data/test/hookfiles/01.test +0 -0
- data/test/hookfiles/02.test +0 -0
- data/test/hookfiles/03.test +0 -0
- data/test/hookfiles/04.test +0 -0
- data/test/hookfiles/05.test +0 -0
- data/test/hookfiles/06.test +0 -0
- data/test/hookfiles/07.test +0 -0
- data/test/hookfiles/08.test +0 -0
- data/test/hookfiles/09.test +0 -0
- data/test/hookfiles/10.test +0 -0
- data/test/hookfiles/11.test +0 -0
- data/test/hookfiles/12.test +0 -0
data/lib/hook/hookapp.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'shellwords'
|
4
4
|
require 'uri'
|
5
5
|
# Hook.app functions
|
6
|
-
|
6
|
+
class HookApp
|
7
7
|
# Create a single regex for validation of an
|
8
8
|
# array by first char or full match.
|
9
9
|
def format_regex(options)
|
@@ -171,9 +171,9 @@ module HookApp
|
|
171
171
|
output = output_array(result, opts)
|
172
172
|
|
173
173
|
if opts[:format] =~ /^v/
|
174
|
-
"Search results for: #{search}\n---------\n" + output.join("\n")
|
174
|
+
"Search results for: #{search}\n---------\n" + output.join("\n") if output
|
175
175
|
else
|
176
|
-
output.join(separator)
|
176
|
+
output.join(separator) if output
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
@@ -233,7 +233,8 @@ module HookApp
|
|
233
233
|
raise "Error processing available hooks" if options.empty?
|
234
234
|
|
235
235
|
args = ['--layout=reverse-list',
|
236
|
-
'--header="esc: cancel, tab: multi-select, return: open
|
236
|
+
'--header="esc: cancel, tab: multi-select, ctrl-a: select all, return: open"',
|
237
|
+
'--bind ctrl-a:select-all',
|
237
238
|
'--prompt=" Select hooks > "',
|
238
239
|
'--multi',
|
239
240
|
'--tabstop=4',
|
@@ -246,16 +247,12 @@ module HookApp
|
|
246
247
|
fzf = File.join(File.dirname(__FILE__), '../helpers/fuzzyfilefinder')
|
247
248
|
|
248
249
|
sel = `echo #{Shellwords.escape(options.join("\n"))} | '#{fzf}' #{args.join(' ')}`.chomp
|
249
|
-
res = sel.split(/\n/).map
|
250
|
+
res = sel.split(/\n/).map do |s|
|
250
251
|
ps = s.split(/\t/)
|
251
252
|
{ name: ps[0], path: ps[1], url: ps[2] }
|
252
|
-
}
|
253
|
-
|
254
|
-
if res.size == 0
|
255
|
-
raise 'Cancelled (empty response)'
|
256
253
|
end
|
257
254
|
|
258
|
-
res
|
255
|
+
res || []
|
259
256
|
end
|
260
257
|
|
261
258
|
# Open the Hook GUI for browsing/performing actions on a file or url
|
@@ -281,9 +278,11 @@ module HookApp
|
|
281
278
|
warn "No hooks found for #{url}"
|
282
279
|
else
|
283
280
|
res = select_hook(marks)
|
284
|
-
res.
|
285
|
-
|
286
|
-
|
281
|
+
unless res.empty?
|
282
|
+
res.each {|mark|
|
283
|
+
`open '#{mark[:url]}'`
|
284
|
+
}
|
285
|
+
end
|
287
286
|
end
|
288
287
|
end
|
289
288
|
|
@@ -334,10 +333,13 @@ module HookApp
|
|
334
333
|
end
|
335
334
|
|
336
335
|
# Delete all hooked files/urls from target file
|
337
|
-
def delete_all_hooks(url)
|
338
|
-
|
339
|
-
|
340
|
-
|
336
|
+
def delete_all_hooks(url, force: false)
|
337
|
+
unless force
|
338
|
+
STDERR.print "Are you sure you want to delete ALL hooks from #{url} (y/N)? "
|
339
|
+
res = STDIN.gets.strip
|
340
|
+
end
|
341
|
+
|
342
|
+
if res =~ /^y/i || force
|
341
343
|
get_hooks(url).each do |hook|
|
342
344
|
`osascript <<'APPLESCRIPT'
|
343
345
|
tell application "Hook"
|
@@ -360,7 +362,7 @@ module HookApp
|
|
360
362
|
urls.each_with_index do |url, i|
|
361
363
|
raise "Invalid target: #{args[i]}" unless url
|
362
364
|
|
363
|
-
output.push(delete_all_hooks(url))
|
365
|
+
output.push(delete_all_hooks(url, force: opts[:force]))
|
364
366
|
end
|
365
367
|
return output.join("\n")
|
366
368
|
end
|
@@ -431,7 +433,7 @@ module HookApp
|
|
431
433
|
hooks_arr = get_hooks(url)
|
432
434
|
|
433
435
|
output = output_array(hooks_arr, opts)
|
434
|
-
result.push({ file: filename, links: output.join(separator) })
|
436
|
+
result.push({ file: filename, links: output.join(separator) }) if output
|
435
437
|
end
|
436
438
|
|
437
439
|
|
@@ -479,11 +481,27 @@ module HookApp
|
|
479
481
|
end
|
480
482
|
end
|
481
483
|
else
|
482
|
-
|
484
|
+
warn 'No bookmarks'
|
483
485
|
end
|
484
486
|
|
485
487
|
output
|
486
488
|
end
|
487
|
-
end
|
488
489
|
|
490
|
+
def encode(string)
|
491
|
+
result = `osascript <<'APPLESCRIPT'
|
492
|
+
tell application "Hook"
|
493
|
+
percent encode "#{string.escape_quotes}"
|
494
|
+
end tell
|
495
|
+
APPLESCRIPT`.strip.gsub(/'/,'%27')
|
496
|
+
print result
|
497
|
+
end
|
489
498
|
|
499
|
+
def decode(string)
|
500
|
+
result = `osascript <<'APPLESCRIPT'
|
501
|
+
tell application "Hook"
|
502
|
+
percent decode "#{string.escape_quotes}"
|
503
|
+
end tell
|
504
|
+
APPLESCRIPT`.strip
|
505
|
+
print result
|
506
|
+
end
|
507
|
+
end
|
data/lib/hook/hooker.rb
CHANGED
@@ -15,6 +15,7 @@ module GLI
|
|
15
15
|
@io = File.new('README.md', 'w')
|
16
16
|
@nest = '#'
|
17
17
|
@arg_name_formatter = GLI::Commands::HelpModules::ArgNameFormatter.new
|
18
|
+
@parent_command = []
|
18
19
|
end
|
19
20
|
|
20
21
|
def beginning
|
@@ -26,6 +27,12 @@ module GLI
|
|
26
27
|
@io.puts IO.read('CREDITS.md')
|
27
28
|
@io.puts
|
28
29
|
end
|
30
|
+
|
31
|
+
if File.exist?('AUTHORS.md')
|
32
|
+
@io.puts IO.read('AUTHORS.md')
|
33
|
+
@io.puts
|
34
|
+
end
|
35
|
+
|
29
36
|
if File.exist?('LICENSE.md')
|
30
37
|
@io.puts IO.read('LICENSE.md')
|
31
38
|
@io.puts
|
@@ -89,7 +96,7 @@ module GLI
|
|
89
96
|
name = "[no-]#{name}" if name.to_s.length > 1
|
90
97
|
aliases = aliases.map { |_| _.to_s.length > 1 ? "[no-]#{_}" : _ }
|
91
98
|
end
|
92
|
-
invocations = ([name] + aliases).map { |_| "`" + add_dashes(_) + "`" }.join('|')
|
99
|
+
invocations = ([name] + aliases).map { |_| "`" + add_dashes(_).strip + "`" }.join('|')
|
93
100
|
@io.puts header("#{invocations}", 2)
|
94
101
|
@io.puts
|
95
102
|
@io.puts String(desc).strip
|
@@ -109,8 +116,10 @@ module GLI
|
|
109
116
|
|
110
117
|
# Gives you a command in the current context and creates a new context of this command
|
111
118
|
def command(name, aliases, desc, long_desc, arg_name, arg_options)
|
119
|
+
@parent_command.push ([name] + aliases).join('|')
|
112
120
|
arg_name_fmt = @arg_name_formatter.format(arg_name, arg_options, [])
|
113
|
-
|
121
|
+
arg_name_fmt = " `#{arg_name_fmt.strip}`" if arg_name_fmt
|
122
|
+
@io.puts header("`$ #{@exe}` <mark>`#{@parent_command.join(' ')}`</mark>#{arg_name_fmt}", 1)
|
114
123
|
@io.puts
|
115
124
|
@io.puts "*#{String(desc).strip}*"
|
116
125
|
@io.puts
|
@@ -121,6 +130,7 @@ module GLI
|
|
121
130
|
|
122
131
|
# Ends a command, and "pops" you back up one context
|
123
132
|
def end_command(_name)
|
133
|
+
@parent_command.pop
|
124
134
|
decrement_nest
|
125
135
|
@io.puts "* * * * * *\n\n" unless @nest.size > 2
|
126
136
|
end
|
data/lib/hook/string.rb
CHANGED
data/lib/hook/version.rb
CHANGED
data/lib/hook.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'hook/version
|
3
|
+
require 'hook/version'
|
4
4
|
require 'shellwords'
|
5
5
|
require 'cgi'
|
6
|
-
require '
|
7
|
-
require 'hook/
|
8
|
-
require 'hook/
|
6
|
+
require 'gli'
|
7
|
+
require 'hook/string'
|
8
|
+
require 'hook/hookapp'
|
9
|
+
require 'hook/hooker'
|
9
10
|
require 'hook/markdown_document_listener'
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
class ::Numeric
|
5
|
+
def pad_to(x)
|
6
|
+
"%0#{x.to_i}d" % self
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module HookHelpers
|
11
|
+
HOOK_EXEC = File.join(File.dirname(__FILE__), '..', '..', 'bin', 'hook')
|
12
|
+
HOOK_FILES_DIR = File.join(File.dirname(__FILE__), '..', 'hookfiles')
|
13
|
+
HOOK_COMPLETIONS_DIR = File.join(File.dirname(__FILE__), '..', '..', 'lib', 'completion')
|
14
|
+
|
15
|
+
def create_temp_files
|
16
|
+
FileUtils.mkdir_p HOOK_FILES_DIR
|
17
|
+
10.times.with_index do |i|
|
18
|
+
new_file = File.join(HOOK_FILES_DIR, i.pad_to(2) + '.md')
|
19
|
+
File.open(new_file, 'w') do |f|
|
20
|
+
f.puts ("Hook Test File ##{i}")
|
21
|
+
end
|
22
|
+
hook('rm', '-a', '-f', new_file)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def clean_temp_files
|
27
|
+
FileUtils.rm_r HOOK_FILES_DIR, force: true
|
28
|
+
end
|
29
|
+
|
30
|
+
def assert_count_links(file, count, msg)
|
31
|
+
res = hook('ls', file).strip
|
32
|
+
|
33
|
+
links = res == 'No bookmarks' ? 0 : res.split(/\n/).size
|
34
|
+
|
35
|
+
assert_equal(count, links, msg)
|
36
|
+
end
|
37
|
+
|
38
|
+
def assert_links_include(file, pattern, msg)
|
39
|
+
result = hook('ls', file).strip
|
40
|
+
assert_match(/#{pattern}/, result, msg)
|
41
|
+
end
|
42
|
+
|
43
|
+
def hook(*args)
|
44
|
+
hook_with_env({}, *args)
|
45
|
+
end
|
46
|
+
|
47
|
+
def hook_with_stdin(input, *args)
|
48
|
+
pread_stdin({}, input, HOOK_EXEC, *args)
|
49
|
+
end
|
50
|
+
|
51
|
+
def hook_with_env(env, *args)
|
52
|
+
pread(env, HOOK_EXEC, *args)
|
53
|
+
end
|
54
|
+
|
55
|
+
def pread_stdin(env, input, *cmd)
|
56
|
+
out, err, status = Open3.capture3(env, 'bundle', 'exec', *cmd, :stdin_data => input)
|
57
|
+
unless status.success?
|
58
|
+
raise [
|
59
|
+
"Error (#{status}): #{cmd.inspect} failed", "STDOUT:", out.inspect, "STDERR:", err.inspect
|
60
|
+
].join("\n")
|
61
|
+
end
|
62
|
+
|
63
|
+
out
|
64
|
+
end
|
65
|
+
|
66
|
+
def pread(env, *cmd)
|
67
|
+
out, err, status = Open3.capture3(env, 'bundle', 'exec', *cmd)
|
68
|
+
unless status.success?
|
69
|
+
raise [
|
70
|
+
"Error (#{status}): #{cmd.inspect} failed", "STDOUT:", out.inspect, "STDERR:", err.inspect
|
71
|
+
].join("\n")
|
72
|
+
end
|
73
|
+
|
74
|
+
out
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ClipTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@basedir = HOOK_FILES_DIR
|
9
|
+
create_temp_files
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
clean_temp_files
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_clip
|
17
|
+
file = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))[0]
|
18
|
+
# Clear clipboard
|
19
|
+
`echo -n | pbcopy`
|
20
|
+
hook('clip', file)
|
21
|
+
clipboard = `pbpaste`.strip
|
22
|
+
assert_match(/^hook:.*?#{File.basename(file)}$/, clipboard, 'Clipboard should contain link to first file')
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class CloneTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@basedir = HOOK_FILES_DIR
|
9
|
+
create_temp_files
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
clean_temp_files
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_clone
|
17
|
+
count = 3
|
18
|
+
|
19
|
+
files = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))
|
20
|
+
|
21
|
+
# Link all files to last file
|
22
|
+
hook('link', *files[0..count - 1])
|
23
|
+
links = hook('ls', files[count - 1]).strip
|
24
|
+
|
25
|
+
hook('clone', files[count-1], files[count])
|
26
|
+
cloned_links = hook('ls', files[count]).strip
|
27
|
+
|
28
|
+
assert_match(links, cloned_links, "#{files[count - 1]} links should match #{files[count]} links")
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class EncodeTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
end
|
12
|
+
|
13
|
+
# # FIXME: I don't know why this isn't getting output
|
14
|
+
# def test_encode_args
|
15
|
+
# result = hook('percent', 'encode', %(here's a "string?"))
|
16
|
+
# assert_match(/here%27s%20a%20%22string%3F%22/, result, 'URL encoded string should match')
|
17
|
+
# end
|
18
|
+
|
19
|
+
def test_encode_stdin
|
20
|
+
result = pread_stdin({}, %(here's a "string?"), HOOK_EXEC, 'percent', 'encode')
|
21
|
+
assert_match(/here%27s%20a%20%22string%3F%22/, result, 'URL encoded string should match')
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_encode_decode_stdin
|
25
|
+
original_string = %(here's a "string?")
|
26
|
+
encoded = pread_stdin({}, original_string, HOOK_EXEC, 'percent', 'encode')
|
27
|
+
decoded = pread_stdin({}, encoded, HOOK_EXEC, 'percent', 'decode')
|
28
|
+
assert_match(decoded, original_string, 'URL encoded string should match')
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class LinkTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@basedir = HOOK_FILES_DIR
|
9
|
+
create_temp_files
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
clean_temp_files
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_link
|
17
|
+
count = 3
|
18
|
+
|
19
|
+
files = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))[0..(count - 1)]
|
20
|
+
|
21
|
+
# Link all files to last file
|
22
|
+
hook('link', *files)
|
23
|
+
|
24
|
+
assert_count_links(files[-1], count - 1, "Last file should have #{count - 1} links")
|
25
|
+
assert_count_links(files[0], 1, 'First file should have 1 link')
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_bi_link
|
29
|
+
count = 3
|
30
|
+
|
31
|
+
files = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))[0..(count - 1)]
|
32
|
+
|
33
|
+
# Link all files bi-directionally
|
34
|
+
hook('link', '-a', *files)
|
35
|
+
|
36
|
+
assert_count_links(files[-1], count - 1, "Last file should have #{count - 1} links")
|
37
|
+
assert_count_links(files[0], count - 1, "First file should have #{count - 1} links")
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ListTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@basedir = HOOK_FILES_DIR
|
9
|
+
create_temp_files
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
clean_temp_files
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_list
|
17
|
+
count = 2
|
18
|
+
files = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))[0..(count - 1)]
|
19
|
+
# Link all files to last file
|
20
|
+
hook('link', *files)
|
21
|
+
|
22
|
+
assert_count_links(files[-1], count - 1, "Last file should have #{count - 1} links")
|
23
|
+
assert_links_include(files[-1], File.basename(files[0]), 'Links on last file should include first file')
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class RemoveTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@basedir = HOOK_FILES_DIR
|
9
|
+
create_temp_files
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
clean_temp_files
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_remove
|
17
|
+
count = 5
|
18
|
+
|
19
|
+
files = Dir.glob(File.join(HOOK_FILES_DIR, '*.md'))[0..(count - 1)]
|
20
|
+
|
21
|
+
# Link all files to last file
|
22
|
+
hook('link', *files)
|
23
|
+
|
24
|
+
assert_count_links(files[-1], count - 1, "Last file should start with #{count - 1} links")
|
25
|
+
|
26
|
+
hook('remove', files[-1], files[0])
|
27
|
+
|
28
|
+
assert_count_links(files[-1], count - 2, "Last file should have #{count - 2} links")
|
29
|
+
|
30
|
+
hook('remove', '--all', '--force', files[-1])
|
31
|
+
|
32
|
+
assert_count_links(files[-1], 0, "Last file should end with 0 links")
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'hook-helpers'
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ScriptsTest < Test::Unit::TestCase
|
5
|
+
include HookHelpers
|
6
|
+
|
7
|
+
def setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_shell_scripts
|
14
|
+
%w[bash fish zsh].each do |sh|
|
15
|
+
source = IO.read(File.join(HOOK_COMPLETIONS_DIR, 'hook_completion.' + sh))
|
16
|
+
result = hook('scripts', sh)
|
17
|
+
|
18
|
+
assert_match(source, result, 'Script output should match')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hookapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 6.
|
47
|
+
version: 6.3.2
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 6.
|
54
|
+
version: 6.3.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: gli
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.
|
61
|
+
version: 2.20.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.
|
68
|
+
version: 2.20.1
|
69
69
|
description:
|
70
70
|
email: me@brettterpstra.com
|
71
71
|
executables:
|
@@ -76,9 +76,11 @@ extra_rdoc_files:
|
|
76
76
|
- hook.rdoc
|
77
77
|
files:
|
78
78
|
- ".gitignore"
|
79
|
+
- AUTHORS.md
|
79
80
|
- CHANGELOG.md
|
80
81
|
- Gemfile
|
81
82
|
- Gemfile.lock
|
83
|
+
- LICENSE
|
82
84
|
- LICENSE.md
|
83
85
|
- OVERVIEW.md
|
84
86
|
- README.md
|
@@ -155,19 +157,14 @@ files:
|
|
155
157
|
- lib/hook/markdown_document_listener.rb
|
156
158
|
- lib/hook/string.rb
|
157
159
|
- lib/hook/version.rb
|
158
|
-
- test/
|
159
|
-
- test/
|
160
|
-
- test/
|
161
|
-
- test/
|
162
|
-
- test/
|
163
|
-
- test/
|
164
|
-
- test/
|
165
|
-
- test/
|
166
|
-
- test/hookfiles/08.test
|
167
|
-
- test/hookfiles/09.test
|
168
|
-
- test/hookfiles/10.test
|
169
|
-
- test/hookfiles/11.test
|
170
|
-
- test/hookfiles/12.test
|
160
|
+
- test/helpers/hook-helpers.rb
|
161
|
+
- test/hook_clip_test.rb
|
162
|
+
- test/hook_clone_test.rb
|
163
|
+
- test/hook_encode_test.rb
|
164
|
+
- test/hook_link_test.rb
|
165
|
+
- test/hook_list_test.rb
|
166
|
+
- test/hook_remove_test.rb
|
167
|
+
- test/hook_scripts_test.rb
|
171
168
|
- test/test_helper.rb
|
172
169
|
homepage: https://brettterpstra.com
|
173
170
|
licenses: []
|
@@ -193,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
190
|
- !ruby/object:Gem::Version
|
194
191
|
version: '0'
|
195
192
|
requirements: []
|
196
|
-
rubygems_version: 3.
|
193
|
+
rubygems_version: 3.2.16
|
197
194
|
signing_key:
|
198
195
|
specification_version: 4
|
199
196
|
summary: A CLI for Hook.app (macOS)
|
data/test/default_test.rb
DELETED
data/test/hookfiles/01.test
DELETED
File without changes
|
data/test/hookfiles/02.test
DELETED
File without changes
|
data/test/hookfiles/03.test
DELETED
File without changes
|
data/test/hookfiles/04.test
DELETED
File without changes
|
data/test/hookfiles/05.test
DELETED
File without changes
|
data/test/hookfiles/06.test
DELETED
File without changes
|
data/test/hookfiles/07.test
DELETED
File without changes
|
data/test/hookfiles/08.test
DELETED
File without changes
|
data/test/hookfiles/09.test
DELETED
File without changes
|
data/test/hookfiles/10.test
DELETED
File without changes
|
data/test/hookfiles/11.test
DELETED
File without changes
|
data/test/hookfiles/12.test
DELETED
File without changes
|