patir 0.6.4 → 0.7.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.
- data/.gemtest +0 -0
- data/History.txt +8 -2
- data/Manifest.txt +2 -23
- data/README.txt +8 -18
- data/Rakefile +12 -10
- data/lib/patir/base.rb +6 -10
- data/lib/patir/command.rb +26 -35
- data/lib/patir/configuration.rb +1 -1
- data/test/test_patir_command.rb +11 -1
- metadata +55 -51
- data/docu/bg_menu.gif +0 -0
- data/docu/bg_submenu.gif +0 -0
- data/docu/contact.html +0 -49
- data/docu/index.html +0 -140
- data/docu/patir02.html +0 -52
- data/docu/patir03.html +0 -56
- data/docu/patir04.html +0 -54
- data/docu/patir05.html +0 -53
- data/docu/rutema01.html +0 -53
- data/docu/rutema02.html +0 -54
- data/docu/rutema03.html +0 -63
- data/docu/rutema04.html +0 -75
- data/docu/rw-intro.png +0 -0
- data/docu/rw-run.png +0 -0
- data/docu/rw-scenario.png +0 -0
- data/docu/screenshots.html +0 -51
- data/docu/style.css +0 -96
- data/docu/tie_logo.gif +0 -0
- data/docu/welcome.html +0 -48
data/.gemtest
ADDED
File without changes
|
data/History.txt
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
==0.
|
2
|
-
*
|
1
|
+
==0.7.0 / 2011-08-11
|
2
|
+
* Ruby 1.9 compatibility
|
3
|
+
* updated systemu dependency
|
4
|
+
* Unit tests extended
|
5
|
+
* added context parameter to RubyCommand instances
|
6
|
+
* ShellCommand now sets the error output consistently (at times it was nil)
|
3
7
|
|
8
|
+
==0.6.4 / 2009-09-04
|
9
|
+
* context parameter added to Command#run
|
4
10
|
==0.6.3
|
5
11
|
* Repository restructured (git is used internally so the svn repository matches now the master branch)
|
6
12
|
* Cleanup. Some obsolete code was removed
|
data/Manifest.txt
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
COPYING.txt
|
1
2
|
History.txt
|
2
3
|
Manifest.txt
|
3
4
|
README.txt
|
@@ -6,29 +7,7 @@ Rakefile
|
|
6
7
|
lib/patir/base.rb
|
7
8
|
lib/patir/command.rb
|
8
9
|
lib/patir/configuration.rb
|
10
|
+
test/samples/empty.cfg
|
9
11
|
test/test_patir_base.rb
|
10
12
|
test/test_patir_command.rb
|
11
13
|
test/test_patir_configuration.rb
|
12
|
-
test/samples/empty.cfg
|
13
|
-
docu/style.css
|
14
|
-
docu/tie_logo.gif
|
15
|
-
docu/welcome.html
|
16
|
-
docu/bg_menu.gif
|
17
|
-
docu/bg_submenu.gif
|
18
|
-
docu/contact.html
|
19
|
-
docu/index.html
|
20
|
-
docu/patir02.html
|
21
|
-
docu/patir03.html
|
22
|
-
docu/patir04.html
|
23
|
-
docu/patir05.html
|
24
|
-
docu/rutema01.html
|
25
|
-
docu/rutema02.html
|
26
|
-
docu/rutema03.html
|
27
|
-
docu/rutema04.html
|
28
|
-
docu/rw-intro.png
|
29
|
-
docu/rw-run.png
|
30
|
-
docu/rw-scenario.png
|
31
|
-
docu/screenshots.html
|
32
|
-
docu/style.css
|
33
|
-
docu/tie_logo.gif
|
34
|
-
docu/welcome.html
|
data/README.txt
CHANGED
@@ -1,32 +1,22 @@
|
|
1
|
-
patir
|
2
|
-
|
1
|
+
patir http://patir.rubyforge.org
|
3
2
|
== DESCRIPTION:
|
4
3
|
|
5
|
-
patir provides
|
6
|
-
|
7
|
-
== FEATURES/PROBLEMS:
|
8
|
-
|
9
|
-
* Configuration library for creating Ruby configuration files
|
10
|
-
* Command library abstracting the execution of commands
|
11
|
-
|
12
|
-
== SYNOPSIS:
|
13
|
-
|
14
|
-
patir is the library of common functionality used in the patir projects.
|
15
|
-
This includes a class that allows you to build configuration files in Ruby and a library for command abstraction.
|
16
|
-
|
17
|
-
== REQUIREMENTS:
|
4
|
+
patir provides code to enable project automation tasks:
|
18
5
|
|
19
|
-
*
|
6
|
+
* A default logging format for ruby's built-in Logger
|
7
|
+
* A command abstraction (Patir::Command) with a platform independent implementation for running shell commands (Patir::ShellCommand) and ruby code (Patir::RubyCommand)
|
8
|
+
* Command sequences using the same command abstraction as single commands.
|
9
|
+
* Code that allows the use of configuration files written in ruby.
|
20
10
|
|
21
11
|
== INSTALL:
|
22
12
|
|
23
|
-
|
13
|
+
gem install patir
|
24
14
|
|
25
15
|
== LICENSE:
|
26
16
|
|
27
17
|
(The Ruby License)
|
28
18
|
|
29
|
-
patir is copyright (c) 2007 Vassilis Rizopoulos
|
19
|
+
patir is copyright (c) 2007-2011 Vassilis Rizopoulos
|
30
20
|
|
31
21
|
You can redistribute it and/or modify it under either the terms of the GPL
|
32
22
|
(see COPYING.txt file), or the conditions below:
|
data/Rakefile
CHANGED
@@ -4,16 +4,18 @@ require 'rubygems'
|
|
4
4
|
require 'hoe'
|
5
5
|
require 'patir/base'
|
6
6
|
|
7
|
-
Hoe.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
Hoe.plugins.delete :compiler
|
8
|
+
|
9
|
+
Hoe.spec('patir') do
|
10
|
+
self.version = Patir::Version::STRING
|
11
|
+
self.rubyforge_name = 'patir'
|
12
|
+
self.author = "Vassilis Rizopoulos"
|
13
|
+
self.email = "vassilisrizopoulos@gmail.com"
|
14
|
+
self.summary = 'patir (Project Automation Tools in Ruby) provides libraries for use in project automation tools'
|
15
|
+
self.description = paragraphs_of('README.md', 1..4).join("\n\n")
|
16
|
+
self.url = "http://patir.rubyforge.org"
|
17
|
+
self.changes = paragraphs_of('History.txt', 0..1).join("\n\n")
|
18
|
+
extra_deps<<['systemu',"~>2.2.0"]
|
17
19
|
end
|
18
20
|
|
19
21
|
# vim: syntax=Ruby
|
data/lib/patir/base.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
# Copyright (c) 2007 Vassilis Rizopoulos. All rights reserved.
|
1
|
+
# Copyright (c) 2007-2010 Vassilis Rizopoulos. All rights reserved.
|
2
2
|
require 'logger'
|
3
3
|
#This is the base module of the Patir system. It contains some usefull helper methods used by all child projects.
|
4
4
|
module Patir
|
5
5
|
#The Patir version used
|
6
6
|
module Version
|
7
7
|
MAJOR=0
|
8
|
-
MINOR=
|
9
|
-
TINY=
|
8
|
+
MINOR=7
|
9
|
+
TINY=0
|
10
10
|
STRING=[ MAJOR, MINOR, TINY ].join( "." )
|
11
11
|
end
|
12
12
|
#Error thrown usually in initialize methods when missing required parameters
|
@@ -32,13 +32,9 @@ module Patir
|
|
32
32
|
#It creates a logger just as we want it.
|
33
33
|
#
|
34
34
|
#mode can be
|
35
|
-
#
|
36
|
-
|
37
|
-
#
|
38
|
-
#:silent to set the level to WARN
|
39
|
-
#
|
40
|
-
#:debug to set the level to DEBUG. Debug is set also if $DEBUG is true.
|
41
|
-
#
|
35
|
+
# :mute to set the level to FATAL
|
36
|
+
# :silent to set the level to WARN
|
37
|
+
# :debug to set the level to DEBUG. Debug is set also if $DEBUG is true.
|
42
38
|
#The default logger level is INFO
|
43
39
|
def self.setup_logger(filename=nil,mode=nil)
|
44
40
|
if filename
|
data/lib/patir/command.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2007 Vassilis Rizopoulos. All rights reserved.
|
1
|
+
# Copyright (c) 2007-2010 Vassilis Rizopoulos. All rights reserved.
|
2
2
|
require 'observer'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'rubygems'
|
@@ -83,14 +83,10 @@ module Patir
|
|
83
83
|
#returns the command status.
|
84
84
|
#
|
85
85
|
#valid stati are
|
86
|
-
#
|
87
|
-
|
88
|
-
#
|
89
|
-
|
90
|
-
#
|
91
|
-
#:error when the command has an error
|
92
|
-
#
|
93
|
-
#:warning when the command finished without errors, but there where warnings
|
86
|
+
# :not_executed when the command was not run
|
87
|
+
# :success when the command has finished succesfully
|
88
|
+
# :error when the command has an error
|
89
|
+
# :warning when the command finished without errors, but there where warnings
|
94
90
|
def status
|
95
91
|
#initialize nil values to something meaningful
|
96
92
|
@status||=:not_executed
|
@@ -98,16 +94,14 @@ module Patir
|
|
98
94
|
end
|
99
95
|
end
|
100
96
|
|
101
|
-
#This class wraps the
|
97
|
+
#This class wraps the Command interface around https://github.com/ahoward/systemu
|
102
98
|
#
|
103
|
-
#It allows for execution of any shell command.
|
99
|
+
#It allows for execution of any shell command on any platform.
|
104
100
|
#
|
105
101
|
#Accepted keys are
|
106
|
-
#
|
107
|
-
|
108
|
-
#
|
109
|
-
#:working_directory for specifying the working directory (default is '.') and :name for assigning a name to the command (default is "").
|
110
|
-
#
|
102
|
+
# :cmd - the shell command to execute (required - ParameterException will be raised).
|
103
|
+
# :working_directory - specify the working directory (default is '.')
|
104
|
+
# :name - assign a name to the command (default is "").
|
111
105
|
class ShellCommand
|
112
106
|
include Command
|
113
107
|
#The constructor will throw CommandError if :cmd is missing.
|
@@ -127,7 +121,6 @@ module Patir
|
|
127
121
|
#Executes the shell command and returns the status
|
128
122
|
def run context=nil
|
129
123
|
start_time=Time.now
|
130
|
-
super
|
131
124
|
begin
|
132
125
|
#create the working directory if it does not exist
|
133
126
|
FileUtils::mkdir_p(@working_directory,:verbose=>false)
|
@@ -150,6 +143,8 @@ module Patir
|
|
150
143
|
@status=:warning
|
151
144
|
end
|
152
145
|
rescue
|
146
|
+
#if it blows in systemu it will be nil
|
147
|
+
@error||=""
|
153
148
|
@error<<"\n#{$!.message}"
|
154
149
|
@error<<"\n#{$!.backtrace}" if $DEBUG
|
155
150
|
@status=:error
|
@@ -320,18 +315,12 @@ module Patir
|
|
320
315
|
#In order to extract the status from steps, classes should quack to the rythm of Command. CommandSequenceStatus does this, so you can nest Stati
|
321
316
|
#
|
322
317
|
#The status of an action sequence is :not_executed, :running, :success, :warning or :error and represents the overall status
|
323
|
-
#
|
324
|
-
|
325
|
-
#
|
326
|
-
#:running is set while the sequence is running.
|
327
|
-
#
|
318
|
+
# :not_executed is set when all steps are :not_executed
|
319
|
+
# :running is set while the sequence is running.
|
328
320
|
#Upon completion or interruption one of :success, :error or :warning will be set.
|
329
|
-
#
|
330
|
-
|
331
|
-
#
|
332
|
-
#:warning is set when at least one step generates warnings and there are no failures.
|
333
|
-
#
|
334
|
-
#:error is set when after execution at least one step has the :error status
|
321
|
+
# :success is set when all steps are succesfull.
|
322
|
+
# :warning is set when at least one step generates warnings and there are no failures.
|
323
|
+
# :error is set when after execution at least one step has the :error status
|
335
324
|
class CommandSequenceStatus
|
336
325
|
attr_accessor :start_time,:stop_time,:sequence_runner,:sequence_name,:status,:step_states,:sequence_id,:strategy
|
337
326
|
#You can pass an array of Commands to initialize CommandSequenceStatus
|
@@ -466,16 +455,16 @@ module Patir
|
|
466
455
|
#== Examples
|
467
456
|
#An example (using the excellent HighLine lib) of a CLI prompt as a RubyCommand
|
468
457
|
# RubyCommand.new("prompt") do |cmd|
|
469
|
-
#
|
470
|
-
#
|
471
|
-
#
|
472
|
-
#
|
473
|
-
#
|
474
|
-
# end
|
458
|
+
# cmd.output=""
|
459
|
+
# cmd.error=""
|
460
|
+
# unless HighLine.agree("#{step.text}?")
|
461
|
+
# cmd.error="Why not?"
|
462
|
+
# raise "You did not agree"
|
475
463
|
# end
|
464
|
+
# end
|
476
465
|
class RubyCommand
|
477
466
|
include Patir::Command
|
478
|
-
attr_reader :cmd,:working_directory
|
467
|
+
attr_reader :cmd,:working_directory,:context
|
479
468
|
def initialize name,working_directory=nil,&block
|
480
469
|
@name=name
|
481
470
|
@working_directory=working_directory||"."
|
@@ -488,6 +477,7 @@ module Patir
|
|
488
477
|
#Runs the associated block
|
489
478
|
def run context=nil
|
490
479
|
@run=true
|
480
|
+
@context=context
|
491
481
|
begin
|
492
482
|
t1=Time.now
|
493
483
|
Dir.chdir(@working_directory) do
|
@@ -501,6 +491,7 @@ module Patir
|
|
501
491
|
ensure
|
502
492
|
@exec_time=Time.now-t1
|
503
493
|
end
|
494
|
+
@context=nil
|
504
495
|
return @status
|
505
496
|
end
|
506
497
|
end
|
data/lib/patir/configuration.rb
CHANGED
data/test/test_patir_command.rb
CHANGED
@@ -73,7 +73,7 @@ class TestShellCommand<Test::Unit::TestCase
|
|
73
73
|
#when passed a wroking directory, the command should change into that directory
|
74
74
|
def test_cwd
|
75
75
|
cmd=nil
|
76
|
-
assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"echo", :working_directory=>"
|
76
|
+
assert_nothing_raised(){cmd=ShellCommand.new(:cmd=>"echo", :working_directory=>"missing/")}
|
77
77
|
assert_nothing_raised(){cmd.run}
|
78
78
|
assert(cmd.success?)
|
79
79
|
end
|
@@ -222,6 +222,16 @@ class TestRubyCommand<Test::Unit::TestCase
|
|
222
222
|
assert(!cmd.success?, "Successful?!")
|
223
223
|
assert_equal(:error, cmd.status)
|
224
224
|
end
|
225
|
+
def test_context
|
226
|
+
context="complex"
|
227
|
+
cmd=RubyCommand.new("test"){|c| c.output=c.context}
|
228
|
+
assert_nothing_raised() { cmd.run(context)}
|
229
|
+
assert(cmd.success?, "Not successful.")
|
230
|
+
assert_equal(context, cmd.output)
|
231
|
+
assert_nothing_raised() { cmd.run("other")}
|
232
|
+
assert_equal("other", cmd.output)
|
233
|
+
assert_equal(:success, cmd.status)
|
234
|
+
end
|
225
235
|
end
|
226
236
|
|
227
237
|
class TestCommandSequenceStatus<Test::Unit::TestCase
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: patir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 0.7.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Vassilis Rizopoulos
|
@@ -9,85 +15,77 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
18
|
+
date: 2011-08-12 00:00:00 Z
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: systemu
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
|
-
- -
|
26
|
+
- - ~>
|
22
27
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
28
|
+
hash: 7
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
version: 2.2.0
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: hoe
|
27
|
-
|
28
|
-
|
29
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
30
41
|
requirements:
|
31
|
-
- -
|
42
|
+
- - ~>
|
32
43
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
44
|
+
hash: 21
|
45
|
+
segments:
|
46
|
+
- 2
|
47
|
+
- 11
|
48
|
+
version: "2.11"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
35
51
|
description: |-
|
36
|
-
|
52
|
+
##DESCRIPTION:
|
37
53
|
|
38
|
-
|
39
|
-
* Command library abstracting the execution of commands
|
54
|
+
patir provides code to enable project automation tasks:
|
40
55
|
|
41
|
-
|
56
|
+
* A default logging format for ruby's built-in Logger
|
57
|
+
* A command abstraction with a platform independent implementation for running shell commands and ruby code
|
58
|
+
* Command sequences using the same command abstraction as single commands.
|
59
|
+
* Code that allows the use of configuration files written in ruby.
|
42
60
|
|
43
|
-
|
44
|
-
This includes a class that allows you to build configuration files in Ruby and a library for command abstraction.
|
61
|
+
##INSTALL:
|
45
62
|
|
46
|
-
|
47
|
-
email:
|
63
|
+
gem install patir
|
64
|
+
email: vassilisrizopoulos@gmail.com
|
48
65
|
executables: []
|
49
66
|
|
50
67
|
extensions: []
|
51
68
|
|
52
69
|
extra_rdoc_files:
|
70
|
+
- COPYING.txt
|
53
71
|
- History.txt
|
54
72
|
- Manifest.txt
|
55
73
|
- README.txt
|
56
|
-
- COPYING.txt
|
57
74
|
files:
|
75
|
+
- COPYING.txt
|
58
76
|
- History.txt
|
59
77
|
- Manifest.txt
|
60
78
|
- README.txt
|
61
|
-
- COPYING.txt
|
62
79
|
- Rakefile
|
63
80
|
- lib/patir/base.rb
|
64
81
|
- lib/patir/command.rb
|
65
82
|
- lib/patir/configuration.rb
|
83
|
+
- test/samples/empty.cfg
|
66
84
|
- test/test_patir_base.rb
|
67
85
|
- test/test_patir_command.rb
|
68
86
|
- test/test_patir_configuration.rb
|
69
|
-
-
|
70
|
-
|
71
|
-
- docu/tie_logo.gif
|
72
|
-
- docu/welcome.html
|
73
|
-
- docu/bg_menu.gif
|
74
|
-
- docu/bg_submenu.gif
|
75
|
-
- docu/contact.html
|
76
|
-
- docu/index.html
|
77
|
-
- docu/patir02.html
|
78
|
-
- docu/patir03.html
|
79
|
-
- docu/patir04.html
|
80
|
-
- docu/patir05.html
|
81
|
-
- docu/rutema01.html
|
82
|
-
- docu/rutema02.html
|
83
|
-
- docu/rutema03.html
|
84
|
-
- docu/rutema04.html
|
85
|
-
- docu/rw-intro.png
|
86
|
-
- docu/rw-run.png
|
87
|
-
- docu/rw-scenario.png
|
88
|
-
- docu/screenshots.html
|
89
|
-
has_rdoc: true
|
90
|
-
homepage:
|
87
|
+
- .gemtest
|
88
|
+
homepage: http://patir.rubyforge.org
|
91
89
|
licenses: []
|
92
90
|
|
93
91
|
post_install_message:
|
@@ -97,24 +95,30 @@ rdoc_options:
|
|
97
95
|
require_paths:
|
98
96
|
- lib
|
99
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
100
99
|
requirements:
|
101
100
|
- - ">="
|
102
101
|
- !ruby/object:Gem::Version
|
102
|
+
hash: 3
|
103
|
+
segments:
|
104
|
+
- 0
|
103
105
|
version: "0"
|
104
|
-
version:
|
105
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
106
108
|
requirements:
|
107
109
|
- - ">="
|
108
110
|
- !ruby/object:Gem::Version
|
111
|
+
hash: 3
|
112
|
+
segments:
|
113
|
+
- 0
|
109
114
|
version: "0"
|
110
|
-
version:
|
111
115
|
requirements: []
|
112
116
|
|
113
117
|
rubyforge_project: patir
|
114
|
-
rubygems_version: 1.
|
118
|
+
rubygems_version: 1.8.6
|
115
119
|
signing_key:
|
116
120
|
specification_version: 3
|
117
|
-
summary: patir (Project Automation Tools in Ruby) provides libraries for use in automation tools
|
121
|
+
summary: patir (Project Automation Tools in Ruby) provides libraries for use in project automation tools
|
118
122
|
test_files:
|
119
123
|
- test/test_patir_base.rb
|
120
124
|
- test/test_patir_command.rb
|