Module: Geet::Helpers::OsHelper
- Included in:
- Commandline::Editor, Services::AbstractCreateIssue, Services::CommentPr, Services::CreateGist, Services::OpenPr, Services::OpenRepo, Utils::GitClient
- Defined in:
- lib/geet/helpers/os_helper.rb
Instance Method Summary collapse
-
#execute_command(command, description: nil, interactive: false, silent_stderr: false, allow_error: false) ⇒ Object
Executes the command.
- #open_file_with_default_application(file_or_url) ⇒ Object
Instance Method Details
#execute_command(command, description: nil, interactive: false, silent_stderr: false, allow_error: false) ⇒ Object
Executes the command.
If the command doesn’t execute successfully, it will raise an error.
On non-interactive runs, the stdout content is returned, stripped of the surrounding whitespaces.
description: optional string, to make the error clearer. interactive: set when required; in this case, a different API will be used (‘system()`
instead of `popen3`).
silent_stderr: don’t print the stderr output allow_error: don’t raise error on failure
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/geet/helpers/os_helper.rb', line 31 def execute_command(command, description: nil, interactive: false, silent_stderr: false, allow_error: false) = " on #{description}" if description if interactive system(command) if !$CHILD_STATUS.success? && !allow_error raise "Error#{} (exit status: #{$CHILD_STATUS.exitstatus})" end else Open3.popen3(command) do |_, stdout, stderr, wait_thread| stdout_content = stdout.read stderr_content = stderr.read puts stderr_content if stderr_content != '' && !silent_stderr if !wait_thread.value.success? && !allow_error = stderr_content.lines.first&.strip || "Error running command #{command.inspect}" raise "Error#{}: #{}" end stdout_content.strip end end end |
#open_file_with_default_application(file_or_url) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/geet/helpers/os_helper.rb', line 10 def open_file_with_default_application(file_or_url) open_command = `uname`.strip == 'Darwin' ? "open": "xdg-open" command = "#{open_command} #{file_or_url.shellescape}" system(command, exception: true) end |