ci-helper 0.2.2 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 770629db9e962c008f6abed96b6385e4678857c5da98782086978d09785691b9
4
- data.tar.gz: e3cc5ce56806745706527a916cf5cc6c0488111cf1eba4b5edc781da930a38cc
3
+ metadata.gz: fe12d4e12b312f65bd43218e3443d40c4ab27ce41aeb386bccebf4b9779d292e
4
+ data.tar.gz: ec3b1f6d22c637c72dd1600672cd1bb8b960e33727ebf3f16c97e6e10ce25e27
5
5
  SHA512:
6
- metadata.gz: d2e061a61d6fbc3944501ccb1a62aac9a37935d570d05ddf65aa964e33d3b035f5267da5affe5f7ac1a0f976e5f3427f2bec55d976ec961a2d180a25a00d256c
7
- data.tar.gz: f88a6d6bcda60a37ee75385f9baf4eb254eae2c2e0facdc61b02d95ee2846866582e5deb042e367ae4e92496ef676e89e4158e54f995aa4303ddf0f395e3a2d7
6
+ metadata.gz: d0fd1d742b556b1c6c3eac720d0709fb484780c2ac5dfa80f749bd4c4d8a338e6def6082550298c5c768df3fe6a25e65d0bc0333e9a7c2840b8273a30b544328
7
+ data.tar.gz: c50a69c1bf32a6ebec2299464063d656bd34af81eaf516935d20b9b55953851f293d5ac7bdaa82372fc79ad91f140ef4a65bda3191506d8a62cee5b7a6851f78
@@ -13,6 +13,9 @@ on:
13
13
  pull_request:
14
14
  branches: [ master ]
15
15
 
16
+ env:
17
+ FULL_COVERAGE_CHECK: true
18
+
16
19
  jobs:
17
20
  test-latest:
18
21
 
data/.gitignore CHANGED
@@ -6,3 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+
10
+ Gemfile.lock
@@ -10,3 +10,7 @@ Naming/MethodParameterName:
10
10
 
11
11
  RSpec/EmptyLineAfterHook:
12
12
  Enabled: false
13
+
14
+ Naming/FileName:
15
+ Exclude:
16
+ - lib/ci-helper.rb
data/README.md CHANGED
@@ -42,8 +42,9 @@ List of available commands:
42
42
  * **CheckDBDevelopment** — executes rails db commands (`db:drop`, `db:create`, `db:migrate`)
43
43
  and seeds database. Does not accept flags.
44
44
  * **CheckDBRollback** — executes rails db commands with additional command
45
- `db:rollback_new_migrations`, which rollbacks migrations,
46
- added in tested branch. Does not accept flags.
45
+ `db:rollback_new_migrations`, which rollbacks migrations, added in tested branch.
46
+ Does not accept flags. Gem provides this rake task, but only for `Sequel`.
47
+ If you want to use `ActiveRecord::Migrator`, you'll have to write rake task by your own.
47
48
  * **RubocopLint** — executes rubocop linter. Does not accept flags.
48
49
  * **RunSpecs** — executes `rspec` in project root.
49
50
  Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`.
@@ -62,6 +63,13 @@ Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`
62
63
  * `--ignored-paths [values]` - accepts path patterns that should be ignored,
63
64
  delimited by coma.
64
65
 
66
+ ### Rake Tasks
67
+
68
+ As you can see, some commands use generic rake tasks. To make tasks available in your application,
69
+ you need to require the file `ci_helper/railtie`. Also, you can require it directly in `Gemfile`:
70
+ `gem "ci-helper", require: "ci_helper/railtie, group: :test`.
71
+ Or if you haven't set `require` option to `false`, rake tasks loads automatically.
72
+
65
73
  ### Script
66
74
 
67
75
  Also, you can write your own script, which can executes this commands by calling classes:
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./ci_helper"
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ module CIHelper
4
+ end
5
+
3
6
  require "colorized_string"
4
7
  require "delegate"
5
8
  require "dry/inflector"
@@ -14,5 +17,4 @@ require "ci_helper/tools/colorize"
14
17
  require "ci_helper/tools/inflector"
15
18
  require "ci_helper/version"
16
19
 
17
- module CIHelper
18
- end
20
+ require "ci_helper/railtie" if defined?(Rails)
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CIHelper
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load "tasks/sequel_management.rake"
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CIHelper
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.5"
5
5
  end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "logger"
4
+
5
+ class SequelManagement
6
+ include Rake::DSL
7
+
8
+ MIGRATIONS_PATH = "db/migrate"
9
+
10
+ def initialize
11
+ self.logger = Logger.new(STDOUT)
12
+
13
+ define_db_task!
14
+ end
15
+
16
+ private
17
+
18
+ attr_accessor :logger
19
+
20
+ def migrations_path
21
+ self.class::MIGRATIONS_PATH
22
+ end
23
+
24
+ def define_db_task!
25
+ namespace :db do
26
+ desc "Rollback all migrations, which doesn't exist in master branch"
27
+ task rollback_new_migrations: :environment do
28
+ abort "Shouldn't run in production mode!" if Rails.env.production?
29
+
30
+ logger.info "Begin rolling back new migrations"
31
+
32
+ original_migrations = `#{git_command}`.split.map { |path| File.basename(path) }
33
+ migrations_to_rollback = (migrator.applied_migrations - original_migrations).sort.reverse
34
+
35
+ next if migrations_to_rollback.empty?
36
+
37
+ logger.info "Rolling back migrations:"
38
+ logger.info migrations_to_rollback.join("\n")
39
+
40
+ rollback!(migrations_to_rollback)
41
+ end
42
+ end
43
+ end
44
+
45
+ def git_command
46
+ "git ls-tree --name-only origin/master #{migrations_path}/"
47
+ end
48
+
49
+ def migrator
50
+ @migrator ||= begin
51
+ full_path = Rails.root.join(migrations_path)
52
+ Sequel::TimestampMigrator.new(DB, full_path, allow_missing_migration_files: true)
53
+ end
54
+ end
55
+
56
+ def rollback!(migrations)
57
+ migrations.each do |migration|
58
+ migrator.undo(migration.to_i)
59
+ rescue Sequel::Migrator::Error => error
60
+ if error.message.include?("does not exist in the filesystem")
61
+ logger.info error.message
62
+ else
63
+ raise error
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ SequelManagement.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - JustAnotherDude
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-24 00:00:00.000000000 Z
11
+ date: 2020-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -164,7 +164,6 @@ files:
164
164
  - ".rspec"
165
165
  - ".rubocop.yml"
166
166
  - Gemfile
167
- - Gemfile.lock
168
167
  - LICENSE.txt
169
168
  - README.md
170
169
  - Rakefile
@@ -172,6 +171,7 @@ files:
172
171
  - bin/setup
173
172
  - ci_helper.gemspec
174
173
  - exe/ci-helper
174
+ - lib/ci-helper.rb
175
175
  - lib/ci_helper.rb
176
176
  - lib/ci_helper/cli.rb
177
177
  - lib/ci_helper/commands.rb
@@ -181,9 +181,11 @@ files:
181
181
  - lib/ci_helper/commands/check_spec_suffixes.rb
182
182
  - lib/ci_helper/commands/rubocop_lint.rb
183
183
  - lib/ci_helper/commands/run_specs.rb
184
+ - lib/ci_helper/railtie.rb
184
185
  - lib/ci_helper/tools/colorize.rb
185
186
  - lib/ci_helper/tools/inflector.rb
186
187
  - lib/ci_helper/version.rb
188
+ - lib/tasks/sequel_management.rake
187
189
  homepage: https://github.com/umbrellio/ci_helper
188
190
  licenses:
189
191
  - MIT
@@ -1,104 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ci-helper (0.2.2)
5
- colorize (~> 0.8)
6
- dry-inflector (~> 0.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- activesupport (6.0.3.1)
12
- concurrent-ruby (~> 1.0, >= 1.0.2)
13
- i18n (>= 0.7, < 2)
14
- minitest (~> 5.1)
15
- tzinfo (~> 1.1)
16
- zeitwerk (~> 2.2, >= 2.2.2)
17
- ast (2.4.1)
18
- bundler-audit (0.7.0.1)
19
- bundler (>= 1.2.0, < 3)
20
- thor (>= 0.18, < 2)
21
- coderay (1.1.3)
22
- colorize (0.8.1)
23
- concurrent-ruby (1.1.6)
24
- diff-lcs (1.3)
25
- docile (1.3.2)
26
- dry-inflector (0.2.0)
27
- i18n (1.8.3)
28
- concurrent-ruby (~> 1.0)
29
- jaro_winkler (1.5.4)
30
- method_source (1.0.0)
31
- minitest (5.14.1)
32
- parallel (1.19.2)
33
- parser (2.7.1.3)
34
- ast (~> 2.4.0)
35
- pry (0.13.1)
36
- coderay (~> 1.1)
37
- method_source (~> 1.0)
38
- rack (2.2.3)
39
- rainbow (3.0.0)
40
- rake (13.0.1)
41
- rexml (3.2.4)
42
- rspec (3.9.0)
43
- rspec-core (~> 3.9.0)
44
- rspec-expectations (~> 3.9.0)
45
- rspec-mocks (~> 3.9.0)
46
- rspec-core (3.9.2)
47
- rspec-support (~> 3.9.3)
48
- rspec-expectations (3.9.2)
49
- diff-lcs (>= 1.2.0, < 2.0)
50
- rspec-support (~> 3.9.0)
51
- rspec-mocks (3.9.1)
52
- diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.9.0)
54
- rspec-support (3.9.3)
55
- rubocop (0.81.0)
56
- jaro_winkler (~> 1.5.1)
57
- parallel (~> 1.10)
58
- parser (>= 2.7.0.1)
59
- rainbow (>= 2.2.2, < 4.0)
60
- rexml
61
- ruby-progressbar (~> 1.7)
62
- unicode-display_width (>= 1.4.0, < 2.0)
63
- rubocop-config-umbrellio (0.81.0.78)
64
- rubocop (= 0.81.0)
65
- rubocop-performance (= 1.5.2)
66
- rubocop-rails (= 2.5.0)
67
- rubocop-rspec (= 1.38.1)
68
- rubocop-performance (1.5.2)
69
- rubocop (>= 0.71.0)
70
- rubocop-rails (2.5.0)
71
- activesupport
72
- rack (>= 1.1)
73
- rubocop (>= 0.72.0)
74
- rubocop-rspec (1.38.1)
75
- rubocop (>= 0.68.1)
76
- ruby-progressbar (1.10.1)
77
- simplecov (0.18.5)
78
- docile (~> 1.1)
79
- simplecov-html (~> 0.11)
80
- simplecov-html (0.12.2)
81
- simplecov-lcov (0.8.0)
82
- thor (1.0.1)
83
- thread_safe (0.3.6)
84
- tzinfo (1.2.7)
85
- thread_safe (~> 0.1)
86
- unicode-display_width (1.7.0)
87
- zeitwerk (2.3.0)
88
-
89
- PLATFORMS
90
- ruby
91
-
92
- DEPENDENCIES
93
- bundler
94
- bundler-audit
95
- ci-helper!
96
- pry
97
- rake
98
- rspec
99
- rubocop-config-umbrellio
100
- simplecov
101
- simplecov-lcov
102
-
103
- BUNDLED WITH
104
- 2.1.4