lolcommits 0.17.2 → 0.17.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{build.yml → ci.yml} +29 -24
  3. data/.gitignore +2 -0
  4. data/.quickhook/pre-commit/ruby-lint +3 -0
  5. data/.rubocop.yml +309 -9
  6. data/CHANGELOG.md +45 -234
  7. data/CODE_OF_CONDUCT.md +10 -12
  8. data/Gemfile +4 -2
  9. data/README.md +14 -26
  10. data/Rakefile +11 -48
  11. data/bin/cucumber +25 -0
  12. data/bin/lolcommits +2 -12
  13. data/bin/rubocop +25 -0
  14. data/features/step_definitions/lolcommits_steps.rb +0 -2
  15. data/features/support/env.rb +1 -3
  16. data/features/support/path_helpers.rb +2 -4
  17. data/lib/core_ext/mercurial-ruby/changed_file.rb +1 -3
  18. data/lib/core_ext/mercurial-ruby/command.rb +2 -4
  19. data/lib/core_ext/mercurial-ruby/config_file.rb +0 -2
  20. data/lib/core_ext/mercurial-ruby/repository.rb +0 -2
  21. data/lib/core_ext/mercurial-ruby/shell.rb +1 -3
  22. data/lib/lolcommits/animated_gif.rb +12 -7
  23. data/lib/lolcommits/backends/git_info.rb +6 -8
  24. data/lib/lolcommits/backends/installation_git.rb +8 -10
  25. data/lib/lolcommits/backends/installation_mercurial.rb +8 -10
  26. data/lib/lolcommits/backends/mercurial_info.rb +9 -11
  27. data/lib/lolcommits/capturer/capture_cygwin.rb +0 -2
  28. data/lib/lolcommits/capturer/capture_fake.rb +2 -4
  29. data/lib/lolcommits/capturer/capture_linux.rb +4 -6
  30. data/lib/lolcommits/capturer/capture_linux_video.rb +1 -3
  31. data/lib/lolcommits/capturer/capture_mac.rb +2 -4
  32. data/lib/lolcommits/capturer/capture_mac_video.rb +1 -3
  33. data/lib/lolcommits/capturer/capture_windows.rb +2 -4
  34. data/lib/lolcommits/capturer/capture_windows_video.rb +5 -7
  35. data/lib/lolcommits/capturer.rb +9 -12
  36. data/lib/lolcommits/cli/fatals.rb +11 -16
  37. data/lib/lolcommits/cli/launcher.rb +1 -3
  38. data/lib/lolcommits/cli/process_runner.rb +2 -4
  39. data/lib/lolcommits/cli/timelapse_gif.rb +7 -9
  40. data/lib/lolcommits/cli.rb +6 -6
  41. data/lib/lolcommits/configuration.rb +32 -36
  42. data/lib/lolcommits/gem_plugin.rb +5 -7
  43. data/lib/lolcommits/installation.rb +5 -7
  44. data/lib/lolcommits/platform.rb +14 -18
  45. data/lib/lolcommits/plugin/base.rb +4 -8
  46. data/lib/lolcommits/plugin/configuration_helper.rb +4 -6
  47. data/lib/lolcommits/plugin_manager.rb +1 -3
  48. data/lib/lolcommits/runner.rb +16 -21
  49. data/lib/lolcommits/test_helpers/fake_io.rb +0 -2
  50. data/lib/lolcommits/test_helpers/git_repo.rb +3 -5
  51. data/lib/lolcommits/vcs_info.rb +2 -4
  52. data/lib/lolcommits/version.rb +1 -3
  53. data/lib/lolcommits.rb +26 -30
  54. data/lolcommits.gemspec +23 -24
  55. data/test/permissions_test.rb +7 -9
  56. data/test/test_helper.rb +2 -4
  57. metadata +62 -53
  58. data/.gitattributes +0 -1
  59. data/.github/workflows/push_gem.yml +0 -25
  60. data/.rubocop_todo.yml +0 -97
  61. data/.travis.yml +0 -45
  62. data/bin/console +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '088cc7f1206089c7bd38c2fcddfb70b66564cf7ad9aec31d431515107ab8443f'
4
- data.tar.gz: fa276c54847eef35ad780762328f15748509bb741b04c5d96b6ebd2b2bea4e1c
3
+ metadata.gz: 8d8e9cff0aadf2b23edaba08d06365120f9df98f30b8fab33e045c77366e5f6b
4
+ data.tar.gz: a89d150bc79d4f06a9d4a1b0f56bae48d82f4f743546dba98058d56950709899
5
5
  SHA512:
6
- metadata.gz: f5e2796f8a1493519602e6027f39e6b6aa644a1dece4e5141de16a6a2d1bd81c677ba2079a4ccf335da0d60b37fa7a79e040cc6887f0c3bde46ce38df9fab7b4
7
- data.tar.gz: a17dcd832fcb303dac024e6d5b4a18782c3d58e073a9ae064c69785d2fd428c2b87756d865bcfd2d38fe0d69e2ad32aba62eb23026c0d13ec430c39461a26d23
6
+ metadata.gz: 80656983ff03c1ad1bfbdb624dd2393b403e2fdc3bfc7ac2d0898eebc377433cf98b64a3d3a97b08d0197662e00942419a07fbb5d5ce53f154db58ba59c16af3
7
+ data.tar.gz: cbd743c08d7cbb9d34b2bcaeb1e787ea274c41d64efd7f670333861e69363b7ac0bc810e0a6bba4f8cfdf80ed9dbfd9edd069a4730e9d33f5508405e73bf5635
@@ -1,46 +1,51 @@
1
- name: Tests, features and style
1
+ name: CI
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ "main" ]
5
+ branches:
6
+ - main
6
7
  pull_request:
7
- branches: [ "main" ]
8
-
9
- permissions:
10
- contents: read
11
-
8
+ branches:
9
+ - main
12
10
  jobs:
13
- test:
11
+ rubocop:
12
+ name: RuboCop
14
13
  runs-on: ubuntu-latest
15
14
  steps:
16
15
  - uses: actions/checkout@v4
17
- - name: Set up Ruby
16
+ - name: Setup Ruby and install rubocop
18
17
  uses: ruby/setup-ruby@v1
19
18
  with:
20
- ruby-version: '3.4'
19
+ ruby-version: 3.4
21
20
  bundler-cache: true
22
- - name: Run tests
23
- run: bundle exec rake test
24
- rubocop:
21
+ - name: Run rubocop
22
+ run: bin/rubocop --parallel
23
+ tests:
24
+ name: Unit tests
25
25
  runs-on: ubuntu-latest
26
26
  steps:
27
27
  - uses: actions/checkout@v4
28
- - name: Set up Ruby
28
+ - name: Set up Ruby and install gems
29
29
  uses: ruby/setup-ruby@v1
30
30
  with:
31
- ruby-version: '3.4'
31
+ ruby-version: 3.4
32
32
  bundler-cache: true
33
- - name: Run rubocop
34
- run: bundle exec rake rubocop
33
+ - name: Run tests
34
+ run: bundle exec rake test
35
35
  features:
36
+ name: ${{ format('Features (Ruby {0})', matrix.ruby-version) }}
36
37
  runs-on: ubuntu-latest
37
38
  strategy:
38
39
  fail-fast: false
39
40
  matrix:
40
- ruby-version: ['3.1', '3.2', '3.3', '3.4']
41
+ ruby-version:
42
+ - "3.1"
43
+ - "3.2"
44
+ - "3.3"
45
+ - "3.4"
41
46
  steps:
42
47
  - uses: actions/checkout@v4
43
- - name: Set up Ruby
48
+ - name: Set up Ruby and install gems
44
49
  uses: ruby/setup-ruby@v1
45
50
  with:
46
51
  ruby-version: ${{ matrix.ruby-version }}
@@ -53,12 +58,12 @@ jobs:
53
58
  uses: FedericoCarboni/setup-ffmpeg@v3
54
59
  - name: Set up mplayer
55
60
  run: sudo apt-get install -y mplayer
56
- - name: Configure git user name, email
61
+ - name: Configure Git
57
62
  run: |
58
- git config user.name $NAME
59
- git config user.email $EMAIL
63
+ git config --global user.name $NAME
64
+ git config --global user.email $EMAIL
60
65
  env:
61
66
  NAME: "George Costanza"
62
67
  EMAIL: "george.costanza@vandelay.com"
63
- - name: Run cucumber features
64
- run: bundle exec rake features
68
+ - name: Run features
69
+ run: bin/cucumber --publish-quiet -f progress
data/.gitignore CHANGED
@@ -13,3 +13,5 @@ doc
13
13
  *.swo
14
14
  vendor/bundle
15
15
  .idea
16
+ checksums
17
+ mise.toml
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ set -e
3
+ grep -E "\.rb$|Rakefile|Gemfile" | xargs ./bin/rubocop --config .rubocop.yml --force-exclusion
data/.rubocop.yml CHANGED
@@ -1,20 +1,320 @@
1
+ require:
2
+ - rubocop-performance
3
+
1
4
  AllCops:
2
- SuggestExtensions: false
3
5
  NewCops: enable
4
6
  Exclude:
5
- - 'vendor/bundle/**/*'
6
- - 'vendor/bundle/**/.*'
7
- - '.bundle/**/*'
8
- - 'bin/lolcommits'
9
- - 'lolcommits.gemspec'
7
+ - 'vendor/**/*'
8
+ - 'tmp/**/*'
9
+ TargetRubyVersion: 3.1
10
+ SuggestExtensions: false
11
+
12
+ Naming/InclusiveLanguage:
13
+ Enabled: true
14
+ CheckStrings: true
15
+ FlaggedTerms:
16
+ ' a offense':
17
+ Suggestions:
18
+ - an offense
19
+ auto-correct:
20
+ Suggestions:
21
+ - autocorrect
22
+ auto_correct:
23
+ Suggestions:
24
+ - autocorrect
25
+ behaviour:
26
+ Suggestions:
27
+ - behavior
28
+ offence:
29
+ Suggestions:
30
+ - offense
31
+
32
+ Naming/PredicateName:
33
+ # Method define macros for dynamically generated method.
34
+ MethodDefinitionMacros:
35
+ - define_method
36
+ - define_singleton_method
37
+ - def_node_matcher
38
+ - def_node_search
39
+
40
+ Layout/HashAlignment:
41
+ EnforcedHashRocketStyle:
42
+ - key
43
+ - table
44
+ EnforcedColonStyle:
45
+ - key
46
+ - table
47
+
48
+ Layout/EndOfLine:
49
+ EnforcedStyle: lf
50
+
51
+ Layout/ClassStructure:
52
+ Enabled: true
53
+ Categories:
54
+ module_inclusion:
55
+ - include
56
+ - prepend
57
+ - extend
58
+ ExpectedOrder:
59
+ - module_inclusion
60
+ - constants
61
+ - public_class_methods
62
+ - initializer
63
+ - instance_methods
64
+ - protected_methods
65
+ - private_methods
66
+
67
+ Layout/RedundantLineBreak:
68
+ Enabled: true
69
+
70
+ Lint/UselessAccessModifier:
71
+ MethodCreatingMethods:
72
+ - 'def_matcher'
73
+ - 'def_node_matcher'
10
74
 
11
- Style/IfUnlessModifier:
75
+ Metrics/BlockLength:
76
+ Exclude:
77
+ - 'Rakefile'
78
+ - '**/*.rake'
79
+ - '*.gemspec'
80
+
81
+ Performance/DeletePrefix:
82
+ SafeMultiline: false
83
+
84
+ Performance/DeleteSuffix:
85
+ SafeMultiline: false
86
+
87
+ inherit_mode:
88
+ merge:
89
+ - Exclude
90
+
91
+ # All cops except your using extensions are disabled by default.
92
+ Bundler:
93
+ Enabled: false
94
+ Layout:
95
+ Enabled: false
96
+ Lint:
97
+ Enabled: false
98
+ Metrics:
99
+ Enabled: false
100
+ Naming:
101
+ Enabled: false
102
+ Performance:
103
+ Enabled: false
104
+ Exclude:
105
+ - "test/**/*"
106
+ Security:
107
+ Enabled: false
108
+ Style:
12
109
  Enabled: false
13
110
 
14
- Style/StringLiterals:
111
+ # Align `when` with `end`.
112
+ Layout/CaseIndentation:
113
+ Enabled: true
114
+ EnforcedStyle: end
115
+
116
+ # Align comments with method definitions.
117
+ Layout/CommentIndentation:
118
+ Enabled: true
119
+
120
+ Layout/ElseAlignment:
121
+ Enabled: true
122
+
123
+ Layout/EmptyLineAfterMagicComment:
124
+ Enabled: true
125
+
126
+ Layout/EmptyLinesAroundBlockBody:
127
+ Enabled: true
128
+
129
+ # In a regular class definition, no empty lines around the body.
130
+ Layout/EmptyLinesAroundClassBody:
131
+ Enabled: true
132
+
133
+ # In a regular method definition, no empty lines around the body.
134
+ Layout/EmptyLinesAroundMethodBody:
135
+ Enabled: true
136
+
137
+ # In a regular module definition, no empty lines around the body.
138
+ Layout/EmptyLinesAroundModuleBody:
139
+ Enabled: true
140
+
141
+ # Align `end` with the matching keyword or starting expression except for
142
+ # assignments, where it should be aligned with the LHS.
143
+ Layout/EndAlignment:
144
+ Enabled: true
145
+ EnforcedStyleAlignWith: variable
146
+
147
+ # Method definitions after `private` or `protected` isolated calls need one
148
+ # extra level of indentation.
149
+ #
150
+ # We break this rule in context, though, e.g. for private-only concerns,
151
+ # so we leave it disabled.
152
+ Layout/IndentationConsistency:
15
153
  Enabled: false
154
+ EnforcedStyle: indented_internal_methods
155
+
156
+ # Detect hard tabs, no hard tabs.
157
+ Layout/IndentationStyle:
158
+ Enabled: true
159
+
160
+ # Two spaces, no tabs (for indentation).
161
+ #
162
+ # Doesn't behave properly with private-only concerns, so it's disabled.
163
+ Layout/IndentationWidth:
164
+ Enabled: false
165
+
166
+ Layout/LeadingCommentSpace:
167
+ Enabled: true
16
168
 
169
+ Layout/SpaceAfterColon:
170
+ Enabled: true
171
+
172
+ Layout/SpaceAfterComma:
173
+ Enabled: true
174
+
175
+ Layout/SpaceAroundEqualsInParameterDefault:
176
+ Enabled: true
177
+
178
+ Layout/SpaceAroundKeyword:
179
+ Enabled: true
180
+
181
+ # Use `foo {}` not `foo{}`.
182
+ Layout/SpaceBeforeBlockBraces:
183
+ Enabled: true
184
+
185
+ Layout/SpaceBeforeComma:
186
+ Enabled: true
187
+
188
+ Layout/SpaceBeforeFirstArg:
189
+ Enabled: true
190
+
191
+ # Use `->(x, y) { x + y }` not `-> (x, y) { x + y }`
192
+ Layout/SpaceInLambdaLiteral:
193
+ Enabled: true
194
+
195
+ # Use `[ a, [ b, c ] ]` not `[a, [b, c]]`
196
+ # Use `[]` not `[ ]`
197
+ Layout/SpaceInsideArrayLiteralBrackets:
198
+ Enabled: true
199
+ EnforcedStyle: space
200
+ EnforcedStyleForEmptyBrackets: no_space
201
+
202
+ # Use `%w[ a b ]` not `%w[ a b ]`.
203
+ Layout/SpaceInsideArrayPercentLiteral:
204
+ Enabled: true
205
+
206
+ # Use `foo { bar }` not `foo {bar}`.
207
+ # Use `foo { }` not `foo {}`.
208
+ Layout/SpaceInsideBlockBraces:
209
+ Enabled: true
210
+ EnforcedStyleForEmptyBraces: space
211
+
212
+ # Use `{ a: 1 }` not `{a:1}`.
213
+ # Use `{}` not `{ }`.
214
+ Layout/SpaceInsideHashLiteralBraces:
215
+ Enabled: true
216
+ EnforcedStyle: space
217
+ EnforcedStyleForEmptyBraces: no_space
218
+
219
+ # Use `foo(bar)` not `foo( bar )`
220
+ Layout/SpaceInsideParens:
221
+ Enabled: true
222
+
223
+ # Requiring a space is not yet supported as of 0.59.2
224
+ # Use `%w[ foo ]` not `%w[foo]`
17
225
  Layout/SpaceInsidePercentLiteralDelimiters:
18
226
  Enabled: false
227
+ #EnforcedStyle: space
228
+
229
+ # Use `hash[:key]` not `hash[ :key ]`
230
+ Layout/SpaceInsideReferenceBrackets:
231
+ Enabled: true
232
+
233
+ # Blank lines should not have any spaces.
234
+ Layout/TrailingEmptyLines:
235
+ Enabled: true
236
+
237
+ # No trailing whitespace.
238
+ Layout/TrailingWhitespace:
239
+ Enabled: true
240
+
241
+ Lint/RedundantStringCoercion:
242
+ Enabled: true
243
+
244
+ # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
245
+ Lint/RequireParentheses:
246
+ Enabled: true
247
+
248
+ Lint/UriEscapeUnescape:
249
+ Enabled: true
250
+
251
+ Performance/FlatMap:
252
+ Enabled: true
253
+
254
+ # We generally prefer &&/|| but like low-precedence and/or in context
255
+ Style/AndOr:
256
+ Enabled: false
257
+
258
+ # Prefer Foo.method over Foo::method
259
+ Style/ColonMethodCall:
260
+ Enabled: true
261
+
262
+ Style/DefWithParentheses:
263
+ Enabled: true
264
+
265
+ # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
266
+ Style/HashSyntax:
267
+ Enabled: true
268
+ EnforcedShorthandSyntax: either
269
+
270
+ # Defining a method with parameters needs parentheses.
271
+ Style/MethodDefParentheses:
272
+ Enabled: true
273
+
274
+ Style/ParenthesesAroundCondition:
275
+ Enabled: true
276
+
277
+ Style/PercentLiteralDelimiters:
278
+ Enabled: true
279
+ PreferredDelimiters:
280
+ default: "()"
281
+ "%i": "[]"
282
+ "%I": "[]"
283
+ "%r": "{}"
284
+ "%w": "[]"
285
+ "%W": "[]"
286
+
287
+ # Use quotes for string literals when they are enough.
288
+ Style/RedundantPercentQ:
289
+ Enabled: false
290
+
291
+ Style/RedundantReturn:
292
+ Enabled: true
293
+ AllowMultipleReturnValues: true
294
+
295
+ Style/Semicolon:
296
+ Enabled: true
297
+ AllowAsExpressionSeparator: true
298
+
299
+ Style/StabbyLambdaParentheses:
300
+ Enabled: true
301
+
302
+ # Use `"foo"` not `'foo'` unless escaping is required
303
+ Style/StringLiterals:
304
+ Enabled: true
305
+ EnforcedStyle: double_quotes
306
+ Include:
307
+ - "app/**/*"
308
+ - "config/**/*"
309
+ - "lib/**/*"
310
+ - "test/**/*"
311
+ - "Gemfile"
312
+
313
+ Style/TrailingCommaInArrayLiteral:
314
+ Enabled: true
315
+
316
+ Style/TrailingCommaInHashLiteral:
317
+ Enabled: true
19
318
 
20
- inherit_from: .rubocop_todo.yml
319
+ Gemspec/DevelopmentDependencies:
320
+ EnforcedStyle: gemspec