Skip to content

matti/kommando

Repository files navigation

Kommando

Build Status

Command runner with expect-like features. Great for integration testing.

Usage

Automating GNU nano:

require "./lib/kommando"
require "tempfile"

scratch = Tempfile.new

k = Kommando.new "nano #{scratch.path}", {
  output: true
}
k.out.on "GNU nano" do
  k.in << "hello\r"
  k.in << "\x1B\x1Bx"

  k.out.on "Save modified buffer" do
    sleep 1
    k.in << "y"

    k.out.on "File Name to Write" do
      sleep 1
      k.in << "\r"
    end
  end
end

k.when "start" do
  puts "Kommando started running nano"
  sleep 2
end

k.when "exit" do
  puts "Kommando finished"
  sleep 1
end

k.run

Shell scripting

require "./lib/kommando"

script = '
printf "new password: "
read input1
printf "password again: "
read input2

if [ "$input1" == "$input2" ]; then
  printf "Are you sure that you want to change it? (y/N): "
  read input3
  if [ "$input3" == "y" ]; then
    echo "changed"
  else
    echo "not changed"
  fi
else
  echo "Passwords did not match"
fi
'

k = Kommando.new "$ #{script}", {
  output: true
}

k.out.on "new password:" do
  k.in.write "lol\r"

  k.out.on "password again:" do
    k.in.writeln "lol"

    k.out.on /want to change it\?/ do
      k.in << "y\r"
    end

    k.out.on /Passwords did not match/ do
      raise "this should never happen with that script."
    end
  end
end

k.run

Installation

Add this line to your application's Gemfile:

gem 'kommando'

And then execute:

$ bundle

Or install it yourself as:

$ gem install kommando

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake to run the specs. You can also run bin/console for an interactive prompt that will allow you to experiment.

bin/e2e runs all Kommando files in examples/ with kommando.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bin/release, which will run all tests, create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Notes

RSPEC_PROFILE=each rake spec
RSPEC_PROFILE=all rake spec
# --> profiles directory

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/matti/kommando.

License

The gem is available as open source under the terms of the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published