Module: CouchShell::PluginUtils
- Included in:
- Plugin
- Defined in:
- lib/couch-shell/plugin_utils.rb
Overview
Requires an instance method named “shell” that returns a CouchShell::Shell compatible object.
Defined Under Namespace
Classes: ShellError, VarNotSet
Instance Method Summary collapse
-
#continue?(msg) ⇒ Boolean
Displays msg in the same style as the standard couch-shell prompt and raises ShellError unless the user hits ENTER and nothing else.
-
#dbname! ⇒ Object
Get the first element of pathstack or raise an exception if pathstack is empty.
-
#editfile!(path) ⇒ Object
Opens editor with the given file path and returns after the user closes the editor or raises a ShellError if the editor doesn’t exit with an exit status of 0.
-
#edittext!(content, tempfile_name_ext = ".js", tempfile_name_part = "cs") ⇒ Object
Writes content to a temporary file, calls editfile! on it and returns the new file content on success after unlinking the temporary file.
-
#ensure_at_database ⇒ Object
Raise an exception unless pathstack size is 1.
-
#request!(*args) ⇒ Object
Like shell.request, but raises a ShellError (“required request failed”) if response.ok? is false.
Instance Method Details
#continue?(msg) ⇒ Boolean
Displays msg in the same style as the standard couch-shell prompt and raises ShellError unless the user hits ENTER and nothing else.
Usage:
# do some setup logic
continue?("Changes made: foo replaced by bar\n" +
"Press ENTER to save changes or CTRL+C to cancel")
# save changes
47 48 49 50 51 52 |
# File 'lib/couch-shell/plugin_utils.rb', line 47 def continue?(msg) shell.prompt_msg(msg, false) unless shell.stdin.gets.chomp.empty? raise ShellError, "cancelled" end end |
#dbname! ⇒ Object
Get the first element of pathstack or raise an exception if pathstack is empty.
26 27 28 29 |
# File 'lib/couch-shell/plugin_utils.rb', line 26 def dbname! raise ShellError, "must cd into database" if shell.pathstack.empty? shell.pathstack[0] end |
#editfile!(path) ⇒ Object
Opens editor with the given file path and returns after the user closes the editor or raises a ShellError if the editor doesn’t exit with an exit status of 0.
65 66 67 68 69 |
# File 'lib/couch-shell/plugin_utils.rb', line 65 def editfile!(path) unless system(shell.editor_bin!, path) raise ShellError, "editing command failed with exit status #{$?.exitstatus}" end end |
#edittext!(content, tempfile_name_ext = ".js", tempfile_name_part = "cs") ⇒ Object
Writes content to a temporary file, calls editfile! on it and returns the new file content on success after unlinking the temporary file.
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/couch-shell/plugin_utils.rb', line 73 def edittext!(content, tempfile_name_ext = ".js", tempfile_name_part = "cs") t = Tempfile.new([tempfile_name_part, tempfile_name_ext]) t.write(content) t.close editfile! t.path t.open.read ensure if t t.close t.unlink end end |
#ensure_at_database ⇒ Object
Raise an exception unless pathstack size is 1.
32 33 34 35 36 |
# File 'lib/couch-shell/plugin_utils.rb', line 32 def ensure_at_database if shell.pathstack.size != 1 raise ShellError, "current directory must be database" end end |
#request!(*args) ⇒ Object
Like shell.request, but raises a ShellError (“required request failed”) if response.ok? is false.
56 57 58 59 60 |
# File 'lib/couch-shell/plugin_utils.rb', line 56 def request!(*args) shell.request(*args).tap do |res| raise ShellError, "required request failed" unless res.ok? end end |