jt_tools 0.0.14 → 0.0.19

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.
@@ -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,21 @@ 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
- gem 'pronto-eslint_npm', require: false
14
+ gem 'pronto-eslint', 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
18
  gem 'pronto-rubocop', require: false
21
- # gem 'pronto-standardrb', require: false
22
19
  gem 'pronto-yamllint', require: false
23
20
 
24
- # gem 'rubocop-minitest', require: false
21
+ gem 'rubocop-performance', require: false
25
22
  gem 'rubocop-rails', require: false
26
- # gem 'rubocop-rspec', require: false
23
+ gem 'rubocop-minitest', require: false
24
+
27
25
  gem 'standard', '>= 0.4.7', require: false
26
+ # gem 'pronto-standardrb', require: false
27
+ # gem 'rubocop-rspec', require: false
28
28
  end
data/lib/install/app.json CHANGED
@@ -48,5 +48,5 @@
48
48
  "url": "heroku/ruby"
49
49
  }
50
50
  ],
51
- "stack": "heroku-18"
51
+ "stack": "heroku-20"
52
52
  }
@@ -6,7 +6,7 @@ reporters_opt=""
6
6
 
7
7
  if [[ -n "$PRONTO_GITHUB_ACCESS_TOKEN" && "$CIRCLECI" == "true" ]]
8
8
  then
9
- git fetch origin master
9
+ git fetch origin master --depth 1
10
10
  reporters_opt="-f github_status github_pr_review"
11
11
  fi
12
12
 
@@ -7,6 +7,8 @@ set -eo pipefail
7
7
 
8
8
  export BUNDLE_GEMFILE=Gemfile.tools
9
9
 
10
+ [[ (-z "$(command -v bundle)") ]] && gem install --conservative bundler
11
+
10
12
  bundle check || bundle install --jobs=4 --retry=3
11
13
 
12
- yarn check || yarn install
14
+ bin/yarn check || bin/yarn install
@@ -7,6 +7,6 @@ set -eo pipefail
7
7
 
8
8
  export BUNDLE_GEMFILE=Gemfile.tools
9
9
 
10
- bundle update --jobs=4 --retry=3
10
+ bundle update --jobs=4 --retry=3 --all
11
11
 
12
- yarn check || yarn install
12
+ yarn check || yarn upgrade
data/lib/jt_tools.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "jt_tools/version"
3
+ require 'jt_tools/version'
4
4
 
5
- require "jt_tools/railtie" if defined?(Rails)
5
+ require 'jt_tools/railtie' if defined?(Rails)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rails/railtie"
3
+ require 'rails/railtie'
4
4
 
5
5
  class JtToolsRailtie < Rails::Railtie
6
6
  rake_tasks do
7
- load "tasks/install.rake"
7
+ load 'tasks/install.rake'
8
8
  end
9
9
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JtTools
4
- VERSION = "0.0.14"
4
+ VERSION = '0.0.19'
5
5
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- install_template_path = File.expand_path("../../template.rb", __dir__).freeze
4
- bin_path = ENV["BUNDLE_BIN"] || "./bin"
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 "Install jt-tools in this application"
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
@@ -0,0 +1,5 @@
1
+ {
2
+ "devDependencies": {
3
+ "eslint": "^7.20.0"
4
+ }
5
+ }
data/rejuvenation.rb CHANGED
@@ -1,17 +1,19 @@
1
- require "json"
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("package.json").read)
8
- direct_dependencies = package_json.fetch_values("dependencies", "devDependencies", "peerDependencies") {}
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("yarn.lock").read
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 "shellwords"
11
- require "tmpdir"
10
+ require 'shellwords'
11
+ require 'tmpdir'
12
12
 
13
- source_paths.unshift(temp_dir = Dir.mktmpdir("jt_tools-"))
13
+ source_paths.unshift(temp_dir = Dir.mktmpdir('jt_tools-'))
14
14
  at_exit { FileUtils.remove_entry(temp_dir) }
15
15
  git clone: [
16
- "--quiet",
17
- "https://github.com/jetthoughts/jt_tools.git",
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,107 +29,112 @@ def add_template_repository_to_source_path
29
29
 
30
30
  add_template_repository_to_source_path
31
31
 
32
- say "=> Copying binstubs"
33
- directory "lib/install/bin", "bin"
32
+ say '=> Copying binstubs'
33
+ directory 'lib/install/bin', 'bin'
34
34
 
35
- chmod "bin", 0o755 & ~File.umask, verbose: false
35
+ chmod 'bin', 0o755 & ~File.umask, verbose: false
36
36
 
37
- say "=> Copying tools gemfile"
38
- copy_file "lib/install/Gemfile.tools", "Gemfile.tools"
37
+ say '=> Copying tools gemfile'
38
+ copy_file 'lib/install/Gemfile.tools', 'Gemfile.tools'
39
39
 
40
- run "yarn add -D eslint jest-junit"
40
+ run 'yarn add -D eslint jest-junit'
41
41
 
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"
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 "=> Copying services configuration"
55
- copy_file "lib/install/.simplecov", ".simplecov"
56
- copy_file "lib/install/codecov.yml", "codecov.yml"
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 "=> Adds service client API gems"
58
+ say '=> Adds service client API gems'
59
59
 
60
60
  gem_group :test do
61
- gem "simplecov", require: false, group: :test
62
- gem "codecov", require: false, group: :test
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 "oj"
66
+ gem 'oj'
66
67
 
67
68
  gem_group :production, :staging do
68
- gem "dalli"
69
- gem "r7insight"
70
- gem "rollbar"
69
+ gem 'dalli'
70
+ gem 'r7insight'
71
+ gem 'rollbar'
71
72
  end
72
73
 
73
- directory "lib/install/.circleci", ".circleci"
74
+ directory 'lib/install/.circleci', '.circleci'
74
75
 
75
- if File.read("Gemfile").include? "rspec"
76
- gem "rspec_junit_formatter", require: false, group: :test
76
+ if File.read('Gemfile').include? 'rspec'
77
+ gem 'rspec_junit_formatter', require: false, group: :test
77
78
  insert_into_file(
78
- "spec/spec_helper.rb",
79
+ 'spec/spec_helper.rb',
79
80
  "require 'simplecov' if ENV['COVERAGE']\n",
80
81
  after: /\A/
81
82
  )
82
- insert_into_file(
83
- ".circleci/config.yml",
84
- "\n" + " - run: bin/rspec --format RspecJunitFormatter --out tmp/reports/rspec-results.xml --format progress",
85
- after: "# rails test"
86
- )
87
83
  else
88
- gem "minitest-ci", require: false, group: :test
84
+ gem 'minitest-ci', require: false, group: :test
89
85
  insert_into_file(
90
- "test/test_helper.rb",
86
+ 'test/test_helper.rb',
91
87
  "require 'simplecov' if ENV['COVERAGE']\n",
92
88
  after: /\A/
93
89
  )
94
- insert_into_file(
95
- ".circleci/config.yml",
96
- "\n" + ' - run: bin/rails test "test/**/*_test.rb"',
97
- after: "# rails test"
98
- )
99
-
100
- gsub_file "test/test_helper.rb",
101
- "parallelize(workers: :number_of_processors)",
90
+ gsub_file 'test/test_helper.rb',
91
+ 'parallelize(workers: :number_of_processors)',
102
92
  "parallelize(workers: :number_of_processors) unless ENV['COVERAGE']"
103
93
  end
104
94
 
105
- say "=> Copying git configuration"
106
- directory "lib/install/.github", ".github"
107
- copy_file "lib/install/.gitattributes", ".gitattributes"
95
+ say '=> Copying git configuration'
96
+ directory 'lib/install/.github', '.github'
97
+ if Gem::Version.new(Rails.version) >= Gem::Version.new('6.1.0')
98
+ gitattributes = <<~GITATTRIBUTES
99
+ *.gemspec diff=ruby
100
+ *.rake diff=ruby
101
+ *.rb diff=ruby
102
+ *.js diff=javascript
103
+
104
+ db/schema.rb merge=ours diff=ruby
105
+ yarn.lock merge=ours
106
+ Gemfile.lock merge=ours linguist-generated
107
+ GITATTRIBUTES
108
+ insert_into_file '.gitattributes', gitattributes
109
+ else
110
+ copy_file 'lib/install/.gitattributes', '.gitattributes'
111
+ end
108
112
 
109
- say "=> Copying heroku configuration"
110
- copy_file "lib/install/app.json", "app.json"
111
- copy_file "lib/install/Procfile", "Procfile"
113
+ say '=> Copying heroku configuration'
114
+ copy_file 'lib/install/app.json', 'app.json'
115
+ copy_file 'lib/install/Procfile', 'Procfile'
112
116
 
113
- say "=> Install Brew dependencies"
114
- copy_file "lib/install/Brewfile", "Brewfile"
117
+ say '=> Install Brew dependencies'
118
+ copy_file 'lib/install/Brewfile', 'Brewfile'
115
119
 
116
- say "Setup git hooks"
117
- directory "lib/install/bin/git-hooks", "bin/git-hooks"
120
+ say 'Setup git hooks'
121
+ directory 'lib/install/bin/git-hooks', 'bin/git-hooks'
118
122
 
119
- require "bundler"
123
+ require 'bundler'
120
124
  Bundler.with_original_env do
121
- say "=> Install tools"
122
- run "bin/tools-setup"
123
-
124
- say "=> Generate binstubs for linters"
125
- run "BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force pronto"
126
- run "BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force rubocop"
127
- run "BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force standard"
125
+ say '=> Install tools'
126
+ run 'bin/tools-setup'
127
+ run 'BUNDLE_GEMFILE=Gemfile.tools bundle lock --add-platform x86_64-linux'
128
+
129
+ say '=> Generate binstubs for linters'
130
+ run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force pronto'
131
+ run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force rubocop'
132
+ run 'BUNDLE_GEMFILE=Gemfile.tools bundle binstub --force standard'
128
133
  end
129
134
 
130
- say "=> Set git hooks"
131
- run "git config core.hooksPath ./bin/git-hooks"
132
- say "=> Install all new dependencies"
135
+ say '=> Set git hooks'
136
+ run 'git config core.hooksPath ./bin/git-hooks'
137
+ say '=> Install all new dependencies'
133
138
 
134
139
  run <<~BREW_INSTALL
135
140
  hash brew 2> /dev/null \
@@ -137,29 +142,32 @@ def add_template_repository_to_source_path
137
142
  || echo "Please install Homebrew: https://brew.sh/"
138
143
  BREW_INSTALL
139
144
 
140
- say "=> Update development config"
141
- uncomment_lines "config/environments/development.rb", /config\.file_watcher = ActiveSupport::EventedFileUpdateChecker/
145
+ say '=> Update development config'
146
+ uncomment_lines(
147
+ 'config/environments/development.rb',
148
+ /config\.file_watcher = ActiveSupport::EventedFileUpdateChecker/
149
+ )
142
150
 
143
- say "=> Set up R7Insight"
151
+ say '=> Set up R7Insight'
144
152
  r7insight_config = <<-CODE
145
153
  if ENV['R7INSIGHT_TOKEN'].present?
146
154
  Rails.logger = R7Insight.new(ENV['R7INSIGHT_TOKEN'], ENV['R7INSIGHT_REGION'])
147
155
  end
148
156
  CODE
149
- insert_into_file "config/environments/production.rb",
157
+ insert_into_file 'config/environments/production.rb',
150
158
  "require 'r7_insight.rb'" + "\n\n",
151
- before: "Rails.application.configure do"
152
- environment(r7insight_config, env: "production")
153
- if File.exist?("config/environments/staging.rb")
154
- insert_into_file "config/environments/staging.rb",
159
+ before: 'Rails.application.configure do'
160
+ environment(r7insight_config, env: 'production')
161
+ if File.exist?('config/environments/staging.rb')
162
+ insert_into_file 'config/environments/staging.rb',
155
163
  "require 'r7_insight.rb'" + "\n\n",
156
- before: "Rails.application.configure do"
157
- environment(r7insight_config, env: "staging")
164
+ before: 'Rails.application.configure do'
165
+ environment(r7insight_config, env: 'staging')
158
166
  end
159
167
 
160
- gem "connection_pool"
168
+ gem 'connection_pool'
161
169
 
162
- say "=> Set up Memcachier"
170
+ say '=> Set up Memcachier'
163
171
  memcachier_config = <<-CODE
164
172
  if ENV["MEMCACHIER_SERVERS"]
165
173
  config.cache_store = :mem_cache_store,
@@ -171,40 +179,42 @@ def add_template_repository_to_source_path
171
179
  end
172
180
 
173
181
  CODE
174
- environment(memcachier_config, env: "production")
175
- if File.exist?("config/environments/staging.rb")
176
- environment(memcachier_config, env: "staging")
182
+ environment(memcachier_config, env: 'production')
183
+ if File.exist?('config/environments/staging.rb')
184
+ environment(memcachier_config, env: 'staging')
177
185
  end
178
186
 
179
187
  Bundler.with_original_env do
180
- say "=> Setup default bundle config"
181
- run "bundle config jobs 4"
182
- run "bundle config retry 3"
188
+ say '=> Setup default bundle config'
189
+ run 'bundle config jobs 4'
190
+ run 'bundle config retry 3'
191
+
192
+ run 'bundle'
183
193
 
184
- run "bundle"
194
+ run 'bundle lock --add-platform x86_64-linux'
185
195
  end
186
196
 
187
- uncomment_lines "bin/setup", /system\(.*?\\byarn\b/
197
+ uncomment_lines 'bin/setup', /system\(.*?\\byarn\b/
188
198
 
189
199
  insert_into_file(
190
- "bin/setup",
191
- "system!('bin/tools-setup')\n",
192
- after: "system!('bin/yarn')\n"
200
+ 'bin/setup',
201
+ "system! 'bin/tools-setup'\n",
202
+ after: "system! 'gem install bundler --conservative'\n"
193
203
  )
194
204
 
195
- say "**************************************************************************"
196
- say "**************************************************************************"
197
- say ""
198
- say "1. Recommended Heroku Addons: Mailtrap, Rollbar, Cloudinary"
199
- say ""
200
- say "2. Setup Git Hooks to auto-check code and cleanup staled branches:"
201
- say "$ `git config core.hooksPath bin/git-hooks`"
202
- say ""
203
- say "3. Please, set CODECOV_TOKEN, GITHUB_TOKEN and PRONTO_GITHUB_ACCESS_TOKEN"
204
- say "environment variables in CircleCI and your local env"
205
- say ""
206
- say " For code coverage report aggregator, running code static analysis"
207
- say "and auto-update of the tools."
208
- say ""
209
- say "**************************************************************************"
210
- say "**************************************************************************"
205
+ say '**************************************************************************'
206
+ say '**************************************************************************'
207
+ say ''
208
+ say '1. Recommended Heroku Addons: Mailtrap, Rollbar, Cloudinary'
209
+ say ''
210
+ say '2. Setup Git Hooks to auto-check code and cleanup staled branches:'
211
+ say '$ `git config core.hooksPath bin/git-hooks`'
212
+ say ''
213
+ say '3. Please, set CODECOV_TOKEN, GITHUB_TOKEN and PRONTO_GITHUB_ACCESS_TOKEN'
214
+ say 'environment variables in CircleCI and your local env'
215
+ say ''
216
+ say ' For code coverage report aggregator, running code static analysis'
217
+ say 'and auto-update of the tools.'
218
+ say ''
219
+ say '**************************************************************************'
220
+ say '**************************************************************************'