slackbot_frd 0.0.5 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2240170ccf01432884e8c7074a50cb0f64dfa69
4
- data.tar.gz: e7c68384e40e0c33eb2ba5e1d4559642165d0406
3
+ metadata.gz: 5bb68aca99439d177c185daf2ca3009ed2926868
4
+ data.tar.gz: 8d35953ceec1d879df5d1cd0735cbef50b63f439
5
5
  SHA512:
6
- metadata.gz: 201766121026759cf6d3d0c49e9251b0fd5513d0101ceb8d89d47e81a8241f6e3eb67f99659c022299d74f5fef8354721e2e9570b32f27791c21c880b46a6689
7
- data.tar.gz: de8ed18267661681bb6f9d0238b285ec2d4419b156674db40a94a2b4bf5e3cb82baad9eb7e0c252023338ad28f953a5de034d48545900a17ec6409ba5731d713
6
+ metadata.gz: a6e04365893893331d10d2a7f4c31cf9f23e78d9a9d18263b051d41a889ad5760133bf376aa28f8816f6518aae187166f8302ec5b658a4066bf69af9fba86177
7
+ data.tar.gz: f34fed3e5bb0ff20ac207834f17838160322cdc295c52cbc342992319806b597b39751184966e7695b865bdddb7918905e599c99b6217db36c300aa441c1129c
data/bin/slackbot-frd CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'thor'
4
4
  require 'json'
5
5
 
6
+ require 'active_support/core_ext/string'
7
+
6
8
  require 'slackbot_frd/initializer/bot_starter'
7
9
  require 'slackbot_frd/lib/slack_connection'
8
10
  require 'slackbot_frd/lib/bot'
@@ -45,8 +47,31 @@ class SlackbotFrdBin < Thor
45
47
  long_desc <<-LONGDESC
46
48
  new will generate a skeleton for a new slackbot_frd project
47
49
  LONGDESC
48
- def genconfig
49
-
50
+ option :nospec, type: :boolean, aliases: 'n'
51
+ def new(proj_name)
52
+ if Dir.exists?(proj_name)
53
+ puts "Directory '#{proj_name}' already exists".red
54
+ return
55
+ end
56
+ Dir.mkdir(proj_name)
57
+ Dir.chdir(proj_name)
58
+ genconfig
59
+ File.write("Gemfile", <<-GEMFILE.strip_heredoc)
60
+ source "https://rubygems.org"
61
+
62
+ gem "slackbot_frd"
63
+ GEMFILE
64
+ Dir.mkdir("bots")
65
+ write_example_bot("bots/example_bot.rb")
66
+ Dir.mkdir("lib")
67
+
68
+ unless options[:nospec]
69
+ File.append("Gemfile", <<-GEMFILE.strip_heredoc)
70
+
71
+ gem "rspec", "~> 3.2"
72
+ GEMFILE
73
+ Dir.mkdir("spec")
74
+ end
50
75
  end
51
76
 
52
77
  desc "genconfig", "Generate a skeleton config file"
@@ -55,7 +80,7 @@ class SlackbotFrdBin < Thor
55
80
  can be customized
56
81
  LONGDESC
57
82
  def genconfig
58
- File.write(config_file_location, <<-CONFIG_FILE_SKELETON)
83
+ File.write(config_file_location, <<-CONFIG_FILE_SKELETON.strip_heredoc)
59
84
  {
60
85
  "token" : "<put-token-here>",
61
86
  "botdir" : ".",
@@ -77,8 +102,10 @@ class SlackbotFrdBin < Thor
77
102
  LONGDESC
78
103
  option :daemonize, type: :boolean, aliases: 'd'
79
104
  option :botdir, type: :string, aliases: 'b'
80
- option 'config-file'.to_sym, type: :string, aliases: 'c'
81
105
  option :token, type: :string, aliases: 't'
106
+ option 'config-file', type: :string, aliases: 'c'
107
+ option 'log-level', type: :string, aliases: 'll'
108
+ option 'log-file', type: :string, aliases: 'lf'
82
109
  def start(*bots)
83
110
  if running?(watcher_pid)
84
111
  SlackbotFrd::Log.warn("Already running. Not starting again")
@@ -88,7 +115,7 @@ class SlackbotFrdBin < Thor
88
115
  delete_pid_files
89
116
  delfile(ERROR_FILE)
90
117
 
91
- config_file = options['config-file'.to_sym]
118
+ config_file = options['config-file']
92
119
  config_file = config_file_location unless config_file
93
120
  json = config_file_json(config_file) if config_file
94
121
  json ||= {}
@@ -105,8 +132,35 @@ class SlackbotFrdBin < Thor
105
132
  botdir = File.expand_path(botdir)
106
133
 
107
134
  SlackbotFrd::Log.logfile = "#{botdir}/#{LOG_FILE}"
135
+ SlackbotFrd::Log.logfile = json["log_file"] if json["log_file"]
136
+ SlackbotFrd::Log.logfile = ENV["SLACKBOT_FRD_LOG_FILE"] if ENV["SLACKBOT_FRD_LOG_FILE"]
137
+ SlackbotFrd::Log.logfile = options["log-file"] if options['log-file']
138
+
139
+ SlackbotFrd::Log.level = :info
140
+ SlackbotFrd::Log.level = json["log_level"] if json["log_level"]
141
+ SlackbotFrd::Log.level = ENV["SLACKBOT_FRD_LOG_LEVEL"] if ENV["SLACKBOT_FRD_LOG_LEVEL"]
142
+ SlackbotFrd::Log.level = options["log-level"] if options['log-level']
143
+
144
+ # If we got a number for log level that is valid, just use that
145
+ if SlackbotFrd::Log.level =~ /\d+/ && SlackbotFrd::Log.levels.values.include?(SlackbotFrd::Log.level.to_i)
146
+ SlackbotFrd::Log.level = SlackbotFrd::Log.levels.key(SlackbotFrd::Log.level.to_i)
147
+ else
148
+ SlackbotFrd::Log.level = SlackbotFrd::Log.level.to_sym
149
+ end
150
+
151
+ if !SlackbotFrd::Log.levels.keys.include?(SlackbotFrd::Log.level) &&
152
+ !SlackbotFrd::Log.levels.values.include?(SlackbotFrd::Log.level)
153
+ setval = SlackbotFrd::Log.level
154
+ SlackbotFrd::Log.level = :info
155
+ SlackbotFrd::Log.error("Invalid log level '#{setval}'. Possible levels: #{SlackbotFrd::Log.levels.keys.map(&:to_s).join(" | ")}")
156
+ return
157
+ end
158
+
108
159
  SlackbotFrd::Log.info("Logging to file '#{SlackbotFrd::Log.logfile}'")
109
160
 
161
+ SlackbotFrd::Log.warn("Logging to file '#{SlackbotFrd::Log.logfile}'")
162
+ SlackbotFrd::Log.warn("Logging level set to '#{SlackbotFrd::Log.level}'")
163
+
110
164
  token = json["token"]
111
165
  token = ENV["SLACKBOT_FRD_TOKEN"] if ENV["SLACKBOT_FRD_TOKEN"]
112
166
  token = options[:token] if options[:token]
@@ -248,6 +302,34 @@ class SlackbotFrdBin < Thor
248
302
  delfile(PID_FILE_WATCHER)
249
303
  delfile(PID_FILE_CONNECTION)
250
304
  end
305
+
306
+ private
307
+ def write_example_bot(file)
308
+ File.write(file, <<-EXAMPLE_BOT.strip_heredoc)
309
+ require 'slackbot_frd'
310
+
311
+ # Subclass SlackbotFrd::Bot so that slackbot-frd start runs our bot
312
+ class ExampleBot < SlackbotFrd::Bot
313
+ def add_callbacks(slack_connection)
314
+ # When a user sends a message, echo that message back in reverse
315
+ slack_connection.on_message do |user, channel, message|
316
+ slack_connection.send_message(channel, message.reverse)
317
+ end
318
+
319
+ # When a user joins a channel, greet that user as a bot
320
+ slack_connection.on_channel_joined do |user, channel|
321
+ slack_connection.send_message_as_user(
322
+ channel,
323
+ ":skull: ohai \#{user}, welcome to #\#{channel}! :ghost:",
324
+ "Graveyard Greeting Bot",
325
+ ":graveyard:",
326
+ true
327
+ )
328
+ end
329
+ end
330
+ end
331
+ EXAMPLE_BOT
332
+ end
251
333
  end
252
334
 
253
335
  SlackbotFrdBin.start(ARGV)
@@ -3,11 +3,12 @@ require 'colorize'
3
3
  module SlackbotFrd
4
4
  class Log
5
5
  @levels = {verbose: 1, debug: 2, info: 3, warn: 4, error: 5}
6
- @default_level = :debug
6
+ @default_level = :info
7
7
 
8
8
  class << self
9
9
  attr_writer :level
10
10
  attr_accessor :logfile
11
+ attr_reader :levels
11
12
  end
12
13
 
13
14
  def self.level
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackbot_frd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Porter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-15 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: ptools
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.3'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.3'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: byebug
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -190,3 +204,4 @@ specification_version: 4
190
204
  summary: slackbot_frd provides a dirt-simple framework for implementing one or more
191
205
  slack bots
192
206
  test_files: []
207
+ has_rdoc: