repertoire 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +9 -0
- data/README.txt +8 -4
- data/Rakefile +15 -5
- data/lib/repertoire/compat.rb +28 -10
- data/lib/repertoire/exceptions/checkout_failed.rb +1 -1
- data/lib/repertoire/exceptions/command_failed.rb +1 -1
- data/lib/repertoire/exceptions/program_not_found.rb +1 -1
- data/lib/repertoire/exceptions/repository_exists.rb +1 -1
- data/lib/repertoire/exceptions/update_failed.rb +1 -1
- data/lib/repertoire/media/exceptions/unknown_media.rb +1 -1
- data/lib/repertoire/media/media.rb +83 -20
- data/lib/repertoire/media/type.rb +32 -8
- data/lib/repertoire/repertoire.rb +72 -23
- data/lib/repertoire/repository.rb +106 -24
- data/lib/repertoire/version.rb +1 -1
- data/tasks/spec.rb +1 -0
- metadata +54 -8
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 0.2.3 / 2009-09-21
|
2
|
+
|
3
|
+
* Require Hoe >= 2.3.3.
|
4
|
+
* Require YARD >= 0.2.3.5.
|
5
|
+
* Require RSpec >= 1.2.8.
|
6
|
+
* Use 'hoe/signing' for signed RubyGems.
|
7
|
+
* Moved to YARD based documentation.
|
8
|
+
* All specs pass on JRuby 1.3.1.
|
9
|
+
|
1
10
|
=== 0.2.2 / 2009-04-13
|
2
11
|
|
3
12
|
* Rewrote Repository.name to not use the URI module.
|
data/README.txt
CHANGED
@@ -18,10 +18,6 @@ Git, Mercurial and even RSync.
|
|
18
18
|
* RSync
|
19
19
|
* Subversion (SVN)
|
20
20
|
|
21
|
-
== INSTALL:
|
22
|
-
|
23
|
-
$ sudo gem install repertoire
|
24
|
-
|
25
21
|
== EXAMPLES:
|
26
22
|
|
27
23
|
* Checkout a repository using a URI:
|
@@ -47,6 +43,14 @@ Git, Mercurial and even RSync.
|
|
47
43
|
|
48
44
|
Repertoire.update(:path => 'path/to/rsynced_data', :media => :rsync)
|
49
45
|
|
46
|
+
== REQUIREMENTS:
|
47
|
+
|
48
|
+
* {YARD}[http://yard.soen.ca/] >= 0.2.3.5
|
49
|
+
|
50
|
+
== INSTALL:
|
51
|
+
|
52
|
+
$ sudo gem install repertoire
|
53
|
+
|
50
54
|
== LICENSE:
|
51
55
|
|
52
56
|
The MIT License
|
data/Rakefile
CHANGED
@@ -2,13 +2,23 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
|
+
require 'hoe/signing'
|
5
6
|
require './tasks/spec.rb'
|
6
|
-
require './
|
7
|
+
require './tasks/yard.rb'
|
7
8
|
|
8
|
-
Hoe.
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Hoe.spec('repertoire') do
|
10
|
+
self.rubyforge_name = 'repertoire'
|
11
|
+
self.developer('Postmodern','postmodern.mod3@gmail.com')
|
12
|
+
self.remote_rdoc_dir = ''
|
13
|
+
self.extra_deps = [
|
14
|
+
['yard', '>=0.2.3.5']
|
15
|
+
]
|
16
|
+
|
17
|
+
self.extra_dev_deps = [
|
18
|
+
['rspec', '>=1.2.8']
|
19
|
+
]
|
20
|
+
|
21
|
+
self.spec_extras = {:has_rdoc => 'yard'}
|
12
22
|
end
|
13
23
|
|
14
24
|
# vim: syntax=Ruby
|
data/lib/repertoire/compat.rb
CHANGED
@@ -4,8 +4,10 @@ require 'repertoire/exceptions/command_failed'
|
|
4
4
|
module Repertoire
|
5
5
|
module Compat
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# @return [String]
|
8
|
+
# The native platform.
|
8
9
|
#
|
10
|
+
# @example
|
9
11
|
# Compat.arch #=> "linux"
|
10
12
|
#
|
11
13
|
def self.platform
|
@@ -13,10 +15,10 @@ module Repertoire
|
|
13
15
|
end
|
14
16
|
|
15
17
|
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# be returned.
|
18
|
+
# @return [Array]
|
19
|
+
# +PATH+ environment variable.
|
19
20
|
#
|
21
|
+
# @example
|
20
22
|
# Compat.paths
|
21
23
|
# #=> ["/bin", "/usr/bin"]
|
22
24
|
#
|
@@ -33,10 +35,15 @@ module Repertoire
|
|
33
35
|
end
|
34
36
|
|
35
37
|
#
|
36
|
-
# Finds the program matching
|
37
|
-
# If the program was not found, +nil+ will be returned.
|
38
|
+
# Finds the program matching name.
|
38
39
|
#
|
39
|
-
#
|
40
|
+
# @return [String, nil]
|
41
|
+
# The full path of the program, or +nil+ if the program could not be
|
42
|
+
# found.
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
# Compat.find_program('as')
|
46
|
+
# #=> "/usr/bin/as"
|
40
47
|
#
|
41
48
|
def self.find_program(name)
|
42
49
|
self.paths.each do |dir|
|
@@ -49,10 +56,21 @@ module Repertoire
|
|
49
56
|
end
|
50
57
|
|
51
58
|
#
|
52
|
-
# Runs the command
|
53
|
-
#
|
54
|
-
#
|
59
|
+
# Runs the command.
|
60
|
+
#
|
61
|
+
# @param [String] program
|
62
|
+
# The name of the program to run.
|
63
|
+
#
|
64
|
+
# @param [Array] args
|
65
|
+
# Optional arguments to run the program with.
|
66
|
+
#
|
67
|
+
# @raise [ProgramNotFound]
|
68
|
+
# The specified _program_ could not be found.
|
69
|
+
#
|
70
|
+
# @raise [CommandFailed]
|
71
|
+
# The command failed to run.
|
55
72
|
#
|
73
|
+
# @example
|
56
74
|
# Compat.sh('ls','-la','/')
|
57
75
|
#
|
58
76
|
def Compat.sh(program,*args)
|
@@ -3,22 +3,37 @@ require 'repertoire/media/exceptions/unknown_media'
|
|
3
3
|
module Repertoire
|
4
4
|
module Media
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# All registered media types.
|
7
|
+
#
|
8
|
+
# @return [Hash]
|
9
|
+
# The media types.
|
7
10
|
#
|
8
11
|
def Media.types
|
9
12
|
@@media_types ||= {}
|
10
13
|
end
|
11
14
|
|
12
15
|
#
|
13
|
-
#
|
14
|
-
#
|
16
|
+
# Determines if a media type has been registered.
|
17
|
+
#
|
18
|
+
# @param [Symbol, String] name
|
19
|
+
# The name of the media type to check for.
|
20
|
+
#
|
21
|
+
# @return [Boolean]
|
22
|
+
# Specifies whether there is a Media type registered with the
|
23
|
+
# matching name.
|
15
24
|
#
|
16
25
|
def Media.supports?(name)
|
17
26
|
Media.types.has_key?(name.to_sym)
|
18
27
|
end
|
19
28
|
|
20
29
|
#
|
21
|
-
#
|
30
|
+
# Finds a media type by name.
|
31
|
+
#
|
32
|
+
# @param [Symbol, String] name
|
33
|
+
# The name of the media type to search for.
|
34
|
+
#
|
35
|
+
# @return [Type]
|
36
|
+
# The Media type with the matching name.
|
22
37
|
#
|
23
38
|
def Media.get(name)
|
24
39
|
name = name.to_sym
|
@@ -31,30 +46,47 @@ module Repertoire
|
|
31
46
|
end
|
32
47
|
|
33
48
|
#
|
34
|
-
#
|
35
|
-
#
|
49
|
+
# The media types associated to various URI schemes.
|
50
|
+
#
|
51
|
+
# @return [Hash]
|
52
|
+
# All registered Media types and their associated URI schemes.
|
36
53
|
#
|
37
54
|
def Media.schemes
|
38
55
|
@@media_schemes ||= {}
|
39
56
|
end
|
40
57
|
|
41
58
|
#
|
42
|
-
#
|
59
|
+
# URI schemes associated to media types.
|
60
|
+
#
|
61
|
+
# @return [Array]
|
62
|
+
# All registered URI schemes.
|
43
63
|
#
|
44
64
|
def Media.registered_schemes
|
45
65
|
Media.schemes.keys
|
46
66
|
end
|
47
67
|
|
48
68
|
#
|
49
|
-
#
|
50
|
-
#
|
69
|
+
# Determines whether a given URI scheme is supported.
|
70
|
+
#
|
71
|
+
# @param [String, Symbol] scheme
|
72
|
+
# The URI scheme to check for.
|
73
|
+
#
|
74
|
+
# @return [Boolean]
|
75
|
+
# Specifies whether a Media type was registered for the specified
|
76
|
+
# scheme.
|
51
77
|
#
|
52
78
|
def Media.supports_scheme?(scheme)
|
53
79
|
Media.schemes.has_key?(scheme.to_s)
|
54
80
|
end
|
55
81
|
|
56
82
|
#
|
57
|
-
#
|
83
|
+
# Finds the media type that supports a given URI scheme.
|
84
|
+
#
|
85
|
+
# @param [String, Symbol] name
|
86
|
+
# The URI scheme to search for.
|
87
|
+
#
|
88
|
+
# @return [Type]
|
89
|
+
# The Media type that was registered for the specified scheme.
|
58
90
|
#
|
59
91
|
def Media.supports_scheme(name)
|
60
92
|
name = name.to_s
|
@@ -67,31 +99,50 @@ module Repertoire
|
|
67
99
|
end
|
68
100
|
|
69
101
|
#
|
70
|
-
#
|
71
|
-
#
|
102
|
+
# Media types associated to media storage directories.
|
103
|
+
#
|
104
|
+
# @return [Hash]
|
105
|
+
# All registered Media types and their associated media storage
|
106
|
+
# directories.
|
72
107
|
#
|
73
108
|
def Media.directories
|
74
109
|
@@media_directories ||= {}
|
75
110
|
end
|
76
111
|
|
77
112
|
#
|
78
|
-
#
|
113
|
+
# Media storage directories associated with media types.
|
114
|
+
#
|
115
|
+
# @return [Array]
|
116
|
+
# All registered media storage directories.
|
79
117
|
#
|
80
118
|
def Media.registered_directories
|
81
119
|
Media.directories.keys
|
82
120
|
end
|
83
121
|
|
84
122
|
#
|
85
|
-
#
|
86
|
-
#
|
123
|
+
# Determines if the media storage directory is recognized by any
|
124
|
+
# media type.
|
125
|
+
#
|
126
|
+
# @param [String, Symbol] name
|
127
|
+
# The media storage directory to search for.
|
128
|
+
#
|
129
|
+
# @return [Boolean]
|
130
|
+
# Specifies whether a Media type was registered with the specified
|
131
|
+
# media storage directory.
|
87
132
|
#
|
88
133
|
def Media.recognizes_directory?(name)
|
89
134
|
Media.directories.has_key?(name.to_s)
|
90
135
|
end
|
91
136
|
|
92
137
|
#
|
93
|
-
#
|
94
|
-
#
|
138
|
+
# Finds the media type which uses a given media storage directory.
|
139
|
+
#
|
140
|
+
# @param [String, Symbol] name
|
141
|
+
# The media storage directory to search for.
|
142
|
+
#
|
143
|
+
# @return [Type]
|
144
|
+
# The Media type that was registered for the specified media storage
|
145
|
+
# directory.
|
95
146
|
#
|
96
147
|
def Media.recognizes_directory(name)
|
97
148
|
name = name.to_s
|
@@ -104,15 +155,27 @@ module Repertoire
|
|
104
155
|
end
|
105
156
|
|
106
157
|
#
|
107
|
-
# Get the Media type that was registered for the scheme of the
|
108
|
-
#
|
158
|
+
# Get the Media type that was registered for the scheme of the given
|
159
|
+
# URI.
|
160
|
+
#
|
161
|
+
# @param [String, URI::HTTP] uri
|
162
|
+
# The URI to infer the media type from.
|
163
|
+
#
|
164
|
+
# @return [Type]
|
165
|
+
# The media type which handles the specified URI.
|
109
166
|
#
|
110
167
|
def Media.guess_from_uri(uri)
|
111
168
|
Media.supports_scheme(uri.to_s.scan(/^[^:\/@]+:/).first.chop)
|
112
169
|
end
|
113
170
|
|
114
171
|
#
|
115
|
-
# Attempts to determine the correct Media type for
|
172
|
+
# Attempts to determine the correct Media type for a given path.
|
173
|
+
#
|
174
|
+
# @param [String] path
|
175
|
+
# The path to infer the media type from.
|
176
|
+
#
|
177
|
+
# @return [Type]
|
178
|
+
# The media type which handles the repository at the specified path.
|
116
179
|
#
|
117
180
|
def Media.guess_from_path(path)
|
118
181
|
path = File.expand_path(path)
|
@@ -29,8 +29,12 @@ module Repertoire
|
|
29
29
|
protected
|
30
30
|
|
31
31
|
#
|
32
|
-
# Register a Media type with
|
32
|
+
# Register a Media type with a given names.
|
33
33
|
#
|
34
|
+
# @param [Symbol, String] name
|
35
|
+
# The name to give the media type.
|
36
|
+
#
|
37
|
+
# @example
|
34
38
|
# known_as :svn
|
35
39
|
#
|
36
40
|
def self.known_as(name)
|
@@ -42,10 +46,15 @@ module Repertoire
|
|
42
46
|
end
|
43
47
|
|
44
48
|
#
|
45
|
-
# Register a Media type for
|
49
|
+
# Register a Media type for given schemes.
|
50
|
+
#
|
51
|
+
# @param [Array<String, Symbol>] schemes
|
52
|
+
# The URI schemes supported by the media type.
|
46
53
|
#
|
54
|
+
# @example
|
47
55
|
# uses_schemes 'svn'
|
48
56
|
#
|
57
|
+
# @example
|
49
58
|
# uses_schemes 'svn', 'svn+ssh'
|
50
59
|
#
|
51
60
|
def self.uses_schemes(*schemes)
|
@@ -59,9 +68,12 @@ module Repertoire
|
|
59
68
|
end
|
60
69
|
|
61
70
|
#
|
62
|
-
# Registers a Media type that uses
|
63
|
-
# _name_ to store media information.
|
71
|
+
# Registers a Media type that uses a given directory name for storage.
|
64
72
|
#
|
73
|
+
# @param [String] name
|
74
|
+
# The media storage directory used by the media type.
|
75
|
+
#
|
76
|
+
# @example
|
65
77
|
# uses_directory '.svn'
|
66
78
|
#
|
67
79
|
def self.uses_directory(name)
|
@@ -73,15 +85,27 @@ module Repertoire
|
|
73
85
|
end
|
74
86
|
|
75
87
|
#
|
76
|
-
# Changes the current working directory
|
88
|
+
# Changes the current working directory.
|
89
|
+
#
|
90
|
+
# @param [String] path
|
91
|
+
# The directory to change to.
|
92
|
+
#
|
93
|
+
# @see http://www.ruby-doc.org/core/classes/Dir.html#M002314
|
77
94
|
#
|
78
95
|
def self.cd(path)
|
79
96
|
Dir.chdir(path.to_s)
|
80
97
|
end
|
81
98
|
|
82
99
|
#
|
83
|
-
#
|
84
|
-
#
|
100
|
+
# Changes the current working directory, calls a given block, then
|
101
|
+
# changes the current working directory back.
|
102
|
+
#
|
103
|
+
# @param [String] path
|
104
|
+
# The directory to temporarily switch to.
|
105
|
+
#
|
106
|
+
# @yield []
|
107
|
+
# If a block is given, it will be called after the current working
|
108
|
+
# directory has been changed.
|
85
109
|
#
|
86
110
|
def self.switch_dir(path,&block)
|
87
111
|
current = Dir.pwd
|
@@ -92,7 +116,7 @@ module Repertoire
|
|
92
116
|
end
|
93
117
|
|
94
118
|
#
|
95
|
-
#
|
119
|
+
# @see Compat.sh.
|
96
120
|
#
|
97
121
|
def self.sh(program,*args)
|
98
122
|
Compat.sh(program,*args)
|
@@ -8,19 +8,42 @@ require 'fileutils'
|
|
8
8
|
|
9
9
|
module Repertoire
|
10
10
|
#
|
11
|
-
# Checkout the repository
|
12
|
-
# is given, it will be passed a newly created Repository object
|
13
|
-
# for the checked out repository.
|
11
|
+
# Checkout the repository.
|
14
12
|
#
|
15
|
-
#
|
16
|
-
#
|
13
|
+
# @param [Hash] options
|
14
|
+
# Additional options.
|
17
15
|
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
16
|
+
# @option options [String, URI::HTTP] :uri
|
17
|
+
# The URI of the repository to checkout.
|
18
|
+
#
|
19
|
+
# @option options [String] :path
|
20
|
+
# Path to checkout the repository to.
|
21
|
+
#
|
22
|
+
# @option options [Symbol] :media
|
23
|
+
# The media type of the repository. Defaults to the value of
|
24
|
+
# {Media.guess_from_uri}.
|
25
|
+
#
|
26
|
+
# @option options [String] :into
|
27
|
+
# Checkout the repository into the given directory. Cannot be used
|
28
|
+
# with +:path+.
|
29
|
+
#
|
30
|
+
# @yield [repo]
|
31
|
+
# If a block is given, it will be passed the checked out repository.
|
32
|
+
#
|
33
|
+
# @yieldparam [Repository] repo
|
34
|
+
# The checked out repository.
|
35
|
+
#
|
36
|
+
# @return [Repository]
|
37
|
+
# The newly checked out repository.
|
38
|
+
#
|
39
|
+
# @raise [ArgumentError]
|
40
|
+
# The +:uri+ option was not specified.
|
41
|
+
#
|
42
|
+
# @raise [RepositoryExists]
|
43
|
+
# The destination path already exists.
|
44
|
+
#
|
45
|
+
# @raise [CheckoutFailed]
|
46
|
+
# The checkout command failed.
|
24
47
|
#
|
25
48
|
def Repertoire.checkout(options={},&block)
|
26
49
|
unless options[:uri]
|
@@ -67,18 +90,36 @@ module Repertoire
|
|
67
90
|
end
|
68
91
|
|
69
92
|
#
|
70
|
-
# Update
|
71
|
-
#
|
72
|
-
#
|
93
|
+
# Update an existing repository.
|
94
|
+
#
|
95
|
+
# @param [Hash] options
|
96
|
+
# Additional options.
|
73
97
|
#
|
74
|
-
#
|
75
|
-
#
|
98
|
+
# @option options [String] :path
|
99
|
+
# The path of the repository to update.
|
76
100
|
#
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
101
|
+
# @option options [String, URI::HTTP] :uri
|
102
|
+
# The URI to update against.
|
103
|
+
#
|
104
|
+
# @option options [Symbol] :media
|
105
|
+
# The type of the repository. Defaults to {Media.guess_from_uri}
|
106
|
+
# if the +:uri+ option is given, otherwise {Media.guess_from_path}
|
107
|
+
# is used.
|
108
|
+
#
|
109
|
+
# @yield [repo]
|
110
|
+
# If a block is given, it will be passed the updated repository.
|
111
|
+
#
|
112
|
+
# @yield [Repository] repo
|
113
|
+
# The updated repository.
|
114
|
+
#
|
115
|
+
# @return [Repository]
|
116
|
+
# The updated repository.
|
117
|
+
#
|
118
|
+
# @raise [ArgumentError]
|
119
|
+
# The +:path+ option was not specified.
|
120
|
+
#
|
121
|
+
# @raise [UpdateFailed]
|
122
|
+
# The update command failed.
|
82
123
|
#
|
83
124
|
def Repertoire.update(options={},&block)
|
84
125
|
unless options[:path]
|
@@ -107,8 +148,16 @@ module Repertoire
|
|
107
148
|
end
|
108
149
|
|
109
150
|
#
|
110
|
-
# Delete
|
111
|
-
#
|
151
|
+
# Delete an existing repository.
|
152
|
+
#
|
153
|
+
# @param [String] path
|
154
|
+
# The path of the repository to delete.
|
155
|
+
#
|
156
|
+
# @yield [path]
|
157
|
+
# If a block is given, it will be passed the path to be deleted.
|
158
|
+
#
|
159
|
+
# @yieldparam [String] path
|
160
|
+
# The path to be deleted.
|
112
161
|
#
|
113
162
|
def Repertoire.delete(path,&block)
|
114
163
|
path = File.expand_path(path)
|
@@ -11,12 +11,25 @@ module Repertoire
|
|
11
11
|
attr_reader :media
|
12
12
|
|
13
13
|
#
|
14
|
-
# Creates a new Repository object
|
15
|
-
# type. If a _block_ is given, it will be passed the newly created
|
16
|
-
# Repository object.
|
14
|
+
# Creates a new Repository object.
|
17
15
|
#
|
16
|
+
# @param [String] path
|
17
|
+
# The path of the repository.
|
18
|
+
#
|
19
|
+
# @param [Media::Type, nil] media
|
20
|
+
# The media type of the repository.
|
21
|
+
#
|
22
|
+
# @yield [repo]
|
23
|
+
# If a block is given, it will be passed the newly created
|
24
|
+
# repository.
|
25
|
+
#
|
26
|
+
# @yieldparam [Repository] repo
|
27
|
+
# The newly created repository.
|
28
|
+
#
|
29
|
+
# @example
|
18
30
|
# Repository.new('path/to/repo',Media::SVN)
|
19
31
|
#
|
32
|
+
# @example
|
20
33
|
# Repository.new('path/to/svn_repo',Media::SVN) do |repo|
|
21
34
|
# puts repo['**/']
|
22
35
|
# end
|
@@ -34,13 +47,20 @@ module Repertoire
|
|
34
47
|
end
|
35
48
|
|
36
49
|
#
|
37
|
-
#
|
38
|
-
# is +trunk+ then the _basename_ of the parent directory within the
|
39
|
-
# _uri_ is returned.
|
50
|
+
# Infers the repository name from a given URI.
|
40
51
|
#
|
52
|
+
# @param [String, URI::HTTP] uri
|
53
|
+
# The URI to inerfer the repository name from.
|
54
|
+
#
|
55
|
+
# @return [String]
|
56
|
+
# The basename of the specified URI. If the basename is +trunk+, then
|
57
|
+
# the basename of the parent directory within the URI is returned.
|
58
|
+
#
|
59
|
+
# @example
|
41
60
|
# Repertoire.name('http://www.today.com/is/now')
|
42
61
|
# # => "now"
|
43
62
|
#
|
63
|
+
# @example
|
44
64
|
# Repertoire.name('svn://svn.repo.com/var/svn/awesome/trunk')
|
45
65
|
# # => "awesome"
|
46
66
|
#
|
@@ -65,8 +85,10 @@ module Repertoire
|
|
65
85
|
end
|
66
86
|
|
67
87
|
#
|
68
|
-
#
|
69
|
-
#
|
88
|
+
# The name of the media used for the repository.
|
89
|
+
#
|
90
|
+
# @return [Symbol, nil]
|
91
|
+
# The name of the media, or +nil+ if the media could not be detected.
|
70
92
|
#
|
71
93
|
def media_name
|
72
94
|
return @media.name if @media
|
@@ -76,6 +98,12 @@ module Repertoire
|
|
76
98
|
#
|
77
99
|
# Update the repository.
|
78
100
|
#
|
101
|
+
# @param [String, URI::HTTP] uri
|
102
|
+
# The URI to update from.
|
103
|
+
#
|
104
|
+
# @return [Boolean]
|
105
|
+
# Specifies whether the update was a success or not.
|
106
|
+
#
|
79
107
|
def update(uri=nil)
|
80
108
|
if @media
|
81
109
|
@media.update(@path,uri)
|
@@ -93,14 +121,31 @@ module Repertoire
|
|
93
121
|
end
|
94
122
|
|
95
123
|
#
|
96
|
-
# Similar to
|
97
|
-
# from the returned results.
|
98
|
-
#
|
124
|
+
# Similar to +Dir.glob+, except the media's directory is omitted
|
125
|
+
# from the returned results.
|
126
|
+
#
|
127
|
+
# @param [String] pattern
|
128
|
+
# The pattern to match file-names with.
|
129
|
+
#
|
130
|
+
# @param [Integer] flags
|
131
|
+
# +Dir.glob+ flags.
|
132
|
+
#
|
133
|
+
# @yield [path]
|
134
|
+
# If a block is given, it will be passed each globbed path.
|
135
|
+
#
|
136
|
+
# @yieldparam [String] path
|
137
|
+
# A path that matches the glob pattern.
|
138
|
+
#
|
139
|
+
# @return [Array]
|
140
|
+
# The paths that match the given pattern.
|
99
141
|
#
|
142
|
+
# @example
|
100
143
|
# repo = Repository.new('path/to/my_svn')
|
101
144
|
# repo.glob('sub_path/.svn/*') # => []
|
102
145
|
# repo.glob('sub_path/**/') # => [...]
|
103
146
|
#
|
147
|
+
# @see http://www.ruby-doc.org/core/classes/Dir.html#M002322
|
148
|
+
#
|
104
149
|
def glob(pattern,flags=0,&block)
|
105
150
|
pattern = File.expand_path(File.join(@path,pattern))
|
106
151
|
paths = filter(Dir.glob(pattern,flags))
|
@@ -110,40 +155,68 @@ module Repertoire
|
|
110
155
|
end
|
111
156
|
|
112
157
|
#
|
113
|
-
#
|
114
|
-
#
|
158
|
+
# Determines whether the repository contains a specific sub-path.
|
159
|
+
#
|
160
|
+
# @param [String] sub_path
|
161
|
+
# The sub-path to search for.
|
162
|
+
#
|
163
|
+
# @return [Boolean]
|
164
|
+
# Specifies whether the directory contains the specified sub-path.
|
115
165
|
#
|
116
166
|
def has_path?(sub_path)
|
117
167
|
!(glob(sub_path).empty?)
|
118
168
|
end
|
119
169
|
|
120
170
|
#
|
121
|
-
#
|
122
|
-
#
|
171
|
+
# Finds files within the repository.
|
172
|
+
#
|
173
|
+
# @param [String] sub_path
|
174
|
+
# The glob pattern to match paths with.
|
175
|
+
#
|
176
|
+
# @return [Array]
|
177
|
+
# The files within the repository that match the given pattern.
|
123
178
|
#
|
124
179
|
def files(sub_path='*')
|
125
180
|
glob(sub_path).select { |path| File.file?(path) }
|
126
181
|
end
|
127
182
|
|
128
183
|
#
|
129
|
-
#
|
130
|
-
#
|
184
|
+
# Determines if the repository has a given sub-path.
|
185
|
+
#
|
186
|
+
# @param [String] sub_path
|
187
|
+
# The sbu-path to search for.
|
188
|
+
#
|
189
|
+
# @return [Boolean]
|
190
|
+
# Specifies whether there is a file with the matching sub-path
|
191
|
+
# within the repository.
|
131
192
|
#
|
132
193
|
def has_file?(sub_path)
|
133
194
|
!(files(sub_path).empty?)
|
134
195
|
end
|
135
196
|
|
136
197
|
#
|
137
|
-
#
|
138
|
-
#
|
198
|
+
# Finds directories within the repository.
|
199
|
+
#
|
200
|
+
# @param [String] sub_path
|
201
|
+
# The glob pattern to match paths with.
|
202
|
+
#
|
203
|
+
# @return [Array]
|
204
|
+
# The directories within the repository that match the given pattern.
|
139
205
|
#
|
140
206
|
def directories(sub_path='*')
|
141
207
|
glob(sub_path).select { |path| File.directory?(path) }
|
142
208
|
end
|
143
209
|
|
144
210
|
#
|
145
|
-
#
|
146
|
-
#
|
211
|
+
# Determines if the repository contains a directory matching a given
|
212
|
+
# sub-path.
|
213
|
+
#
|
214
|
+
# @param [String] sub_path
|
215
|
+
# The sub-path to search for.
|
216
|
+
#
|
217
|
+
# @return [Boolean]
|
218
|
+
# Specifies whether there is a directory with the matching sub-path
|
219
|
+
# within the repository.
|
147
220
|
#
|
148
221
|
def has_directory?(sub_path)
|
149
222
|
!(directories(sub_path).empty?)
|
@@ -152,7 +225,10 @@ module Repertoire
|
|
152
225
|
alias [] glob
|
153
226
|
|
154
227
|
#
|
155
|
-
#
|
228
|
+
# Converts the repository to a String.
|
229
|
+
#
|
230
|
+
# @return [String]
|
231
|
+
# The path of the repository.
|
156
232
|
#
|
157
233
|
def to_s
|
158
234
|
@path.to_s
|
@@ -161,8 +237,14 @@ module Repertoire
|
|
161
237
|
protected
|
162
238
|
|
163
239
|
#
|
164
|
-
# Filter the
|
165
|
-
# the media
|
240
|
+
# Filter the given paths, removing any path that containing directoires
|
241
|
+
# used by the media.
|
242
|
+
#
|
243
|
+
# @param [Array<String>] paths
|
244
|
+
# The paths to filter.
|
245
|
+
#
|
246
|
+
# @return [Array]
|
247
|
+
# The filtered paths.
|
166
248
|
#
|
167
249
|
def filter(paths)
|
168
250
|
return paths unless @media
|
data/lib/repertoire/version.rb
CHANGED
data/tasks/spec.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repertoire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA9wb3N0
|
14
|
+
bW9kZXJuLm1vZDMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
|
15
|
+
ARkWA2NvbTAeFw0wOTA2MDMwNDU5MDNaFw0xMDA2MDMwNDU5MDNaMEYxGDAWBgNV
|
16
|
+
BAMMD3Bvc3Rtb2Rlcm4ubW9kMzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
|
17
|
+
CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
18
|
+
1wvANkTDHFgVih5XLjuTwTZjgBq1lBGybXJiH6Id1lY2JOMqM5FB1DDHVvvij94i
|
19
|
+
mJabN0zkzu6VKWC70y0IwOxY7CPokr0eFdK/D0y7mCq1P8QITv76i2YqAl0eYqIt
|
20
|
+
W+IhIkANQ7E6uMZIZcdnfadC6lPAtlKkqtd9crvRbFgr6e3kyflmohbRnTEJHoRd
|
21
|
+
7SHHsybE6DSn7oTDs6XBTNrNIn5VfZA0z01eeos/+zBm1zKJOK2+/7xtLLDuDU9G
|
22
|
+
+Rd+ltUBbvxUrMNZmDG29pnmN2xTRH+Q8HxD2AxlvM5SRpK6OeZaHV7PaCCAVZ4L
|
23
|
+
T9BFl1sfMvRlABeGEkSyuQIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
|
24
|
+
sDAdBgNVHQ4EFgQUKwsd+PqEYmBvyaTyoL+uRuk+PhEwDQYJKoZIhvcNAQEFBQAD
|
25
|
+
ggEBAB4TvHsrlbcXcKg6gX5BIb9tI+zGkpzo0Z7jnxMEcNO7NGGwmzafDBI/xZYv
|
26
|
+
xkRH3/HXbGGYDOi6Q6gWt5GujSx0bOImDtYTJTH8jnzN92HzEK5WdScm1QpZKF1e
|
27
|
+
cezArMbxbSPaosxTCtG6LQTkE28lFQsmFZ5xzouugS4h5+LVJiVMmiP+l3EfkjFa
|
28
|
+
GOURU+rNEMPWo8MCWivGW7jes6BMzWHcW7DQ0scNVmIcCIgdyMmpscuAEOSeghy9
|
29
|
+
/fFs57Ey2OXBL55nDOyvN/ZQ2Vab05UH4t+GCxjAPeirzL/29FBtePT6VD44c38j
|
30
|
+
pDj+ws7QjtH/Qcrr1l9jfN0ehDs=
|
31
|
+
-----END CERTIFICATE-----
|
11
32
|
|
12
|
-
date: 2009-
|
33
|
+
date: 2009-09-25 00:00:00 -07:00
|
13
34
|
default_executable:
|
14
35
|
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: yard
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 0.2.3.5
|
45
|
+
version:
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
type: :development
|
49
|
+
version_requirement:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.2.8
|
55
|
+
version:
|
15
56
|
- !ruby/object:Gem::Dependency
|
16
57
|
name: hoe
|
17
58
|
type: :development
|
@@ -20,9 +61,12 @@ dependencies:
|
|
20
61
|
requirements:
|
21
62
|
- - ">="
|
22
63
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
64
|
+
version: 2.3.3
|
24
65
|
version:
|
25
|
-
description:
|
66
|
+
description: |-
|
67
|
+
R'epertoire is a Ruby library for quickly checking-out and updating
|
68
|
+
code-bases from various SCMs. R'epertoire currently supports Subversion,
|
69
|
+
Git, Mercurial and even RSync.
|
26
70
|
email:
|
27
71
|
- postmodern.mod3@gmail.com
|
28
72
|
executables: []
|
@@ -78,8 +122,10 @@ files:
|
|
78
122
|
- spec/media/types/rsync_spec.rb
|
79
123
|
- spec/media/types/svn_spec.rb
|
80
124
|
- spec/repertoire_spec.rb
|
81
|
-
has_rdoc:
|
125
|
+
has_rdoc: yard
|
82
126
|
homepage: http://repertoire.rubyforge.org/
|
127
|
+
licenses: []
|
128
|
+
|
83
129
|
post_install_message:
|
84
130
|
rdoc_options:
|
85
131
|
- --main
|
@@ -101,9 +147,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
147
|
requirements: []
|
102
148
|
|
103
149
|
rubyforge_project: repertoire
|
104
|
-
rubygems_version: 1.3.
|
150
|
+
rubygems_version: 1.3.5
|
105
151
|
signing_key:
|
106
|
-
specification_version:
|
152
|
+
specification_version: 3
|
107
153
|
summary: R'epertoire is a Ruby library for quickly checking-out and updating code-bases from various SCMs
|
108
154
|
test_files: []
|
109
155
|
|
metadata.gz.sig
ADDED
Binary file
|