boty 0.2.0 → 1.0.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +2 -2
- data/README.md +10 -4
- data/Rakefile +3 -0
- data/bin/bot +2 -2
- data/gemfiles/Gemfile.jruby +3 -0
- data/gemfiles/Gemfile.rbx +1 -1
- data/gemfiles/Gemfile.rbx.lock +79 -0
- data/lib/boty/cli.rb +8 -0
- data/lib/boty/version.rb +1 -1
- data/lib/tasks/bot/compile.rake +8 -0
- data/spec/boty/cli_spec.rb +29 -10
- data/spec/happy_path_spec.rb +13 -1
- data/template/project/bot.tt +6 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c83ca2e3fc9c590a8a9fe3ff8e69d0b86942816
|
4
|
+
data.tar.gz: acd0044347f558d967b3ed6689307faea2214a56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d300819f8993701ae24c84faaa9a07076be9d0153550e492042bd336e475d630b83019e7258e002a624b88db55ee47d85476b2dc6848ef018a8f473d4435ea9
|
7
|
+
data.tar.gz: 6412d730347e2c289ef437134bfdf024d78641aa25911d3555623aec7d6965358925f017fa5871fab67d234493a0b05382b084c20cf9be7c0bac2f4f2e8d382c
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [Unreleased] - [1.0.0] -
|
4
|
+
### Added
|
5
|
+
- Generator to create a new bot project from the command line.
|
6
|
+
- Script api to create custom bot commands.
|
7
|
+
- Working bot (on `bin/bot`) for integration tests and experiments.
|
8
|
+
- Documentation for the basic api.
|
9
|
+
- Rubinius support.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -743,15 +743,21 @@ To install this gem onto your local machine, run `bundle exec rake install`.
|
|
743
743
|
### The local ./bin/bot
|
744
744
|
|
745
745
|
The project have a `./bin/bot` executable that should be the product of
|
746
|
-
compiling the `template/project/bot.tt` erb file.
|
747
|
-
|
748
|
-
|
746
|
+
compiling the `template/project/bot.tt` erb file. This is an easy way to just
|
747
|
+
run the bot using the same logic that a project generated by `bot new` will use.
|
748
|
+
|
749
749
|
It's highly recomendable that you test your changes using this approach before
|
750
750
|
submit a `PR` or generate a new release. =)
|
751
751
|
|
752
|
+
#### Compiling the ./bin/bot
|
753
|
+
|
754
|
+
There is a `bot:compile` rake task that compiles the template right into the
|
755
|
+
`bin` direcotry and make it executable (with `chmod +x`).
|
756
|
+
|
752
757
|
### Code guidelines
|
753
758
|
|
754
|
-
|
759
|
+
Just make sure to run `bundle exec rubocop` before submit any `PR`, good coding!
|
760
|
+
:D
|
755
761
|
|
756
762
|
## Contributing<a name="contributing" />
|
757
763
|
|
data/Rakefile
CHANGED
data/bin/bot
CHANGED
@@ -4,8 +4,8 @@ require "./lib/boty"
|
|
4
4
|
Boty.locale = ARGV.pop || :en
|
5
5
|
|
6
6
|
Boty::Logger.adapter = Boty::Logger::Multi.new([
|
7
|
-
Logger.new(STDOUT),
|
8
|
-
Logger.new("log/output.log", "daily")
|
7
|
+
::Logger.new(STDOUT),
|
8
|
+
::Logger.new("log/output.log", "daily")
|
9
9
|
])
|
10
10
|
|
11
11
|
session = Boty::Session.new
|
data/gemfiles/Gemfile.rbx
CHANGED
@@ -0,0 +1,79 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../
|
3
|
+
specs:
|
4
|
+
boty (0.2.0)
|
5
|
+
eventmachine
|
6
|
+
faraday
|
7
|
+
faye-websocket
|
8
|
+
i18n
|
9
|
+
thor
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
ast (2.2.0)
|
15
|
+
astrolabe (1.3.1)
|
16
|
+
parser (~> 2.2)
|
17
|
+
diff-lcs (1.2.5)
|
18
|
+
dotenv (2.0.2)
|
19
|
+
eventmachine (1.0.8)
|
20
|
+
fakefs (0.6.7)
|
21
|
+
faraday (0.9.2)
|
22
|
+
multipart-post (>= 1.2, < 3)
|
23
|
+
faye-websocket (0.10.2)
|
24
|
+
eventmachine (>= 0.12.0)
|
25
|
+
websocket-driver (>= 0.5.1)
|
26
|
+
i18n (0.7.0)
|
27
|
+
multipart-post (2.0.0)
|
28
|
+
parser (2.2.3.0)
|
29
|
+
ast (>= 1.1, < 3.0)
|
30
|
+
powerpack (0.1.1)
|
31
|
+
rainbow (2.0.0)
|
32
|
+
rake (10.4.2)
|
33
|
+
rspec (3.4.0)
|
34
|
+
rspec-core (~> 3.4.0)
|
35
|
+
rspec-expectations (~> 3.4.0)
|
36
|
+
rspec-mocks (~> 3.4.0)
|
37
|
+
rspec-core (3.4.1)
|
38
|
+
rspec-support (~> 3.4.0)
|
39
|
+
rspec-expectations (3.4.0)
|
40
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
+
rspec-support (~> 3.4.0)
|
42
|
+
rspec-mocks (3.4.0)
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
44
|
+
rspec-support (~> 3.4.0)
|
45
|
+
rspec-support (3.4.1)
|
46
|
+
rubinius-compiler (2.3.1)
|
47
|
+
rubinius-debugger (2.2.1)
|
48
|
+
rubocop (0.35.1)
|
49
|
+
astrolabe (~> 1.3)
|
50
|
+
parser (>= 2.2.3.0, < 3.0)
|
51
|
+
powerpack (~> 0.1)
|
52
|
+
rainbow (>= 1.99.1, < 3.0)
|
53
|
+
ruby-progressbar (~> 1.7)
|
54
|
+
tins (<= 1.6.0)
|
55
|
+
ruby-progressbar (1.7.5)
|
56
|
+
thor (0.19.1)
|
57
|
+
tins (1.6.0)
|
58
|
+
websocket-driver (0.6.3)
|
59
|
+
websocket-extensions (>= 0.1.0)
|
60
|
+
websocket-extensions (0.1.2)
|
61
|
+
yard (0.8.7.6)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
ruby
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
boty!
|
68
|
+
bundler (~> 1.10)
|
69
|
+
dotenv
|
70
|
+
fakefs
|
71
|
+
rake (~> 10.0)
|
72
|
+
rspec
|
73
|
+
rubinius-compiler
|
74
|
+
rubinius-debugger
|
75
|
+
rubocop
|
76
|
+
yard
|
77
|
+
|
78
|
+
BUNDLED WITH
|
79
|
+
1.11.2
|
data/lib/boty/cli.rb
CHANGED
@@ -9,6 +9,14 @@ module Boty
|
|
9
9
|
|
10
10
|
source_root File.expand_path("../../../template", __FILE__)
|
11
11
|
|
12
|
+
no_commands do
|
13
|
+
def compile(bot_name = "lib/boty")
|
14
|
+
@bot_name = "lib/boty"
|
15
|
+
template "project/bot.tt", "bin/bot"
|
16
|
+
run "chmod +x bin/bot"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
12
20
|
desc "new [BOT_NAME]",
|
13
21
|
"Creates a BOT_NAME dir with your new bot structure."
|
14
22
|
def new(bot_name)
|
data/lib/boty/version.rb
CHANGED
data/spec/boty/cli_spec.rb
CHANGED
@@ -10,17 +10,7 @@ module Boty
|
|
10
10
|
FileUtils.chdir "tmp"
|
11
11
|
end
|
12
12
|
|
13
|
-
before do
|
14
|
-
FileUtils.rm_rf "nice_bot" if Dir.exist? "nice_bot"
|
15
|
-
|
16
|
-
allow(cli).to receive(:ask)
|
17
|
-
.and_return ENV["SLACK_COMPANY"], ENV["SLACK_BOT_API_TOKEN"]
|
18
|
-
|
19
|
-
allow(cli).to receive(:run)
|
20
|
-
end
|
21
|
-
|
22
13
|
after(:all) do
|
23
|
-
FileUtils.rm_rf "nice_bot" if Dir.exist? "nice_bot"
|
24
14
|
FileUtils.chdir "../"
|
25
15
|
end
|
26
16
|
|
@@ -31,6 +21,19 @@ module Boty
|
|
31
21
|
end
|
32
22
|
end
|
33
23
|
|
24
|
+
before do
|
25
|
+
FileUtils.rm_rf "nice_bot" if Dir.exist? "nice_bot"
|
26
|
+
|
27
|
+
allow(cli).to receive(:ask)
|
28
|
+
.and_return ENV["SLACK_COMPANY"], ENV["SLACK_BOT_API_TOKEN"]
|
29
|
+
|
30
|
+
allow(cli).to receive(:run)
|
31
|
+
end
|
32
|
+
|
33
|
+
after(:all) do
|
34
|
+
FileUtils.rm_rf "nice_bot"
|
35
|
+
end
|
36
|
+
|
34
37
|
it "creates a directory named after the PROJECT" do
|
35
38
|
expect { create_nice_bot }.to create_directory "nice_bot"
|
36
39
|
end
|
@@ -83,5 +86,21 @@ module Boty
|
|
83
86
|
create_nice_bot
|
84
87
|
end
|
85
88
|
end
|
89
|
+
|
90
|
+
describe "#compile" do
|
91
|
+
before do
|
92
|
+
FileUtils.rm_rf "bin"
|
93
|
+
end
|
94
|
+
|
95
|
+
it "compiles the project/bot.tt onto bin/bot" do
|
96
|
+
expect(cli).to run "chmod +x bin/bot"
|
97
|
+
|
98
|
+
expect {
|
99
|
+
capture(:stdout) do
|
100
|
+
cli.compile
|
101
|
+
end
|
102
|
+
}.to create_file "bin/bot"
|
103
|
+
end
|
104
|
+
end
|
86
105
|
end
|
87
106
|
end
|
data/spec/happy_path_spec.rb
CHANGED
@@ -2,8 +2,20 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module Boty
|
4
4
|
RSpec.describe "happy pathy with integration", :project, :session do
|
5
|
+
Boty::Logger.adapter = Boty::Logger::Memory.new
|
6
|
+
|
7
|
+
def bot_with_memory_logger(bot_code)
|
8
|
+
original_logger = %{Boty::Logger.adapter = Boty::Logger::Multi.new([
|
9
|
+
::Logger.new(STDOUT),
|
10
|
+
::Logger.new("log/output.log", "daily")
|
11
|
+
])}
|
12
|
+
memory_logger = %{Boty::Logger.adapter = Boty::Logger::Memory.new}
|
13
|
+
|
14
|
+
bot_code.dup.tap { |code| code.sub! original_logger, memory_logger }
|
15
|
+
end
|
16
|
+
|
5
17
|
def start_session(only_knows: nil)
|
6
|
-
executable_bot = File.read
|
18
|
+
executable_bot = bot_with_memory_logger File.read("bot")
|
7
19
|
@session = instance_eval executable_bot, "bot", 1
|
8
20
|
return unless only_knows
|
9
21
|
|
data/template/project/bot.tt
CHANGED
@@ -3,11 +3,17 @@ require "./<%= bot_name %>"
|
|
3
3
|
|
4
4
|
Boty.locale = ARGV.pop || :en
|
5
5
|
|
6
|
+
Boty::Logger.adapter = Boty::Logger::Multi.new([
|
7
|
+
::Logger.new(STDOUT),
|
8
|
+
::Logger.new("log/output.log", "daily")
|
9
|
+
])
|
10
|
+
|
6
11
|
session = Boty::Session.new
|
7
12
|
session.start do
|
8
13
|
desc name, I18n.t("template.presence", bot_name: name)
|
9
14
|
hear(/#{name}/i) do
|
10
15
|
next if message_from_me?
|
16
|
+
logger.debug "saying hello"
|
11
17
|
say I18n.t "template.hello", user_name: user.name
|
12
18
|
end
|
13
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ricardo Valeriano
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- ".gitignore"
|
193
193
|
- ".rubocop.yml"
|
194
194
|
- ".travis.yml"
|
195
|
+
- CHANGELOG.md
|
195
196
|
- CODE_OF_CONDUCT.md
|
196
197
|
- Gemfile
|
197
198
|
- Gemfile.lock
|
@@ -207,7 +208,9 @@ files:
|
|
207
208
|
- docs/images/readme-02-screen-integration.png
|
208
209
|
- docs/images/readme-03-screen-integration.png
|
209
210
|
- exe/boty
|
211
|
+
- gemfiles/Gemfile.jruby
|
210
212
|
- gemfiles/Gemfile.rbx
|
213
|
+
- gemfiles/Gemfile.rbx.lock
|
211
214
|
- lib/boty.rb
|
212
215
|
- lib/boty/action.rb
|
213
216
|
- lib/boty/action_description.rb
|
@@ -233,6 +236,7 @@ files:
|
|
233
236
|
- lib/boty/slack/users.rb
|
234
237
|
- lib/boty/version.rb
|
235
238
|
- lib/tasks/.keep
|
239
|
+
- lib/tasks/bot/compile.rake
|
236
240
|
- locale/en.yml
|
237
241
|
- locale/pt-br.yml
|
238
242
|
- log/.keep
|
@@ -306,7 +310,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
310
|
version: '0'
|
307
311
|
requirements: []
|
308
312
|
rubyforge_project:
|
309
|
-
rubygems_version: 2.
|
313
|
+
rubygems_version: 2.5.1
|
310
314
|
signing_key:
|
311
315
|
specification_version: 4
|
312
316
|
summary: Boty is a pretty bot specially tailored for Slack.
|