setup_script_generator 0.2.1 → 0.2.6

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: a5d703195a149c493aa00489accde35403f43b065329538f7f684704967e9919
4
- data.tar.gz: f1537ed8738aefdb030949dbebd709d819f8123d91536e69f40ff3bb0f9f1611
3
+ metadata.gz: bf213e5c70d16dcdb1e39d45bbcc412d506c9bc9fe1c17df9873b1a647294412
4
+ data.tar.gz: d5893fdb48d55b91da2a5104da6f251257e7cc130e7cf34d5450e8b165564eda
5
5
  SHA512:
6
- metadata.gz: 62604ff23a577ade8e56c1dd283023625438bb48badadd8d4cbb440aff0a7fddd1378e1f910ab0fab9058a05c97a4e41d273284e60bb9c018347b7e7d5ce76a5
7
- data.tar.gz: 0a86ff442db9a9db3b74edd5b05ddfb4b9e3f7991d877cf3af5fb3da31cbbe779d945c2d98a231f63f3b9e164ead7185970126aeb5dbccaac61f23ec365502a8
6
+ metadata.gz: 858393d01c48d5977538984fab3bc1b3f5082992a7c73c45d3d32d7bf5a9813c9139ae06364e61deae27bead4ce6cade875e367041f660e6cfb89333ecef65c6
7
+ data.tar.gz: 55aaa0d7db1e05ab253d5c82d7091e020951350a35715b42bf9419510d76ee981479411094505538318c69ebc080d810befa7a53a18b02bd02e428a66a7fc2eb
@@ -0,0 +1,2 @@
1
+ [README.md]
2
+ max_line_length = unset
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  .DS_Store
2
+ Gemfile.lock
2
3
  pkg
@@ -0,0 +1 @@
1
+ ruby 2.7.1
data/Gemfile CHANGED
@@ -4,3 +4,5 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in setup_script_generator.gemspec
6
6
  gemspec
7
+
8
+ gem "rake"
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019 Elliot Winkler
3
+ Copyright (c) 2019-2020 Elliot Winkler
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,81 +1,96 @@
1
1
  # Setup Script Generator
2
2
 
3
- Every project needs a [setup script][setup-script]. This is an executable that a
4
- new contributor to the project can run in order to quickly prepare his or her
5
- machine for development.
3
+ Every project needs a [setup script][setup-script]
4
+ to quickly ready new developers for contributing to the project.
5
+ However, a good setup script is time-consuming to write:
6
6
 
7
7
  [setup-script]: https://thoughtbot.com/blog/shell-script-suggestions-for-speedy-setups
8
8
 
9
- The problem is that a good setup script is time-consuming to write:
9
+ * The script must make sure that the proper version of your project's language is installed,
10
+ taking into account the usage of version managers.
11
+ * The script must be idempotent,
12
+ installing new requirements while skipping over existing ones.
13
+ * The script must provide friendly messages (successful or otherwise).
14
+ * The script must be quick to run.
15
+ * The script must be usable on multiple platforms.
16
+ * The script must be easy to read and maintain.
10
17
 
11
- * The script must be portable, which means handling installation of software
12
- using package managers on different platforms.
13
- * The script must be snappy, which (along with the previous point) dictates the
14
- use of Bash.
15
- * The script must make sure that the proper version of your project's
16
- implementation language is installed, and if said language has version
17
- managers (such as for Ruby or Node), the script must take them into account
18
- as well.
19
- * The script must provide friendly errors if any checks fail.
20
- (Bonus points for colors and/or emoji.)
21
- * The script must be idempotent, so that if changes to the development are
22
- made, the script can be run again, and any requirements that are already
23
- satisfied will be skipped, while new requirements will be installed.
24
- * The script must be easy to read and maintain in the future.
18
+ Given these constraints,
19
+ this project generates a setup script that you can place in your own project.
20
+ This script is implemented in Bash
21
+ so that it is is performant, portable, and maintainable.
25
22
 
26
- Given this, this project provides a way to generate a setup script for your own
27
- project, so that you can keep all of your teammates on the same page and offer
28
- them a nice experience going forward.
29
-
30
- ## Installation
31
-
32
- Currently, the generator is available through a Ruby gem. You can install this
33
- gem by first installing Ruby, then running:
23
+ ## Usage
34
24
 
35
- gem install setup_script_generator
25
+ Currently, the generator is available through a Ruby gem.
26
+ You can install this gem by first installing Ruby, then by running:
36
27
 
37
- ## Usage
28
+ ```
29
+ gem install setup_script_generator
30
+ ```
38
31
 
39
- After installing the gem, navigate to your project. Generally, setup scripts are
40
- kept in `bin`, so to generate a script, run:
32
+ After installing the gem, navigate to your project.
33
+ You now have the `generate-setup` command
34
+ which will allow you to generate a setup script where you like.
35
+ A common location is `bin/setup`, so you could say:
41
36
 
42
37
  generate-setup bin/setup
43
38
 
44
- Now, by default, this won't do a whole lot. That's because a setup script is
45
- much more useful with *provisions*, which add checks and steps for a particular
46
- language, framework, or service. For instance, if your project requires Ruby,
47
- then you'd want to say:
39
+ Now open up this file in your editor.
40
+ By default, this script is fairly empty,
41
+ although it does offer a section at the top
42
+ to which you can add custom code:
48
43
 
49
- generate-setup bin/setup --provision ruby
44
+ ``` bash
45
+ provision-project() {
46
+ # ...
47
+ }
48
+ ```
50
49
 
51
- You can add more than one provision if that's what you need:
50
+ While it is perfectly fine to update this function,
51
+ you will probably find it more useful to run `generate-setup` with a set of *provisions*.
52
+ These extend your script with checks and installation steps
53
+ for languages, frameworks, or services on which your project relies.
54
+ For instance, if your project requires Ruby,
55
+ then you'd want to run:
52
56
 
53
- generate-setup bin/setup --provision ruby --provision node
57
+ ```
58
+ generate-setup bin/setup --provision ruby
59
+ ```
54
60
 
55
- You can get a list of available provisions by running:
61
+ (Don't worry, if you've already run `generate-setup`,
62
+ you can re-run it at any point in the future
63
+ to add or remove provisions.)
56
64
 
57
- generate-setup --list-provisions
65
+ You can also use more than one provision if that's what you need:
58
66
 
59
- And if you want to view the setup script before you generate it, you can tack
60
- `--dry-run` to the end of the command. For instance:
67
+ ```
68
+ generate-setup bin/setup --provision ruby --provision node
69
+ ```
61
70
 
62
- generate-setup bin/setup --provision ruby --dry-run
71
+ And you can get a list of available provisions by running:
72
+
73
+ ```
74
+ generate-setup --list-provisions
75
+ ```
63
76
 
64
77
  Finally, to see the full list of options, run:
65
78
 
66
- generate-setup --help
79
+ ```
80
+ generate-setup --help
81
+ ```
67
82
 
68
83
  ## Development
69
84
 
70
- Naturally, this gem comes with its own setup script you can use to get started.
71
- Just run:
72
-
73
- bin/setup
85
+ Naturally, this project comes with its own setup script.
86
+ Simply run this command to get started:
74
87
 
75
- To release a new version, update `version.rb`, then run `rake release`.
88
+ ```
89
+ bin/setup
90
+ ```
76
91
 
77
92
  ## Author/License
78
93
 
79
- (c) 2019 Elliot Winkler (<elliot.winkler@gmail.com>).
80
-
81
- Available under the [MIT license](LICENSE.txt).
94
+ Setup Script Generator is copyright © 2019-2020 Elliot Winkler
95
+ (<elliot.winkler@gmail.com>)
96
+ and is released under the [MIT license](LICENSE.txt).
data/bin/setup CHANGED
@@ -2,9 +2,32 @@
2
2
 
3
3
  set -euo pipefail
4
4
 
5
- something_already_printed=0
5
+ ### PROJECT SETUP ##############################################################
6
+
7
+ # Feel free to add whatever functions or variables you want to add in this
8
+ # section. You may also delete this section altogether if your project doesn't
9
+ # need a custom setup.
10
+
11
+ provision-project() {
12
+ # This function gets called automatically below.
13
+ # Feel free to remove these comments.
14
+ # If your project needs custom setup, then place that here.
15
+ true
16
+ }
17
+
18
+ ### DON'T MODIFY ANYTHING BELOW THIS LINE! #####################################
19
+
20
+ # This setup script was generated with setup_script_generator 0.2.3,
21
+ # available on RubyGems.
22
+ #
23
+ # To regenerate this section, install the gem and run:
24
+ #
25
+ # generate-setup -p ruby
26
+ #
6
27
 
7
- cd "$(dirname "$(dirname "$0")")"
28
+ # --- SETUP --------------------------------------------------------------------
29
+
30
+ something_already_printed=0
8
31
 
9
32
  determine-platform() {
10
33
  local uname=$(uname)
@@ -111,7 +134,7 @@ install() {
111
134
  sudo apt-get install -y "$package"
112
135
  fi
113
136
  elif has-executable yum; then
114
- package="${yum_package:-$default_package}"
137
+ package="${rpm_package:-$default_package}"
115
138
 
116
139
  if [[ -n $package ]]; then
117
140
  sudo yum install -y "$package"
@@ -125,28 +148,24 @@ install() {
125
148
  check-for-package-manager() {
126
149
  local platform=$(determine-platform)
127
150
 
128
- if [[ $platform == "linux" ]]; then
129
- if ! has-executable apt-get; then
130
- error "You don't seem to have a package manager installed."
131
- print-wrapped "\
132
- The setup script assumes you're using Debian or a Debian-derived flavor of
133
- Linux (i.e. something with Apt). If this is not the case, then we would
134
- gladly take a PR fixing this!"
135
- exit 1
136
- fi
137
- else
138
- if ! has-executable brew; then
139
- error "You don't seem to have Homebrew installed."
140
- print-wrapped "\
141
- Follow the instructions here to do this:
142
-
143
- http://brew.sh
144
-
145
- Then re-run this script."
146
- exit 1
147
- fi
151
+ if [[ $platform == "linux" ]] && ! has-executable apt-get && ! has-executable yum; then
152
+ # TODO: Check if build-essential is installed on Debian?
153
+ # TODO: Check if 'Development Tools' group is installed on RedHat?
148
154
 
155
+ error "You don't seem to have a package manager installed."
156
+ print-wrapped "\
157
+ This setup script assumes you're using a flavor of Linux derived from Debian or
158
+ RedHat (i.e. something with Apt or Yum). If this is not the case, then we would
159
+ gladly take a PR fixing this!"
160
+ exit 1
161
+ elif [[ $platform == "mac" ]] && ! has-executable brew; then
149
162
  # TODO: Check that OS X Command Line Tools are installed?
163
+
164
+ error "You don't seem to have Homebrew installed."
165
+ print-wrapped "\
166
+ Visit <https://brew.sh> and follow the instructions there, then re-run this
167
+ script."
168
+ exit 1
150
169
  fi
151
170
  }
152
171
 
@@ -154,29 +173,55 @@ install-development-libraries() {
154
173
  install rpm=zlib-devel
155
174
  }
156
175
 
176
+ setup() {
177
+ cd "$(dirname "$(dirname "$0")")"
178
+ check-for-package-manager
179
+ install-development-libraries
180
+ run-provisions
181
+ if type provision-project &>/dev/null; then
182
+ provision-project
183
+ fi
184
+ success "Setup complete!"
185
+ }
186
+
187
+ # --- RUBY ---------------------------------------------------------------------
188
+
157
189
  provision-ruby() {
158
- if [[ -f .ruby-version ]]; then
190
+ USE_BUNDLER_1=0
191
+
192
+ if [[ -f .tool-versions ]]; then
193
+ REQUIRED_RUBY_VERSION=$(cat .tool-versions | grep '^ruby ' | sed -Ee 's/^ruby (.+)$/\1/')
194
+ elif [[ -f .ruby-version ]]; then
159
195
  REQUIRED_RUBY_VERSION=$(cat .ruby-version)
160
196
  else
161
197
  error "You don't seem to have a Ruby version set in your project."
162
198
  print-wrapped "\
163
- You'll need to create a .ruby-version file in your project before you can run
164
- this script.
165
- "
199
+ You'll need to create either a .tool-versions file or .ruby-version file in your
200
+ project before you can run this script."
166
201
  exit 1
167
202
  fi
168
203
 
169
- install-ruby-development-library
204
+ ensure-ruby-development-libraries-installed
170
205
  ensure-ruby-installed
171
- install-ruby-dependencies
206
+ ensure-project-ruby-dependencies-installed
172
207
  }
173
208
 
174
- install-ruby-development-library() {
175
- install apt=ruby-dev rpm=ruby-devel
209
+ ensure-ruby-development-libraries-installed() {
210
+ local platform=$(determine-platform)
211
+
212
+ if [[ $platform == "linux" ]]; then
213
+ banner "Installing Ruby development libraries"
214
+ install apt=ruby-dev rpm=ruby-devel
215
+ fi
176
216
  }
177
217
 
178
218
  ensure-ruby-installed() {
179
- if has-executable rbenv; then
219
+ if has-executable asdf; then
220
+ if ! (asdf current ruby | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
221
+ banner "Installing Ruby $REQUIRED_RUBY_VERSION with asdf"
222
+ asdf install ruby $REQUIRED_RUBY_VERSION
223
+ fi
224
+ elif has-executable rbenv; then
180
225
  if ! (rbenv versions | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
181
226
  banner "Installing Ruby $REQUIRED_RUBY_VERSION with rbenv"
182
227
  rbenv install --skip-existing "$REQUIRED_RUBY_VERSION"
@@ -185,10 +230,10 @@ ensure-ruby-installed() {
185
230
  PREFIX='' source /usr/local/share/chruby/chruby.sh
186
231
  if ! (chruby '' | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
187
232
  if has-executable install-ruby; then
188
- banner "Installing Ruby $REQUIRED_RUBY_VERSION with install-ruby"
233
+ banner "Installing Ruby $REQUIRED_RUBY_VERSION with install-ruby"
189
234
  install-ruby "$REQUIRED_RUBY_VERSION"
190
235
  else
191
- error "Please install Ruby $REQUIRED_RUBY_VERSION"
236
+ error "Please use chruby to install Ruby $REQUIRED_RUBY_VERSION!"
192
237
  fi
193
238
  fi
194
239
  elif has-executable rvm; then
@@ -200,33 +245,39 @@ ensure-ruby-installed() {
200
245
  else
201
246
  error "You don't seem to have a Ruby manager installed."
202
247
  print-wrapped "\
203
- We recommend using rbenv. You can find instructions to install it here:
204
-
205
- https://github.com/rbenv/rbenv#installation
248
+ We recommend using asdf. You can find instructions to install it here:
206
249
 
207
- Make sure to follow the instructions to configure your shell so that rbenv is
208
- automatically loaded.
250
+ https://asdf-vm.com
209
251
 
210
- When you're done, open up a new terminal tab and re-run this script."
252
+ When you're done, close and re-open this terminal tab and re-run this script."
211
253
  exit 1
212
254
  fi
213
255
  }
214
256
 
215
- install-ruby-dependencies() {
257
+ has-bundler() {
258
+ has-executable bundle && bundle -v &>/dev/null
259
+ }
260
+
261
+ ensure-project-ruby-dependencies-installed() {
216
262
  banner 'Installing Ruby dependencies'
217
- gem install bundler -v '~> 1.0' --conservative
263
+
264
+ if [[ $USE_BUNDLER_1 -eq 1 ]] && (! has-bundler || [[ $(bundle -v) =~ '^1\.' ]]); then
265
+ gem install bundler -v '~> 1.0'
266
+ elif ! has-bundler; then
267
+ gem install bundler
268
+ fi
269
+
218
270
  bundle check || bundle install
219
271
  }
220
272
 
221
273
  run-provisions() {
222
274
  provision-ruby
223
- }
224
275
 
225
- setup() {
226
- check-for-package-manager
227
- install-development-libraries
228
- run-provisions
229
- success "Done!"
276
+ if type provision-project &>/dev/null; then
277
+ provision-project
278
+ fi
230
279
  }
231
280
 
281
+ # --- FIN ----------------------------------------------------------------------
282
+
232
283
  setup
@@ -6,10 +6,10 @@
6
6
  # To regenerate this section, install the gem and run:
7
7
  #
8
8
  <% if provisions.any? -%>
9
- # generate-setup <%= provisions.map { |p| "-p #{p.name}" }.join(" ") -%>
10
- <% else %>
9
+ # generate-setup <%= provisions.map { |p| "-p #{p.name}" }.join(" ") %>
10
+ <% else -%>
11
11
  # generate-setup
12
- <% end %>
12
+ <% end -%>
13
13
  #
14
14
 
15
15
  # --- SETUP --------------------------------------------------------------------
@@ -121,7 +121,7 @@ install() {
121
121
  sudo apt-get install -y "$package"
122
122
  fi
123
123
  elif has-executable yum; then
124
- package="${yum_package:-$default_package}"
124
+ package="${rpm_package:-$default_package}"
125
125
 
126
126
  if [[ -n $package ]]; then
127
127
  sudo yum install -y "$package"
@@ -135,28 +135,24 @@ install() {
135
135
  check-for-package-manager() {
136
136
  local platform=$(determine-platform)
137
137
 
138
- if [[ $platform == "linux" ]]; then
139
- if ! has-executable apt-get; then
140
- error "You don't seem to have a package manager installed."
141
- print-wrapped "\
142
- The setup script assumes you're using Debian or a Debian-derived flavor of
143
- Linux (i.e. something with Apt). If this is not the case, then we would
144
- gladly take a PR fixing this!"
145
- exit 1
146
- fi
147
- else
148
- if ! has-executable brew; then
149
- error "You don't seem to have Homebrew installed."
150
- print-wrapped "\
151
- Follow the instructions here to do this:
152
-
153
- http://brew.sh
154
-
155
- Then re-run this script."
156
- exit 1
157
- fi
138
+ if [[ $platform == "linux" ]] && ! has-executable apt-get && ! has-executable yum; then
139
+ # TODO: Check if build-essential is installed on Debian?
140
+ # TODO: Check if 'Development Tools' group is installed on RedHat?
158
141
 
142
+ error "You don't seem to have a package manager installed."
143
+ print-wrapped "\
144
+ This setup script assumes you're using a flavor of Linux derived from Debian or
145
+ RedHat (i.e. something with Apt or Yum). If this is not the case, then we would
146
+ gladly take a PR fixing this!"
147
+ exit 1
148
+ elif [[ $platform == "mac" ]] && ! has-executable brew; then
159
149
  # TODO: Check that OS X Command Line Tools are installed?
150
+
151
+ error "You don't seem to have Homebrew installed."
152
+ print-wrapped "\
153
+ Visit <https://brew.sh> and follow the instructions there, then re-run this
154
+ script."
155
+ exit 1
160
156
  fi
161
157
  }
162
158
 
@@ -172,8 +168,10 @@ setup() {
172
168
  <% if provisions.any? -%>
173
169
  run-provisions
174
170
  <% end -%>
175
- provision-project
176
- success "Done!"
171
+ if type provision-project &>/dev/null; then
172
+ provision-project
173
+ fi
174
+ success "Setup complete!"
177
175
  }
178
176
 
179
177
  <% provisions.each do |provision| -%>
@@ -187,10 +185,6 @@ run-provisions() {
187
185
  <% provisions.each do |provision| -%>
188
186
  provision-<%= provision.name %>
189
187
  <% end -%>
190
-
191
- if type provision-project &>/dev/null; then
192
- provision-project
193
- fi
194
188
  }
195
189
  <% end -%>
196
190
 
@@ -1,23 +1,29 @@
1
1
  provision-node() {
2
- if [[ -f .node-version ]]; then
2
+ if [[ -f .tool-versions ]]; then
3
+ REQUIRED_NODE_VERSION=$(cat .tool-versions | grep '^nodejs ' | sed -Ee 's/^nodejs (.+)$/\1/')
4
+ elif [[ -f .node-version ]]; then
3
5
  REQUIRED_NODE_VERSION=$(cat .node-version)
4
6
  elif [[ -f .nvmrc ]]; then
5
7
  REQUIRED_NODE_VERSION=$(cat .nvmrc)
6
8
  else
7
9
  error "You don't seem to have a Node version set in your project."
8
10
  print-wrapped "\
9
- You'll need to create a .node-version or .nvmrc file in your project before you
10
- can run this script.
11
- "
11
+ You'll need to create either a .tool-versions file or .nvmrc file in your
12
+ project before you can run this script."
12
13
  exit 1
13
14
  fi
14
15
 
15
16
  ensure-node-installed
16
- install-node-dependencies
17
+ ensure-project-node-dependencies-installed
17
18
  }
18
19
 
19
20
  ensure-node-installed() {
20
- if has-executable nodenv; then
21
+ if has-executable asdf; then
22
+ if ! (asdf current nodejs | grep $REQUIRED_NODE_VERSION'\>' &>/dev/null); then
23
+ banner "Installing Node $REQUIRED_NODE_VERSION with asdf"
24
+ asdf install nodejs $REQUIRED_NODE_VERSION
25
+ fi
26
+ elif has-executable nodenv; then
21
27
  if ! (nodenv versions | grep $REQUIRED_NODE_VERSION'\>' &>/dev/null); then
22
28
  banner "Installing Node $REQUIRED_NODE_VERSION with nodenv"
23
29
  nodenv install --skip-existing "$REQUIRED_NODE_VERSION"
@@ -31,19 +37,16 @@ ensure-node-installed() {
31
37
  else
32
38
  error "You don't seem to have a Node manager installed."
33
39
  print-wrapped "\
34
- We recommend using nodenv. You can find instructions to install it here:
35
-
36
- https://github.com/nodenv/nodenv#installation
40
+ We recommend using asdf. You can find instructions to install it here:
37
41
 
38
- Make sure to follow the instructions to configure your shell so that nodenv is
39
- automatically loaded.
42
+ https://asdf-vm.com
40
43
 
41
- When you're done, open up a new terminal tab and re-run this script."
44
+ When you're done, close and re-open this terminal tab and re-run this script."
42
45
  exit 1
43
46
  fi
44
47
  }
45
48
 
46
- install-node-dependencies() {
49
+ ensure-project-node-dependencies-installed() {
47
50
  banner 'Installing Node dependencies'
48
51
 
49
52
  if [[ -f package-lock.json ]]; then
@@ -53,9 +56,8 @@ install-node-dependencies() {
53
56
  else
54
57
  error "Sorry, I'm not sure how to install your dependencies."
55
58
  print-wrapped "\
56
- You'll need to create a package-lock.json or yarn.lock file in your project
57
- before you can run this script.
58
- "
59
+ Are you missing a package.json? Have you run 'npm install' or 'yarn install'
60
+ yet?"
59
61
  exit 1
60
62
  fi
61
63
  }
@@ -1,26 +1,39 @@
1
1
  provision-ruby() {
2
- if [[ -f .ruby-version ]]; then
2
+ USE_BUNDLER_1=0
3
+
4
+ if [[ -f .tool-versions ]]; then
5
+ REQUIRED_RUBY_VERSION=$(cat .tool-versions | grep '^ruby ' | sed -Ee 's/^ruby (.+)$/\1/')
6
+ elif [[ -f .ruby-version ]]; then
3
7
  REQUIRED_RUBY_VERSION=$(cat .ruby-version)
4
8
  else
5
9
  error "You don't seem to have a Ruby version set in your project."
6
10
  print-wrapped "\
7
- You'll need to create a .ruby-version file in your project before you can run
8
- this script.
9
- "
11
+ You'll need to create either a .tool-versions file or .ruby-version file in your
12
+ project before you can run this script."
10
13
  exit 1
11
14
  fi
12
15
 
13
- install-ruby-development-library
16
+ ensure-ruby-development-libraries-installed
14
17
  ensure-ruby-installed
15
- install-ruby-dependencies
18
+ ensure-project-ruby-dependencies-installed
16
19
  }
17
20
 
18
- install-ruby-development-library() {
19
- install apt=ruby-dev rpm=ruby-devel
21
+ ensure-ruby-development-libraries-installed() {
22
+ local platform=$(determine-platform)
23
+
24
+ if [[ $platform == "linux" ]]; then
25
+ banner "Installing Ruby development libraries"
26
+ install apt=ruby-dev rpm=ruby-devel
27
+ fi
20
28
  }
21
29
 
22
30
  ensure-ruby-installed() {
23
- if has-executable rbenv; then
31
+ if has-executable asdf; then
32
+ if ! (asdf current ruby | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
33
+ banner "Installing Ruby $REQUIRED_RUBY_VERSION with asdf"
34
+ asdf install ruby $REQUIRED_RUBY_VERSION
35
+ fi
36
+ elif has-executable rbenv; then
24
37
  if ! (rbenv versions | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
25
38
  banner "Installing Ruby $REQUIRED_RUBY_VERSION with rbenv"
26
39
  rbenv install --skip-existing "$REQUIRED_RUBY_VERSION"
@@ -29,10 +42,10 @@ ensure-ruby-installed() {
29
42
  PREFIX='' source /usr/local/share/chruby/chruby.sh
30
43
  if ! (chruby '' | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then
31
44
  if has-executable install-ruby; then
32
- banner "Installing Ruby $REQUIRED_RUBY_VERSION with install-ruby"
45
+ banner "Installing Ruby $REQUIRED_RUBY_VERSION with install-ruby"
33
46
  install-ruby "$REQUIRED_RUBY_VERSION"
34
47
  else
35
- error "Please install Ruby $REQUIRED_RUBY_VERSION"
48
+ error "Please use chruby to install Ruby $REQUIRED_RUBY_VERSION!"
36
49
  fi
37
50
  fi
38
51
  elif has-executable rvm; then
@@ -44,20 +57,27 @@ ensure-ruby-installed() {
44
57
  else
45
58
  error "You don't seem to have a Ruby manager installed."
46
59
  print-wrapped "\
47
- We recommend using rbenv. You can find instructions to install it here:
48
-
49
- https://github.com/rbenv/rbenv#installation
60
+ We recommend using asdf. You can find instructions to install it here:
50
61
 
51
- Make sure to follow the instructions to configure your shell so that rbenv is
52
- automatically loaded.
62
+ https://asdf-vm.com
53
63
 
54
- When you're done, open up a new terminal tab and re-run this script."
64
+ When you're done, close and re-open this terminal tab and re-run this script."
55
65
  exit 1
56
66
  fi
57
67
  }
58
68
 
59
- install-ruby-dependencies() {
69
+ has-bundler() {
70
+ has-executable bundle && bundle -v &>/dev/null
71
+ }
72
+
73
+ ensure-project-ruby-dependencies-installed() {
60
74
  banner 'Installing Ruby dependencies'
61
- gem install bundler -v '~> 1.0' --conservative
75
+
76
+ if [[ $USE_BUNDLER_1 -eq 1 ]] && (! has-bundler || ! [[ $(bundle -v) =~ ^Bundler version 1\. ]]); then
77
+ gem install bundler -v '~> 1.0'
78
+ elif ! has-bundler; then
79
+ gem install bundler
80
+ fi
81
+
62
82
  bundle check || bundle install
63
83
  }
@@ -1,3 +1,3 @@
1
1
  module SetupScriptGenerator
2
- VERSION = "0.2.1".freeze
2
+ VERSION = "0.2.6".freeze
3
3
  end
@@ -30,8 +30,4 @@ Gem::Specification.new do |spec|
30
30
  spec.bindir = "exe"
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ["lib"]
33
-
34
- spec.add_development_dependency "bundler", "~> 1.17"
35
- spec.add_development_dependency "rake", "~> 10.0"
36
- # spec.add_development_dependency "rspec", "~> 3.0"
37
33
  end
metadata CHANGED
@@ -1,44 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: setup_script_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Winkler
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-18 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.17'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.17'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- description:
11
+ date: 2020-07-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
42
14
  email:
43
15
  - elliot.winkler@gmail.com
44
16
  executables:
@@ -46,10 +18,10 @@ executables:
46
18
  extensions: []
47
19
  extra_rdoc_files: []
48
20
  files:
21
+ - ".editorconfig"
49
22
  - ".gitignore"
50
- - ".ruby-version"
23
+ - ".tool-versions"
51
24
  - Gemfile
52
- - Gemfile.lock
53
25
  - LICENSE.txt
54
26
  - README.md
55
27
  - Rakefile
@@ -76,7 +48,7 @@ metadata:
76
48
  homepage_uri: https://github.com/mcmire/setup_script_generator
77
49
  source_code_uri: https://github.com/mcmire/setup_script_generator
78
50
  changelog_uri: https://github.com/mcmire/setup_script_generator/tree/master/CHANGELOG.md
79
- post_install_message:
51
+ post_install_message:
80
52
  rdoc_options: []
81
53
  require_paths:
82
54
  - lib
@@ -91,8 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
63
  - !ruby/object:Gem::Version
92
64
  version: '0'
93
65
  requirements: []
94
- rubygems_version: 3.0.6
95
- signing_key:
66
+ rubygems_version: 3.1.2
67
+ signing_key:
96
68
  specification_version: 4
97
69
  summary: Generate setup scripts for your projects.
98
70
  test_files: []
@@ -1 +0,0 @@
1
- 2.6.3
@@ -1,20 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- setup_script_generator (0.2.1)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- rake (10.5.0)
10
-
11
- PLATFORMS
12
- ruby
13
-
14
- DEPENDENCIES
15
- bundler (~> 1.17)
16
- rake (~> 10.0)
17
- setup_script_generator!
18
-
19
- BUNDLED WITH
20
- 1.17.3