boppers 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/gems.locked +1 -1
- data/lib/boppers/cli.rb +13 -1
- data/lib/boppers/generator/plugin.rb +25 -7
- data/lib/boppers/generator/plugin/{README.erb → bopper/README.erb} +2 -0
- data/lib/boppers/generator/plugin/{lib → bopper}/entry.erb +0 -0
- data/lib/boppers/generator/plugin/{gemspec.erb → bopper/gemspec.erb} +1 -1
- data/lib/boppers/generator/plugin/{lib → bopper}/main.erb +0 -0
- data/lib/boppers/generator/plugin/bopper/test_file.erb +10 -0
- data/lib/boppers/generator/plugin/{lib → bopper}/version.erb +0 -0
- data/lib/boppers/generator/plugin/notifier/README.erb +47 -0
- data/lib/boppers/generator/plugin/notifier/entry.erb +4 -0
- data/lib/boppers/generator/plugin/notifier/gemspec.erb +29 -0
- data/lib/boppers/generator/plugin/notifier/main.erb +19 -0
- data/lib/boppers/generator/plugin/notifier/test_file.erb +10 -0
- data/lib/boppers/generator/plugin/notifier/version.erb +9 -0
- data/lib/boppers/version.rb +1 -1
- metadata +14 -8
- data/lib/boppers/generator/plugin/test/test_file.erb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aacbc6cbb8092024b7e7bf778f6ebfff9f6ee73a
|
4
|
+
data.tar.gz: a23afe21e2c89027fd6c0a8a49f77ef53f0f5287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad2567a1c3b0b54ca93d42ea1410e5dc084f6aae3e037e2cff76fe4bd0d62b3d36750e811b7ddbea4d19fbfbfbd1460462b780429c3991be22ea8dda31c24c0c
|
7
|
+
data.tar.gz: 314e0a18f6ee0817abb788e52542ad2d38b9cb558121cc4676c1927efef80977aa3abd2248748df64ebdcbbbf7213aceea39c7ac3d38a2c3708fb949ba7dec35
|
data/README.md
CHANGED
@@ -65,7 +65,7 @@ The `Boppers.notify` method expects a event name (the recommended value is the b
|
|
65
65
|
I encourage you to share your boppers. I even added a command to generate a common structure, so you don't have to think about how to organize it. Let's say you want to distribute the clock bopper above.
|
66
66
|
|
67
67
|
```
|
68
|
-
$ boppers plugin clock
|
68
|
+
$ boppers plugin clock --type bopper
|
69
69
|
create boppers-clock.gemspec
|
70
70
|
create gems.rb
|
71
71
|
create .gitignore
|
@@ -144,6 +144,10 @@ end
|
|
144
144
|
|
145
145
|
Now this notifier will only be triggered when `Boppers.notify(:clock, *args)` is called, ignoring other boppers.
|
146
146
|
|
147
|
+
### Distributing notifiers
|
148
|
+
|
149
|
+
The idea is pretty much the same as creating a bopper. Use the command `boppers plugin [NAME] --type notifier` to generate a file structure. Then configure the plugin accordingly. There's a a linter for notifiers: `Boppers::Testing::NotifierLinter`.
|
150
|
+
|
147
151
|
### Available notifiers
|
148
152
|
|
149
153
|
By default, Boppers comes with the following notifiers.
|
@@ -254,10 +258,6 @@ Boppers.configure do |config|
|
|
254
258
|
end
|
255
259
|
```
|
256
260
|
|
257
|
-
### Distributing notifiers
|
258
|
-
|
259
|
-
The idea is pretty much the same. Create a new plugin with `boppers plugin [NAME]` and configure it accordingly. There's also a linter for notifiers: `Boppers::Testing::NotifierLinter`.
|
260
|
-
|
261
261
|
## Deploying to Heroku
|
262
262
|
|
263
263
|
I'm assuming you installed the gem with `gem install boppers` and generated your app.
|
data/gems.locked
CHANGED
data/lib/boppers/cli.rb
CHANGED
@@ -28,14 +28,26 @@ module Boppers
|
|
28
28
|
end
|
29
29
|
|
30
30
|
desc "plugin NAME", "Create a new plugin for Boppers"
|
31
|
+
method_option :type,
|
32
|
+
type: :string,
|
33
|
+
desc: "The type of plugin. Can be either bopper or notifier.",
|
34
|
+
required: true
|
31
35
|
|
32
36
|
def plugin(name)
|
33
37
|
require "boppers/generator/plugin"
|
34
38
|
|
39
|
+
unless %w{bopper notifier}.include?(options[:type])
|
40
|
+
message = "ERROR: --type needs to be either 'bopper' or 'notifier'"
|
41
|
+
shell.error shell.set_color(message, :red)
|
42
|
+
exit 1
|
43
|
+
end
|
44
|
+
|
45
|
+
suffix = "-notifier" if options[:type] == "notifier"
|
35
46
|
base_path = File.dirname(File.expand_path(name))
|
36
|
-
base_name = "boppers-#{File.basename(name)}"
|
47
|
+
base_name = "boppers-#{File.basename(name)}#{suffix}"
|
37
48
|
|
38
49
|
generator = Generator::Plugin.new
|
50
|
+
generator.plugin_type = options[:type]
|
39
51
|
generator.destination_root = File.join(base_path, base_name)
|
40
52
|
generator.invoke_all
|
41
53
|
end
|
@@ -5,6 +5,8 @@ module Boppers
|
|
5
5
|
class Plugin < Thor::Group
|
6
6
|
include Thor::Actions
|
7
7
|
|
8
|
+
attr_accessor :plugin_type
|
9
|
+
|
8
10
|
desc "Generate a new Boopers plugin structure"
|
9
11
|
|
10
12
|
def self.source_root
|
@@ -12,7 +14,7 @@ module Boppers
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def copy_files
|
15
|
-
template "gemspec.erb", "#{plugin_name}.gemspec"
|
17
|
+
template "#{plugin_type}/gemspec.erb", "#{plugin_name}.gemspec"
|
16
18
|
copy_file "gems.rb"
|
17
19
|
copy_file ".gitignore"
|
18
20
|
copy_file ".rubocop.yml"
|
@@ -20,20 +22,26 @@ module Boppers
|
|
20
22
|
copy_file "CODE_OF_CONDUCT.md"
|
21
23
|
copy_file "LICENSE.txt"
|
22
24
|
copy_file "Rakefile"
|
23
|
-
template "README.erb", "README.md"
|
25
|
+
template "#{plugin_type}/README.erb", "README.md"
|
24
26
|
end
|
25
27
|
|
26
28
|
def copy_lib_files
|
27
|
-
template "
|
28
|
-
|
29
|
-
|
29
|
+
template "#{plugin_type}/entry.erb",
|
30
|
+
"lib/#{plugin_name}.rb"
|
31
|
+
|
32
|
+
template "#{plugin_type}/main.erb",
|
33
|
+
"lib/boppers/#{plugin_dir}#{name}.rb"
|
34
|
+
|
35
|
+
template "#{plugin_type}/version.erb",
|
36
|
+
"lib/boppers/#{plugin_dir}#{name}/version.rb"
|
30
37
|
end
|
31
38
|
|
32
39
|
def copy_test_files
|
33
40
|
template "test/test_helper.erb", "test/test_helper.rb"
|
34
41
|
|
35
42
|
test_file_name = name.tr("-", "_")
|
36
|
-
template "
|
43
|
+
template "#{plugin_type}/test_file.erb",
|
44
|
+
"test/boppers/#{plugin_dir}#{test_file_name}_test.rb"
|
37
45
|
end
|
38
46
|
|
39
47
|
def run_commands
|
@@ -45,12 +53,18 @@ module Boppers
|
|
45
53
|
|
46
54
|
private
|
47
55
|
|
56
|
+
def bopper?
|
57
|
+
plugin_type == "bopper"
|
58
|
+
end
|
59
|
+
|
48
60
|
def plugin_name
|
49
61
|
File.basename(destination_root)
|
50
62
|
end
|
51
63
|
|
52
64
|
def name
|
53
|
-
plugin_name
|
65
|
+
plugin_name
|
66
|
+
.gsub(/^boppers-/, "")
|
67
|
+
.gsub(/-notifier$/, "")
|
54
68
|
end
|
55
69
|
|
56
70
|
def plugin_namespace
|
@@ -59,6 +73,10 @@ module Boppers
|
|
59
73
|
.gsub(/_(.)/) { $1.upcase }
|
60
74
|
.gsub(/^(.)/) { $1.upcase }
|
61
75
|
end
|
76
|
+
|
77
|
+
def plugin_dir
|
78
|
+
"notifier/" unless bopper?
|
79
|
+
end
|
62
80
|
end
|
63
81
|
end
|
64
82
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Boppers::<%= plugin_namespace %>
|
2
2
|
|
3
|
+
A [bopper](https://github.com/fnando/boppers) to [SOME DESCRIPTION].
|
4
|
+
|
3
5
|
[![Travis-CI](https://travis-ci.org/[USERNAME]/<%= plugin_name %>.png)](https://travis-ci.org/[USERNAME]/<%= plugin_name %>)
|
4
6
|
[![GPA](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/gpa.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
|
5
7
|
[![Test Coverage](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/coverage.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
|
File without changes
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["Author"]
|
9
9
|
spec.email = ["author@example.com"]
|
10
10
|
|
11
|
-
spec.summary = "
|
11
|
+
spec.summary = "A bopper to [SOME DESCRIPTION]"
|
12
12
|
spec.description = spec.summary
|
13
13
|
spec.homepage = "https://rubygems.org/gems/<%= plugin_name %>"
|
14
14
|
spec.license = "MIT"
|
File without changes
|
File without changes
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Boppers::Notifier::<%= plugin_namespace %>
|
2
|
+
|
3
|
+
A [bopper](https://github.com/fnando/boppers) notifier to [SOME DESCRIPTION].
|
4
|
+
|
5
|
+
[![Travis-CI](https://travis-ci.org/[USERNAME]/<%= plugin_name %>.png)](https://travis-ci.org/[USERNAME]/<%= plugin_name %>)
|
6
|
+
[![GPA](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/gpa.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
|
7
|
+
[![Test Coverage](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/coverage.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
|
8
|
+
[![Gem](https://img.shields.io/gem/v/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
|
9
|
+
[![Gem](https://img.shields.io/gem/dt/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem "<%= plugin_name %>"
|
17
|
+
```
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
$ gem install <%= plugin_name %>
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
TODO: Write usage instructions here
|
30
|
+
|
31
|
+
## Development
|
32
|
+
|
33
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
34
|
+
|
35
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
36
|
+
|
37
|
+
## Contributing
|
38
|
+
|
39
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/<%= plugin_name %>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
40
|
+
|
41
|
+
## License
|
42
|
+
|
43
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
44
|
+
|
45
|
+
## Code of Conduct
|
46
|
+
|
47
|
+
Everyone interacting in the Boppers project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/<%= plugin_name %>/blob/master/CODE_OF_CONDUCT.md).
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./lib/boppers/notifier/<%= name %>/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "<%= plugin_name %>"
|
7
|
+
spec.version = Boppers::Notifier::<%= plugin_namespace %>::VERSION
|
8
|
+
spec.authors = ["Author"]
|
9
|
+
spec.email = ["author@example.com"]
|
10
|
+
|
11
|
+
spec.summary = "A bopper notifier to [SOME DESCRIPTION]"
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "https://rubygems.org/gems/<%= plugin_name %>"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_dependency "boppers"
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency "minitest-utils"
|
28
|
+
spec.add_development_dependency "simplecov"
|
29
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "boppers/notifier/<%= name %>/version"
|
4
|
+
|
5
|
+
module Boppers
|
6
|
+
module Notifier
|
7
|
+
class <%= plugin_namespace %>
|
8
|
+
attr_reader :subscribe
|
9
|
+
|
10
|
+
def initialize(subscribe: nil)
|
11
|
+
@subscribe = subscribe
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(title, message, options)
|
15
|
+
puts "<%= name %> notification"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class BoppersNotifier<%= plugin_namespace %>Test < Minitest::Test
|
6
|
+
test "lints plugin" do
|
7
|
+
bopper = Boppers::Notifier::<%= plugin_namespace %>.new
|
8
|
+
Boppers::Testing::NotifierLinter.call(bopper)
|
9
|
+
end
|
10
|
+
end
|
data/lib/boppers/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boppers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -191,14 +191,20 @@ files:
|
|
191
191
|
- lib/boppers/generator/plugin/.travis.yml
|
192
192
|
- lib/boppers/generator/plugin/CODE_OF_CONDUCT.md
|
193
193
|
- lib/boppers/generator/plugin/LICENSE.txt
|
194
|
-
- lib/boppers/generator/plugin/README.erb
|
195
194
|
- lib/boppers/generator/plugin/Rakefile
|
195
|
+
- lib/boppers/generator/plugin/bopper/README.erb
|
196
|
+
- lib/boppers/generator/plugin/bopper/entry.erb
|
197
|
+
- lib/boppers/generator/plugin/bopper/gemspec.erb
|
198
|
+
- lib/boppers/generator/plugin/bopper/main.erb
|
199
|
+
- lib/boppers/generator/plugin/bopper/test_file.erb
|
200
|
+
- lib/boppers/generator/plugin/bopper/version.erb
|
196
201
|
- lib/boppers/generator/plugin/gems.rb
|
197
|
-
- lib/boppers/generator/plugin/
|
198
|
-
- lib/boppers/generator/plugin/
|
199
|
-
- lib/boppers/generator/plugin/
|
200
|
-
- lib/boppers/generator/plugin/
|
201
|
-
- lib/boppers/generator/plugin/
|
202
|
+
- lib/boppers/generator/plugin/notifier/README.erb
|
203
|
+
- lib/boppers/generator/plugin/notifier/entry.erb
|
204
|
+
- lib/boppers/generator/plugin/notifier/gemspec.erb
|
205
|
+
- lib/boppers/generator/plugin/notifier/main.erb
|
206
|
+
- lib/boppers/generator/plugin/notifier/test_file.erb
|
207
|
+
- lib/boppers/generator/plugin/notifier/version.erb
|
202
208
|
- lib/boppers/generator/plugin/test/test_helper.erb
|
203
209
|
- lib/boppers/http_client.rb
|
204
210
|
- lib/boppers/notifier/hipchat.rb
|