hookapp 2.0.3 → 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/AUTHORS.md +4 -0
  4. data/CHANGELOG.md +5 -0
  5. data/Gemfile.lock +49 -66
  6. data/LICENSE +21 -0
  7. data/README.md +52 -19
  8. data/Rakefile +7 -3
  9. data/bin/hook +114 -78
  10. data/buildnotes.md +30 -0
  11. data/hook.rdoc +35 -11
  12. data/hookapp.gemspec +2 -2
  13. data/html/App.html +6 -18
  14. data/html/GLI/Commands/Doc.html +2 -10
  15. data/html/GLI/Commands/MarkdownDocumentListener.html +34 -230
  16. data/html/GLI/Commands.html +2 -10
  17. data/html/GLI.html +2 -10
  18. data/html/Hook.html +2 -15
  19. data/html/HookApp.html +99 -319
  20. data/html/Hooker.html +46 -24
  21. data/html/README_rdoc.html +49 -23
  22. data/html/String.html +28 -120
  23. data/html/created.rid +8 -8
  24. data/html/css/rdoc.css +21 -1
  25. data/html/index.html +38 -29
  26. data/html/js/navigation.js.gz +0 -0
  27. data/html/js/search_index.js +1 -1
  28. data/html/js/search_index.js.gz +0 -0
  29. data/html/js/searcher.js.gz +0 -0
  30. data/html/table_of_contents.html +33 -77
  31. data/lib/helpers/fuzzyfilefinder +0 -0
  32. data/lib/hook/hookapp.rb +39 -21
  33. data/lib/hook/hooker.rb +5 -2
  34. data/lib/hook/markdown_document_listener.rb +12 -2
  35. data/lib/hook/string.rb +4 -0
  36. data/lib/hook/version.rb +1 -1
  37. data/lib/hook.rb +5 -4
  38. data/test/helpers/hook-helpers.rb +76 -0
  39. data/test/hook_clip_test.rb +24 -0
  40. data/test/hook_clone_test.rb +30 -0
  41. data/test/hook_encode_test.rb +30 -0
  42. data/test/hook_link_test.rb +39 -0
  43. data/test/hook_list_test.rb +25 -0
  44. data/test/hook_remove_test.rb +34 -0
  45. data/test/hook_scripts_test.rb +21 -0
  46. metadata +19 -22
  47. data/test/default_test.rb +0 -14
  48. data/test/hookfiles/01.test +0 -0
  49. data/test/hookfiles/02.test +0 -0
  50. data/test/hookfiles/03.test +0 -0
  51. data/test/hookfiles/04.test +0 -0
  52. data/test/hookfiles/05.test +0 -0
  53. data/test/hookfiles/06.test +0 -0
  54. data/test/hookfiles/07.test +0 -0
  55. data/test/hookfiles/08.test +0 -0
  56. data/test/hookfiles/09.test +0 -0
  57. data/test/hookfiles/10.test +0 -0
  58. data/test/hookfiles/11.test +0 -0
  59. 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
- module HookApp
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 { |s|
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.each {|mark|
285
- `open '#{mark[:url]}'`
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
- STDERR.print "Are you sure you want to delete ALL hooks from #{url} (y/N)? "
339
- res = STDIN.gets.strip
340
- if res =~ /^y/i
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
- output = ['No bookmarks']
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
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Hook.app CLI interface
4
- class Hooker
5
- include HookApp
4
+ class Hooker < HookApp
5
+ def initialize
6
+ super
7
+ warn "Using Hooker class is deprecated, update to use HookApp instead"
8
+ end
6
9
  end
@@ -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
- @io.puts header("`$ #{@exe}` <mark>`#{([name] + aliases).join('|')}`</mark> `#{arg_name_fmt}`", 1)
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
@@ -57,4 +57,8 @@ class String
57
57
 
58
58
  true
59
59
  end
60
+
61
+ def escape_quotes
62
+ gsub(/"/, '\\"')
63
+ end
60
64
  end
data/lib/hook/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hook
4
- VERSION = '2.0.3'
4
+ VERSION = '2.0.8'
5
5
  end
data/lib/hook.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'hook/version.rb'
3
+ require 'hook/version'
4
4
  require 'shellwords'
5
5
  require 'cgi'
6
- require 'hook/string.rb'
7
- require 'hook/hookapp.rb'
8
- require 'hook/hooker.rb'
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.3
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: 2020-11-11 00:00:00.000000000 Z
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.1.2
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.1.2
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.19.0
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.19.0
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/default_test.rb
159
- - test/hookfiles/01.test
160
- - test/hookfiles/02.test
161
- - test/hookfiles/03.test
162
- - test/hookfiles/04.test
163
- - test/hookfiles/05.test
164
- - test/hookfiles/06.test
165
- - test/hookfiles/07.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.1.4
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
@@ -1,14 +0,0 @@
1
- require 'test_helper'
2
-
3
- class DefaultTest < Test::Unit::TestCase
4
-
5
- def setup
6
- end
7
-
8
- def teardown
9
- end
10
-
11
- def test_the_truth
12
- assert true
13
- end
14
- end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes