lolcommits-sample_plugin 0.5.0 → 0.5.1

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: 4963638d9fb2e82c3d6668cc04840305be43caf5082685cf664888915ce3964e
4
- data.tar.gz: afce17712fcd4941780a77589510408a9dca0d84154a8149d4966521c203eb7a
3
+ metadata.gz: 97ed049cbe971c2dffb65a484ea68bcaf51f477260a1cdfdce3f15210e7d151e
4
+ data.tar.gz: 79dc06a571560eb3e2d8478903d67c25c49a18b41e2718c578d473c86e2a7c2e
5
5
  SHA512:
6
- metadata.gz: f094d34b8a5e41d19918514e4eec00dac5ce45ff6d5741d5c634899ad4464ac1460b03be1f44a8bd8c319c9371fd1aaa75ed8429769d9dc26dd1148930ca76dd
7
- data.tar.gz: cca703fa294bd230bb015bf67cb06bc657382f5bdc90083bdfad8c8b2c1cf79baf2489fe23e59bcc3d20ef0c780f16729ce5e41eaa4b8bfb45521f258da33203
6
+ metadata.gz: e079b0255ccc5b871e043437504ab14891ca2c8c54fe27ee702cc1c2450ae3a76c50492caf5bded39e9e1153553caa28860c8feacb92a51afb31f41d54ba3dd3
7
+ data.tar.gz: 99da23a21319c0c67cf7d7b522ed576a8f8fd1c8a2a77a4f907ca72f580ae45f8feed50d6d0c4439ca55244cc8e04aa17f34d253ca19386a14d4e56dc55e2867
@@ -0,0 +1,56 @@
1
+ name: CI
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ push:
7
+ branches:
8
+ - main
9
+ pull_request:
10
+ branches:
11
+ - main
12
+
13
+ jobs:
14
+ rubocop:
15
+ name: RuboCop
16
+ runs-on: ubuntu-latest
17
+ env:
18
+ BUNDLE_ONLY: rubocop
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+ - name: Setup Ruby and install gems
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: 3.3.0
26
+ bundler-cache: true
27
+ - name: Run Rubocop
28
+ run: bundle exec rubocop --parallel
29
+ test:
30
+ name: ${{ format('Unit tests (Ruby {0})', matrix.ruby-version) }}
31
+ runs-on: ubuntu-latest
32
+ strategy:
33
+ matrix:
34
+ ruby-version:
35
+ - "3.1"
36
+ - "3.2"
37
+ - "3.3"
38
+ - "3.4"
39
+ continue-on-error: true
40
+ steps:
41
+ - name: Checkout code
42
+ uses: actions/checkout@v4
43
+ - name: Setup Ruby and install gems
44
+ uses: ruby/setup-ruby@v1
45
+ with:
46
+ ruby-version: ${{ matrix.ruby-version }}
47
+ bundler-cache: true
48
+ - name: Configure Git
49
+ run: |
50
+ git config --global user.name $NAME
51
+ git config --global user.email $EMAIL
52
+ env:
53
+ NAME: "George Costanza"
54
+ EMAIL: "george.costanza@vandelay.com"
55
+ - name: Run tests
56
+ run: bundle exec rake test
@@ -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 ADDED
@@ -0,0 +1,2 @@
1
+ inherit_gem:
2
+ rubocop-rails-omakase: rubocop.yml
data/CHANGELOG.md CHANGED
@@ -9,6 +9,11 @@ project adheres to [Semantic Versioning][Semver].
9
9
 
10
10
  - Your contribution here!
11
11
 
12
+ ## [0.5.1] - 2024-12-29
13
+ ### Changed
14
+ - Push gems with bundler (not GitHub actions)
15
+ - Updated documentation links
16
+
12
17
  ## [0.5.0] - 2024-09-22
13
18
  ### Removed
14
19
  - Support for Ruby < 3.1 (older rubies no longer supported)
@@ -62,7 +67,8 @@ project adheres to [Semantic Versioning][Semver].
62
67
  ### Changed
63
68
  - Initial release
64
69
 
65
- [Unreleased]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.5.0...HEAD
70
+ [Unreleased]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.5.1...HEAD
71
+ [0.5.1]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.5.0...v0.5.1
66
72
  [0.5.0]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.4.0...v0.5.0
67
73
  [0.4.0]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.3.0...v0.4.0
68
74
  [0.3.0]: https://github.com/lolcommits/lolcommits-sample_plugin/compare/v0.2.0...v0.3.0
data/Gemfile CHANGED
@@ -1,2 +1,6 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
  gemspec
3
+
4
+ group :rubocop do
5
+ gem "rubocop-rails-omakase", require: false
6
+ end
data/README.md CHANGED
@@ -1,20 +1,20 @@
1
1
  # Lolcommits Sample Plugin
2
2
 
3
- [![Build](https://img.shields.io/github/actions/workflow/status/lolcommits/lolcommits-sample_plugin/build.yml?branch=main&style=flat)](https://github.com/lolcommits/lolcommits-sample_plugin/actions/workflows/build.yml)
3
+ [![CI](https://img.shields.io/github/actions/workflow/status/lolcommits/lolcommits-sample_plugin/ci.yml?branch=main&style=flat&label=CI)](https://github.com/lolcommits/lolcommits-sample_plugin/actions/workflows/ci.yml)
4
4
  [![Gem](https://img.shields.io/gem/v/lolcommits-sample_plugin.svg?style=flat)](http://rubygems.org/gems/lolcommits-sample_plugin)
5
5
  [![Depfu](https://img.shields.io/depfu/lolcommits/lolcommits-sample_plugin.svg?style=flat)](https://depfu.com/github/lolcommits/lolcommits-sample_plugin)
6
6
 
7
- [lolcommits](https://lolcommits.github.io/) takes a snapshot with your
8
- webcam every time you git commit code, and archives a lolcat style image
9
- with it. Git blame has never been so much fun!
7
+ [lolcommits](https://lolcommits.github.io/) takes a snapshot with your webcam
8
+ every time you git commit code, and archives a lolcat style image with it. Git
9
+ blame has never been so much fun!
10
10
 
11
- Lolcommit plugins allow developers to add features by running code
12
- before or after snapshots are taken. Installed plugin gems are
13
- automatically loaded before the capturing process starts.
11
+ Lolcommit plugins allow developers to add features by running code before or
12
+ after snapshots are taken. Installed plugin gems are automatically loaded before
13
+ the capturing process starts.
14
14
 
15
- This gem showcases an example plugin. It prints short messages to the
16
- screen before and after every lolcommit. After configuring the plugin to
17
- be enabled, you'll see something like this for a capture:
15
+ This gem showcases an example plugin. It prints short messages to the screen
16
+ before and after every lolcommit. After configuring the plugin to be enabled,
17
+ you'll see something like this for a capture:
18
18
 
19
19
  ✨ Say cheese 😁 !
20
20
  *** Preserving this moment in history.
@@ -22,13 +22,12 @@ be enabled, you'll see something like this for a capture:
22
22
  wow! 9e6303c at /path/to/lolcommit.jpg is your best looking commit yet!
23
23
  (it was an image!)
24
24
 
25
- Use this repo to jump-start development on your own plugin. It has
26
- tests, docs and hooks with useful tools; CI, Rdoc etc.
25
+ Use this repo to jump-start development on your own plugin. It has tests, docs
26
+ and hooks with useful tools; CI, Rdoc etc.
27
27
 
28
28
  ## Developing your own plugin
29
29
 
30
- First, there are some things your gem *must* do to be loaded and
31
- executed:
30
+ First, there are some things your gem *must* do to be loaded and executed:
32
31
 
33
32
  * The gem name must have a `lolcommits-` prefix.
34
33
  * Require `lolcommits` in your `gemspec` file as a development
@@ -39,8 +38,8 @@ executed:
39
38
 
40
39
  ### Your Plugin Class
41
40
 
42
- You plugin class must have a namespace and path that matches your gem
43
- name and be in the gem's `LOAD_PATH`.
41
+ You plugin class must have a namespace and path that matches your gem name and
42
+ be in the gem's `LOAD_PATH`.
44
43
 
45
44
  # for a gem named lolcommits-zapier you should have a plugin class:
46
45
  class Lolcommits::Plugin::Zapier < Lolcommits::Plugin::Base
@@ -56,8 +55,8 @@ name and be in the gem's `LOAD_PATH`.
56
55
  # at lib/lolcommits/plugin/super_awesome.rb
57
56
  # required in a file at lib/lolcommits/super_awesome.rb
58
57
 
59
- The following methods can be overridden to execute code during the
60
- capture process:
58
+ The following methods can be overridden to execute code during the capture
59
+ process:
61
60
 
62
61
  * `run_pre_capture` - executes before the capture starts, at this point
63
62
  you could alter the commit message/sha text.
@@ -70,12 +69,12 @@ capture process:
70
69
 
71
70
  ### Plugin configuration
72
71
 
73
- Available options can be defined in an Array (`@options` instance var)
74
- and/or a Hash (by overriding the `default_options` method).
72
+ Available options can be defined in an Array (`@options` instance var) and/or a
73
+ Hash (by overriding the `default_options` method).
75
74
 
76
- By default (on initialize), `@options` will be set to `[:enabled]`. This
77
- option is mandatory since `enabled?` checks `configuration[:enabled] ==
78
- true` before any capture hooks can run.
75
+ By default (on initialize), `@options` will be set to `[:enabled]`. This option
76
+ is mandatory since `enabled?` checks `configuration[:enabled] == true` before
77
+ any capture hooks can run.
79
78
 
80
79
  Using a Hash to define default options allows you to:
81
80
 
@@ -84,13 +83,13 @@ Using a Hash to define default options allows you to:
84
83
  - define nested options (the user is prompted for each nested option
85
84
  key)
86
85
 
87
- `configure_option_hash` will iterate over all options prompting the user
88
- for input while building the configuration Hash.
86
+ `configure_option_hash` will iterate over all options prompting the user for
87
+ input while building the configuration Hash.
89
88
 
90
- Lolcommits will save this Hash to a YAML file. During the capture
91
- process the configuration is loaded, parsed and available in the plugin
92
- class as `configuration`. Or if you want to fall back to default values,
93
- you should use the `config_option` method to dig into the Hash.
89
+ Lolcommits will save this Hash to a YAML file. During the capture process the
90
+ configuration is loaded, parsed and available in the plugin class as
91
+ `configuration`. Or if you want to fall back to default values, you should use
92
+ the `config_option` method to dig into the Hash.
94
93
 
95
94
  Alternatively you can override these methods to fully customise the
96
95
  configuration process.
@@ -107,25 +106,24 @@ By default a plugin will only run it's capture hooks if:
107
106
  * `valid_configuration?` returns true
108
107
  * `enabled?` returns true
109
108
 
110
- A `parse_user_input` method is available to help parse strings from
111
- STDIN to Ruby objects (e.g. boolean, integer or nil).
109
+ A `parse_user_input` method is available to help parse strings from STDIN to
110
+ Ruby objects (e.g. boolean, integer or nil).
112
111
 
113
- During plugin configuration, your plugin class will be initialized with
114
- the optional `config` argument (and no runner). This allows you to read
115
- the existing saved options during configuration. E.g. to show existing
116
- options back to the user, allowing you to ask if they want to keep or
117
- change an option if reconfiguring.
112
+ During plugin configuration, your plugin class will be initialized with the
113
+ optional `config` argument (and no runner). This allows you to read the existing
114
+ saved options during configuration. E.g. to show existing options back to the
115
+ user, allowing you to ask if they want to keep or change an option if
116
+ reconfiguring.
118
117
 
119
- __NOTE__: If your plugin does not require configuration and should be
120
- enabled by default (on gem install) you could override the `enabled?`
121
- method to always return `true`. Simply uninstalling the gem will disable
122
- the plugin.
118
+ __NOTE__: If your plugin does not require configuration and should be enabled by
119
+ default (on gem install) you could override the `enabled?` method to always
120
+ return `true`. Simply uninstalling the gem will disable the plugin.
123
121
 
124
122
  For more help, check out [the
125
123
  documentation](http://www.rubydoc.info/github/lolcommits/lolcommits-sample_plugin/Lolcommits/Plugin/SamplePlugin)
126
124
  for this plugin, or take a look at [other
127
- lolcommit_plugins](https://github.com/search?q=topic%3Alolcommits-plugin+org%3Alolcommits&type=Repositories)
128
- in the wild.
125
+ lolcommit_plugins](https://github.com/search?q=topic%3Alolcommits-plugin+org%3Alolcommits&type=Repositories)
126
+ in the wild.
129
127
 
130
128
  ### The Lolcommits 'runner'
131
129
 
@@ -150,11 +148,11 @@ instance var for use in your plugin's code.
150
148
  * `runner.capture_image` - `true` when an image (jpg) was captured, false for gifs/videos
151
149
 
152
150
  After the capturing process completes, (i.e. in `run_post_capture` or
153
- `run_capture_ready` hooks) use `runner.lolcommit_path` to access the
154
- lolcommit file (jpg, mp4 or gif).
151
+ `run_capture_ready` hooks) use `runner.lolcommit_path` to access the lolcommit
152
+ file (jpg, mp4 or gif).
155
153
 
156
- __NOTE__: it is possible for both an animated gif *AND* video to be
157
- generated, in this case `lolcommits_path` points to the `mp4` video and
154
+ __NOTE__: it is possible for both an animated gif *AND* video to be generated,
155
+ in this case `lolcommits_path` points to the `mp4` video and
158
156
  `runner.lolcommits_gif_path` points to the animated `gif`.
159
157
 
160
158
  Take a look at
@@ -165,19 +163,18 @@ for more details.
165
163
 
166
164
  After capturing (and resizing), the
167
165
  [runner](https://github.com/lolcommits/lolcommits/blob/master/lib/lolcommits/runner.rb)
168
- provides a blank (transparent) PNG for plugins to manipulate. It
169
- matches the width and height of the lolcommit capture.
170
-
171
- To make use of this `runner.overlay`, reference it in any `post_capture`
172
- hook. You can use any `MiniMagick::Image`
173
- [utility](http://rubydoc.info/github/minimagick/minimagick) method. For
174
- example the
175
- [lolcommits-loltext](https://github.com/lolcommits/lolcommits-loltext)
166
+ provides a blank (transparent) PNG for plugins to manipulate. It matches the
167
+ width and height of the lolcommit capture.
168
+
169
+ To make use of this `runner.overlay`, reference it in any `post_capture` hook.
170
+ You can use any `MiniMagick::Image`
171
+ [utility](http://rubydoc.info/github/minimagick/minimagick) method. For example
172
+ the [lolcommits-loltext](https://github.com/lolcommits/lolcommits-loltext)
176
173
  plugin annotates text, a border and overlay colour
177
174
  [here](https://github.com/lolcommits/lolcommits-loltext/blob/master/lib/lolcommits/plugin/loltext.rb#L74).
178
175
 
179
- After all `post_capture` hooks finish, this overlay PNG is composited on
180
- top of the snapshot and the final lolcommit file is available at
176
+ After all `post_capture` hooks finish, this overlay PNG is composited on top of
177
+ the snapshot and the final lolcommit file is available at
181
178
  `runner.lolcommit_path` for `capture_ready` hooks to use.
182
179
 
183
180
  ### Testing your plugin
@@ -225,7 +222,7 @@ repo](https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/test/lo
225
222
 
226
223
  ## Requirements
227
224
 
228
- * Ruby >= 2.4
225
+ * Ruby >= 3.1
229
226
  * A webcam
230
227
  * [ImageMagick](http://www.imagemagick.org)
231
228
  * [ffmpeg](https://www.ffmpeg.org) (optional) for animated gif capturing
@@ -233,8 +230,8 @@ repo](https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/test/lo
233
230
  ## Installation
234
231
 
235
232
  Follow the [install
236
- guide](https://github.com/lolcommits/lolcommits#installation) for
237
- lolcommits first. Then run the following:
233
+ guide](https://github.com/lolcommits/lolcommits#installation) for lolcommits
234
+ first. Then run the following:
238
235
 
239
236
  $ gem install lolcommits-sample_plugin
240
237
 
@@ -243,17 +240,15 @@ Next configure and enable this plugin with:
243
240
  $ lolcommits --config -p sample_plugin
244
241
  # set enabled to `true` and configure other options as you like
245
242
 
246
- That's it! Every lolcommit now comes with it's own emoji themed
247
- commentary!
243
+ That's it! Every lolcommit now comes with it's own emoji themed commentary!
248
244
 
249
245
  ## Development
250
246
 
251
- Check out this repo and run `bin/setup`, this will install dependencies
252
- and generate docs. Run `bundle exec rake` to run all tests and generate
253
- a coverage report.
247
+ Check out this repo and run `bin/setup`, this will install dependencies and
248
+ generate docs. Run `bundle exec rake` to run all tests.
254
249
 
255
- You can also run `bin/console` for an interactive prompt that will allow
256
- you to experiment with the gem code.
250
+ You can also run `bin/console` for an interactive prompt that will allow you to
251
+ experiment with the gem code.
257
252
 
258
253
  ## Tests
259
254
 
@@ -270,16 +265,13 @@ Generate docs for this gem with:
270
265
  ## Troubles?
271
266
 
272
267
  If you think something is broken or missing, please raise a new
273
- [issue](https://github.com/lolcommits/lolcommits-sample_plugin/issues).
274
- Take a moment to check it hasn't been raised in the past (and possibly
275
- closed).
268
+ [issue](https://github.com/lolcommits/lolcommits-sample_plugin/issues). Take a
269
+ moment to check it hasn't been raised in the past (and possibly closed).
276
270
 
277
271
  ## Contributing
278
272
 
279
- Bug
280
- [reports](https://github.com/lolcommits/lolcommits-sample_plugin/issues)
281
- and [pull
282
- requests](https://github.com/lolcommits/lolcommits-sample_plugin/pulls)
273
+ Bug [reports](https://github.com/lolcommits/lolcommits-sample_plugin/issues) and
274
+ [pull requests](https://github.com/lolcommits/lolcommits-sample_plugin/pulls)
283
275
  are welcome on GitHub.
284
276
 
285
277
  When submitting pull requests, remember to add tests covering any new behaviour,
@@ -287,10 +279,9 @@ and ensure all tests are passing on CI. Read the [contributing
287
279
  guidelines](https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/CONTRIBUTING.md)
288
280
  for more details.
289
281
 
290
- This project is intended to be a safe, welcoming space for
291
- collaboration, and contributors are expected to adhere to the
292
- [Contributor Covenant](http://contributor-covenant.org) code of conduct.
293
- See
282
+ This project is intended to be a safe, welcoming space for collaboration, and
283
+ contributors are expected to adhere to the [Contributor
284
+ Covenant](http://contributor-covenant.org) code of conduct. See
294
285
  [here](https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/CODE_OF_CONDUCT.md)
295
286
  for more details.
296
287
 
@@ -301,8 +292,8 @@ The gem is available as open source under the terms of
301
292
 
302
293
  ## Links
303
294
 
304
- * [CI](https://github.com/lolcommits/lolcommits-sample_plugin/actions/workflows/build.yml)
305
- * [RDoc](http://rdoc.info/projects/lolcommits/lolcommits-sample_plugin)
295
+ * [CI](https://github.com/lolcommits/lolcommits-sample_plugin/actions/workflows/ci.yml)
296
+ * [RDoc](https://rubydoc.info/gems/lolcommits-sample_plugin)
306
297
  * [Issues](http://github.com/lolcommits/lolcommits-sample_plugin/issues)
307
298
  * [Report a bug](http://github.com/lolcommits/lolcommits-sample_plugin/issues/new)
308
299
  * [Gem](http://rubygems.org/gems/lolcommits-sample_plugin)
data/Rakefile CHANGED
@@ -18,4 +18,4 @@ Rake::TestTask.new(:test) do |t|
18
18
  t.test_files = FileList["test/**/*_test.rb"]
19
19
  end
20
20
 
21
- task :default => ['test']
21
+ task default: [ "test" ]
data/bin/rubocop ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ load Gem.bin_path("rubocop", "rubocop")
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lolcommits/plugin/base'
3
+ require "lolcommits/plugin/base"
4
4
 
5
5
  module Lolcommits
6
6
  module Plugin
7
7
  class SamplePlugin < Base
8
-
9
8
  ##
10
9
  # Initializer
11
10
  #
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lolcommits
4
4
  module SamplePlugin
5
- VERSION = "0.5.0".freeze
5
+ VERSION = "0.5.1".freeze
6
6
  end
7
7
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lolcommits/sample_plugin/version'
4
- require 'lolcommits/plugin/sample_plugin'
3
+ require "lolcommits/sample_plugin/version"
4
+ require "lolcommits/plugin/sample_plugin"
@@ -5,15 +5,16 @@ require 'lolcommits/sample_plugin/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "lolcommits-sample_plugin"
7
7
  spec.version = Lolcommits::SamplePlugin::VERSION
8
- spec.authors = ["Matthew Hutchinson"]
9
- spec.email = ["matt@hiddenloop.com"]
10
- spec.summary = %q{Example gem for lolcommits plugin development}
8
+ spec.authors = [ "Matthew Hutchinson" ]
9
+ spec.email = [ "matt@hiddenloop.com" ]
10
+ spec.summary = %q(Example gem for lolcommits plugin development)
11
11
  spec.homepage = "https://github.com/lolcommits/lolcommits-sample_plugin"
12
12
  spec.license = "LGPL-3.0"
13
- spec.description = %q{Use this gem as a guide or template to get started with lolcommits plugin development}
13
+ spec.description = %q(Use this gem as a guide or template to get started with lolcommits plugin development)
14
14
 
15
15
  spec.metadata = {
16
16
  "homepage_uri" => "https://github.com/lolcommits/lolcommits-sample_plugin",
17
+ "documentation_uri" => "https://rubydoc.info/gems/lolcommits-sample_plugin",
17
18
  "changelog_uri" => "https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/CHANGELOG.md",
18
19
  "source_code_uri" => "https://github.com/lolcommits/lolcommits-sample_plugin",
19
20
  "bug_tracker_uri" => "https://github.com/lolcommits/lolcommits-sample_plugin/issues",
@@ -24,7 +25,7 @@ Gem::Specification.new do |spec|
24
25
  spec.test_files = `git ls-files -- {test,features}/*`.split("\n")
25
26
  spec.bindir = "bin"
26
27
  spec.executables = []
27
- spec.require_paths = ["lib"]
28
+ spec.require_paths = [ "lib" ]
28
29
 
29
30
  spec.required_ruby_version = ">= 3.1"
30
31
 
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ describe Lolcommits::Plugin::SamplePlugin do
6
+ include Lolcommits::TestHelpers::GitRepo
7
+ include Lolcommits::TestHelpers::FakeIO
8
+
9
+ describe "with a runner" do
10
+ def runner
11
+ # a simple lolcommits runner with an empty configuration Hash
12
+ @runner ||= Lolcommits::Runner.new(
13
+ lolcommit_path: "/path/to/lolcommit.jpg"
14
+ )
15
+ end
16
+
17
+ def plugin
18
+ @plugin ||= Lolcommits::Plugin::SamplePlugin.new(runner: runner)
19
+ end
20
+
21
+ def valid_enabled_config
22
+ {
23
+ enabled: true,
24
+ ask_for_cheese: false,
25
+ always_a_great_commit?: true,
26
+ camera_emoji: {
27
+ enabled: true,
28
+ emoji_multiplier: 5
29
+ }
30
+ }
31
+ end
32
+
33
+ describe "#run_pre_capture" do
34
+ before { commit_repo_with_message }
35
+
36
+ it "outputs a message to stdout" do
37
+ in_repo do
38
+ _(Proc.new { plugin.run_pre_capture }).
39
+ must_output "✨ Say cheese 😁 !\n"
40
+ end
41
+ end
42
+
43
+ after { teardown_repo }
44
+ end
45
+
46
+ describe "#run_post_capture" do
47
+ before { commit_repo_with_message }
48
+
49
+ it "outputs a message to stdout" do
50
+ plugin.configuration = valid_enabled_config
51
+ in_repo do
52
+ _(Proc.new { plugin.run_post_capture }).
53
+ must_output "📸 📸 📸 📸 📸 Snap!\n"
54
+ end
55
+ end
56
+
57
+ after { teardown_repo }
58
+ end
59
+
60
+ describe "#run_capture_ready" do
61
+ before { commit_repo_with_message }
62
+
63
+ it "outputs a message to stdout" do
64
+ in_repo do
65
+ _(Proc.new { plugin.run_capture_ready }).
66
+ must_output "wow! #{last_commit.sha[0..10]} at /path/to/lolcommit.jpg is your best looking commit yet!\n(it was an image!)\n"
67
+ end
68
+ end
69
+
70
+ after { teardown_repo }
71
+ end
72
+
73
+ describe "#enabled?" do
74
+ it "returns be false by default" do
75
+ _(plugin.enabled?).must_equal false
76
+ end
77
+
78
+ it "returns true when configured" do
79
+ plugin.configuration = valid_enabled_config
80
+ _(plugin.enabled?).must_equal true
81
+ end
82
+ end
83
+
84
+ describe "configuration" do
85
+ it "allows plugin options to be configured" do
86
+ configured_plugin_options = {}
87
+
88
+ fake_io_capture(inputs: %w[true false true true 5]) do
89
+ configured_plugin_options = plugin.configure_options!
90
+ end
91
+
92
+ _(configured_plugin_options).must_equal(valid_enabled_config)
93
+ end
94
+
95
+ describe "#valid_configuration?" do
96
+ it "returns false without config set" do
97
+ _(plugin.valid_configuration?).must_equal(false)
98
+ end
99
+
100
+ it "returns true for a valid configuration" do
101
+ plugin.configuration = valid_enabled_config
102
+ _(plugin.valid_configuration?).must_equal true
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
4
+
5
+ # lolcommits gem
6
+ require "lolcommits"
7
+
8
+ # lolcommit test helpers
9
+ require "lolcommits/test_helpers/git_repo"
10
+ require "lolcommits/test_helpers/fake_io"
11
+
12
+ # plugin gem test libs
13
+ require "lolcommits/sample_plugin"
14
+ require "minitest/autorun"
15
+
16
+ # swallow all debug output during test runs
17
+ def debug(msg); end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolcommits-sample_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Hutchinson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-22 00:00:00.000000000 Z
11
+ date: 2024-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lolcommits
@@ -74,35 +74,37 @@ executables: []
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
- - ".github/workflows/build.yml"
78
- - ".github/workflows/push_gem.yml"
77
+ - ".github/workflows/ci.yml"
79
78
  - ".gitignore"
80
- - ".simplecov"
81
- - ".travis.yml"
79
+ - ".quickhook/pre-commit/ruby-lint"
80
+ - ".rubocop.yml"
82
81
  - CHANGELOG.md
83
82
  - CODE_OF_CONDUCT.md
84
83
  - CONTRIBUTING.md
85
84
  - Gemfile
86
85
  - LICENSE
87
- - PULL_REQUEST_TEMPLATE.md
88
86
  - README.md
89
87
  - Rakefile
90
88
  - bin/console
89
+ - bin/rubocop
91
90
  - bin/setup
92
91
  - lib/lolcommits/plugin/sample_plugin.rb
93
92
  - lib/lolcommits/sample_plugin.rb
94
93
  - lib/lolcommits/sample_plugin/version.rb
95
94
  - lolcommits-plugin-sample.gemspec
95
+ - test/lolcommits/plugin/sample_plugin_test.rb
96
+ - test/test_helper.rb
96
97
  homepage: https://github.com/lolcommits/lolcommits-sample_plugin
97
98
  licenses:
98
99
  - LGPL-3.0
99
100
  metadata:
100
101
  homepage_uri: https://github.com/lolcommits/lolcommits-sample_plugin
102
+ documentation_uri: https://rubydoc.info/gems/lolcommits-sample_plugin
101
103
  changelog_uri: https://github.com/lolcommits/lolcommits-sample_plugin/blob/master/CHANGELOG.md
102
104
  source_code_uri: https://github.com/lolcommits/lolcommits-sample_plugin
103
105
  bug_tracker_uri: https://github.com/lolcommits/lolcommits-sample_plugin/issues
104
106
  allowed_push_host: https://rubygems.org
105
- post_install_message:
107
+ post_install_message:
106
108
  rdoc_options: []
107
109
  require_paths:
108
110
  - lib
@@ -117,8 +119,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  - !ruby/object:Gem::Version
118
120
  version: '0'
119
121
  requirements: []
120
- rubygems_version: 3.5.16
121
- signing_key:
122
+ rubygems_version: 3.5.22
123
+ signing_key:
122
124
  specification_version: 4
123
125
  summary: Example gem for lolcommits plugin development
124
- test_files: []
126
+ test_files:
127
+ - test/lolcommits/plugin/sample_plugin_test.rb
128
+ - test/test_helper.rb
@@ -1,34 +0,0 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches: [ "main" ]
6
- pull_request:
7
- branches: [ "main" ]
8
-
9
- permissions:
10
- contents: read
11
-
12
- jobs:
13
- test:
14
- runs-on: ubuntu-latest
15
- strategy:
16
- fail-fast: false
17
- matrix:
18
- ruby-version: ['3.1', '3.2', '3.3', '3.4']
19
- steps:
20
- - uses: actions/checkout@v4
21
- - name: Set up Ruby
22
- uses: ruby/setup-ruby@v1
23
- with:
24
- ruby-version: ${{ matrix.ruby-version }}
25
- bundler-cache: true
26
- - name: Configure git user name, email
27
- run: |
28
- git config --global user.name $NAME
29
- git config --global user.email $EMAIL
30
- env:
31
- NAME: "George Costanza"
32
- EMAIL: "george.costanza@vandelay.com"
33
- - name: Run tests
34
- run: bundle exec rake test
@@ -1,25 +0,0 @@
1
- name: Publish gem to RubyGems.org
2
-
3
- on:
4
- push:
5
- tags:
6
- - v*
7
-
8
- jobs:
9
- push:
10
- name: Push gem to RubyGems.org
11
- runs-on: ubuntu-latest
12
-
13
- permissions:
14
- id-token: write
15
- contents: write
16
-
17
- steps:
18
- - uses: actions/checkout@v4
19
- - name: Set up Ruby
20
- uses: ruby/setup-ruby@v1
21
- with:
22
- bundler-cache: true
23
- ruby-version: ruby
24
-
25
- - uses: rubygems/release-gem@v1
data/.simplecov DELETED
@@ -1,9 +0,0 @@
1
- SimpleCov.start do
2
- add_filter '/test/'
3
- add_filter '/vendor/'
4
- end
5
-
6
- SimpleCov.at_exit do
7
- SimpleCov.result.format!
8
- `open ./coverage/index.html` if RUBY_PLATFORM =~ /darwin/
9
- end
data/.travis.yml DELETED
@@ -1,29 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.5.8
6
- - 2.6.6
7
- - 2.7.2
8
- - 3.0.0
9
- - ruby-head
10
-
11
- before_install:
12
- - git --version
13
- - git config --global user.email "lol@commits.org"
14
- - git config --global user.name "Lolcommits"
15
-
16
- matrix:
17
- allow_failures:
18
- - rvm: ruby-head
19
-
20
- env:
21
- global:
22
- - CC_TEST_REPORTER_ID=7fb6d4a66ca2ac21658b29d3738952994f3b68354a8e3e6318bf1108eda6c243
23
- - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi)
24
- before_script:
25
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
26
- - chmod +x ./cc-test-reporter
27
- - ./cc-test-reporter before-build - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi)
28
- after_script:
29
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -1,16 +0,0 @@
1
-
2
- Explain what you're changing and why here.
3
-
4
- ---
5
- #### :memo: Checklist
6
-
7
- Please check this list and leave it intact for the reviewer. Thanks! :heart:
8
-
9
- - [ ] Commit messages provide context (why not just what, some tips [here](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)).
10
- - [ ] If relevant, mention GitHub issue number above and include in a commit message.
11
- - [ ] Latest code from master merged.
12
- - [ ] New behaviour has test coverage.
13
- - [ ] Avoid duplicating code.
14
- - [ ] No commented out code.
15
- - [ ] Avoid comments for your code, write code that explains itself.
16
- - [ ] Changes are simple, useful, clear and brief.