Class: Fox::Runner
- Inherits:
-
Object
- Object
- Fox::Runner
- Defined in:
- lib/fox/runner.rb
Instance Method Summary collapse
- #execute! ⇒ Object
-
#initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) ⇒ Runner
constructor
A new instance of Runner.
Constructor Details
#initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) ⇒ Runner
Returns a new instance of Runner.
24 25 26 |
# File 'lib/fox/runner.rb', line 24 def initialize argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel end |
Instance Method Details
#execute! ⇒ Object
30 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 56 57 |
# File 'lib/fox/runner.rb', line 30 def execute! exit_code = begin # Thor accesses these streams directly rather than letting them be injected, so we replace them. $stderr = @stderr $stdin = @stdin $stdout = @stdout # Fox::Cfg.load_configuration! Fox::Cli.start(@argv) # Thor::Base#start does not have a return value, assume success if no exception is raised. 0 rescue Exception => e # Proxy any exception that comes out of Thor itself back to stderr. $stderr.write(e. + "\n") # Exit with a failure code. 1 ensure # ...then we put them back. $stderr = STDERR $stdin = STDIN $stdout = STDOUT end # Proxy our exit code back to the injected kernel. @kernel.exit(exit_code) end |