ci-helper 0.1.1 → 0.2.0

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: be5f0daccd23cb1ced8508dd4dd4048925d62fa6074e0fece72838f081c5e255
4
- data.tar.gz: eb5c8470d8b1123d41d7a4125c78dd1635fdb1dd8044afa0abc7b0da1c1fa8d6
3
+ metadata.gz: 16a693137d6056e1974c2a2d23200ef231fa4f47daf5089e7d864b4d5a000c8f
4
+ data.tar.gz: bb295befcb67ffadbc7bee5aa27fd741aae1ceb086074eeefa31e954fc3a4b2a
5
5
  SHA512:
6
- metadata.gz: '0209abc7579fb06c9e86e70bf4a76312a0cc78130c416660395aec20b7ceaecd1ae2b78aa47518c57dd38f1344146b65baaeaeb29427259195a514e4e1365a4b'
7
- data.tar.gz: 48522ba56eb1ce4d907a2d52b21fb71d340c84f2b64ffb9b3923810a758d18b5c01fb5d782f09cefde340e8d0e9e67038704dcff0e5a55eca7ce39d8d5fa3853
6
+ metadata.gz: 3b45bbdc2a858c9ed54f5f239cf901907fec77daf441c5df537cf2b733e9ce5ba4292c9b527ff67cb761e54163fc9dd0481413f112ea1742d285f9f2de5a3dad
7
+ data.tar.gz: 4bc6630a050a3c37143cedcf22ca7c6328fc3603cca3d6f9a4d04b59d5c402c0648ccc72de7fa2a4d414d7aa0c93de612233c99a0b4424f516fc7a091388fd7c
@@ -33,6 +33,8 @@ jobs:
33
33
  run: bundle exec rake install
34
34
  - name: Run Linter
35
35
  run: ci-helper RubocopLint
36
+ - name: Check missed spec suffixes
37
+ run: ci-helper CheckSpecSuffixes --extra-paths spec/*.rb --ignored-paths spec/*_helper.rb
36
38
  - name: Run specs
37
39
  run: ci-helper RunSpecs
38
40
  - name: Audit
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci-helper (0.1.1)
4
+ ci-helper (0.2.0)
5
5
  colorize (~> 0.8)
6
6
  dry-inflector (~> 0.2)
7
7
 
@@ -15,9 +15,9 @@ GEM
15
15
  tzinfo (~> 1.1)
16
16
  zeitwerk (~> 2.2, >= 2.2.2)
17
17
  ast (2.4.1)
18
- bundler-audit (0.6.1)
18
+ bundler-audit (0.7.0.1)
19
19
  bundler (>= 1.2.0, < 3)
20
- thor (~> 0.18)
20
+ thor (>= 0.18, < 2)
21
21
  coderay (1.1.3)
22
22
  colorize (0.8.1)
23
23
  concurrent-ruby (1.1.6)
@@ -29,13 +29,13 @@ GEM
29
29
  jaro_winkler (1.5.4)
30
30
  method_source (1.0.0)
31
31
  minitest (5.14.1)
32
- parallel (1.19.1)
32
+ parallel (1.19.2)
33
33
  parser (2.7.1.3)
34
34
  ast (~> 2.4.0)
35
35
  pry (0.13.1)
36
36
  coderay (~> 1.1)
37
37
  method_source (~> 1.0)
38
- rack (2.2.2)
38
+ rack (2.2.3)
39
39
  rainbow (3.0.0)
40
40
  rake (13.0.1)
41
41
  rexml (3.2.4)
@@ -79,7 +79,7 @@ GEM
79
79
  simplecov-html (~> 0.11)
80
80
  simplecov-html (0.12.2)
81
81
  simplecov-lcov (0.8.0)
82
- thor (0.20.3)
82
+ thor (1.0.1)
83
83
  thread_safe (0.3.6)
84
84
  tzinfo (1.2.7)
85
85
  thread_safe (~> 0.1)
data/README.md CHANGED
@@ -1,26 +1,114 @@
1
- # CIHelper [![Actions Status](https://github.com/umbrellio/ci_helper/workflows/Ruby/badge.svg)](https://github.com/umbrellio/ci_helper/actions) [![Coverage Status](https://coveralls.io/repos/github/umbrellio/ci_helper/badge.svg?branch=master)](https://coveralls.io/github/umbrellio/ci_helper?branch=master)
2
-
3
- Documentation about gem here.
1
+ # CIHelper [![Actions Status](https://github.com/umbrellio/ci_helper/workflows/Ruby/badge.svg)](https://github.com/umbrellio/ci_helper/actions) [![Coverage Status](https://coveralls.io/repos/github/umbrellio/ci_helper/badge.svg?branch=master)](https://coveralls.io/github/umbrellio/ci_helper?branch=master) [![Gem Version](https://badge.fury.io/rb/ci-helper.svg)](https://badge.fury.io/rb/ci-helper)
4
2
 
5
3
  ## Installation
6
4
 
7
5
  Add this line to your application's Gemfile:
8
6
 
9
7
  ```ruby
10
- gem 'ci_helper'
8
+ gem "ci-helper", require: false
11
9
  ```
12
10
 
13
11
  And then execute:
12
+ ```bash
13
+ $ bundle install
14
+ ```
15
+ Or install it yourself as:
16
+ ```bash
17
+ $ gem install ci_helper
18
+ ```
14
19
 
15
- $ bundle install
20
+ ## Usage
16
21
 
17
- Or install it yourself as:
22
+ ### Command Line
18
23
 
19
- $ gem install ci_helper
24
+ You can use this gem as command line utility. For example, to lint project by rubocop,
25
+ execute the following command in the project root:
26
+ ```bash
27
+ $ ci-helper RubocopLint # Here's RubocopLint is a command
28
+ ```
20
29
 
21
- ## Usage
30
+ A command can accept list of options (parameters). Option values are passed through flags.
31
+ For example, the BundlerAudit command accepts the ignored_advisories option
32
+ You can set a value of this option by setting the flag `--ignored-advisories ignored-advisory`.
33
+ It should be noted that all hyphens in flag names are automatically replaced with underscores.
34
+ ```bash
35
+ $ ci-helper BundlerAudit --ignored-advisories first,second
36
+ ```
37
+
38
+ List of available commands:
39
+
40
+ * **BundlerAudit** — executes `bundler-audit`. Accepted flags: `--ignored-advisories`.
41
+ * `--ignored-advisories [values]` — accepts advisory codes, delimited by comma.
42
+ * **CheckDBDevelopment** — executes rails db commands (`db:drop`, `db:create`, `db:migrate`)
43
+ and seeds database. Does not accept flags.
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.
47
+ * **RubocopLint** — executes rubocop linter. Does not accept flags.
48
+ * **RunSpecs** — executes `rspec` in project root.
49
+ Accepted flags: `--node-index`, `node-total`, `with-database`, `split-resultset`.
50
+ * `--node-index` — if you run specs in parallel in CI, then you might use this flag.
51
+ * `--node-total` — if you run specs in parallel in CI, then you might use this flag.
52
+ * `--with-database` — if you want to prepare database before executing specs,
53
+ you should set this flag to `true`.
54
+ * `--split-resultset` — if you run specs in parallel in CI,
55
+ then you might use this flag to `true`. If this flag set to true,
56
+ final `.resultset.json` will be renamed to `.resultset.#{node_index}.json`
57
+ * **CheckSpecSuffixes** — checks specs in the spec subdirectories for `_spec` suffix,
58
+ by default ignores directories `support`, `factories` and files with `context` suffix.
59
+ Accepted flags: `--extra_paths`, `--ignored_paths`.
60
+ * `--extra-paths [values]` - accepts additional path patterns that should be scanned,
61
+ delimited by coma.
62
+ * `--ignored-paths [values]` - accepts path patterns that should be ignored,
63
+ delimited by coma.
64
+
65
+ ### Script
66
+
67
+ Also, you can write your own script, which can executes this commands by calling classes:
68
+ `CIHelper::Commands::#{command_name}`. For example,
69
+ if you want to execute `RunSpecs` command in your script, you can write following lines:
70
+ ```ruby
71
+ begin
72
+ CIHelper::Commands::RunSpecs.call!(with_database: "true") # returned value is exit code.
73
+ rescue CIHelper::Commands::Error => e # Command raise error with this class if something went wrong.
74
+ abort e.message
75
+ end
76
+ ```
22
77
 
23
- TODO: Write usage instructions here
78
+ ## Adding your own commands
79
+
80
+ You can write plugins (gems) that add new commands.
81
+ You just need create gem with following structure:
82
+ ```
83
+ - lib
84
+ - ci_helper
85
+ - commands
86
+ - cool_command.rb
87
+ ```
88
+
89
+ Where your `CoolCoomand` class may look something like this:
90
+ ```ruby
91
+ module CIHelper
92
+ module Commands
93
+ class CoolCommand < BaseCommand
94
+ def call
95
+ execute("ls #{options[:cool_options]}")
96
+ end
97
+ end
98
+ end
99
+ end
100
+ ```
101
+
102
+ Then you add your gem to a Gemfile:
103
+ ```ruby
104
+ gem "ci-helper", require: false
105
+ gem "ci-helper-plugin-gem", require: false
106
+ ```
107
+
108
+ And now, you can use your custom command with command line tool:
109
+ ```bash
110
+ $ ci-helper CoolCommand --cool-options option_value
111
+ ```
24
112
 
25
113
  ## Contributing
26
114
 
@@ -30,3 +118,11 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/umbrel
30
118
  ## License
31
119
 
32
120
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
121
+
122
+ ## Authors
123
+
124
+ Created by Ivan Chernov.
125
+
126
+ <a href="https://github.com/umbrellio/">
127
+ <img style="float: left;" src="https://umbrellio.github.io/Umbrellio/supported_by_umbrellio.svg" alt="Supported by Umbrellio" width="439" height="72">
128
+ </a>
@@ -54,6 +54,11 @@ module CIHelper
54
54
  raise Error, message
55
55
  end
56
56
 
57
+ def plural_option(key)
58
+ return [] unless options.key?(key)
59
+ options[key].split(",")
60
+ end
61
+
57
62
  def path
58
63
  @path ||= Pathname.pwd
59
64
  end
@@ -11,14 +11,14 @@ module CIHelper
11
11
 
12
12
  def audit_cmd
13
13
  (+"bundle exec bundler-audit check --update").tap do |audit_cmd|
14
- if ignored_advisories&.any?
14
+ if ignored_advisories.any?
15
15
  audit_cmd << " --ignore #{ignored_advisories.join(" ")}"
16
16
  end
17
17
  end
18
18
  end
19
19
 
20
20
  def ignored_advisories
21
- @ignored_advisories ||= options[:ignored_advisories]&.split(",")
21
+ @ignored_advisories ||= plural_option(:ignored_advisories)
22
22
  end
23
23
  end
24
24
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CIHelper
4
+ module Commands
5
+ class CheckSpecSuffixes < BaseCommand
6
+ def call
7
+ paths = target_paths.reject { |path| path.end_with?("_spec.rb") }
8
+ fail!("Detected specs without _spec suffix: #{paths.join(" ")}") if paths.any?
9
+ 0
10
+ end
11
+
12
+ private
13
+
14
+ def target_paths
15
+ spec_paths + extra_paths - ignored_paths
16
+ end
17
+
18
+ def spec_paths
19
+ base_paths.select do |path|
20
+ next if path.start_with?("spec/support")
21
+ next if path.start_with?("spec/factories")
22
+ next if path.end_with?("context.rb")
23
+ true
24
+ end
25
+ end
26
+
27
+ def base_paths
28
+ Dir["spec/*/**/*.rb"]
29
+ end
30
+
31
+ def extra_paths
32
+ @extra_paths ||= plural_option(:extra_paths).flat_map { |path| Dir[path] }
33
+ end
34
+
35
+ def ignored_paths
36
+ @ignored_paths ||= plural_option(:ignored_paths).flat_map { |path| Dir[path] }
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CIHelper
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
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.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JustAnotherDude
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-10 00:00:00.000000000 Z
11
+ date: 2020-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -178,6 +178,7 @@ files:
178
178
  - lib/ci_helper/commands/bundler_audit.rb
179
179
  - lib/ci_helper/commands/check_db_development.rb
180
180
  - lib/ci_helper/commands/check_db_rollback.rb
181
+ - lib/ci_helper/commands/check_spec_suffixes.rb
181
182
  - lib/ci_helper/commands/rubocop_lint.rb
182
183
  - lib/ci_helper/commands/run_specs.rb
183
184
  - lib/ci_helper/tools/colorize.rb