scripting 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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