module DeepCover::CLI::Tools
Public Class Methods
extract_commands_for_help(commands, *names)
click to toggle source
Extracts the commands for the help by name, in same order as the names. This make handling the output of printable_commands more easily. Returns the matching and the remaining commands.
# File lib/deep_cover/cli/tools.rb, line 9 def self.extract_commands_for_help(commands, *names) matching = names.map do |name| commands.detect { |usage, desc| usage.start_with?("deep-cover #{name}") } end remains = commands - matching [matching, remains] end
run_command_or_exit(shell, env_var, *command_parts)
click to toggle source
Basically does the same as Kernel.system, but:
-
exits with an error message when unable to start the command
-
returns the error code instead of just true/false
# File lib/deep_cover/cli/tools.rb, line 20 def self.run_command_or_exit(shell, env_var, *command_parts) # Clear inspiration from Bundler's kernel_exec # https://github.com/bundler/bundler/blob/d44d803357506895555ff97f73e60d593820a0de/lib/bundler/cli/exec.rb#L50 begin pid = Kernel.spawn(env_var, *command_parts) rescue Errno::EACCES, Errno::ENOEXEC warn shell.set_color("not executable: #{command_parts.first}", :red) exit 126 # Default exit code for that rescue Errno::ENOENT warn shell.set_color("command not found: #{command_parts.first}", :red) exit 127 # Default exit code for that end Process.wait pid $?.exitstatus end