Crystal Run

A Crystal library for running commands in reusable contexts.

Build Status

Installation

Add this to your application's shard.yml:

dependencies:
  run:
    github: mosop/run

Code Samples

Smiley

cmd = Run::Command.new("echo", [":)"])
cmd.run.wait # => prints ":)"

Additional Arguments

cmd = Run.command("echo", [":)"])
%w(hello goodbye).each do |i|
  cmd.run(args: [i]).wait
end

This prints:

:) hello
:) goodbye

Over and Over

cmd = Run.command("echo", [":)"])
100.times do
  cmd.run.wait
end

This prints 100 of :).

Multiple at Once

cg = Run.group
100.times do
  cg.command "echo", [":)"]
end
cg.run.wait

This prints 100 of :) too.

Nested Contexts

cg = Run.group(chdir: "path")
cg.command "pwd"
cg.command "pwd", chdir: "to"
cg.command "pwd", chdir: ".."
cg.run.wait

If the current directory is /Users/mosop, this code prints:

/Users/mosop/path
/Users/mosop/path/to
/Users/mosop

Parallel

cg = Run.group
cg.command "wget", %w(http://mosop.rocks)
cg.command "wget", %w(http://mosop.yoga)
cg.command "wget", %w(http://mosop.ninja)
process_group = cg.run(parallel: true)

# do other things

process_group.wait

Usage

require "run"

And see Code Samples, Wiki and API Document!

Versioning Policy

See Wiki.

Release Notes

See Releases.