Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

peer_commander

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

peer_commander

  • 0.1.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Peer::Commander

Provides an interfacing for executing mutliple system commands with a configurable level of parallelism.

The result objects will have access to the output of the command as well as the return status.

The overall result of executing the commands will be successful if all of the commands executed completed with a successful return code.

Internally commands are executed with Open3.capture2e, env, opts, and stdin_data used to init the commands are sent directly to Open3.capture2e, see the documentation for that class to understand the behaviour and options available.

Installation

Add this line to your application's Gemfile:

gem "peer_commander"

And then execute:

$ bundle

Or install it yourself as:

$ gem install peer_commander

Usage

This is a convoluted example to demonstrate all the features

require "peer_commander"

commands = [
  PeerCommander::Command.new("sleep 2"),
  PeerCommander::Command.new("wibble"),
  PeerCommander::Command.new("sleep 1"),
  PeerCommander::Command.new("exit 1"),
  PeerCommander::Command.new("echo $TEST_ENV", env: { "TEST_ENV" => "output from env var"}),
  PeerCommander::Command.new("cat", stdin_data: "data passed to standard in"),
  PeerCommander::Command.new("sleep 4", opts: { chdir: "/tmp" }), # This command will be executed in the directory /tmp
]

commander = PeerCommander::CommandRunner.new(commands)

results = commander.execute(parallelism: 4)

puts "SUCCESS" if commander.success?
puts "FAILED" if commander.failed?

commander.all_commands.each { |command| puts "Executed #{command.command}" }

commander.successful_commands.each do |command|
  puts "Command [#{command.command}] succeeded in #{command.duration} seconds with output:"
  puts command.output
  puts "================================================="
end

commander.failed_commands.each do |command|
  print "Command [#{command.command}] failed in #{command.duration} seconds "

  if command.exception
    puts "with exception #{command.exception}"
  else
    puts "with exit code #{command.exit_code} and output\n"
    puts command.output
  end

  puts "================================================="
end

puts "Total operation took #{commander.duration} seconds"

Version numbering

This project will follow strict semantic versioning (https://semver.org/spec/v2.0.0.html) once we reach version 0.1. Until then any version change can break anything.

Development

You can run bin/rspec or bin/rake to run all the tests, you can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome on Bitbucket at https://bitbucket.org/eviljonny/peer_commander/

License

This project is released under the MIT license which can be found in the LICENSE file

FAQs

Package last updated on 06 Jun 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc