bin_install 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46a4eafbeee7e282092f2994c6dd0b81f7a18a02ddfa5744ea6b7bc4559a990f
4
- data.tar.gz: ac51ae5421b4bdfeb8e9952db1307216fdbf24ab42d5ffafc9c42cf7704e679c
3
+ metadata.gz: 6d7cc7be65e21a4b462e317507a1923ce5de2c952cedea6cca4cf5150d228947
4
+ data.tar.gz: c172cbeca434d96f882fa1f2330f51128886db0006be8607e6c4d4f8ecd202ab
5
5
  SHA512:
6
- metadata.gz: 2a7851b3ed061d4dfcd1f727aa7ed2612989a9d74e974abe7d227f9f10a4bf0a1d301d22de38f33c02b6d38d925002ca172fa355d360a56b08638f5b37e72790
7
- data.tar.gz: c44e84bb3f06a977f1407f9dda89c73bc74cc47ff4e40c0f60833181d1f2a1c345fa43bd1498c2dce0a537765fa3f547b56ffc78ddc703c07c801baf3774784b
6
+ metadata.gz: ddc577bc489edd7029a2c28c6f565224498f44055251fc1b38e86f7a717844d44b8bedfc56938251c20a3e6e89b863bd9599c58cc823626d73f93508a8d95110
7
+ data.tar.gz: 6a4a4d09094f0839a4069d1aec4523f49e9a0aa0ed362b1d7ceff4ef4efc3a6becdcadb09fb5bf33b1dd7edad6bb506b5e2242effaab4d8e8f8a9e5bd1c7ef34
data/.rubocop.yml ADDED
@@ -0,0 +1,12 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ TargetRailsVersion: 5.2
4
+
5
+ Documentation:
6
+ Enabled: false
7
+
8
+ Metrics/LineLength:
9
+ Max: 240
10
+
11
+ Style/FrozenStringLiteralComment:
12
+ Enabled: false
data/README.md CHANGED
@@ -12,6 +12,94 @@ Add this line to your application's Gemfile:
12
12
 
13
13
  ## Usage
14
14
 
15
- To create a sample install script run:
15
+ To create install scripts run:
16
16
 
17
17
  $ rails generate bin_install:install
18
+
19
+ Will create the following files with some common defaults:
20
+
21
+ * `bin/install`
22
+ * `bin/update`
23
+ * `bin/kill`
24
+
25
+ ## Bang! vs No Bang
26
+
27
+ 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.
28
+
29
+ ### [Brew](https://brew.sh/)
30
+
31
+ Require [Homebrew](https://brew.sh/) before continuing:
32
+
33
+ BinInstall::Brew.require!
34
+
35
+ Update [Homebrew](https://brew.sh/):
36
+
37
+ BinInstall::Brew.update # or update!
38
+
39
+ Install [Homebrew](https://brew.sh/) package:
40
+
41
+ BinInstall::Brew.install('package') # or install!('package')
42
+
43
+ Upgrade [Homebrew](https://brew.sh/) package:
44
+
45
+ BinInstall::Brew.upgrade('package') # upgrade!('package')
46
+
47
+ Install or Upgrade with one command:
48
+
49
+ BinInstall::Brew.install_or_upgrade('package') # or install_or_upgrade!('package')
50
+
51
+ ### [Gem](https://rubygems.org/)
52
+
53
+ Install all [gems](https://rubygems.org/) with:
54
+
55
+ BinInstall::Gem.install # or install!
56
+
57
+ ### [Node](https://nodejs.org/en/)
58
+
59
+ Install [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/en/) with:
60
+
61
+ BinInstall::Node.install # or install!
62
+
63
+ Upgrade [Yarn](https://yarnpkg.com/en/) with:
64
+
65
+ BinInstall::Node.upgrade_yarn # or upgrade_yarn!
66
+
67
+ ### [Postgres](https://www.postgresql.org/)
68
+
69
+ Install [PostgreSQL](https://www.postgresql.org/) with:
70
+
71
+ BinInstall::Postgres.install # or install!
72
+
73
+ Create a user with the username *postgres* and a blank password:
74
+
75
+ BinInstall::Postgres.create_default_user # or create_default_user!
76
+
77
+ ### [Rails](https://rubyonrails.org/)
78
+
79
+ Setup database with:
80
+
81
+ BinInstall::Rails.db_setup # or db_setup!
82
+
83
+ Migrate database with:
84
+
85
+ BinInstall::Rails.db_migrate # db_migrate!
86
+
87
+ Clear log and tmp files:
88
+
89
+ BinInstall::Rails.clear # or clear!
90
+
91
+ ### RubyEnvironmentManager
92
+
93
+ Install [rbenv](https://github.com/rbenv/rbenv) unless [RVM](https://rvm.io/) is installed with:
94
+
95
+ BinInstall::RubyEnvironmentManager.install # or install!
96
+
97
+ ### Server
98
+
99
+ Forcefully kill the server with:
100
+
101
+ BinInstall::Server.kill # or kill!
102
+
103
+ ## Contributing
104
+
105
+ All pull requests must pass [RuboCop](https://github.com/bbatsov/rubocop).
@@ -0,0 +1,75 @@
1
+ module BinInstall
2
+ module Brew
3
+ def self.require!
4
+ if installed?
5
+ update!
6
+ else
7
+ abort('Homebrew is required! Visit https://brew.sh/ to install.'.red)
8
+ end
9
+ end
10
+
11
+ def self.update
12
+ puts 'Updating Homebrew...'.white
13
+ system('brew update')
14
+ system('brew tap caskroom/cask')
15
+ end
16
+
17
+ def self.update!
18
+ puts 'Updating Homebrew...'.white
19
+ BinInstall.system!('brew update')
20
+ BinInstall.system!('brew tap caskroom/cask')
21
+ end
22
+
23
+ def self.install(package)
24
+ system("brew install #{package}")
25
+ end
26
+
27
+ def self.install!(package)
28
+ BinInstall.system!("brew install #{package}")
29
+ end
30
+
31
+ def self.upgrade(package)
32
+ if package_latest_version?(package)
33
+ puts "#{package} is already the latest version. Skipping.".blue
34
+ else
35
+ system("brew upgrade #{package}")
36
+ end
37
+ end
38
+
39
+ def self.upgrade!(package)
40
+ if package_latest_version?(package)
41
+ puts "#{package} is already the latest version. Skipping.".blue
42
+ else
43
+ BinInstall.system!("brew upgrade #{package}")
44
+ end
45
+ end
46
+
47
+ def self.install_or_upgrade(package)
48
+ if package_installed?(package)
49
+ upgrade(package)
50
+ else
51
+ install(package)
52
+ end
53
+ end
54
+
55
+ def self.install_or_upgrade!(package)
56
+ if package_installed?(package)
57
+ upgrade!(package)
58
+ else
59
+ install!(package)
60
+ end
61
+ end
62
+
63
+ def self.installed?
64
+ system('brew --version')
65
+ end
66
+
67
+ def self.package_installed?(package)
68
+ system("brew list --versions #{package}")
69
+ end
70
+
71
+ def self.package_latest_version?(package)
72
+ system("brew outdated #{package}")
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,15 @@
1
+ module BinInstall
2
+ module Gem
3
+ def self.install
4
+ puts 'Installing gems...'.white
5
+ system('gem install bundler --conservative')
6
+ system('bundle install')
7
+ end
8
+
9
+ def self.install!
10
+ puts 'Installing gems...'.white
11
+ BinInstall.system!('gem install bundler --conservative')
12
+ BinInstall.system!('bundle install')
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ module BinInstall
2
+ module Node
3
+ def self.install
4
+ Brew.install_or_upgrade('node')
5
+ Brew.install_or_upgrade('yarn')
6
+ yarn_upgrade
7
+ end
8
+
9
+ def self.install!
10
+ Brew.install_or_upgrade!('node')
11
+ Brew.install_or_upgrade!('yarn')
12
+ yarn_upgrade!
13
+ end
14
+
15
+ def self.yarn_upgrade
16
+ system('bin/yarn upgrade')
17
+ end
18
+
19
+ def self.yarn_upgrade!
20
+ BinInstall.system!('bin/yarn upgrade')
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module BinInstall
2
+ module Postgres
3
+ def self.install
4
+ puts 'Installing PostgreSQL...'.white
5
+ Brew.install_or_upgrade('postgresql')
6
+ create_default_user
7
+ end
8
+
9
+ def self.install!
10
+ puts 'Installing PostgreSQL...'.white
11
+ Brew.install_or_upgrade!('postgresql')
12
+ create_default_user!
13
+ end
14
+
15
+ def self.create_default_user
16
+ system('createuser -s postgres')
17
+ end
18
+
19
+ def self.create_default_user!
20
+ BinInstall.system!('createuser -s postgres')
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ module BinInstall
2
+ module Rails
3
+ def self.db_setup
4
+ puts 'Preparing database...'.white
5
+ system('bin/rails db:setup')
6
+ end
7
+
8
+ def self.db_setup!
9
+ puts 'Preparing database...'.white
10
+ BinInstall.system!('bin/rails db:setup')
11
+ end
12
+
13
+ def self.db_migrate
14
+ puts 'Migrating database...'.white
15
+ system('bin/rails db:migrate')
16
+ end
17
+
18
+ def self.db_migrate!
19
+ puts 'Migrating database...'.white
20
+ BinInstall.system!('bin/rails db:migrate')
21
+ end
22
+
23
+ def self.clear
24
+ puts 'Removing unnecessary files...'.white
25
+ system('bin/rails log:clear tmp:clear')
26
+ end
27
+
28
+ def self.clear
29
+ puts 'Removing unnecessary files...'.white
30
+ BinInstall.system!('bin/rails log:clear tmp:clear')
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ module BinInstall
2
+ module RubyEnvironmentManager
3
+ module Rbevn
4
+ def self.install
5
+ puts 'Installing rbenv...'.white
6
+ Brew.install_or_upgrade('rbenv')
7
+ Brew.install_or_upgrade('ruby-build')
8
+ end
9
+
10
+ def self.install!
11
+ puts 'Installing rbenv...'.white
12
+ Brew.install_or_upgrade!('rbenv')
13
+ Brew.install_or_upgrade!('ruby-build')
14
+ end
15
+
16
+ def self.installed?
17
+ system('rbenv --version')
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ module BinInstall
2
+ module RubyEnvironmentManager
3
+ module Rvm
4
+ def self.installed?
5
+ system('rvm --version')
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ require 'bin_install/ruby_environment_manager/rbenv'
2
+ require 'bin_install/ruby_environment_manager/rvm'
3
+
4
+ module BinInstall
5
+ module RubyEnvironmentManager
6
+ def self.install
7
+ if RubyEnvironmentManager::Rvm.installed?
8
+ puts 'RVM is already installed. Skipping rbenv install.'.blue
9
+ return
10
+ end
11
+
12
+ RubyEnvironmentManager::Rbenv.install
13
+ end
14
+
15
+ def self.install!
16
+ if RubyEnvironmentManager::Rvm.installed?
17
+ puts 'RVM is already installed. Skipping rbenv install.'.blue
18
+ return
19
+ end
20
+
21
+ RubyEnvironmentManager::Rbenv.install!
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ module BinInstall
2
+ module Server
3
+ def self.kill
4
+ Dir.chdir(Dir.pwd) do
5
+ pid_file = 'tmp/pids/server.pid'
6
+ puts 'Server is not running!'.yellow unless File.exist?(pid_file)
7
+
8
+ server_pid = `cat tmp/pids/server.pid`
9
+
10
+ if system("kill -9 #{server_pid}")
11
+ puts "PID `#{server_pid}` killed.".green
12
+ else
13
+ puts "PID `#{server_pid}` can not be killed!".red
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.kill!
19
+ Dir.chdir(Dir.pwd) do
20
+ pid_file = 'tmp/pids/server.pid'
21
+ abort('Server is not running!'.yellow) unless File.exist?(pid_file)
22
+
23
+ server_pid = `cat tmp/pids/server.pid`
24
+
25
+ if system("kill -9 #{server_pid}")
26
+ puts "PID `#{server_pid}` killed.".green
27
+ else
28
+ abort("PID `#{server_pid}` can not be killed!".red)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module BinInstall
2
- VERSION = '0.0.2'.freeze
2
+ VERSION = '0.0.3'.freeze
3
3
  end
data/lib/bin_install.rb CHANGED
@@ -1,19 +1,16 @@
1
1
  require 'awesome_print'
2
2
 
3
3
  require 'bin_install/brew'
4
+ require 'bin_install/gem'
4
5
  require 'bin_install/node'
5
6
  require 'bin_install/postgres'
6
7
  require 'bin_install/rails'
8
+ require 'bin_install/ruby_environment_manager'
9
+ require 'bin_install/server'
7
10
  require 'bin_install/version'
8
11
 
9
12
  module BinInstall
10
13
  def self.system!(*args)
11
14
  system(*args) || abort("Command `#{args}` failed!".red)
12
15
  end
13
-
14
- def self.install_gems!
15
- puts 'Installing gems...'.white
16
- system!('gem install bundler --conservative')
17
- system!('bundle install')
18
- end
19
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bin_install
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Singer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-16 00:00:00.000000000 Z
11
+ date: 2018-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -102,6 +102,7 @@ extra_rdoc_files: []
102
102
  files:
103
103
  - ".gitignore"
104
104
  - ".rspec"
105
+ - ".rubocop.yml"
105
106
  - ".travis.yml"
106
107
  - CODE_OF_CONDUCT.md
107
108
  - Gemfile
@@ -112,6 +113,15 @@ files:
112
113
  - bin/setup
113
114
  - bin_install.gemspec
114
115
  - lib/bin_install.rb
116
+ - lib/bin_install/brew.rb
117
+ - lib/bin_install/gem.rb
118
+ - lib/bin_install/node.rb
119
+ - lib/bin_install/postgres.rb
120
+ - lib/bin_install/rails.rb
121
+ - lib/bin_install/ruby_environment_manager.rb
122
+ - lib/bin_install/ruby_environment_manager/rbenv.rb
123
+ - lib/bin_install/ruby_environment_manager/rvm.rb
124
+ - lib/bin_install/server.rb
115
125
  - lib/bin_install/version.rb
116
126
  homepage: https://github.com/ramaboo/bin_install
117
127
  licenses: