checkoff 0.5.5 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +119 -12
- data/.envrc +2 -0
- data/.git-hooks/pre_commit/circle_ci.rb +21 -0
- data/.gitignore +50 -1
- data/.overcommit.yml +53 -0
- data/.rubocop.yml +64 -168
- data/.yamllint.yml +8 -0
- data/CODE_OF_CONDUCT.md +120 -36
- data/DEVELOPMENT.md +28 -0
- data/Gemfile.lock +130 -0
- data/{LICENSE.txt → LICENSE} +7 -6
- data/Makefile +48 -18
- data/README.md +15 -2
- data/Rakefile +2 -9
- data/bin/bump +29 -0
- data/bin/checkoff +29 -0
- data/bin/overcommit +29 -0
- data/bin/rake +29 -0
- data/checkoff.gemspec +9 -5
- data/coverage/.last_run.json +2 -1
- data/docs/cookiecutter_input.json +13 -0
- data/fix.sh +299 -0
- data/lib/checkoff/cli.rb +9 -1
- data/lib/checkoff/config_loader.rb +43 -3
- data/lib/checkoff/projects.rb +5 -5
- data/lib/checkoff/sections.rb +48 -11
- data/lib/checkoff/tasks.rb +1 -1
- data/lib/checkoff/version.rb +1 -1
- data/lib/checkoff/workspaces.rb +4 -3
- data/metrics/bigfiles_high_water_mark +1 -1
- data/metrics/rubocop_high_water_mark +1 -1
- data/{lib/tasks → rakelib}/ci.rake +0 -0
- data/{lib/tasks → rakelib}/clear_metrics.rake +1 -1
- data/{lib/tasks → rakelib}/default.rake +0 -0
- data/rakelib/gem_tasks.rake +3 -0
- data/{lib/tasks → rakelib}/localtest.rake +1 -1
- data/rakelib/overcommit.rake +6 -0
- data/rakelib/quality.rake +4 -0
- data/{lib/tasks → rakelib}/test.rake +0 -0
- data/rakelib/undercover.rake +8 -0
- data/requirements_dev.txt +2 -0
- metadata +93 -25
- data/.ruby-version +0 -1
- data/.travis.yml +0 -22
- data/lib/tasks/feature.rake +0 -9
- data/lib/tasks/quality.rake +0 -9
- data/lib/tasks/spec.rake +0 -9
data/Rakefile
CHANGED
@@ -1,11 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
require 'bundler/gem_tasks'
|
7
|
-
|
8
|
-
Dir['lib/tasks/**/*.rake'].each { |t| load t }
|
9
|
-
|
10
|
-
desc 'Default: Run specs and check quality.'
|
11
|
-
task default: [:localtest]
|
3
|
+
# Add your own tasks in files placed in rakelib/ ending in .rake,
|
4
|
+
# for example rakelib/capistrano.rake, and they will automatically be available to Rake.
|
data/bin/bump
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'bump' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("bump", "bump")
|
data/bin/checkoff
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'checkoff' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("checkoff", "checkoff")
|
data/bin/overcommit
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'overcommit' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("overcommit", "overcommit")
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/checkoff.gemspec
CHANGED
@@ -11,9 +11,9 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.authors = ['Vince Broz']
|
12
12
|
spec.email = ['vince@broz.cc']
|
13
13
|
spec.summary = 'Command-line and gem client for Asana (unofficial)'
|
14
|
-
spec.homepage = '
|
15
|
-
spec.license = 'MIT'
|
16
|
-
spec.required_ruby_version = '>= 2.
|
14
|
+
spec.homepage = 'https://github.com/apiology/checkoff'
|
15
|
+
spec.license = 'MIT license'
|
16
|
+
spec.required_ruby_version = '>= 2.6'
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
19
|
f.match(%r{^(test|spec|features)/})
|
@@ -27,11 +27,15 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_runtime_dependency 'cache_method'
|
28
28
|
spec.add_runtime_dependency 'dalli'
|
29
29
|
|
30
|
+
spec.add_development_dependency 'bump'
|
30
31
|
spec.add_development_dependency 'bundler'
|
31
32
|
spec.add_development_dependency 'minitest-profile'
|
32
33
|
spec.add_development_dependency 'mocha'
|
33
|
-
spec.add_development_dependency '
|
34
|
+
spec.add_development_dependency 'overcommit'
|
34
35
|
spec.add_development_dependency 'rake', '~> 13.0'
|
35
|
-
spec.add_development_dependency '
|
36
|
+
spec.add_development_dependency 'rubocop'
|
37
|
+
spec.add_development_dependency 'rubocop-minitest'
|
38
|
+
spec.add_development_dependency 'rubocop-rake'
|
36
39
|
spec.add_development_dependency 'simplecov'
|
40
|
+
spec.add_development_dependency 'undercover'
|
37
41
|
end
|
data/coverage/.last_run.json
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"_template": "https://github.com/apiology/cookiecutter-gem",
|
3
|
+
"email": "vince@broz.cc",
|
4
|
+
"full_name": "Vince Broz",
|
5
|
+
"github_username": "apiology",
|
6
|
+
"module_name": "Checkoff",
|
7
|
+
"open_source_license": "MIT license",
|
8
|
+
"project_name": "Checkoff",
|
9
|
+
"project_short_description": "Command-line and gem client for Asana (unofficial)",
|
10
|
+
"project_slug": "checkoff",
|
11
|
+
"type_of_github_repo": "public",
|
12
|
+
"version": "0.8.0"
|
13
|
+
}
|
data/fix.sh
ADDED
@@ -0,0 +1,299 @@
|
|
1
|
+
#!/bin/bash -eu
|
2
|
+
|
3
|
+
set -o pipefail
|
4
|
+
|
5
|
+
install_rbenv() {
|
6
|
+
if [ "$(uname)" == "Darwin" ]
|
7
|
+
then
|
8
|
+
HOMEBREW_NO_AUTO_UPDATE=1 brew install rbenv || true
|
9
|
+
if ! type rbenv 2>/dev/null
|
10
|
+
then
|
11
|
+
# https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer
|
12
|
+
>&2 cat <<EOF
|
13
|
+
WARNING: seems you still have not added 'rbenv' to the load path.
|
14
|
+
|
15
|
+
# Load rbenv automatically by adding
|
16
|
+
# the following to ~/.bashrc:
|
17
|
+
|
18
|
+
export PATH="$HOME/.rbenv/bin:$PATH"
|
19
|
+
eval "$(rbenv init -)"
|
20
|
+
EOF
|
21
|
+
fi
|
22
|
+
else
|
23
|
+
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
24
|
+
fi
|
25
|
+
}
|
26
|
+
|
27
|
+
set_rbenv_env_variables() {
|
28
|
+
export PATH="${HOME}/.rbenv/bin:$PATH"
|
29
|
+
eval "$(rbenv init -)"
|
30
|
+
}
|
31
|
+
|
32
|
+
install_ruby_build() {
|
33
|
+
if [ "$(uname)" == "Darwin" ]
|
34
|
+
then
|
35
|
+
HOMEBREW_NO_AUTO_UPDATE=1 brew install ruby-build || true
|
36
|
+
else
|
37
|
+
mkdir -p "$(rbenv root)"/plugins
|
38
|
+
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
39
|
+
fi
|
40
|
+
}
|
41
|
+
|
42
|
+
ensure_ruby_build() {
|
43
|
+
if ! type ruby-build >/dev/null 2>&1 && ! [ -d "${HOME}/.rbenv/plugins/ruby-build" ]
|
44
|
+
then
|
45
|
+
install_ruby_build
|
46
|
+
fi
|
47
|
+
}
|
48
|
+
|
49
|
+
ensure_rbenv() {
|
50
|
+
if ! type rbenv >/dev/null 2>&1 && ! [ -f "${HOME}/.rbenv/bin/rbenv" ]
|
51
|
+
then
|
52
|
+
install_rbenv
|
53
|
+
fi
|
54
|
+
|
55
|
+
set_rbenv_env_variables
|
56
|
+
|
57
|
+
ensure_ruby_build
|
58
|
+
}
|
59
|
+
|
60
|
+
latest_ruby_version() {
|
61
|
+
major_minor=${1}
|
62
|
+
rbenv install --list 2>/dev/null | grep "^${major_minor}."
|
63
|
+
}
|
64
|
+
|
65
|
+
ensure_dev_library() {
|
66
|
+
header_file_name=${1:?header file name}
|
67
|
+
homebrew_package=${2:?homebrew package}
|
68
|
+
apt_package=${3:-${homebrew_package}}
|
69
|
+
if ! [ -f /usr/include/"${header_file_name}" ] && \
|
70
|
+
! [ -f /usr/include/x86_64-linux-gnu/"${header_file_name}" ] && \
|
71
|
+
! [ -f /usr/local/include/"${header_file_name}" ] && \
|
72
|
+
! [ -f /usr/local/opt/"${homebrew_package}"/include/"${header_file_name}" ]
|
73
|
+
then
|
74
|
+
install_package "${homebrew_package}" "${apt_package}"
|
75
|
+
fi
|
76
|
+
}
|
77
|
+
|
78
|
+
ensure_ruby_build_requirements() {
|
79
|
+
ensure_dev_library readline/readline.h readline libreadline-dev
|
80
|
+
}
|
81
|
+
|
82
|
+
# You can find out which feature versions are still supported / have
|
83
|
+
# been release here: https://www.ruby-lang.org/en/downloads/
|
84
|
+
ensure_ruby_versions() {
|
85
|
+
# You can find out which feature versions are still supported / have
|
86
|
+
# been release here: https://www.python.org/downloads/
|
87
|
+
ruby_versions="$(latest_ruby_version 2.6)"
|
88
|
+
|
89
|
+
echo "Latest Ruby versions: ${ruby_versions}"
|
90
|
+
|
91
|
+
ensure_ruby_build_requirements
|
92
|
+
|
93
|
+
for ver in $ruby_versions
|
94
|
+
do
|
95
|
+
rbenv install -s "${ver}"
|
96
|
+
done
|
97
|
+
}
|
98
|
+
|
99
|
+
ensure_bundle() {
|
100
|
+
# Not sure why this is needed a second time, but it seems to be?
|
101
|
+
#
|
102
|
+
# https://app.circleci.com/pipelines/github/apiology/source_finder/21/workflows/88db659f-a4f4-4751-abc0-46f5929d8e58/jobs/107
|
103
|
+
set_rbenv_env_variables
|
104
|
+
bundle --version >/dev/null 2>&1 || gem install bundler
|
105
|
+
make bundle_install
|
106
|
+
# https://bundler.io/v2.0/bundle_lock.html#SUPPORTING-OTHER-PLATFORMS
|
107
|
+
#
|
108
|
+
# "If you want your bundle to support platforms other than the one
|
109
|
+
# you're running locally, you can run bundle lock --add-platform
|
110
|
+
# PLATFORM to add PLATFORM to the lockfile, force bundler to
|
111
|
+
# re-resolve and consider the new platform when picking gems, all
|
112
|
+
# without needing to have a machine that matches PLATFORM handy to
|
113
|
+
# install those platform-specific gems on.'
|
114
|
+
grep x86_64-darwin-20 Gemfile.lock >/dev/null 2>&1 || bundle lock --add-platform x86_64-darwin-20 x86_64-linux
|
115
|
+
}
|
116
|
+
|
117
|
+
set_ruby_local_version() {
|
118
|
+
latest_ruby_version="$(cut -d' ' -f1 <<< "${ruby_versions}")"
|
119
|
+
echo "${latest_ruby_version}" > .ruby-version
|
120
|
+
}
|
121
|
+
|
122
|
+
latest_python_version() {
|
123
|
+
major_minor=${1}
|
124
|
+
# https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-a-bash-variable
|
125
|
+
pyenv install --list | grep "^ ${major_minor}." | grep -v -- -dev | tail -1 | xargs
|
126
|
+
}
|
127
|
+
|
128
|
+
install_pyenv() {
|
129
|
+
if [ "$(uname)" == "Darwin" ]
|
130
|
+
then
|
131
|
+
HOMEBREW_NO_AUTO_UPDATE=1 brew install pyenv || true
|
132
|
+
if ! type pyenv 2>/dev/null
|
133
|
+
then
|
134
|
+
# https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer
|
135
|
+
>&2 cat <<EOF
|
136
|
+
WARNING: seems you still have not added 'pyenv' to the load path.
|
137
|
+
|
138
|
+
# Load pyenv automatically by adding
|
139
|
+
# the following to ~/.bashrc:
|
140
|
+
|
141
|
+
export PATH="$HOME/.pyenv/bin:$PATH"
|
142
|
+
eval "$(pyenv init -)"
|
143
|
+
eval "$(pyenv virtualenv-init -)"
|
144
|
+
EOF
|
145
|
+
fi
|
146
|
+
else
|
147
|
+
curl https://pyenv.run | bash
|
148
|
+
fi
|
149
|
+
}
|
150
|
+
|
151
|
+
set_pyenv_env_variables() {
|
152
|
+
# looks like pyenv scripts aren't -u clean:
|
153
|
+
#
|
154
|
+
# https://app.circleci.com/pipelines/github/apiology/cookiecutter-pypackage/15/workflows/10506069-7662-46bd-b915-2992db3f795b/jobs/15
|
155
|
+
set +u
|
156
|
+
export PATH="${HOME}/.pyenv/bin:$PATH"
|
157
|
+
eval "$(pyenv init -)"
|
158
|
+
eval "$(pyenv virtualenv-init -)"
|
159
|
+
set -u
|
160
|
+
}
|
161
|
+
|
162
|
+
ensure_pyenv() {
|
163
|
+
if ! type pyenv >/dev/null 2>&1 && ! [ -f "${HOME}/.pyenv/bin/pyenv" ]
|
164
|
+
then
|
165
|
+
install_pyenv
|
166
|
+
fi
|
167
|
+
|
168
|
+
if ! type pyenv >/dev/null 2>&1
|
169
|
+
then
|
170
|
+
set_pyenv_env_variables
|
171
|
+
fi
|
172
|
+
}
|
173
|
+
|
174
|
+
install_package() {
|
175
|
+
homebrew_package=${1:?homebrew package}
|
176
|
+
apt_package=${2:-${homebrew_package}}
|
177
|
+
if [ "$(uname)" == "Darwin" ]
|
178
|
+
then
|
179
|
+
HOMEBREW_NO_AUTO_UPDATE=1 brew install "${homebrew_package}"
|
180
|
+
elif type apt-get >/dev/null 2>&1
|
181
|
+
then
|
182
|
+
sudo apt-get update -y
|
183
|
+
sudo apt-get install -y "${apt_package}"
|
184
|
+
else
|
185
|
+
>&2 echo "Teach me how to install packages on this plaform"
|
186
|
+
exit 1
|
187
|
+
fi
|
188
|
+
}
|
189
|
+
|
190
|
+
ensure_python_build_requirements() {
|
191
|
+
ensure_dev_library zlib.h zlib zlib1g-dev
|
192
|
+
ensure_dev_library bzlib.h bzip2 libbz2-dev
|
193
|
+
ensure_dev_library openssl/ssl.h openssl libssl-dev
|
194
|
+
ensure_dev_library ffi.h libffi libffi-dev
|
195
|
+
}
|
196
|
+
|
197
|
+
# You can find out which feature versions are still supported / have
|
198
|
+
# been release here: https://www.python.org/downloads/
|
199
|
+
ensure_python_versions() {
|
200
|
+
# You can find out which feature versions are still supported / have
|
201
|
+
# been release here: https://www.python.org/downloads/
|
202
|
+
python_versions="$(latest_python_version 3.9)"
|
203
|
+
|
204
|
+
echo "Latest Python versions: ${python_versions}"
|
205
|
+
|
206
|
+
ensure_python_build_requirements
|
207
|
+
|
208
|
+
for ver in $python_versions
|
209
|
+
do
|
210
|
+
if [ "$(uname)" == Darwin ]
|
211
|
+
then
|
212
|
+
pyenv_install() {
|
213
|
+
CFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include" LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib" pyenv install --skip-existing "$@"
|
214
|
+
}
|
215
|
+
|
216
|
+
major_minor="$(cut -d. -f1-2 <<<"${ver}")"
|
217
|
+
if [ "${major_minor}" == 3.6 ]
|
218
|
+
then
|
219
|
+
pyenv_install --patch "${ver}" < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index=1)
|
220
|
+
else
|
221
|
+
pyenv_install "${ver}"
|
222
|
+
fi
|
223
|
+
else
|
224
|
+
pyenv install -s "${ver}"
|
225
|
+
fi
|
226
|
+
done
|
227
|
+
}
|
228
|
+
|
229
|
+
ensure_pyenv_virtualenvs() {
|
230
|
+
latest_python_version="$(cut -d' ' -f1 <<< "${python_versions}")"
|
231
|
+
virtualenv_name="checkoff-${latest_python_version}"
|
232
|
+
pyenv virtualenv "${latest_python_version}" "${virtualenv_name}" || true
|
233
|
+
# You can use this for your global stuff!
|
234
|
+
pyenv virtualenv "${latest_python_version}" mylibs || true
|
235
|
+
# shellcheck disable=SC2086
|
236
|
+
pyenv local "${virtualenv_name}" ${python_versions} mylibs
|
237
|
+
}
|
238
|
+
|
239
|
+
ensure_pip() {
|
240
|
+
# Make sure we have a pip with the 20.3 resolver, and after the
|
241
|
+
# initial bugfix release
|
242
|
+
major_pip_version=$(pip --version | cut -d' ' -f2 | cut -d '.' -f 1)
|
243
|
+
if [[ major_pip_version -lt 21 ]]
|
244
|
+
then
|
245
|
+
pip install 'pip>=20.3.1'
|
246
|
+
fi
|
247
|
+
}
|
248
|
+
|
249
|
+
ensure_python_requirements() {
|
250
|
+
make pip_install
|
251
|
+
}
|
252
|
+
|
253
|
+
ensure_shellcheck() {
|
254
|
+
if ! type shellcheck >/dev/null 2>&1
|
255
|
+
then
|
256
|
+
install_package shellcheck
|
257
|
+
fi
|
258
|
+
}
|
259
|
+
|
260
|
+
ensure_overcommit() {
|
261
|
+
# don't run if we're in the middle of a cookiecutter child project
|
262
|
+
# test, or otherwise don't have a Git repo to install hooks into...
|
263
|
+
if [ -d .git ]
|
264
|
+
then
|
265
|
+
bundle exec overcommit --install
|
266
|
+
else
|
267
|
+
>&2 echo 'Not in a git repo; not installing git hooks'
|
268
|
+
fi
|
269
|
+
}
|
270
|
+
|
271
|
+
ensure_rugged_packages_installed() {
|
272
|
+
install_package icu4c libicu-dev # needed by rugged, needed by undercover
|
273
|
+
install_package pkg-config # needed by rugged, needed by undercover
|
274
|
+
install_package cmake # needed by rugged, needed by undercover
|
275
|
+
}
|
276
|
+
|
277
|
+
ensure_rbenv
|
278
|
+
|
279
|
+
ensure_ruby_versions
|
280
|
+
|
281
|
+
set_ruby_local_version
|
282
|
+
|
283
|
+
ensure_rugged_packages_installed
|
284
|
+
|
285
|
+
ensure_bundle
|
286
|
+
|
287
|
+
ensure_pyenv
|
288
|
+
|
289
|
+
ensure_python_versions
|
290
|
+
|
291
|
+
ensure_pyenv_virtualenvs
|
292
|
+
|
293
|
+
ensure_pip
|
294
|
+
|
295
|
+
ensure_python_requirements
|
296
|
+
|
297
|
+
ensure_shellcheck
|
298
|
+
|
299
|
+
ensure_overcommit
|