Installation
=================================
-To install the gem:
+Prerequisites:
- gem install leap_cli
+ sudo apt-get install ruby ruby-dev rsync openssh-client
+
+To install leap command system-wide:
+
+ sudo gem install leap_cli
+
+To install without root privileges:
+
+ gem install leap_cli --user-install
To run from a clone of the git repo, see "Development", below.
Debian Wheezy
- sudo apt-get install git ruby ruby-dev
- sudo gem install bundler
+ sudo apt-get install git ruby ruby-dev bundler
-Ubuntu Quantal
+Ubuntu
sudo apt-get install git ruby ruby-dev
sudo gem install bundler
Install from git
----------------------------------
+--------------------------------------
-Install requirements
+Download the source and install the required gems:
git clone git://leap.se/leap_cli # clone leap_cli code
cd leap_cli
bundle # install required gems
-Symlink bin/leap into your path:
+Running from the source directory
+--------------------------------------
+
+To run the ``leap`` command directly from the source tree, symlink bin/leap
+into your path:
cd leap_cli
- ln -s `pwd`/bin/leap /usr/local/bin # link executable somewhere in your bin path
- which leap # make sure you will run leap_cli/bin/leap,
- # and not /var/lib/gems/1.x/bin/leap
+ ln -s `pwd`/bin/leap ~/bin # link executable somewhere in your bin path
+ which leap # make sure you will run leap_cli/bin/leap
leap help
If you get an error, make sure to check ``which leap``. Some versions of ``bundle`` will
other places, it is easier to create the symlink. If you run ``leap`` directly, and not via
the command launcher that rubygems installs, leap will run in a mode that simulates
``bundle exec leap`` (i.e. only gems included in Gemfile are allow to be loaded).
+
+Running as a gem
+--------------------------------------
+
+To install ``leap`` as a gem, do this:
+
+ cd leap_cli
+ rake build
+ rake install
+
+And then make sure your PATH is set to include where leap is installed.
+It should warn you if this is not the case.
+
-require 'rake/clean'
-require 'rubygems'
-require 'rubygems/package_task'
-require 'rdoc/task'
-require 'cucumber'
-require 'cucumber/rake/task'
-Rake::RDocTask.new do |rd|
- rd.main = "README.rdoc"
- rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
- rd.title = 'Your application title'
-end
+require "rubygems"
+require "highline/import"
+require "pty"
+require "fileutils"
-spec = eval(File.read('leap_cli.gemspec'))
+##
+## HELPER
+##
-Gem::PackageTask.new(spec) do |pkg|
+def run(cmd)
+ PTY.spawn(cmd) do |output, input, pid|
+ begin
+ while line = output.gets do
+ puts line
+ end
+ rescue Errno::EIO
+ end
+ end
+rescue PTY::ChildExited
end
-CUKE_RESULTS = 'results.html'
-CLEAN << CUKE_RESULTS
-desc 'Run features'
-Cucumber::Rake::Task.new(:features) do |t|
- opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
- opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
- t.cucumber_opts = opts
- t.fork = false
+
+##
+## GEM BUILDING AND INSTALLING
+##
+
+$spec_path = 'leap_cli.gemspec'
+$spec = eval(File.read($spec_path))
+$base_dir = File.dirname(__FILE__)
+$gem_path = File.join($base_dir, 'pkg', "#{$spec.name}-#{$spec.version}.gem")
+
+def built_gem_path
+ Dir[File.join($base_dir, "#{$spec.name}-*.gem")].sort_by{|f| File.mtime(f)}.last
end
-desc 'Run features tagged as work-in-progress (@wip)'
-Cucumber::Rake::Task.new('features:wip') do |t|
- tag_opts = ' --tags ~@pending'
- tag_opts = ' --tags @wip'
- t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
- t.fork = false
+desc "Build #{$spec.name}-#{$spec.version}.gem into the pkg directory"
+task 'build' do
+ FileUtils.mkdir_p(File.join($base_dir, 'pkg'))
+ FileUtils.rm($gem_path) if File.exists?($gem_path)
+ run "gem build -V '#{$spec_path}'"
+ file_name = File.basename(built_gem_path)
+ FileUtils.mv(built_gem_path, 'pkg')
+ say "#{$spec.name} #{$spec.version} built to pkg/#{file_name}"
end
-task :cucumber => :features
-task 'cucumber:wip' => 'features:wip'
-task :wip => 'features:wip'
-require 'rake/testtask'
-Rake::TestTask.new do |t|
- t.libs << "test"
- t.test_files = FileList['test/*_test.rb']
+desc "Build and install #{$spec.name}-#{$spec.version}.gem into either system-wide or user gems"
+task 'install' do
+ if !File.exists?($gem_path)
+ say("Could not file #{$gem_path}. Try running 'rake build'")
+ else
+ if ENV["USER"] == "root"
+ run "gem install '#{$gem_path}'"
+ else
+ say("A system-wide install requires that you run 'rake install' as root, which you are not.")
+ if agree("Do you want to continue installing to #{Gem.path.grep /home/}? ")
+ run "gem install '#{$gem_path}' --user-install"
+ end
+ end
+ end
end
-task :default => [:test,:features]
+##
+## TESTING
+##
+
+# task :default => [:test,:features]
+
+##
+## DOCUMENTATION
+##
+
+# require 'rdoc/task'
+
+# Rake::RDocTask.new do |rd|
+# rd.main = "README.rdoc"
+# rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
+# rd.title = 'Your application title'
+# end