Class: Launchy::Runner
- Inherits:
-
Object
- Object
- Launchy::Runner
- Defined in:
- lib/launchy/runner.rb
Instance Method Summary collapse
- #commandline_normalize(cmdline) ⇒ Object
- #dry_run(cmd, *args) ⇒ Object
- #run(cmd, *args) ⇒ Object
-
#shell_commands(cmd, args) ⇒ Object
cut it down to just the shell commands that will be passed to exec or posix_spawn.
- #wet_run(cmd, *args) ⇒ Object
Instance Method Details
#commandline_normalize(cmdline) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/launchy/runner.rb', line 39 def commandline_normalize( cmdline ) c = cmdline.flatten! c = c.find_all { |a| (not a.nil?) and ( a.size > 0 ) } Launchy.log "commandline_normalized => #{c.join(' ')}" return c end |
#dry_run(cmd, *args) ⇒ Object
24 25 26 |
# File 'lib/launchy/runner.rb', line 24 def dry_run( cmd, *args ) shell_commands(cmd, args).join(" ") end |
#run(cmd, *args) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/launchy/runner.rb', line 4 def run( cmd, *args ) raise Launchy::CommandNotFoundError, "No command found to run with args '#{args.join(' ')}'. If this is unexpected, #{Launchy.}" unless cmd if Launchy.dry_run? then $stdout.puts dry_run( cmd, *args ) else wet_run( cmd, *args ) end end |
#shell_commands(cmd, args) ⇒ Object
cut it down to just the shell commands that will be passed to exec or posix_spawn. The cmd argument is split according to shell rules and the args are not escaped because the whole set is passed to system as *args and in that case system shell escaping rules are not done.
33 34 35 36 37 |
# File 'lib/launchy/runner.rb', line 33 def shell_commands( cmd, args ) cmdline = [ cmd.to_s.shellsplit ] cmdline << args.flatten.collect{ |a| a.to_s } return commandline_normalize( cmdline ) end |
#wet_run(cmd, *args) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/launchy/runner.rb', line 13 def wet_run( cmd, *args ) argv = [ cmd, *args ].flatten Launchy.log "ChildProcess: argv => #{argv.inspect}" process = ChildProcess.build( *argv ) process.io.inherit! process.leader = true process.detach = true process.start end |