hookapp 2.0.8 → 2.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +35 -40
- data/README.md +10 -2
- data/bin/hook +9 -0
- data/hook.rdoc +5 -1
- data/hookapp.gemspec +1 -0
- data/html/App.html +1 -1
- data/html/GLI/Commands/Doc.html +1 -1
- data/html/GLI/Commands/MarkdownDocumentListener.html +1 -1
- data/html/GLI/Commands.html +1 -1
- data/html/GLI.html +1 -1
- data/html/Hook/Prompt.html +100 -0
- data/html/Hook/PromptFZF.html +243 -0
- data/html/Hook/PromptSTD.html +177 -0
- data/html/Hook.html +1 -1
- data/html/HookApp.html +75 -28
- data/html/Hooker.html +2 -2
- data/html/README_rdoc.html +9 -2
- data/html/String.html +1 -1
- data/html/created.rid +8 -7
- data/html/index.html +11 -2
- 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 +55 -5
- data/lib/hook/hookapp.rb +27 -4
- data/lib/hook/hooker.rb +1 -0
- data/lib/hook/prompt.rb +113 -0
- data/lib/hook/version.rb +1 -1
- data/lib/hook.rb +2 -0
- data/test/hook_clip_test.rb +1 -1
- data/test/hook_link_test.rb +2 -1
- metadata +26 -3
- data/lib/helpers/fuzzyfilefinder +0 -0
data/html/index.html
CHANGED
@@ -74,6 +74,9 @@
|
|
74
74
|
<li><a href="./GLI/Commands/Doc.html">GLI::Commands::Doc</a>
|
75
75
|
<li><a href="./GLI/Commands/MarkdownDocumentListener.html">GLI::Commands::MarkdownDocumentListener</a>
|
76
76
|
<li><a href="./Hook.html">Hook</a>
|
77
|
+
<li><a href="./Hook/Prompt.html">Hook::Prompt</a>
|
78
|
+
<li><a href="./Hook/PromptFZF.html">Hook::PromptFZF</a>
|
79
|
+
<li><a href="./Hook/PromptSTD.html">Hook::PromptSTD</a>
|
77
80
|
<li><a href="./HookApp.html">HookApp</a>
|
78
81
|
<li><a href="./Hooker.html">Hooker</a>
|
79
82
|
<li><a href="./String.html">String</a>
|
@@ -96,7 +99,7 @@
|
|
96
99
|
|
97
100
|
<p>This gem includes a `hook` binary that allows interaction with the features of Hook.app.</p>
|
98
101
|
|
99
|
-
<p>v2.0.
|
102
|
+
<p>v2.0.11</p>
|
100
103
|
|
101
104
|
<h3 id="label-Global+Options">Global Options<span><a href="#label-Global+Options">¶</a> <a href="#top">↑</a></span></h3>
|
102
105
|
|
@@ -110,6 +113,12 @@
|
|
110
113
|
|
111
114
|
<h3 id="label-Commands">Commands<span><a href="#label-Commands">¶</a> <a href="#top">↑</a></span></h3>
|
112
115
|
|
116
|
+
<h4 id="label-Command-3A+browse++PATH_OR_GLOB">Command: <code>browse PATH_OR_GLOB</code><span><a href="#label-Command-3A+browse++PATH_OR_GLOB">¶</a> <a href="#top">↑</a></span></h4>
|
117
|
+
|
118
|
+
<p>Browse hooks</p>
|
119
|
+
|
120
|
+
<p>Select a file to see its hooks, navigate through descendents</p>
|
121
|
+
|
113
122
|
<h4 id="label-Command-3A+clip-7Ccp++FILE_OR_URL">Command: <code>clip|cp FILE_OR_URL</code><span><a href="#label-Command-3A+clip-7Ccp++FILE_OR_URL">¶</a> <a href="#top">↑</a></span></h4>
|
114
123
|
|
115
124
|
<p>Copy <a href="Hook.html"><code>Hook</code></a> URL for file/url to clipboard</p>
|
@@ -311,7 +320,7 @@
|
|
311
320
|
|
312
321
|
<footer id="validator-badges" role="contentinfo">
|
313
322
|
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
314
|
-
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.
|
323
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
|
315
324
|
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
316
325
|
</footer>
|
317
326
|
|
data/html/js/navigation.js.gz
CHANGED
Binary file
|
data/html/js/search_index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var search_data = {"index":{"searchIndex":["app","gli","commands","doc","markdowndocumentlistener","hook","hookapp","hooker","string","all_bookmarks()","beginning()","bookmark_for()","bookmark_from_app()","cap()","cap!()","clip()","clip_bookmark()","clone_hooks()","command()","commands()","copy_bookmark()","decode()","default_command()","delete_all_hooks()","delete_hooks()","encode()","end_command()","end_commands()","end_options()","ending()","escape_quotes()","flag()","format_regex()","get_hooks()","link_all()","link_files()","linked_bookmarks()","new()","new()","nil_if_missing()","open_gui()","open_linked()","options()","output_array()","program_desc()","program_long_desc()","search_bookmarks()","search_name()","search_path_or_address()","select_hook()","split_hook()","split_hooks()","switch()","valid_hook()","valid_hook!()","validate_format()","version()","readme"],"longSearchIndex":["app","gli","gli::commands","gli::commands::doc","gli::commands::markdowndocumentlistener","hook","hookapp","hooker","string","hookapp#all_bookmarks()","gli::commands::markdowndocumentlistener#beginning()","hookapp#bookmark_for()","hookapp#bookmark_from_app()","string#cap()","string#cap!()","string#clip()","hookapp#clip_bookmark()","hookapp#clone_hooks()","gli::commands::markdowndocumentlistener#command()","gli::commands::markdowndocumentlistener#commands()","hookapp#copy_bookmark()","hookapp#decode()","gli::commands::markdowndocumentlistener#default_command()","hookapp#delete_all_hooks()","hookapp#delete_hooks()","hookapp#encode()","gli::commands::markdowndocumentlistener#end_command()","gli::commands::markdowndocumentlistener#end_commands()","gli::commands::markdowndocumentlistener#end_options()","gli::commands::markdowndocumentlistener#ending()","string#escape_quotes()","gli::commands::markdowndocumentlistener#flag()","hookapp#format_regex()","hookapp#get_hooks()","hookapp#link_all()","hookapp#link_files()","hookapp#linked_bookmarks()","gli::commands::markdowndocumentlistener::new()","hooker::new()","string#nil_if_missing()","hookapp#open_gui()","hookapp#open_linked()","gli::commands::markdowndocumentlistener#options()","hookapp#output_array()","gli::commands::markdowndocumentlistener#program_desc()","gli::commands::markdowndocumentlistener#program_long_desc()","hookapp#search_bookmarks()","hookapp#search_name()","hookapp#search_path_or_address()","hookapp#select_hook()","string#split_hook()","string#split_hooks()","gli::commands::markdowndocumentlistener#switch()","string#valid_hook()","string#valid_hook!()","hookapp#validate_format()","gli::commands::markdowndocumentlistener#version()",""],"info":[["App","","App.html","","<p>Main class for GLI app\n"],["GLI","","GLI.html","",""],["GLI::Commands","","GLI/Commands.html","",""],["GLI::Commands::Doc","","GLI/Commands/Doc.html","",""],["GLI::Commands::MarkdownDocumentListener","","GLI/Commands/MarkdownDocumentListener.html","","<p>DocumentListener class for GLI documentation generator\n"],["Hook","","Hook.html","",""],["HookApp","","HookApp.html","","<p>Hook.app functions\n"],["Hooker","","Hooker.html","","<p>Hook.app CLI interface\n"],["String","","String.html","","<p>String helpers\n"],["all_bookmarks","HookApp","HookApp.html#method-i-all_bookmarks","()","<p>Get all known bookmarks. Return array of bookmark hashes.\n"],["beginning","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-beginning","()",""],["bookmark_for","HookApp","HookApp.html#method-i-bookmark_for","(url)","<p>Get a Hook bookmark for file or URL. Return bookmark hash.\n"],["bookmark_from_app","HookApp","HookApp.html#method-i-bookmark_from_app","(app, opts)","<p>Get a bookmark from the foreground document of specified app.\n"],["cap","String","String.html#method-i-cap","()","<p>Capitalize only if no uppercase\n"],["cap!","String","String.html#method-i-cap-21","()",""],["clip","String","String.html#method-i-clip","()",""],["clip_bookmark","HookApp","HookApp.html#method-i-clip_bookmark","(url, opts)","<p>Create a bookmark for specified file/url and copy to the clipboard.\n"],["clone_hooks","HookApp","HookApp.html#method-i-clone_hooks","(args)","<p>Copy all hooks from source file to target file\n"],["command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-command","(name, aliases, desc, long_desc, arg_name, arg_options)","<p>Gives you a command in the current context and creates a new context of this command\n"],["commands","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-commands","()",""],["copy_bookmark","HookApp","HookApp.html#method-i-copy_bookmark","(title, url, opts)","<p>Create a bookmark from specified title and url and copy to the clipboard.\n"],["decode","HookApp","HookApp.html#method-i-decode","(string)",""],["default_command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-default_command","(name)","<p>Gives you the name of the current command in the current context\n"],["delete_all_hooks","HookApp","HookApp.html#method-i-delete_all_hooks","(url, force: false)","<p>Delete all hooked files/urls from target file\n"],["delete_hooks","HookApp","HookApp.html#method-i-delete_hooks","(args, opts)","<p>Delete hooks between two files/urls\n"],["encode","HookApp","HookApp.html#method-i-encode","(string)",""],["end_command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_command","(_name)","<p>Ends a command, and “pops” you back up one context\n"],["end_commands","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_commands","()",""],["end_options","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_options","()",""],["ending","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-ending","()","<p>Called when processing has completed\n"],["escape_quotes","String","String.html#method-i-escape_quotes","()",""],["flag","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-flag","(name, aliases, desc, long_desc, default_value, arg_name, must_match, _type)","<p>Gives you a flag in the current context\n"],["format_regex","HookApp","HookApp.html#method-i-format_regex","(options)","<p>Create a single regex for validation of an array by first char or full match.\n"],["get_hooks","HookApp","HookApp.html#method-i-get_hooks","(url)","<p>Get bookmarks hooked to file or URL. Return array of bookmark hashes.\n"],["link_all","HookApp","HookApp.html#method-i-link_all","(args)","<p>Create bi-directional links between every file/url in the list of arguments\n"],["link_files","HookApp","HookApp.html#method-i-link_files","(args)","<p>Link 2 or more files/urls with bi-directional hooks.\n"],["linked_bookmarks","HookApp","HookApp.html#method-i-linked_bookmarks","(args, opts)","<p>Get a list of all hooks on a file/url.\n"],["new","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-c-new","(_global_options, _options, _arguments, app)",""],["new","Hooker","Hooker.html#method-c-new","()",""],["nil_if_missing","String","String.html#method-i-nil_if_missing","()",""],["open_gui","HookApp","HookApp.html#method-i-open_gui","(url)","<p>Open the Hook GUI for browsing/performing actions on a file or url\n"],["open_linked","HookApp","HookApp.html#method-i-open_linked","(url)","<p>Select from a menu of available hooks and open using macOS `open`.\n"],["options","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-options","()",""],["output_array","HookApp","HookApp.html#method-i-output_array","(hooks_arr, opts)","<p>Output an array of hooks in the given format.\n"],["program_desc","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-program_desc","(desc)","<p>Gives you the program description\n"],["program_long_desc","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-program_long_desc","(desc)",""],["search_bookmarks","HookApp","HookApp.html#method-i-search_bookmarks","(search, opts)","<p>Search bookmarks, using both names and addresses unless options contain “:names_only”. Return …\n"],["search_name","HookApp","HookApp.html#method-i-search_name","(search)","<p>Search boomark names/titles. Return array of bookmark hashes.\n"],["search_path_or_address","HookApp","HookApp.html#method-i-search_path_or_address","(search)","<p>Search bookmark paths and addresses. Return array of bookmark hashes.\n"],["select_hook","HookApp","HookApp.html#method-i-select_hook","(marks)","<p>Generate a menu of available hooks for selecting one or more hooks to operate on. Revamped to use `fzf`, …\n"],["split_hook","String","String.html#method-i-split_hook","()",""],["split_hooks","String","String.html#method-i-split_hooks","()",""],["switch","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-switch","(name, aliases, desc, long_desc, negatable)","<p>Gives you a switch in the current context\n"],["valid_hook","String","String.html#method-i-valid_hook","()",""],["valid_hook!","String","String.html#method-i-valid_hook-21","()",""],["validate_format","HookApp","HookApp.html#method-i-validate_format","(fmt, options)","<p>Check if format fully matches or matches the first character of available options. Return full valid …\n"],["version","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-version","(version)","<p>Gives you the program version\n"],["README","","README_rdoc.html","","<p>hookapp\n<p>A CLI for Hook.app on macOS.\n<p>hook - CLI interface for Hook.app (macOS)\n"]]}}
|
1
|
+
var search_data = {"index":{"searchIndex":["app","gli","commands","doc","markdowndocumentlistener","hook","prompt","promptfzf","promptstd","hookapp","hooker","string","all_bookmarks()","beginning()","bookmark_for()","bookmark_from_app()","browse_bookmarks()","cap()","cap!()","clear_screen()","clip()","clip_bookmark()","clone_hooks()","command()","commands()","copy_bookmark()","decode()","default_command()","delete_all_hooks()","delete_hooks()","encode()","end_command()","end_commands()","end_options()","ending()","escape_quotes()","flag()","format_regex()","fzf()","get_hooks()","install_fzf()","link_all()","link_files()","linked_bookmarks()","new()","new()","nil_if_missing()","open_gui()","open_linked()","options()","output_array()","program_desc()","program_long_desc()","restore_std()","search_bookmarks()","search_name()","search_path_or_address()","select_hook()","silence_std()","split_hook()","split_hooks()","switch()","uninstall_fzf()","valid_hook()","valid_hook!()","validate_format()","version()","which_fzf()","readme"],"longSearchIndex":["app","gli","gli::commands","gli::commands::doc","gli::commands::markdowndocumentlistener","hook","hook::prompt","hook::promptfzf","hook::promptstd","hookapp","hooker","string","hookapp#all_bookmarks()","gli::commands::markdowndocumentlistener#beginning()","hookapp#bookmark_for()","hookapp#bookmark_from_app()","hookapp#browse_bookmarks()","string#cap()","string#cap!()","hook::promptstd#clear_screen()","string#clip()","hookapp#clip_bookmark()","hookapp#clone_hooks()","gli::commands::markdowndocumentlistener#command()","gli::commands::markdowndocumentlistener#commands()","hookapp#copy_bookmark()","hookapp#decode()","gli::commands::markdowndocumentlistener#default_command()","hookapp#delete_all_hooks()","hookapp#delete_hooks()","hookapp#encode()","gli::commands::markdowndocumentlistener#end_command()","gli::commands::markdowndocumentlistener#end_commands()","gli::commands::markdowndocumentlistener#end_options()","gli::commands::markdowndocumentlistener#ending()","string#escape_quotes()","gli::commands::markdowndocumentlistener#flag()","hookapp#format_regex()","hook::promptfzf#fzf()","hookapp#get_hooks()","hook::promptfzf#install_fzf()","hookapp#link_all()","hookapp#link_files()","hookapp#linked_bookmarks()","gli::commands::markdowndocumentlistener::new()","hooker::new()","string#nil_if_missing()","hookapp#open_gui()","hookapp#open_linked()","gli::commands::markdowndocumentlistener#options()","hookapp#output_array()","gli::commands::markdowndocumentlistener#program_desc()","gli::commands::markdowndocumentlistener#program_long_desc()","hook::promptstd#restore_std()","hookapp#search_bookmarks()","hookapp#search_name()","hookapp#search_path_or_address()","hookapp#select_hook()","hook::promptstd#silence_std()","string#split_hook()","string#split_hooks()","gli::commands::markdowndocumentlistener#switch()","hook::promptfzf#uninstall_fzf()","string#valid_hook()","string#valid_hook!()","hookapp#validate_format()","gli::commands::markdowndocumentlistener#version()","hook::promptfzf#which_fzf()",""],"info":[["App","","App.html","","<p>Main class for GLI app\n"],["GLI","","GLI.html","",""],["GLI::Commands","","GLI/Commands.html","",""],["GLI::Commands::Doc","","GLI/Commands/Doc.html","",""],["GLI::Commands::MarkdownDocumentListener","","GLI/Commands/MarkdownDocumentListener.html","","<p>DocumentListener class for GLI documentation generator\n"],["Hook","","Hook.html","",""],["Hook::Prompt","","Hook/Prompt.html","",""],["Hook::PromptFZF","","Hook/PromptFZF.html","","<p>Methods for working installing/using FuzzyFileFinder\n"],["Hook::PromptSTD","","Hook/PromptSTD.html","",""],["HookApp","","HookApp.html","","<p>Hook.app functions\n"],["Hooker","","Hooker.html","","<p>Hook.app CLI interface\n"],["String","","String.html","","<p>String helpers\n"],["all_bookmarks","HookApp","HookApp.html#method-i-all_bookmarks","()","<p>Get all known bookmarks. Return array of bookmark hashes.\n"],["beginning","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-beginning","()",""],["bookmark_for","HookApp","HookApp.html#method-i-bookmark_for","(url)","<p>Get a Hook bookmark for file or URL. Return bookmark hash.\n"],["bookmark_from_app","HookApp","HookApp.html#method-i-bookmark_from_app","(app, opts)","<p>Get a bookmark from the foreground document of specified app.\n"],["browse_bookmarks","HookApp","HookApp.html#method-i-browse_bookmarks","(glob)",""],["cap","String","String.html#method-i-cap","()","<p>Capitalize only if no uppercase\n"],["cap!","String","String.html#method-i-cap-21","()",""],["clear_screen","Hook::PromptSTD","Hook/PromptSTD.html#method-i-clear_screen","(msg = nil)","<p>Clear the terminal screen\n"],["clip","String","String.html#method-i-clip","()",""],["clip_bookmark","HookApp","HookApp.html#method-i-clip_bookmark","(url, opts)","<p>Create a bookmark for specified file/url and copy to the clipboard.\n"],["clone_hooks","HookApp","HookApp.html#method-i-clone_hooks","(args)","<p>Copy all hooks from source file to target file\n"],["command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-command","(name, aliases, desc, long_desc, arg_name, arg_options)","<p>Gives you a command in the current context and creates a new context of this command\n"],["commands","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-commands","()",""],["copy_bookmark","HookApp","HookApp.html#method-i-copy_bookmark","(title, url, opts)","<p>Create a bookmark from specified title and url and copy to the clipboard.\n"],["decode","HookApp","HookApp.html#method-i-decode","(string)",""],["default_command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-default_command","(name)","<p>Gives you the name of the current command in the current context\n"],["delete_all_hooks","HookApp","HookApp.html#method-i-delete_all_hooks","(url, force: false)","<p>Delete all hooked files/urls from target file\n"],["delete_hooks","HookApp","HookApp.html#method-i-delete_hooks","(args, opts)","<p>Delete hooks between two files/urls\n"],["encode","HookApp","HookApp.html#method-i-encode","(string)",""],["end_command","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_command","(_name)","<p>Ends a command, and “pops” you back up one context\n"],["end_commands","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_commands","()",""],["end_options","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-end_options","()",""],["ending","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-ending","()","<p>Called when processing has completed\n"],["escape_quotes","String","String.html#method-i-escape_quotes","()",""],["flag","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-flag","(name, aliases, desc, long_desc, default_value, arg_name, must_match, _type)","<p>Gives you a flag in the current context\n"],["format_regex","HookApp","HookApp.html#method-i-format_regex","(options)","<p>Create a single regex for validation of an array by first char or full match.\n"],["fzf","Hook::PromptFZF","Hook/PromptFZF.html#method-i-fzf","()","<p>Get path to fzf binary, installing if needed\n<p>@return [String] Path to fzf binary\n"],["get_hooks","HookApp","HookApp.html#method-i-get_hooks","(url)","<p>Get bookmarks hooked to file or URL. Return array of bookmark hashes.\n"],["install_fzf","Hook::PromptFZF","Hook/PromptFZF.html#method-i-install_fzf","(force: false)","<p>Install fzf on the current system. Installs to a subdirectory of the gem\n<p>@param force [Boolean] …\n"],["link_all","HookApp","HookApp.html#method-i-link_all","(args)","<p>Create bi-directional links between every file/url in the list of arguments\n"],["link_files","HookApp","HookApp.html#method-i-link_files","(args)","<p>Link 2 or more files/urls with bi-directional hooks.\n"],["linked_bookmarks","HookApp","HookApp.html#method-i-linked_bookmarks","(args, opts)","<p>Get a list of all hooks on a file/url.\n"],["new","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-c-new","(_global_options, _options, _arguments, app)",""],["new","Hooker","Hooker.html#method-c-new","()",""],["nil_if_missing","String","String.html#method-i-nil_if_missing","()",""],["open_gui","HookApp","HookApp.html#method-i-open_gui","(url)","<p>Open the Hook GUI for browsing/performing actions on a file or url\n"],["open_linked","HookApp","HookApp.html#method-i-open_linked","(url)","<p>Select from a menu of available hooks and open using macOS `open`.\n"],["options","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-options","()",""],["output_array","HookApp","HookApp.html#method-i-output_array","(hooks_arr, opts)","<p>Output an array of hooks in the given format.\n"],["program_desc","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-program_desc","(desc)","<p>Gives you the program description\n"],["program_long_desc","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-program_long_desc","(desc)",""],["restore_std","Hook::PromptSTD","Hook/PromptSTD.html#method-i-restore_std","()","<p>Restore silenced STDOUT and STDERR\n"],["search_bookmarks","HookApp","HookApp.html#method-i-search_bookmarks","(search, opts)","<p>Search bookmarks, using both names and addresses unless options contain “:names_only”. Return …\n"],["search_name","HookApp","HookApp.html#method-i-search_name","(search)","<p>Search boomark names/titles. Return array of bookmark hashes.\n"],["search_path_or_address","HookApp","HookApp.html#method-i-search_path_or_address","(search)","<p>Search bookmark paths and addresses. Return array of bookmark hashes.\n"],["select_hook","HookApp","HookApp.html#method-i-select_hook","(marks)","<p>Generate a menu of available hooks for selecting one or more hooks to operate on. Revamped to use `fzf`, …\n"],["silence_std","Hook::PromptSTD","Hook/PromptSTD.html#method-i-silence_std","(file = '/dev/null')","<p>Redirect STDOUT and STDERR to /dev/null or file\n<p>@param file [String] a file path to redirect to …\n"],["split_hook","String","String.html#method-i-split_hook","()",""],["split_hooks","String","String.html#method-i-split_hooks","()",""],["switch","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-switch","(name, aliases, desc, long_desc, negatable)","<p>Gives you a switch in the current context\n"],["uninstall_fzf","Hook::PromptFZF","Hook/PromptFZF.html#method-i-uninstall_fzf","()","<p>Remove fzf binary\n"],["valid_hook","String","String.html#method-i-valid_hook","()",""],["valid_hook!","String","String.html#method-i-valid_hook-21","()",""],["validate_format","HookApp","HookApp.html#method-i-validate_format","(fmt, options)","<p>Check if format fully matches or matches the first character of available options. Return full valid …\n"],["version","GLI::Commands::MarkdownDocumentListener","GLI/Commands/MarkdownDocumentListener.html#method-i-version","(version)","<p>Gives you the program version\n"],["which_fzf","Hook::PromptFZF","Hook/PromptFZF.html#method-i-which_fzf","()","<p>Return the path to the fzf binary\n<p>@return [String] Path to fzf\n"],["README","","README_rdoc.html","","<p>hookapp\n<p>A CLI for Hook.app on macOS.\n<p>hook - CLI interface for Hook.app (macOS)\n"]]}}
|
data/html/js/search_index.js.gz
CHANGED
Binary file
|
data/html/js/searcher.js.gz
CHANGED
Binary file
|
data/html/table_of_contents.html
CHANGED
@@ -37,6 +37,7 @@
|
|
37
37
|
<li><a href="README_rdoc.html#label--help">–help</a>
|
38
38
|
<li><a href="README_rdoc.html#label--version">–version</a>
|
39
39
|
<li><a href="README_rdoc.html#label-Commands">Commands</a>
|
40
|
+
<li><a href="README_rdoc.html#label-Command-3A+browse++PATH_OR_GLOB">Command: <code>browse PATH_OR_GLOB</code></a>
|
40
41
|
<li><a href="README_rdoc.html#label-Command-3A+clip-7Ccp++FILE_OR_URL">Command: <code>clip|cp FILE_OR_URL</code></a>
|
41
42
|
<li><a href="README_rdoc.html#label-Options">Options</a>
|
42
43
|
<li><a href="README_rdoc.html#label-a-7C--app+APP_NAME">-a|–app APP_NAME</a>
|
@@ -100,6 +101,15 @@
|
|
100
101
|
<li class="module">
|
101
102
|
<a href="Hook.html">Hook</a>
|
102
103
|
</li>
|
104
|
+
<li class="module">
|
105
|
+
<a href="Hook/Prompt.html">Hook::Prompt</a>
|
106
|
+
</li>
|
107
|
+
<li class="module">
|
108
|
+
<a href="Hook/PromptFZF.html">Hook::PromptFZF</a>
|
109
|
+
</li>
|
110
|
+
<li class="module">
|
111
|
+
<a href="Hook/PromptSTD.html">Hook::PromptSTD</a>
|
112
|
+
</li>
|
103
113
|
<li class="class">
|
104
114
|
<a href="HookApp.html">HookApp</a>
|
105
115
|
</li>
|
@@ -115,14 +125,14 @@
|
|
115
125
|
<ul>
|
116
126
|
|
117
127
|
<li class="method">
|
118
|
-
<a href="
|
128
|
+
<a href="GLI/Commands/MarkdownDocumentListener.html#method-c-new">::new</a>
|
119
129
|
—
|
120
|
-
<span class="container">
|
130
|
+
<span class="container">GLI::Commands::MarkdownDocumentListener</span>
|
121
131
|
|
122
132
|
<li class="method">
|
123
|
-
<a href="
|
133
|
+
<a href="Hooker.html#method-c-new">::new</a>
|
124
134
|
—
|
125
|
-
<span class="container">
|
135
|
+
<span class="container">Hooker</span>
|
126
136
|
|
127
137
|
<li class="method">
|
128
138
|
<a href="HookApp.html#method-i-all_bookmarks">#all_bookmarks</a>
|
@@ -144,6 +154,11 @@
|
|
144
154
|
—
|
145
155
|
<span class="container">HookApp</span>
|
146
156
|
|
157
|
+
<li class="method">
|
158
|
+
<a href="HookApp.html#method-i-browse_bookmarks">#browse_bookmarks</a>
|
159
|
+
—
|
160
|
+
<span class="container">HookApp</span>
|
161
|
+
|
147
162
|
<li class="method">
|
148
163
|
<a href="String.html#method-i-cap">#cap</a>
|
149
164
|
—
|
@@ -154,6 +169,11 @@
|
|
154
169
|
—
|
155
170
|
<span class="container">String</span>
|
156
171
|
|
172
|
+
<li class="method">
|
173
|
+
<a href="Hook/PromptSTD.html#method-i-clear_screen">#clear_screen</a>
|
174
|
+
—
|
175
|
+
<span class="container">Hook::PromptSTD</span>
|
176
|
+
|
157
177
|
<li class="method">
|
158
178
|
<a href="String.html#method-i-clip">#clip</a>
|
159
179
|
—
|
@@ -244,11 +264,21 @@
|
|
244
264
|
—
|
245
265
|
<span class="container">HookApp</span>
|
246
266
|
|
267
|
+
<li class="method">
|
268
|
+
<a href="Hook/PromptFZF.html#method-i-fzf">#fzf</a>
|
269
|
+
—
|
270
|
+
<span class="container">Hook::PromptFZF</span>
|
271
|
+
|
247
272
|
<li class="method">
|
248
273
|
<a href="HookApp.html#method-i-get_hooks">#get_hooks</a>
|
249
274
|
—
|
250
275
|
<span class="container">HookApp</span>
|
251
276
|
|
277
|
+
<li class="method">
|
278
|
+
<a href="Hook/PromptFZF.html#method-i-install_fzf">#install_fzf</a>
|
279
|
+
—
|
280
|
+
<span class="container">Hook::PromptFZF</span>
|
281
|
+
|
252
282
|
<li class="method">
|
253
283
|
<a href="HookApp.html#method-i-link_all">#link_all</a>
|
254
284
|
—
|
@@ -299,6 +329,11 @@
|
|
299
329
|
—
|
300
330
|
<span class="container">GLI::Commands::MarkdownDocumentListener</span>
|
301
331
|
|
332
|
+
<li class="method">
|
333
|
+
<a href="Hook/PromptSTD.html#method-i-restore_std">#restore_std</a>
|
334
|
+
—
|
335
|
+
<span class="container">Hook::PromptSTD</span>
|
336
|
+
|
302
337
|
<li class="method">
|
303
338
|
<a href="HookApp.html#method-i-search_bookmarks">#search_bookmarks</a>
|
304
339
|
—
|
@@ -319,6 +354,11 @@
|
|
319
354
|
—
|
320
355
|
<span class="container">HookApp</span>
|
321
356
|
|
357
|
+
<li class="method">
|
358
|
+
<a href="Hook/PromptSTD.html#method-i-silence_std">#silence_std</a>
|
359
|
+
—
|
360
|
+
<span class="container">Hook::PromptSTD</span>
|
361
|
+
|
322
362
|
<li class="method">
|
323
363
|
<a href="String.html#method-i-split_hook">#split_hook</a>
|
324
364
|
—
|
@@ -334,6 +374,11 @@
|
|
334
374
|
—
|
335
375
|
<span class="container">GLI::Commands::MarkdownDocumentListener</span>
|
336
376
|
|
377
|
+
<li class="method">
|
378
|
+
<a href="Hook/PromptFZF.html#method-i-uninstall_fzf">#uninstall_fzf</a>
|
379
|
+
—
|
380
|
+
<span class="container">Hook::PromptFZF</span>
|
381
|
+
|
337
382
|
<li class="method">
|
338
383
|
<a href="String.html#method-i-valid_hook">#valid_hook</a>
|
339
384
|
—
|
@@ -353,13 +398,18 @@
|
|
353
398
|
<a href="GLI/Commands/MarkdownDocumentListener.html#method-i-version">#version</a>
|
354
399
|
—
|
355
400
|
<span class="container">GLI::Commands::MarkdownDocumentListener</span>
|
401
|
+
|
402
|
+
<li class="method">
|
403
|
+
<a href="Hook/PromptFZF.html#method-i-which_fzf">#which_fzf</a>
|
404
|
+
—
|
405
|
+
<span class="container">Hook::PromptFZF</span>
|
356
406
|
</ul>
|
357
407
|
</main>
|
358
408
|
|
359
409
|
|
360
410
|
<footer id="validator-badges" role="contentinfo">
|
361
411
|
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
362
|
-
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.
|
412
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
|
363
413
|
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
364
414
|
</footer>
|
365
415
|
|
data/lib/hook/hookapp.rb
CHANGED
@@ -4,6 +4,8 @@ require 'shellwords'
|
|
4
4
|
require 'uri'
|
5
5
|
# Hook.app functions
|
6
6
|
class HookApp
|
7
|
+
include Hook::Prompt
|
8
|
+
|
7
9
|
# Create a single regex for validation of an
|
8
10
|
# array by first char or full match.
|
9
11
|
def format_regex(options)
|
@@ -241,12 +243,10 @@ class HookApp
|
|
241
243
|
'--delimiter="\t"',
|
242
244
|
'--with-nth=1,4',
|
243
245
|
'--height=60%',
|
244
|
-
'--min-height=10'
|
245
|
-
]
|
246
|
-
|
247
|
-
fzf = File.join(File.dirname(__FILE__), '../helpers/fuzzyfilefinder')
|
246
|
+
'--min-height=10']
|
248
247
|
|
249
248
|
sel = `echo #{Shellwords.escape(options.join("\n"))} | '#{fzf}' #{args.join(' ')}`.chomp
|
249
|
+
|
250
250
|
res = sel.split(/\n/).map do |s|
|
251
251
|
ps = s.split(/\t/)
|
252
252
|
{ name: ps[0], path: ps[1], url: ps[2] }
|
@@ -255,6 +255,29 @@ class HookApp
|
|
255
255
|
res || []
|
256
256
|
end
|
257
257
|
|
258
|
+
def browse_bookmarks(glob)
|
259
|
+
root = if glob.is_a?(Array)
|
260
|
+
glob.count.positive? ? glob : Dir.glob('**/*')
|
261
|
+
elsif glob && File.exist?(glob)
|
262
|
+
hooks = get_hooks(glob)
|
263
|
+
return select_hook(hooks) unless hooks.empty? || File.directory?(glob)
|
264
|
+
|
265
|
+
Dir.glob([File.expand_path(glob), '**/*'])
|
266
|
+
else
|
267
|
+
Dir.glob(glob.nil? || glob.empty? ? '**/*' : glob)
|
268
|
+
end
|
269
|
+
|
270
|
+
args = ['--layout=reverse-list',
|
271
|
+
'--header="esc: cancel, return: open"',
|
272
|
+
'--prompt=" Select file > "',
|
273
|
+
%(--preview='hook ls {1}'),
|
274
|
+
'--height=60%',
|
275
|
+
'--min-height=10']
|
276
|
+
|
277
|
+
sel = `echo #{Shellwords.escape(root.join("\n"))} | '#{fzf}' #{args.join(' ')}`.chomp
|
278
|
+
return open_linked(sel)
|
279
|
+
end
|
280
|
+
|
258
281
|
# Open the Hook GUI for browsing/performing actions on a file or url
|
259
282
|
def open_gui(url)
|
260
283
|
result = `osascript <<'APPLESCRIPT'
|
data/lib/hook/hooker.rb
CHANGED
data/lib/hook/prompt.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Hook
|
4
|
+
module PromptSTD
|
5
|
+
##
|
6
|
+
## Clear the terminal screen
|
7
|
+
##
|
8
|
+
def clear_screen(msg = nil)
|
9
|
+
puts "\e[H\e[2J" if $stdout.tty?
|
10
|
+
puts msg if msg.good?
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
## Redirect STDOUT and STDERR to /dev/null or file
|
15
|
+
##
|
16
|
+
## @param file [String] a file path to redirect to
|
17
|
+
##
|
18
|
+
def silence_std(file = '/dev/null')
|
19
|
+
$stdout = File.new(file, 'w')
|
20
|
+
$stderr = File.new(file, 'w')
|
21
|
+
end
|
22
|
+
|
23
|
+
##
|
24
|
+
## Restore silenced STDOUT and STDERR
|
25
|
+
##
|
26
|
+
def restore_std
|
27
|
+
$stdout = STDOUT
|
28
|
+
$stderr = STDERR
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Methods for working installing/using FuzzyFileFinder
|
33
|
+
module PromptFZF
|
34
|
+
##
|
35
|
+
## Get path to fzf binary, installing if needed
|
36
|
+
##
|
37
|
+
## @return [String] Path to fzf binary
|
38
|
+
##
|
39
|
+
def fzf
|
40
|
+
@fzf ||= install_fzf
|
41
|
+
end
|
42
|
+
|
43
|
+
##
|
44
|
+
## Remove fzf binary
|
45
|
+
##
|
46
|
+
def uninstall_fzf
|
47
|
+
fzf_bin = File.join(File.dirname(__FILE__), '../helpers/fzf/bin/fzf')
|
48
|
+
FileUtils.rm_f(fzf_bin) if File.exist?(fzf_bin)
|
49
|
+
warn 'fzf: removed #{fzf_bin}'
|
50
|
+
end
|
51
|
+
|
52
|
+
##
|
53
|
+
## Return the path to the fzf binary
|
54
|
+
##
|
55
|
+
## @return [String] Path to fzf
|
56
|
+
##
|
57
|
+
def which_fzf
|
58
|
+
fzf_dir = File.join(File.dirname(__FILE__), '../helpers/fzf')
|
59
|
+
fzf_bin = File.join(fzf_dir, 'bin/fzf')
|
60
|
+
return fzf_bin if File.exist?(fzf_bin)
|
61
|
+
|
62
|
+
TTY::Which.which('fzf')
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
## Install fzf on the current system. Installs to a
|
67
|
+
## subdirectory of the gem
|
68
|
+
##
|
69
|
+
## @param force [Boolean] If true, reinstall if
|
70
|
+
## needed
|
71
|
+
##
|
72
|
+
## @return [String] Path to fzf binary
|
73
|
+
##
|
74
|
+
def install_fzf(force: false)
|
75
|
+
if force
|
76
|
+
uninstall_fzf
|
77
|
+
elsif which_fzf
|
78
|
+
return which_fzf
|
79
|
+
end
|
80
|
+
|
81
|
+
fzf_dir = File.join(File.dirname(__FILE__), '../helpers/fzf')
|
82
|
+
FileUtils.mkdir_p(fzf_dir) unless File.directory?(fzf_dir)
|
83
|
+
fzf_bin = File.join(fzf_dir, 'bin/fzf')
|
84
|
+
return fzf_bin if File.exist?(fzf_bin)
|
85
|
+
|
86
|
+
warn 'fzf: Compiling and installing fzf -- this will only happen once'
|
87
|
+
warn 'fzf: fzf is copyright Junegunn Choi, MIT License <https://github.com/junegunn/fzf/blob/master/LICENSE>'
|
88
|
+
|
89
|
+
silence_std
|
90
|
+
`'#{fzf_dir}/install' --bin --no-key-bindings --no-completion --no-update-rc --no-bash --no-zsh --no-fish &> /dev/null`
|
91
|
+
unless File.exist?(fzf_bin)
|
92
|
+
restore_std
|
93
|
+
warn 'Error installing, trying again as root'
|
94
|
+
silence_std
|
95
|
+
`sudo '#{fzf_dir}/install' --bin --no-key-bindings --no-completion --no-update-rc --no-bash --no-zsh --no-fish &> /dev/null`
|
96
|
+
end
|
97
|
+
restore_std
|
98
|
+
unless File.exist?(fzf_bin)
|
99
|
+
puts 'fzf: unable to install fzf. You can install manually and Hook CLI will use the system version.'
|
100
|
+
puts 'fzf: see https://github.com/junegunn/fzf#installation'
|
101
|
+
raise RuntimeError.new('Error installing fzf, please report at https://github.com/ttscoff/hookapp/issues')
|
102
|
+
end
|
103
|
+
|
104
|
+
warn "fzf: installed to #{fzf}"
|
105
|
+
fzf_bin
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
module Prompt
|
110
|
+
include PromptSTD
|
111
|
+
include PromptFZF
|
112
|
+
end
|
113
|
+
end
|
data/lib/hook/version.rb
CHANGED
data/lib/hook.rb
CHANGED
data/test/hook_clip_test.rb
CHANGED
@@ -19,6 +19,6 @@ class ClipTest < Test::Unit::TestCase
|
|
19
19
|
`echo -n | pbcopy`
|
20
20
|
hook('clip', file)
|
21
21
|
clipboard = `pbpaste`.strip
|
22
|
-
assert_match(/^hook:.*?#{File.basename(file)}$/, clipboard, 'Clipboard should contain link to first file')
|
22
|
+
assert_match(/^hook:.*?#{File.basename(file).sub(/\./, '(%2E|\.)')}$/, clipboard, 'Clipboard should contain link to first file')
|
23
23
|
end
|
24
24
|
end
|
data/test/hook_link_test.rb
CHANGED
@@ -22,7 +22,8 @@ class LinkTest < Test::Unit::TestCase
|
|
22
22
|
hook('link', *files)
|
23
23
|
|
24
24
|
assert_count_links(files[-1], count - 1, "Last file should have #{count - 1} links")
|
25
|
-
|
25
|
+
# I think hook behavior with multi-file linking has changed...
|
26
|
+
# assert_count_links(files[0], 1, 'First file should have 1 link')
|
26
27
|
end
|
27
28
|
|
28
29
|
def test_bi_link
|
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.11
|
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: 2022-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|
@@ -66,6 +66,26 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.20.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: tty-which
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.5'
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 0.5.0
|
79
|
+
type: :runtime
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0.5'
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.5.0
|
69
89
|
description:
|
70
90
|
email: me@brettterpstra.com
|
71
91
|
executables:
|
@@ -99,6 +119,9 @@ files:
|
|
99
119
|
- html/GLI/Commands/Doc.html
|
100
120
|
- html/GLI/Commands/MarkdownDocumentListener.html
|
101
121
|
- html/Hook.html
|
122
|
+
- html/Hook/Prompt.html
|
123
|
+
- html/Hook/PromptFZF.html
|
124
|
+
- html/Hook/PromptSTD.html
|
102
125
|
- html/HookApp.html
|
103
126
|
- html/Hooker.html
|
104
127
|
- html/README_rdoc.html
|
@@ -150,11 +173,11 @@ files:
|
|
150
173
|
- lib/completion/hook_completion.bash
|
151
174
|
- lib/completion/hook_completion.fish
|
152
175
|
- lib/completion/hook_completion.zsh
|
153
|
-
- lib/helpers/fuzzyfilefinder
|
154
176
|
- lib/hook.rb
|
155
177
|
- lib/hook/hookapp.rb
|
156
178
|
- lib/hook/hooker.rb
|
157
179
|
- lib/hook/markdown_document_listener.rb
|
180
|
+
- lib/hook/prompt.rb
|
158
181
|
- lib/hook/string.rb
|
159
182
|
- lib/hook/version.rb
|
160
183
|
- test/helpers/hook-helpers.rb
|
data/lib/helpers/fuzzyfilefinder
DELETED
Binary file
|