repertoire 0.2.2 → 0.2.3
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.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
|