jt_tools 0.0.12 → 0.0.17
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 +35 -11
- data/.gitattributes +11 -0
- data/.github/workflows/test.yml +100 -0
- data/.gitignore +1 -1
- data/.rubocop.yml +9 -0
- data/.standard.yml +5 -1
- data/Gemfile +9 -3
- data/README.md +2 -1
- data/Rakefile +5 -5
- data/bin/ci-test +13 -0
- data/bin/lint +12 -0
- data/bin/rubocop +29 -0
- data/bin/test +23 -14
- data/jt_tools.gemspec +15 -14
- data/lib/install/.circleci/config.yml +43 -34
- data/lib/install/.fasterer.yml +1 -0
- data/lib/install/.gitattributes +10 -0
- data/lib/install/.rubocop.yml +16 -13
- data/lib/install/.simplecov +6 -6
- data/lib/install/Brewfile +11 -11
- data/lib/install/Gemfile.tools +7 -6
- data/lib/install/app.json +1 -1
- data/lib/install/bin/tools-setup +3 -1
- data/lib/install/bin/tools-upgrade +2 -2
- data/lib/jt_tools.rb +2 -2
- data/lib/jt_tools/railtie.rb +2 -2
- data/lib/jt_tools/version.rb +1 -1
- data/lib/tasks/install.rake +3 -3
- data/package.json +5 -0
- data/rejuvenation.rb +6 -4
- data/template.rb +126 -103
- metadata +27 -4
- data/bin/standardrb +0 -29
@@ -7,8 +7,9 @@
|
|
7
7
|
version: 2.1
|
8
8
|
|
9
9
|
orbs:
|
10
|
-
|
11
|
-
node: circleci/node@
|
10
|
+
browser-tools: circleci/browser-tools@1.1.1
|
11
|
+
node: circleci/node@4
|
12
|
+
ruby: circleci/ruby@1
|
12
13
|
|
13
14
|
workflows:
|
14
15
|
version: 2
|
@@ -38,7 +39,7 @@ jobs:
|
|
38
39
|
test:
|
39
40
|
docker:
|
40
41
|
# specify the version you desire here
|
41
|
-
- image:
|
42
|
+
- image: cimg/ruby:3.0-browsers
|
42
43
|
environment:
|
43
44
|
BUNDLE_GEMFILE: Gemfile
|
44
45
|
BUNDLE_PATH: vendor/bundle
|
@@ -61,6 +62,8 @@ jobs:
|
|
61
62
|
|
62
63
|
steps:
|
63
64
|
- checkout
|
65
|
+
- browser-tools/install-chrome
|
66
|
+
- browser-tools/install-chromedriver
|
64
67
|
|
65
68
|
- restore_cache:
|
66
69
|
name: Restore Bundler Cache between Branches
|
@@ -74,10 +77,14 @@ jobs:
|
|
74
77
|
with-cache: false
|
75
78
|
path: './vendor/bundle'
|
76
79
|
|
80
|
+
- run: bundle exec bootsnap precompile --gemfile app/ lib/
|
81
|
+
- run: gem install spring
|
82
|
+
|
77
83
|
- save_cache:
|
78
84
|
name: Save Bundler Cache between Branches
|
79
85
|
paths:
|
80
|
-
-
|
86
|
+
- vendor/bundle
|
87
|
+
- tmp/cache/bootsnap-compile-cache
|
81
88
|
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
82
89
|
|
83
90
|
- node/install-packages:
|
@@ -106,43 +113,45 @@ jobs:
|
|
106
113
|
- tmp/cache/assets
|
107
114
|
- tmp/cache/webpacker
|
108
115
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
116
|
+
# Run JS Tests
|
117
|
+
# - restore_cache:
|
118
|
+
# name: Restore Jest Cache
|
119
|
+
# keys:
|
120
|
+
# - jest-cache-v1-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
|
121
|
+
# - jest-cache-v1-{{ arch }}-{{ .Branch }}-
|
122
|
+
# - jest-cache-v1-
|
123
|
+
#
|
124
|
+
# - run:
|
125
|
+
# name: JavaScript Unit Tests
|
126
|
+
# command: |
|
127
|
+
# bin/yarn test --ci --no-watchman \
|
128
|
+
# --coverage --coverageDirectory coverage/jest \
|
129
|
+
# --coverageReporters text-summary --coverageReporters html \
|
130
|
+
# --reporters=jest-junit
|
131
|
+
# environment:
|
132
|
+
# JEST_JUNIT_OUTPUT_DIR: tmp/reports/jest-results
|
133
|
+
#
|
134
|
+
# - save_cache:
|
135
|
+
# name: Save Jest Cache
|
136
|
+
# key: jest-cache-v1-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
|
137
|
+
# paths:
|
138
|
+
# - tmp/cache/jest
|
139
|
+
|
140
|
+
- run: bin/rails db:test:prepare
|
141
|
+
- run: bin/rails test "test/**/*_test.rb"
|
142
|
+
|
143
|
+
# Collect reports
|
136
144
|
- store_test_results:
|
137
145
|
path: ./tmp/reports/
|
138
146
|
- store_artifacts:
|
139
147
|
path: ./coverage
|
140
148
|
lint:
|
141
149
|
docker:
|
142
|
-
- image: cimg/ruby:
|
150
|
+
- image: cimg/ruby:3.0-node
|
143
151
|
environment:
|
144
152
|
DISABLE_SPRING: 1
|
145
153
|
BUNDLE_GEMFILE: Gemfile.tools
|
154
|
+
BUNDLE_PATH: vendor/bundle-tools
|
146
155
|
BUNDLE_JOBS: 4
|
147
156
|
BUNDLE_RETRY: 3
|
148
157
|
|
@@ -162,7 +171,7 @@ jobs:
|
|
162
171
|
|
163
172
|
- run:
|
164
173
|
name: Install Bundle Dependencies
|
165
|
-
command: bin/bundle check
|
174
|
+
command: bin/bundle check || bin/bundle install
|
166
175
|
|
167
176
|
- run:
|
168
177
|
name: Install Node Packages
|
@@ -178,7 +187,7 @@ jobs:
|
|
178
187
|
|
179
188
|
upgrade_tools:
|
180
189
|
docker:
|
181
|
-
- image: cimg/ruby:
|
190
|
+
- image: cimg/ruby:3.0-node
|
182
191
|
environment:
|
183
192
|
DISABLE_SPRING: 1
|
184
193
|
BUNDLE_GEMFILE: Gemfile.tools
|
data/lib/install/.fasterer.yml
CHANGED
data/lib/install/.rubocop.yml
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
---
|
2
2
|
require:
|
3
|
-
-
|
3
|
+
- rubocop-minitest
|
4
4
|
- rubocop-rails
|
5
|
+
- rubocop-performance
|
6
|
+
- standard
|
5
7
|
|
6
8
|
inherit_gem:
|
7
9
|
standard: config/base.yml
|
8
10
|
|
9
11
|
AllCops:
|
10
|
-
|
12
|
+
NewCops: enable
|
13
|
+
TargetRubyVersion: 3.0
|
11
14
|
|
12
15
|
Exclude:
|
16
|
+
- 'bin/**/*'
|
13
17
|
- 'db/migrate/**/*'
|
14
18
|
- 'db/schema.rb'
|
15
19
|
- 'vendor/**/*'
|
@@ -63,6 +67,13 @@ Naming/PredicateName:
|
|
63
67
|
Exclude:
|
64
68
|
- 'app/helpers/application_helper.rb'
|
65
69
|
|
70
|
+
Standard/SemanticBlocks:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
Style/BlockDelimiters:
|
74
|
+
Enabled: true
|
75
|
+
EnforcedStyle: braces_for_chaining
|
76
|
+
|
66
77
|
Style/ClassAndModuleChildren:
|
67
78
|
Exclude:
|
68
79
|
- 'test/**/*.rb'
|
@@ -70,23 +81,15 @@ Style/ClassAndModuleChildren:
|
|
70
81
|
Style/Documentation:
|
71
82
|
Enabled: false
|
72
83
|
|
73
|
-
Style/ExponentialNotation:
|
74
|
-
Enabled: true
|
75
|
-
|
76
84
|
Style/FrozenStringLiteralComment:
|
77
85
|
Enabled: true
|
78
86
|
|
79
87
|
Style/HashEachMethods:
|
80
88
|
Enabled: true
|
81
89
|
|
82
|
-
Style/
|
83
|
-
Enabled: true
|
84
|
-
|
85
|
-
Style/HashTransformValues:
|
86
|
-
Enabled: true
|
87
|
-
|
88
|
-
Style/SlicingWithRange:
|
90
|
+
Style/StringLiterals:
|
89
91
|
Enabled: true
|
92
|
+
EnforcedStyle: single_quotes
|
90
93
|
|
91
94
|
# Rails
|
92
95
|
|
@@ -94,7 +97,7 @@ Rails:
|
|
94
97
|
Enabled: true
|
95
98
|
|
96
99
|
Rails/SkipsModelValidations:
|
97
|
-
|
100
|
+
Enabled: false
|
98
101
|
|
99
102
|
Rails/UnknownEnv:
|
100
103
|
Environments:
|
data/lib/install/.simplecov
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
if defined?(Spring) && ENV[
|
4
|
-
puts
|
5
|
-
puts
|
3
|
+
if defined?(Spring) && ENV['DISABLE_SPRING'].nil?
|
4
|
+
puts '**** NO COVERAGE FOR YOU! ****'
|
5
|
+
puts 'Please disable Spring to get COVERAGE by `DISABLE_SPRING=1 COVERAGE=1 bin/rspec`'
|
6
6
|
else
|
7
|
-
SimpleCov.start
|
7
|
+
SimpleCov.start 'rails' do
|
8
8
|
add_filter %w[app/views bin spec test]
|
9
9
|
|
10
10
|
maximum_coverage_drop 0.5
|
11
11
|
end
|
12
12
|
|
13
|
-
if ENV[
|
14
|
-
require
|
13
|
+
if ENV['CODECOV_TOKEN']
|
14
|
+
require 'codecov'
|
15
15
|
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
16
16
|
end
|
17
17
|
end
|
data/lib/install/Brewfile
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
tap
|
3
|
+
tap 'heroku/brew'
|
4
4
|
|
5
|
-
brew
|
6
|
-
brew
|
7
|
-
brew
|
8
|
-
brew
|
9
|
-
brew
|
10
|
-
brew
|
11
|
-
brew
|
12
|
-
brew
|
13
|
-
brew
|
14
|
-
brew
|
5
|
+
brew 'circleci'
|
6
|
+
brew 'graphicsmagick' # For ActiveStorage
|
7
|
+
brew 'heroku'
|
8
|
+
brew 'hub' # For creating Pull Request from CLI
|
9
|
+
brew 'postgresql'
|
10
|
+
brew 'rbenv'
|
11
|
+
brew 'ruby-build'
|
12
|
+
brew 'vips' # For ActiveStorage
|
13
|
+
brew 'yamllint' # For Linters
|
14
|
+
brew 'yarn'
|
data/lib/install/Gemfile.tools
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
source 'https://rubygems.org'
|
4
2
|
|
5
3
|
git_source(:github) do |repo_name|
|
@@ -10,19 +8,22 @@ end
|
|
10
8
|
gem 'oj'
|
11
9
|
|
12
10
|
group :tools do
|
13
|
-
gem 'pronto'
|
11
|
+
gem 'pronto', require: false
|
14
12
|
gem 'pronto-blacklist', require: false
|
15
13
|
gem 'pronto-erb_lint', require: false
|
16
14
|
gem 'pronto-eslint_npm', require: false
|
17
15
|
gem 'pronto-fasterer', require: false
|
18
16
|
gem 'pronto-rails_best_practices', require: false
|
19
17
|
gem 'pronto-reek', require: false
|
20
|
-
gem 'pronto-rubocop', require: false
|
18
|
+
gem 'pronto-rubocop', require: false, github: 'prontolabs/pronto-rubocop'
|
21
19
|
# gem 'pronto-standardrb', require: false
|
22
20
|
gem 'pronto-yamllint', require: false
|
23
21
|
|
24
|
-
|
22
|
+
gem 'rubocop-performance', require: false
|
25
23
|
gem 'rubocop-rails', require: false
|
26
|
-
|
24
|
+
gem 'rubocop-minitest', require: false
|
25
|
+
|
27
26
|
gem 'standard', '>= 0.4.7', require: false
|
27
|
+
# gem 'pronto-standardrb', require: false
|
28
|
+
# gem 'rubocop-rspec', require: false
|
28
29
|
end
|
data/lib/install/app.json
CHANGED
data/lib/install/bin/tools-setup
CHANGED
data/lib/jt_tools.rb
CHANGED
data/lib/jt_tools/railtie.rb
CHANGED
data/lib/jt_tools/version.rb
CHANGED
data/lib/tasks/install.rake
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
install_template_path = File.expand_path(
|
4
|
-
bin_path = ENV[
|
3
|
+
install_template_path = File.expand_path('../../template.rb', __dir__).freeze
|
4
|
+
bin_path = ENV['BUNDLE_BIN'] || './bin'
|
5
5
|
|
6
6
|
namespace :jt_tools do
|
7
|
-
desc
|
7
|
+
desc 'Install jt-tools in this application'
|
8
8
|
task install: :environment do
|
9
9
|
exec "#{RbConfig.ruby} #{bin_path}/rails app:template LOCATION=#{install_template_path}"
|
10
10
|
end
|
data/package.json
ADDED
data/rejuvenation.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
2
4
|
|
3
5
|
EXTRACT_DEPENDENCY_NAME = /"?(.+?)@.+?"?(?:,\s+|\Z)/.freeze
|
4
6
|
EXTRACT_DEPENDENCY_DETAILS = /(^((?!= ).*?):\n.*?(?:\n\n|\Z))/m.freeze
|
5
7
|
|
6
8
|
def direct_dependencies_names
|
7
|
-
package_json = JSON.parse(File.open(
|
8
|
-
direct_dependencies = package_json.fetch_values(
|
9
|
+
package_json = JSON.parse(File.open('package.json').read)
|
10
|
+
direct_dependencies = package_json.fetch_values('dependencies', 'devDependencies', 'peerDependencies') {}
|
9
11
|
direct_dependencies.compact.inject([]) { |memo, v| memo.concat(v.keys) }
|
10
12
|
end
|
11
13
|
|
12
14
|
@dependencies = direct_dependencies_names
|
13
15
|
|
14
|
-
yarn_lock_content = File.open(
|
16
|
+
yarn_lock_content = File.open('yarn.lock').read
|
15
17
|
yarn_lock_content.scan(EXTRACT_DEPENDENCY_DETAILS).each do |dependency_block|
|
16
18
|
direct_dep = @dependencies.include?(dependency_block[1].match(EXTRACT_DEPENDENCY_NAME).to_a[1])
|
17
19
|
puts dependency_block[0] if direct_dep
|
data/template.rb
CHANGED
@@ -7,17 +7,17 @@
|
|
7
7
|
# In that case, use `git clone` to download them to a local temporary dir.
|
8
8
|
def add_template_repository_to_source_path
|
9
9
|
if __FILE__.match?(%r{\Ahttps?://})
|
10
|
-
require
|
11
|
-
require
|
10
|
+
require 'shellwords'
|
11
|
+
require 'tmpdir'
|
12
12
|
|
13
|
-
source_paths.unshift(temp_dir = Dir.mktmpdir(
|
13
|
+
source_paths.unshift(temp_dir = Dir.mktmpdir('jt_tools-'))
|
14
14
|
at_exit { FileUtils.remove_entry(temp_dir) }
|
15
15
|
git clone: [
|
16
|
-
|
17
|
-
|
16
|
+
'--quiet',
|
17
|
+
'https://github.com/jetthoughts/jt_tools.git',
|
18
18
|
temp_dir
|
19
19
|
].map { |args| Shellwords.escape(args) }
|
20
|
-
.join(
|
20
|
+
.join(' ')
|
21
21
|
|
22
22
|
if (branch = __FILE__[%r{jt_tools/(.+)/template.rb}, 1])
|
23
23
|
Dir.chdir(temp_dir) { git checkout: branch }
|
@@ -29,105 +29,123 @@ def add_template_repository_to_source_path
|
|
29
29
|
|
30
30
|
add_template_repository_to_source_path
|
31
31
|
|
32
|
-
say
|
33
|
-
directory
|
32
|
+
say '=> Copying binstubs'
|
33
|
+
directory 'lib/install/bin', 'bin'
|
34
34
|
|
35
|
-
chmod
|
35
|
+
chmod 'bin', 0o755 & ~File.umask, verbose: false
|
36
36
|
|
37
|
-
say
|
38
|
-
copy_file
|
37
|
+
say '=> Copying tools gemfile'
|
38
|
+
copy_file 'lib/install/Gemfile.tools', 'Gemfile.tools'
|
39
39
|
|
40
|
-
run
|
40
|
+
run 'yarn add -D eslint jest-junit'
|
41
41
|
|
42
|
-
say
|
43
|
-
copy_file
|
44
|
-
copy_file
|
45
|
-
copy_file
|
46
|
-
copy_file
|
47
|
-
copy_file
|
48
|
-
copy_file
|
49
|
-
copy_file
|
50
|
-
copy_file
|
51
|
-
copy_file
|
52
|
-
copy_file
|
42
|
+
say 'Copying lint configurations'
|
43
|
+
copy_file 'lib/install/.better-html.yml', '.better-html.yml'
|
44
|
+
copy_file 'lib/install/.erb-lint.yml', '.erb-lint.yml'
|
45
|
+
copy_file 'lib/install/.eslintrc.js', '.eslintrc.js'
|
46
|
+
copy_file 'lib/install/.pronto.yml', '.pronto.yml'
|
47
|
+
copy_file 'lib/install/.pronto_eslint_npm.yml', '.pronto_eslint_npm.yml'
|
48
|
+
copy_file 'lib/install/.rubocop.yml', '.rubocop.yml'
|
49
|
+
copy_file 'lib/install/.yamllint.yml', '.yamllint.yml'
|
50
|
+
copy_file 'lib/install/.reek.yml', '.reek.yml'
|
51
|
+
copy_file 'lib/install/config/rails_best_practices.yml', 'config/rails_best_practices.yml'
|
52
|
+
copy_file 'lib/install/.editorconfig', '.editorconfig'
|
53
53
|
|
54
|
-
say
|
55
|
-
copy_file
|
56
|
-
copy_file
|
54
|
+
say '=> Copying services configuration'
|
55
|
+
copy_file 'lib/install/.simplecov', '.simplecov'
|
56
|
+
copy_file 'lib/install/codecov.yml', 'codecov.yml'
|
57
57
|
|
58
|
-
say
|
58
|
+
say '=> Adds service client API gems'
|
59
59
|
|
60
60
|
gem_group :test do
|
61
|
-
gem
|
62
|
-
gem
|
61
|
+
gem 'simplecov', require: false, group: :test
|
62
|
+
gem 'codecov', require: false, group: :test
|
63
|
+
gem 'rexml', require: false, group: :test # for hot fix of webdrivers and ruby 3
|
63
64
|
end
|
64
65
|
|
65
|
-
gem
|
66
|
+
gem 'oj'
|
66
67
|
|
67
68
|
gem_group :production, :staging do
|
68
|
-
gem
|
69
|
-
gem
|
70
|
-
gem
|
69
|
+
gem 'dalli'
|
70
|
+
gem 'r7insight'
|
71
|
+
gem 'rollbar'
|
71
72
|
end
|
72
73
|
|
73
|
-
directory
|
74
|
+
directory 'lib/install/.circleci', '.circleci'
|
74
75
|
|
75
|
-
if File.read(
|
76
|
-
gem
|
76
|
+
if File.read('Gemfile').include? 'rspec'
|
77
|
+
gem 'rspec_junit_formatter', require: false, group: :test
|
77
78
|
insert_into_file(
|
78
|
-
|
79
|
+
'spec/spec_helper.rb',
|
79
80
|
"require 'simplecov' if ENV['COVERAGE']\n",
|
80
81
|
after: /\A/
|
81
82
|
)
|
82
83
|
insert_into_file(
|
83
|
-
|
84
|
-
"\n"
|
85
|
-
|
84
|
+
'.circleci/config.yml',
|
85
|
+
"\n" \
|
86
|
+
' - run: bin/rspec --format RspecJunitFormatter --out tmp/reports/rspec-results.xml --format progress',
|
87
|
+
after: '# rails test'
|
86
88
|
)
|
87
89
|
else
|
88
|
-
gem
|
90
|
+
gem 'minitest-ci', require: false, group: :test
|
89
91
|
insert_into_file(
|
90
|
-
|
92
|
+
'test/test_helper.rb',
|
91
93
|
"require 'simplecov' if ENV['COVERAGE']\n",
|
92
94
|
after: /\A/
|
93
95
|
)
|
94
96
|
insert_into_file(
|
95
|
-
|
97
|
+
'.circleci/config.yml',
|
96
98
|
"\n" + ' - run: bin/rails test "test/**/*_test.rb"',
|
97
|
-
after:
|
99
|
+
after: '# rails test'
|
98
100
|
)
|
99
101
|
|
100
|
-
gsub_file
|
101
|
-
|
102
|
+
gsub_file 'test/test_helper.rb',
|
103
|
+
'parallelize(workers: :number_of_processors)',
|
102
104
|
"parallelize(workers: :number_of_processors) unless ENV['COVERAGE']"
|
103
105
|
end
|
104
106
|
|
105
|
-
|
107
|
+
say '=> Copying git configuration'
|
108
|
+
directory 'lib/install/.github', '.github'
|
109
|
+
if Gem::Version.new(Rails.version) >= Gem::Version.new('6.1.0')
|
110
|
+
gitattributes = <<~GITATTRIBUTES
|
111
|
+
*.gemspec diff=ruby
|
112
|
+
*.rake diff=ruby
|
113
|
+
*.rb diff=ruby
|
114
|
+
*.js diff=javascript
|
115
|
+
|
116
|
+
db/schema.rb merge=ours diff=ruby
|
117
|
+
yarn.lock merge=ours
|
118
|
+
Gemfile.lock merge=ours linguist-generated
|
119
|
+
GITATTRIBUTES
|
120
|
+
insert_into_file '.gitattributes', gitattributes
|
121
|
+
else
|
122
|
+
copy_file 'lib/install/.gitattributes', '.gitattributes'
|
123
|
+
end
|
106
124
|
|
107
|
-
say
|
108
|
-
copy_file
|
109
|
-
copy_file
|
125
|
+
say '=> Copying heroku configuration'
|
126
|
+
copy_file 'lib/install/app.json', 'app.json'
|
127
|
+
copy_file 'lib/install/Procfile', 'Procfile'
|
110
128
|
|
111
|
-
say
|
112
|
-
copy_file
|
129
|
+
say '=> Install Brew dependencies'
|
130
|
+
copy_file 'lib/install/Brewfile', 'Brewfile'
|
113
131
|
|
114
|
-
say
|
115
|
-
directory
|
132
|
+
say 'Setup git hooks'
|
133
|
+
directory 'lib/install/bin/git-hooks', 'bin/git-hooks'
|
116
134
|
|
117
|
-
require
|
135
|
+
require 'bundler'
|
118
136
|
Bundler.with_original_env do
|
119
|
-
say
|
120
|
-
run
|
137
|
+
say '=> Install tools'
|
138
|
+
run 'bin/tools-setup'
|
121
139
|
|
122
|
-
say
|
123
|
-
run
|
124
|
-
run
|
125
|
-
run
|
140
|
+
say '=> Generate binstubs for linters'
|
141
|
+
run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force pronto'
|
142
|
+
run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force rubocop'
|
143
|
+
run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force standard'
|
126
144
|
end
|
127
145
|
|
128
|
-
say
|
129
|
-
run
|
130
|
-
say
|
146
|
+
say '=> Set git hooks'
|
147
|
+
run 'git config core.hooksPath ./bin/git-hooks'
|
148
|
+
say '=> Install all new dependencies'
|
131
149
|
|
132
150
|
run <<~BREW_INSTALL
|
133
151
|
hash brew 2> /dev/null \
|
@@ -135,29 +153,32 @@ def add_template_repository_to_source_path
|
|
135
153
|
|| echo "Please install Homebrew: https://brew.sh/"
|
136
154
|
BREW_INSTALL
|
137
155
|
|
138
|
-
say
|
139
|
-
uncomment_lines
|
156
|
+
say '=> Update development config'
|
157
|
+
uncomment_lines(
|
158
|
+
'config/environments/development.rb',
|
159
|
+
/config\.file_watcher = ActiveSupport::EventedFileUpdateChecker/
|
160
|
+
)
|
140
161
|
|
141
|
-
say
|
162
|
+
say '=> Set up R7Insight'
|
142
163
|
r7insight_config = <<-CODE
|
143
164
|
if ENV['R7INSIGHT_TOKEN'].present?
|
144
165
|
Rails.logger = R7Insight.new(ENV['R7INSIGHT_TOKEN'], ENV['R7INSIGHT_REGION'])
|
145
166
|
end
|
146
167
|
CODE
|
147
|
-
insert_into_file
|
168
|
+
insert_into_file 'config/environments/production.rb',
|
148
169
|
"require 'r7_insight.rb'" + "\n\n",
|
149
|
-
before:
|
150
|
-
environment(r7insight_config, env:
|
151
|
-
if File.exist?(
|
152
|
-
insert_into_file
|
170
|
+
before: 'Rails.application.configure do'
|
171
|
+
environment(r7insight_config, env: 'production')
|
172
|
+
if File.exist?('config/environments/staging.rb')
|
173
|
+
insert_into_file 'config/environments/staging.rb',
|
153
174
|
"require 'r7_insight.rb'" + "\n\n",
|
154
|
-
before:
|
155
|
-
environment(r7insight_config, env:
|
175
|
+
before: 'Rails.application.configure do'
|
176
|
+
environment(r7insight_config, env: 'staging')
|
156
177
|
end
|
157
178
|
|
158
|
-
gem
|
179
|
+
gem 'connection_pool'
|
159
180
|
|
160
|
-
say
|
181
|
+
say '=> Set up Memcachier'
|
161
182
|
memcachier_config = <<-CODE
|
162
183
|
if ENV["MEMCACHIER_SERVERS"]
|
163
184
|
config.cache_store = :mem_cache_store,
|
@@ -169,40 +190,42 @@ def add_template_repository_to_source_path
|
|
169
190
|
end
|
170
191
|
|
171
192
|
CODE
|
172
|
-
environment(memcachier_config, env:
|
173
|
-
if File.exist?(
|
174
|
-
environment(memcachier_config, env:
|
193
|
+
environment(memcachier_config, env: 'production')
|
194
|
+
if File.exist?('config/environments/staging.rb')
|
195
|
+
environment(memcachier_config, env: 'staging')
|
175
196
|
end
|
176
197
|
|
177
198
|
Bundler.with_original_env do
|
178
|
-
say
|
179
|
-
run
|
180
|
-
run
|
199
|
+
say '=> Setup default bundle config'
|
200
|
+
run 'bundle config jobs 4'
|
201
|
+
run 'bundle config retry 3'
|
202
|
+
|
203
|
+
run 'bundle'
|
181
204
|
|
182
|
-
run
|
205
|
+
run 'bundle lock --add-platform x86_64-linux'
|
183
206
|
end
|
184
207
|
|
185
|
-
uncomment_lines
|
208
|
+
uncomment_lines 'bin/setup', /system\(.*?\\byarn\b/
|
186
209
|
|
187
210
|
insert_into_file(
|
188
|
-
|
189
|
-
"system!
|
190
|
-
after: "system
|
211
|
+
'bin/setup',
|
212
|
+
"system! 'bin/tools-setup'\n",
|
213
|
+
after: "system! 'gem install bundler --conservative'\n"
|
191
214
|
)
|
192
215
|
|
193
|
-
say
|
194
|
-
say
|
195
|
-
say
|
196
|
-
say
|
197
|
-
say
|
198
|
-
say
|
199
|
-
say
|
200
|
-
say
|
201
|
-
say
|
202
|
-
say
|
203
|
-
say
|
204
|
-
say
|
205
|
-
say
|
206
|
-
say
|
207
|
-
say
|
208
|
-
say
|
216
|
+
say '**************************************************************************'
|
217
|
+
say '**************************************************************************'
|
218
|
+
say ''
|
219
|
+
say '1. Recommended Heroku Addons: Mailtrap, Rollbar, Cloudinary'
|
220
|
+
say ''
|
221
|
+
say '2. Setup Git Hooks to auto-check code and cleanup staled branches:'
|
222
|
+
say '$ `git config core.hooksPath bin/git-hooks`'
|
223
|
+
say ''
|
224
|
+
say '3. Please, set CODECOV_TOKEN, GITHUB_TOKEN and PRONTO_GITHUB_ACCESS_TOKEN'
|
225
|
+
say 'environment variables in CircleCI and your local env'
|
226
|
+
say ''
|
227
|
+
say ' For code coverage report aggregator, running code static analysis'
|
228
|
+
say 'and auto-update of the tools.'
|
229
|
+
say ''
|
230
|
+
say '**************************************************************************'
|
231
|
+
say '**************************************************************************'
|