Project

sega

0.0
No commit activity in last 3 years
No release in over 3 years
Tool that will help you create a self-extracting gem (cli) archive.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
~> 0.8
~> 10.0
~> 3.4
~> 0.36
~> 0.11
 Project Readme

SEGA - Self-Extracting Gem Archive

Gem Version

This is a tool that will help you create a self-extracting gem (cli) archive.

The executable archive will contain a small installer, the gem, and cached dependencies. The executable will unzip itself and place the bundled gem in a target directory (default: /usr/local/) and create shim scripts for files specified in the gemspec bindir. The shim will use rbenv (if possible) so the proper ruby version is used and then run the gem cli within the context of bundler so that the proper dependencies are used.

Similar in concept to traveling-ruby or orca or releasy but it makes some basic assumptions to simplify the package.

Assumes:

  • target machine has ruby (preferably rbenv)
  • target machine has bundler

For example:

# create new cli gem
# create exe/<whatever>
# git add -A

$ $EDITOR Gemfile

## Add these lines:

require 'sega/rake_task'

Sega::RakeTask.new() do |t|
  t.bundler_version = '1.10.6' # uses gem version comparison operators
  t.ruby_version = '~> 2.3.0' # uses gem version comparison operators
end


$ bundle install
Resolving dependencies...
Using rake 10.5.0
Using bundler 1.10.6
Using hello-sega 0.1.0 from source at .
Using sega 0.1.2
Updating files in vendor/cache
Bundle complete! 4 Gemfile dependencies, 4 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

$ bundle exec rake sega:package
Using rake 10.5.0
Using bundler 1.10.6
Using hello-sega 0.1.0 from source at .
Using sega 0.1.2
Updating files in vendor/cache
Bundle complete! 4 Gemfile dependencies, 4 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Updating files in vendor/cache
Created Self-Extracting Gem Archive: hello-sega.run

$ ./hello-sega.run
created target shim: /usr/local/bin/hello-sega

$ hello-sega
Hello SEGA!

See Example Code

Installation

Add this line to your application's Gemfile:

gem 'sega'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sega

Usage

Only tested on linux & mac right now

Configure

Add to your Rakefile:


require 'sega/rake_task'

Sega::RakeTask.new() do |t|
  t.bundler_version = '1.10.6' # uses gem version comparison operators
  t.ruby_version = '~> 2.3.0' # uses gem version comparison operators
end

Build

Create the self-extracting gem archive:

bundle exec rake sega:package

Will generate: <project name>.run

Install

./<project name>.run <optional: target directory> <optional: target binstub directory>

Default target directory: /usr/local/<project name/

Default target binstub directory: /usr/local/bin/

Development

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

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 bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

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