scripting 0.2.1 → 0.2.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -4,7 +4,8 @@ module Scripting
4
4
  class Command
5
5
  attr_reader :name
6
6
 
7
- def initialize name
7
+ def initialize app, name
8
+ @app = app
8
9
  @name = name.to_s.downcase.to_sym
9
10
  @description = nil
10
11
  @work = lambda {} # noop by default
@@ -28,7 +29,7 @@ module Scripting
28
29
  end
29
30
 
30
31
  def run! *args
31
- @work.call(*args)
32
+ @app.instance_exec(*args, &work)
32
33
  end
33
34
  end
34
35
 
@@ -48,21 +49,25 @@ module Scripting
48
49
 
49
50
  work do |*args|
50
51
  name = args.shift.downcase.to_sym rescue nil
51
- command = options.commands[name]
52
- if command.nil?
53
- help!
54
- puts "\nCommand: #{name} is not known"
55
- exit
56
- end
57
-
58
- command.run! *args
52
+ run_command! name, *args
59
53
  end
60
54
  end
61
55
  end
62
56
 
63
57
  module InstanceMethods
64
58
  def command name, &blk
65
- options.commands[name] = Command.new(name).describe(&blk)
59
+ options.commands[name] = Command.new(self, name).describe(&blk)
60
+ end
61
+
62
+ def run_command! name, *args
63
+ command = options.commands[name]
64
+ if command.nil?
65
+ help!
66
+ $stderr.puts "\n\nCommand: #{name} is not known"
67
+ exit
68
+ end
69
+
70
+ command.run! *args
66
71
  end
67
72
  end
68
73
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{scripting}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["sdeming"]
12
- s.date = %q{2011-03-28}
12
+ s.date = %q{2011-05-19}
13
13
  s.description = %q{Simplified command line scripting tool}
14
14
  s.email = %q{sdeming@makefile.com}
15
15
  s.extra_rdoc_files = [
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  s.homepage = %q{http://github.com/sdeming/scripting}
44
44
  s.licenses = ["MIT"]
45
45
  s.require_paths = ["lib"]
46
- s.rubygems_version = %q{1.6.1}
46
+ s.rubygems_version = %q{1.6.2}
47
47
  s.summary = %q{Simplified command line scripting tool}
48
48
  s.test_files = [
49
49
  "examples/command.rb",
@@ -2,11 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe Scripting::Commands do
4
4
  it "should symbolize and downcase the command name" do
5
- Scripting::Commands::Command.new(:testing).name.should == :testing
6
- Scripting::Commands::Command.new(:Testing).name.should == :testing
7
- Scripting::Commands::Command.new('testing').name.should == :testing
8
- Scripting::Commands::Command.new("Testing").name.should == :testing
9
- Scripting::Commands::Command.new("TESTING").name.should == :testing
5
+ Scripting::Commands::Command.new(nil, :testing).name.should == :testing
6
+ Scripting::Commands::Command.new(nil, :Testing).name.should == :testing
7
+ Scripting::Commands::Command.new(nil, 'testing').name.should == :testing
8
+ Scripting::Commands::Command.new(nil, "Testing").name.should == :testing
9
+ Scripting::Commands::Command.new(nil, "TESTING").name.should == :testing
10
10
  end
11
11
  end
12
12
 
@@ -21,6 +21,9 @@ describe Scripting::Commands::Command do
21
21
  @app = Scripting::create_application do
22
22
  plugin Scripting::Commands
23
23
 
24
+ def some_method; :some_method_return_value; end
25
+ options { some_option :some_option }
26
+
24
27
  command :answer do
25
28
  description "The answer to life, the universe, and everything"
26
29
  work { puts 42 }
@@ -35,6 +38,21 @@ describe Scripting::Commands::Command do
35
38
  description "Add two numbers"
36
39
  work { |a,b| puts a.to_f + b.to_f }
37
40
  end
41
+
42
+ command :context do
43
+ description "Print self.inspect"
44
+ work { print self.object_id }
45
+ end
46
+
47
+ command :call_some_method do
48
+ description "Call the some_method method"
49
+ work { print some_method.to_s }
50
+ end
51
+
52
+ command :print_some_option do
53
+ description "Print some_option value"
54
+ work { print options.some_option.to_s }
55
+ end
38
56
  end
39
57
  end
40
58
 
@@ -61,4 +79,18 @@ describe Scripting::Commands::Command do
61
79
  @stdout.should == "to infinity and beyond!\nHello world!\n"
62
80
  end
63
81
 
82
+ it "should run in the context of the application" do
83
+ @app.run! 'context'
84
+ @stdout.should == @app.object_id.to_s
85
+ end
86
+
87
+ it "should call local application methods directly" do
88
+ @app.run! 'call_some_method'
89
+ @stdout.should == @app.some_method.to_s
90
+ end
91
+
92
+ it "should have direct access to options" do
93
+ @app.run! 'print_some_option'
94
+ @stdout.should == @app.options.some_option.to_s
95
+ end
64
96
  end
metadata CHANGED
@@ -1,61 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: scripting
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
4
5
  prerelease:
5
- version: 0.2.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - sdeming
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-03-28 00:00:00 -04:00
12
+ date: 2011-05-19 00:00:00.000000000 -04:00
14
13
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: rspec
18
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &24480720 !ruby/object:Gem::Requirement
19
18
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
23
22
  version: 2.5.0
24
23
  type: :development
25
24
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *24480720
26
+ - !ruby/object:Gem::Dependency
28
27
  name: jeweler
29
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &24480220 !ruby/object:Gem::Requirement
30
29
  none: false
31
- requirements:
30
+ requirements:
32
31
  - - ~>
33
- - !ruby/object:Gem::Version
32
+ - !ruby/object:Gem::Version
34
33
  version: 1.5.2
35
34
  type: :development
36
35
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *24480220
37
+ - !ruby/object:Gem::Dependency
39
38
  name: rcov
40
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &24479700 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
46
45
  type: :development
47
46
  prerelease: false
48
- version_requirements: *id003
47
+ version_requirements: *24479700
49
48
  description: Simplified command line scripting tool
50
49
  email: sdeming@makefile.com
51
50
  executables: []
52
-
53
51
  extensions: []
54
-
55
- extra_rdoc_files:
52
+ extra_rdoc_files:
56
53
  - LICENSE.txt
57
54
  - README.rdoc
58
- files:
55
+ files:
59
56
  - Gemfile
60
57
  - Gemfile.lock
61
58
  - LICENSE.txt
@@ -80,36 +77,34 @@ files:
80
77
  - spec/spec_helper.rb
81
78
  has_rdoc: true
82
79
  homepage: http://github.com/sdeming/scripting
83
- licenses:
80
+ licenses:
84
81
  - MIT
85
82
  post_install_message:
86
83
  rdoc_options: []
87
-
88
- require_paths:
84
+ require_paths:
89
85
  - lib
90
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
91
87
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 4148192804319844985
96
- segments:
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ segments:
97
93
  - 0
98
- version: "0"
99
- required_rubygems_version: !ruby/object:Gem::Requirement
94
+ hash: 2683478235931159130
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
96
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: "0"
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
105
101
  requirements: []
106
-
107
102
  rubyforge_project:
108
- rubygems_version: 1.6.1
103
+ rubygems_version: 1.6.2
109
104
  signing_key:
110
105
  specification_version: 3
111
106
  summary: Simplified command line scripting tool
112
- test_files:
107
+ test_files:
113
108
  - examples/command.rb
114
109
  - examples/simple.rb
115
110
  - spec/app_defaults_spec.rb