lolcommits 0.17.2 → 0.17.3

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.
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