/bin_install

Simple DSL for creating install scripts.

Primary LanguageRubyMIT LicenseMIT

BinInstall

Simple DSL for creating install scripts.

It's used at Deliv to increase developer happiness.

Installation

Add this line to your application's Gemfile:

gem 'bin_install'

Usage

To create install scripts run:

$ rails generate bin_install:install

Will create the following files with some common defaults:

  • bin/install
  • bin/update
  • bin/kill

Bang! vs No Bang

Most methods in this library have also have a bang version that will halt all further execution. No bang methods will only display the error output of the command but execution will continue.

Atom

Install Atom:

BinInstall::Atom.install # or install!

Ask before installing Atom:

BinInstall::Atom.ask # or ask!

Install Atom packages:

BinInstall::Atom::Package.install(package) # or install!(package)

Install popular Atom packages:

BinInstall::Atom::Package.install_popular # or install_popular!

Ask before installing popular Atom packages:

BinInstall::Atom::Package.ask_popular # or ask_popular!

Brew

Require Homebrew before continuing:

BinInstall::Brew.require!

Update Homebrew:

BinInstall::Brew.update # or update!

Install Homebrew package:

BinInstall::Brew::Package.install('package') # or install!('package')

Upgrade Homebrew package:

BinInstall::Brew::Package.upgrade('package') # upgrade!('package')

Install or Upgrade with one command:

BinInstall::Brew::Package.install_or_upgrade('package') # or install_or_upgrade!('package')

Gem

Install all gems with:

BinInstall::Gem.install # or install!

Update all gems with:

BinInstall::Gem.update # or update!

Git

Install Git with:

BinInstall::Git.install # or install!

Mysql

Install MySQL with:

BinInstall::Mysql.install # or install!

Create root user with blank password:

BinInstall::Mysql.create_root # or create_root!

Create user with username and password:

BinInstall::Mysql.create_user('username', 'password')

Node

Install Node.js and Yarn with:

BinInstall::Node.install # or install!

Install packages with:

BinInstall::Node.yarn_install # or yarn_install!

Upgrade packages with:

BinInstall::Node.yarn_upgrade # or yarn_upgrade!

Postgres

Install PostgreSQL with:

BinInstall::Postgres.install # or install!

Create a user with a username and blank password:

BinInstall::Postgres.create_user('username') # or create_user!('username')

Create a superuser with a username and blank password:

BinInstall::Postgres.create_superuser('username') # or create_superuser!('username')

Rails

Setup database with:

BinInstall::Rails.db_setup # or db_setup!

Migrate database with:

BinInstall::Rails.db_migrate # db_migrate!

Clear log and tmp files:

BinInstall::Rails.clear # or clear!

Redis

Install Redis with:

BinInstall::Redis.install # or install!

Ruby

Install rbenv unless RVM is installed with:

BinInstall::Ruby.install # or install!

Server

Forcefully kill the server with:

BinInstall::Server.kill # or kill!

Contributing

All pull requests must pass RuboCop.

TODO

  • [] GitHub SSH stuff
  • [] Mysql dev stuff
  • [] test brew install without root