bin_script 0.1.5 → 0.1.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.
- data/.gitignore +2 -1
- data/Gemfile.lock +1 -1
- data/README.markdown +5 -4
- data/bin/bin_helper +1 -1
- data/bin_script.gemspec +1 -1
- data/lib/bin_script/bin_script.rb +34 -14
- data/lib/bin_script/version.rb +1 -1
- data/lib/bin_script/xlogger.rb +1 -1
- data/spec/bin_script_spec.rb +7 -7
- metadata +4 -4
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -21,7 +21,7 @@ gem 'bin_script'
|
|
21
21
|
|
22
22
|
Call like:
|
23
23
|
|
24
|
-
$ cd project && ./bin/bla.rb -e production
|
24
|
+
$ cd project && ./bin/bla.rb -e production --test -d "2012-04-07" -u "asdf"
|
25
25
|
|
26
26
|
Features by default:
|
27
27
|
|
@@ -32,7 +32,6 @@ Features by default:
|
|
32
32
|
$ ./bin/bla.rb -e production --daemonize --pidfile=./tmp/bla.pid
|
33
33
|
|
34
34
|
|
35
|
-
|
36
35
|
Example Bin
|
37
36
|
-----------
|
38
37
|
app/models/bin/bla_script.rb
|
@@ -40,8 +39,10 @@ app/models/bin/bla_script.rb
|
|
40
39
|
``` ruby
|
41
40
|
class BlaScript < BinScript
|
42
41
|
optional :u, "Update string"
|
43
|
-
required :d, "Date in format YYYY-MM-DD or YYYY-MM"
|
44
|
-
noarg :t, "Test run"
|
42
|
+
required :d, :description => "Date in format YYYY-MM-DD or YYYY-MM", :default => "2012-04-01"
|
43
|
+
noarg :t, :decription => "Test run", :alias => 'test'
|
44
|
+
|
45
|
+
self.description = "Super Bla script"
|
45
46
|
|
46
47
|
def test?
|
47
48
|
params(:t)
|
data/bin/bin_helper
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
APP_ROOT ||= File.expand_path(File.dirname($0)) + "/../"
|
5
5
|
|
6
|
-
if defined?(DAEMONIZE) || ARGV.include?('--daemonize') #
|
6
|
+
if defined?(DAEMONIZE) || ARGV.include?('--daemonize') # for daemonize bin
|
7
7
|
ARGV.delete('--daemonize')
|
8
8
|
|
9
9
|
# Stolen from activesupport
|
data/bin_script.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.name = %q{bin_script}
|
6
6
|
s.version = BinScript::VERSION
|
7
7
|
|
8
|
-
s.authors = ["
|
8
|
+
s.authors = ["Makarchev Konstantin", "Lifshits Dmitry"]
|
9
9
|
s.autorequire = %q{init}
|
10
10
|
|
11
11
|
s.description = %q{Easy writing and executing bins(executable scripts) in Rails Application (especially for crontab or god)}
|
@@ -10,14 +10,14 @@ require File.dirname(__FILE__) + '/class_inheritable_attributes'
|
|
10
10
|
|
11
11
|
class BinScript
|
12
12
|
include ClassLevelInheritableAttributes
|
13
|
-
class_inheritable_attributes :parameters, :log_level, :enable_locking, :enable_logging, :date_log_postfix, :disable_puts_for_tests
|
13
|
+
class_inheritable_attributes :parameters, :log_level, :enable_locking, :enable_logging, :date_log_postfix, :disable_puts_for_tests, :description
|
14
14
|
|
15
15
|
# Default parameters
|
16
16
|
@parameters = [
|
17
|
-
{:key => :e, :type => :
|
17
|
+
{:key => :e, :type => :required, :description => "Rails environment ID (default - development)"},
|
18
18
|
{:key => :h, :type => :noarg, :description => "Print usage message", :alias => [:H, :help]},
|
19
|
-
{:key => :l, :type => :
|
20
|
-
{:key => :L, :type => :
|
19
|
+
{:key => :l, :type => :required, :description => "Path to log file (default \#{Rails.root}/log/[script_name].log)"},
|
20
|
+
{:key => :L, :type => :required, :description => "Path to lock file (default \#{Rails.root}/locks/[script_name].lock)"}
|
21
21
|
]
|
22
22
|
|
23
23
|
# Enable locking by default
|
@@ -28,16 +28,16 @@ class BinScript
|
|
28
28
|
|
29
29
|
# Default log level INFO or DEBUG for test env
|
30
30
|
@log_level = (RailsStub.env == 'development' ? XLogger::DEBUG : XLogger::INFO)
|
31
|
+
|
32
|
+
# Bin Description
|
33
|
+
@description = nil
|
31
34
|
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
# Например "_%Y-%m-%d_%H-%M-%S" - каждый запуск новый лог
|
36
|
-
# "_%Y-%m-%d" - каждый день новый лог
|
35
|
+
# By default, each bin logging into main log. Possible to specify log name for date.
|
36
|
+
# Examples: "_%Y-%m-%d_%H-%M-%S" - each execute, new log
|
37
|
+
# "_%Y-%m-%d" - each day, new log
|
37
38
|
@date_log_postfix = ''
|
38
39
|
|
39
|
-
#
|
40
|
-
# Если скрипт что-то выводит, это попадает в лог спеков, что не красиво. Так что для таких скриптов лучше включать эту опцию
|
40
|
+
# BinScript can output with puts, for specs puts is not good, this option disable puts in test env
|
41
41
|
@disable_puts_for_tests = false
|
42
42
|
|
43
43
|
# Allowed parameter types. Equivalence aliases with GetoptLong constants.
|
@@ -180,9 +180,17 @@ class BinScript
|
|
180
180
|
def usage(message = nil)
|
181
181
|
usage_msg = ''
|
182
182
|
usage_msg += "Error: #{message}\n\n" unless message.nil?
|
183
|
-
usage_msg += "Use: ./bin/#{script_name}.rb [OPTIONS]\n\
|
183
|
+
usage_msg += "Use: ./bin/#{script_name}.rb [OPTIONS]\n\n"
|
184
|
+
usage_msg += "\"#{self.description}\"\n\n" if message.nil? && self.description.present?
|
185
|
+
usage_msg += "Availible options:\n\n"
|
186
|
+
|
184
187
|
@parameters.each do |param|
|
185
|
-
|
188
|
+
arg = case param[:type]
|
189
|
+
when :required then " v "
|
190
|
+
when :optional then "[v]"
|
191
|
+
when :noarg then " "
|
192
|
+
end
|
193
|
+
usage_msg += " #{prefix_key param[:key]}#{arg} #{param[:description]}\n"
|
186
194
|
end
|
187
195
|
usage_msg += "\n"
|
188
196
|
usage_msg
|
@@ -230,6 +238,17 @@ class BinScript
|
|
230
238
|
usage_exit e.message
|
231
239
|
end
|
232
240
|
end
|
241
|
+
|
242
|
+
def check_required_params
|
243
|
+
self.class.parameters.each do |param|
|
244
|
+
if param[:type] == :required && @params_values.has_key?(param[:key])
|
245
|
+
if @params_values[param[:key]].nil?
|
246
|
+
error "Param #{param[:key]} require value, but not present"
|
247
|
+
usage_exit
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
233
252
|
|
234
253
|
# Create lock file, call script code and unlock file even if error happend.
|
235
254
|
def run!
|
@@ -237,6 +256,8 @@ class BinScript
|
|
237
256
|
# Print usage and exit if asked
|
238
257
|
usage_exit if params(:h)
|
239
258
|
|
259
|
+
check_required_params
|
260
|
+
|
240
261
|
info "====================="
|
241
262
|
|
242
263
|
# Create and check lock file if enabled
|
@@ -320,7 +341,6 @@ class BinScript
|
|
320
341
|
when :noarg
|
321
342
|
return (@overrided_parameters.has_key?(key) && @overrided_parameters[key]) || !@params_values[key].nil?
|
322
343
|
when :optional
|
323
|
-
#return nil unless @overrided_parameters.has_key?(key) || @params_values.has_key?(key)
|
324
344
|
return @overrided_parameters[key] || @params_values[key] || param[:default]
|
325
345
|
when :required
|
326
346
|
value = @overrided_parameters[key] || @params_values[key] || param[:default]
|
data/lib/bin_script/version.rb
CHANGED
data/lib/bin_script/xlogger.rb
CHANGED
data/spec/bin_script_spec.rb
CHANGED
@@ -111,13 +111,13 @@ Use: ./bin/test_script.rb [OPTIONS]
|
|
111
111
|
|
112
112
|
Availible options:
|
113
113
|
|
114
|
-
-e Rails environment ID (default - development)
|
115
|
-
-h
|
116
|
-
-l Path to log file (default \#{Rails.root}/log/[script_name].log
|
117
|
-
-L Path to lock file (default \#{Rails.root}/
|
118
|
-
-n
|
119
|
-
-o
|
120
|
-
-r Test parameter that should have argument
|
114
|
+
-e v Rails environment ID (default - development)
|
115
|
+
-h Print usage message
|
116
|
+
-l v Path to log file (default \#{Rails.root}/log/[script_name].log)
|
117
|
+
-L v Path to lock file (default \#{Rails.root}/locks/[script_name].lock)
|
118
|
+
-n Test parameter that can't have argument
|
119
|
+
-o[v] Test parameter that can have argument
|
120
|
+
-r v Test parameter that should have argument
|
121
121
|
|
122
122
|
USAGE
|
123
123
|
TestScript.usage.should == USAGE
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bin_script
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
- Lifshits Dmitry
|
14
13
|
- Makarchev Konstantin
|
14
|
+
- Lifshits Dmitry
|
15
15
|
autorequire: init
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|