Skip to content

wwood/bioruby-commandeer

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

bio-commandeer

Build Status

Bio::Commandeer provides a dead simple method of running shell commands from within Ruby:

require 'bio-commandeer'
Bio::Commandeer.run 'echo 5' #=> "5\n"

The real advantage of bio-commandeer is that when something goes wrong, it tells you; you don't have go looking for the error. Take for instance this simple script:

#!/usr/bin/env ruby
require 'bio-commandeer'
print Bio::Commandeer.run('echo 5')
print Bio::Commandeer.run('cat /not_a_file')

The output is:

5
<snip>/lib/bio-commandeer/commandeer.rb:32:in `run': Command returned non-zero exit status (1), likely indicating failure. Command run was cat /not_a_file and the STDERR was: (Bio::CommandFailedException)
cat: /not_a_file: No such file or directory
	from spec/eg.rb:4:in `<main>'

When a command fails (as detected through a non-zero exit status), then a Bio::CommandFailedException exception is thrown. While you can catch these exceptions with begin/rescue, often the best to do is fail, especially if you are writing quick one-off scripts.

Of course, when running commands such as this, take care not to trust the input directly from the command line, and especially not from a website. When in doubt, use inspect around the arguments to make sure that you don't run into little bobby tables.

Note: this software is under active development! Currently it is perhaps overly opinionated and as such not overly flexible.

Logging

Commands run are logged with level info, if requested:

require 'bio-commandeer'
Bio::Log::CLI.logger("stderr"); Bio::Log::CLI.trace("info");
puts Bio::Commandeer.run 'echo 5', :log=>true

On stderr this gives

 INFO bio-commandeer: Running command: echo 5
 INFO bio-commandeer: Command finished with exitstatus 0

Or a logging can be given directly, so long as it has an info method:

Bio::Commandeer.run 'echo 5', :log=>my_logger

A command can also be run to completion without raising an errors using run_to_finish:

require 'bio-commandeer'
result = Bio::Commandeer.run_to_finish 'echo 5' #=> Bio::CommandResult
result.stdout #=> "5\n"

Installation

gem install bio-commandeer

Biogems.info

This Biogem is published at (http://biogems.info/index.html#bio-commandeer)

Copyright

Copyright (c) 2014-2015 Ben J. Woodcroft. See LICENSE.txt for further details.

About

A dead simple method of running shell commands from within Ruby

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages