php-composer 0.4.5 → 1.0.0.pre.alpha11
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.
- checksums.yaml +4 -4
- data/.rbenv-gemsets +1 -0
- data/.rubocop.yml +131 -188
- data/.ruby-version +1 -0
- data/Gemfile +0 -9
- data/Rakefile +11 -0
- data/lib/composer.rb +52 -49
- data/lib/composer/json/json_file.rb +110 -83
- data/lib/composer/json/json_formatter.rb +43 -77
- data/lib/composer/json/{json_validaton_error.rb → json_validation_error.rb} +6 -2
- data/lib/composer/package/alias_package.rb +77 -61
- data/lib/composer/package/complete_package.rb +88 -18
- data/lib/composer/package/dumper/hash_dumper.rb +50 -118
- data/lib/composer/package/dumper/hash_dumper/complete_package_attribute_dumpers.rb +47 -0
- data/lib/composer/package/dumper/hash_dumper/package_attribute_dumpers.rb +145 -0
- data/lib/composer/package/dumper/hash_dumper/root_package_attribute_dumpers.rb +24 -0
- data/lib/composer/package/link.rb +15 -5
- data/lib/composer/package/loader/hash_loader.rb +92 -228
- data/lib/composer/package/loader/hash_loader/complete_package_attribute_loaders.rb +83 -0
- data/lib/composer/package/loader/hash_loader/package_attribute_loaders.rb +181 -0
- data/lib/composer/package/loader/hash_loader/root_package_attribute_loaders.rb +32 -0
- data/lib/composer/package/loader/json_loader.rb +7 -9
- data/lib/composer/package/package.rb +611 -43
- data/lib/composer/package/root_alias_package.rb +186 -15
- data/lib/composer/package/root_package.rb +12 -4
- data/lib/composer/package/version/version_parser.rb +16 -532
- data/lib/composer/package/version/version_selector.rb +127 -68
- data/lib/composer/repository/base_repository.rb +46 -3
- data/lib/composer/repository/composite_repository.rb +4 -4
- data/lib/composer/repository/filesystem_repository.rb +15 -8
- data/lib/composer/repository/hash_repository.rb +62 -45
- data/lib/composer/repository/writeable_hash_repository.rb +5 -5
- data/lib/composer/util/composer_mirror.rb +76 -0
- data/php-composer.gemspec +14 -8
- data/resources/composer-schema.json +12 -0
- metadata +117 -16
- data/lib/composer/error.rb +0 -8
- data/lib/composer/package/base_package.rb +0 -130
- data/lib/composer/package/link_constraint/base_constraint.rb +0 -36
- data/lib/composer/package/link_constraint/empty_constraint.rb +0 -35
- data/lib/composer/package/link_constraint/multi_constraint.rb +0 -67
- data/lib/composer/package/link_constraint/specific_constraint.rb +0 -41
- data/lib/composer/package/link_constraint/version_constraint.rb +0 -221
- data/lib/composer/version.rb +0 -3
@@ -18,7 +18,7 @@ module Composer
|
|
18
18
|
#
|
19
19
|
# Ruby Authors:
|
20
20
|
# Ioannis Kappas <ikappas@devworks.gr>
|
21
|
-
class WritableHashRepository < Composer::Repository::HashRepository
|
21
|
+
class WritableHashRepository < ::Composer::Repository::HashRepository
|
22
22
|
|
23
23
|
def initialize(packages = [])
|
24
24
|
super
|
@@ -39,15 +39,15 @@ module Composer
|
|
39
39
|
packages_by_name = {}
|
40
40
|
packages_uncanonicalized.each do |package|
|
41
41
|
if !packages_by_name.key?(package.name) ||
|
42
|
-
packages_by_name[package.name].instance_of?(Composer::Package::AliasPackage)
|
42
|
+
packages_by_name[package.name].instance_of?(::Composer::Package::AliasPackage)
|
43
43
|
packages_by_name[package.name] = package
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
# unfold aliased packages
|
48
48
|
results = []
|
49
|
-
packages_by_name.each do |
|
50
|
-
while package.instance_of?(Composer::Package::AliasPackage)
|
49
|
+
packages_by_name.each do |_name, package|
|
50
|
+
while package.instance_of?(::Composer::Package::AliasPackage)
|
51
51
|
package = package.alias_of
|
52
52
|
end
|
53
53
|
results.push(package)
|
@@ -57,4 +57,4 @@ module Composer
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
|
-
end
|
60
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#
|
2
|
+
# This file was ported to ruby from Composer php source code.
|
3
|
+
# Original Source: Composer\Repository\RepositoryInterface.php
|
4
|
+
#
|
5
|
+
# (c) Nils Adermann <naderman@naderman.de>
|
6
|
+
# Jordi Boggiano <j.boggiano@seld.be>
|
7
|
+
#
|
8
|
+
# For the full copyright and license information, please view the LICENSE
|
9
|
+
# file that was distributed with this source code.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'digest'
|
13
|
+
|
14
|
+
module Composer
|
15
|
+
module Util
|
16
|
+
|
17
|
+
# Composer mirror utilities
|
18
|
+
#
|
19
|
+
# @author Jordi Boggiano <j.boggiano@seld.be>
|
20
|
+
class ComposerMirror
|
21
|
+
|
22
|
+
class << self
|
23
|
+
|
24
|
+
def process_url(mirror_url, package_name, version, reference, type)
|
25
|
+
|
26
|
+
unless reference.nil? || /^([a-f0-9]*|%reference%)$/ =~ reference
|
27
|
+
reference = Digest::MD5.hexdigest(reference)
|
28
|
+
end
|
29
|
+
|
30
|
+
unless version.nil? || version.index('/') === nil
|
31
|
+
version = Digest::MD5.hexdigest(version)
|
32
|
+
end
|
33
|
+
|
34
|
+
map = {
|
35
|
+
'%package%' => package_name,
|
36
|
+
'%version%' => version,
|
37
|
+
'%reference%' => reference,
|
38
|
+
'%type%' => type
|
39
|
+
}
|
40
|
+
|
41
|
+
re = Regexp.new(map.keys.map { |x| Regexp.escape(x) }.join('|'))
|
42
|
+
|
43
|
+
mirror_url.gsub(re, map)
|
44
|
+
end
|
45
|
+
|
46
|
+
def process_git_url(mirror_url, package_name, url, type)
|
47
|
+
|
48
|
+
case url
|
49
|
+
when /^(?:(?:https?|git):\/\/github\.com\/|git@github\.com:)([^\/]+)\/(.+?)(?:\.git)?$/
|
50
|
+
url = "gh-#{$1}/#{$2}"
|
51
|
+
when /^https:\/\/bitbucket\.org\/([^\/]+)\/(.+?)(?:\.git)?\/?$/
|
52
|
+
url = "bb-#{$1}/#{$2}"
|
53
|
+
else
|
54
|
+
url = url.gsub(/^\//, '').gsub(/\/$/, '').gsub(/[^a-z0-9_.-]/i, '-')
|
55
|
+
end
|
56
|
+
|
57
|
+
map = {
|
58
|
+
'%package%' => package_name,
|
59
|
+
'%normalizedUrl%' => url,
|
60
|
+
'%type%' => type
|
61
|
+
}
|
62
|
+
|
63
|
+
re = Regexp.new(map.keys.map { |x| Regexp.escape(x) }.join('|'))
|
64
|
+
|
65
|
+
mirror_url.gsub(re, map)
|
66
|
+
end
|
67
|
+
|
68
|
+
def process_hg_url(mirror_url, package_name, url, type)
|
69
|
+
process_git_url( mirror_url, package_name, url, type)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/php-composer.gemspec
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
$:.push File.expand_path('../lib', __FILE__)
|
5
|
+
require 'composer'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
8
|
spec.name = 'php-composer'
|
8
|
-
spec.version = Composer::
|
9
|
+
spec.version = Composer::GEM_VERSION
|
9
10
|
spec.authors = ['Ioannis Kappas']
|
10
11
|
spec.email = ['ikappas@devworks.gr']
|
11
12
|
|
@@ -14,18 +15,23 @@ Gem::Specification.new do |spec|
|
|
14
15
|
spec.homepage = %q{http://github.com/ikappas/php-composer/tree/master}
|
15
16
|
spec.license = 'MIT'
|
16
17
|
|
17
|
-
spec.files =
|
18
|
+
spec.files = FileList['lib/**/*.rb', 'LICENSE.txt', 'README.md']
|
19
|
+
spec.test_files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
20
|
spec.require_paths = ['lib']
|
19
21
|
|
20
|
-
spec.required_ruby_version = '>= 1.
|
22
|
+
spec.required_ruby_version = '>= 2.1.7'
|
21
23
|
spec.required_rubygems_version = '>= 1.8'
|
22
24
|
|
23
25
|
spec.add_runtime_dependency 'json', '~> 1.8'
|
24
26
|
spec.add_runtime_dependency 'json-schema', '~> 2.5'
|
27
|
+
spec.add_runtime_dependency 'php-composer-semver', '~> 1.2'
|
25
28
|
|
26
29
|
spec.add_development_dependency 'bundler', '~> 1.8'
|
27
30
|
spec.add_development_dependency 'rake', '~> 10.0'
|
28
|
-
spec.add_development_dependency 'rspec', '~>
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
29
32
|
spec.add_development_dependency 'rubocop', '~> 0.35', '>= 0.35.0'
|
33
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.3', '>= 1.3.1'
|
34
|
+
spec.add_development_dependency 'coveralls', '~> 0.8.2'
|
30
35
|
spec.add_development_dependency 'simplecov', '~> 0.10'
|
36
|
+
spec.add_development_dependency 'factory_girl', '~> 4.5.0'
|
31
37
|
end
|
@@ -136,6 +136,11 @@
|
|
136
136
|
"description": "A hash of domain name => github API oauth tokens, typically {\"github.com\":\"<token>\"}.",
|
137
137
|
"additionalProperties": true
|
138
138
|
},
|
139
|
+
"gitlab-oauth": {
|
140
|
+
"type": "object",
|
141
|
+
"description": "A hash of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":\"<token>\"}.",
|
142
|
+
"additionalProperties": true
|
143
|
+
},
|
139
144
|
"http-basic": {
|
140
145
|
"type": "object",
|
141
146
|
"description": "A hash of domain name => {\"username\": \"...\", \"password\": \"...\"}.",
|
@@ -221,6 +226,13 @@
|
|
221
226
|
"type": "boolean",
|
222
227
|
"description": "Defaults to true. If set to false, the OAuth tokens created to access the github API will have a date instead of the machine hostname."
|
223
228
|
},
|
229
|
+
"gitlab-domains": {
|
230
|
+
"type": "array",
|
231
|
+
"description": "A list of domains to use in gitlab mode. This is used for custom GitLab setups, defaults to [\"gitlab.com\"].",
|
232
|
+
"items": {
|
233
|
+
"type": "string"
|
234
|
+
}
|
235
|
+
},
|
224
236
|
"archive-format": {
|
225
237
|
"type": "string",
|
226
238
|
"description": "The default archiving format when not provided on cli, defaults to \"tar\"."
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: php-composer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre.alpha11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ioannis Kappas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: php-composer-semver
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.2'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +86,14 @@ dependencies:
|
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '3.4'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '3.4'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +114,40 @@ dependencies:
|
|
100
114
|
- - ">="
|
101
115
|
- !ruby/object:Gem::Version
|
102
116
|
version: 0.35.0
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rubocop-rspec
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.3'
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.3.1
|
127
|
+
type: :development
|
128
|
+
prerelease: false
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.3'
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: 1.3.1
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: coveralls
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.8.2
|
144
|
+
type: :development
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 0.8.2
|
103
151
|
- !ruby/object:Gem::Dependency
|
104
152
|
name: simplecov
|
105
153
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +162,20 @@ dependencies:
|
|
114
162
|
- - "~>"
|
115
163
|
- !ruby/object:Gem::Version
|
116
164
|
version: '0.10'
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: factory_girl
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - "~>"
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: 4.5.0
|
172
|
+
type: :development
|
173
|
+
prerelease: false
|
174
|
+
version_requirements: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - "~>"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 4.5.0
|
117
179
|
description: A ruby gem library for consistent interactions with php composer dependency
|
118
180
|
manager.
|
119
181
|
email:
|
@@ -123,28 +185,29 @@ extensions: []
|
|
123
185
|
extra_rdoc_files: []
|
124
186
|
files:
|
125
187
|
- ".gitignore"
|
188
|
+
- ".rbenv-gemsets"
|
126
189
|
- ".rspec"
|
127
190
|
- ".rubocop.yml"
|
191
|
+
- ".ruby-version"
|
128
192
|
- Gemfile
|
129
193
|
- LICENSE.txt
|
130
194
|
- README.md
|
131
195
|
- Rakefile
|
132
196
|
- lib/composer.rb
|
133
|
-
- lib/composer/error.rb
|
134
197
|
- lib/composer/json/json_file.rb
|
135
198
|
- lib/composer/json/json_formatter.rb
|
136
|
-
- lib/composer/json/
|
199
|
+
- lib/composer/json/json_validation_error.rb
|
137
200
|
- lib/composer/package/alias_package.rb
|
138
|
-
- lib/composer/package/base_package.rb
|
139
201
|
- lib/composer/package/complete_package.rb
|
140
202
|
- lib/composer/package/dumper/hash_dumper.rb
|
203
|
+
- lib/composer/package/dumper/hash_dumper/complete_package_attribute_dumpers.rb
|
204
|
+
- lib/composer/package/dumper/hash_dumper/package_attribute_dumpers.rb
|
205
|
+
- lib/composer/package/dumper/hash_dumper/root_package_attribute_dumpers.rb
|
141
206
|
- lib/composer/package/link.rb
|
142
|
-
- lib/composer/package/link_constraint/base_constraint.rb
|
143
|
-
- lib/composer/package/link_constraint/empty_constraint.rb
|
144
|
-
- lib/composer/package/link_constraint/multi_constraint.rb
|
145
|
-
- lib/composer/package/link_constraint/specific_constraint.rb
|
146
|
-
- lib/composer/package/link_constraint/version_constraint.rb
|
147
207
|
- lib/composer/package/loader/hash_loader.rb
|
208
|
+
- lib/composer/package/loader/hash_loader/complete_package_attribute_loaders.rb
|
209
|
+
- lib/composer/package/loader/hash_loader/package_attribute_loaders.rb
|
210
|
+
- lib/composer/package/loader/hash_loader/root_package_attribute_loaders.rb
|
148
211
|
- lib/composer/package/loader/json_loader.rb
|
149
212
|
- lib/composer/package/package.rb
|
150
213
|
- lib/composer/package/root_alias_package.rb
|
@@ -156,7 +219,7 @@ files:
|
|
156
219
|
- lib/composer/repository/filesystem_repository.rb
|
157
220
|
- lib/composer/repository/hash_repository.rb
|
158
221
|
- lib/composer/repository/writeable_hash_repository.rb
|
159
|
-
- lib/composer/
|
222
|
+
- lib/composer/util/composer_mirror.rb
|
160
223
|
- php-composer.gemspec
|
161
224
|
- resources/composer-schema.json
|
162
225
|
homepage: http://github.com/ikappas/php-composer/tree/master
|
@@ -171,7 +234,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
171
234
|
requirements:
|
172
235
|
- - ">="
|
173
236
|
- !ruby/object:Gem::Version
|
174
|
-
version: 1.
|
237
|
+
version: 2.1.7
|
175
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
239
|
requirements:
|
177
240
|
- - ">="
|
@@ -179,8 +242,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
242
|
version: '1.8'
|
180
243
|
requirements: []
|
181
244
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.2.
|
245
|
+
rubygems_version: 2.2.5
|
183
246
|
signing_key:
|
184
247
|
specification_version: 4
|
185
248
|
summary: PHP Composer Ruby Gem
|
186
|
-
test_files:
|
249
|
+
test_files:
|
250
|
+
- ".gitignore"
|
251
|
+
- ".rbenv-gemsets"
|
252
|
+
- ".rspec"
|
253
|
+
- ".rubocop.yml"
|
254
|
+
- ".ruby-version"
|
255
|
+
- Gemfile
|
256
|
+
- LICENSE.txt
|
257
|
+
- README.md
|
258
|
+
- Rakefile
|
259
|
+
- lib/composer.rb
|
260
|
+
- lib/composer/json/json_file.rb
|
261
|
+
- lib/composer/json/json_formatter.rb
|
262
|
+
- lib/composer/json/json_validation_error.rb
|
263
|
+
- lib/composer/package/alias_package.rb
|
264
|
+
- lib/composer/package/complete_package.rb
|
265
|
+
- lib/composer/package/dumper/hash_dumper.rb
|
266
|
+
- lib/composer/package/dumper/hash_dumper/complete_package_attribute_dumpers.rb
|
267
|
+
- lib/composer/package/dumper/hash_dumper/package_attribute_dumpers.rb
|
268
|
+
- lib/composer/package/dumper/hash_dumper/root_package_attribute_dumpers.rb
|
269
|
+
- lib/composer/package/link.rb
|
270
|
+
- lib/composer/package/loader/hash_loader.rb
|
271
|
+
- lib/composer/package/loader/hash_loader/complete_package_attribute_loaders.rb
|
272
|
+
- lib/composer/package/loader/hash_loader/package_attribute_loaders.rb
|
273
|
+
- lib/composer/package/loader/hash_loader/root_package_attribute_loaders.rb
|
274
|
+
- lib/composer/package/loader/json_loader.rb
|
275
|
+
- lib/composer/package/package.rb
|
276
|
+
- lib/composer/package/root_alias_package.rb
|
277
|
+
- lib/composer/package/root_package.rb
|
278
|
+
- lib/composer/package/version/version_parser.rb
|
279
|
+
- lib/composer/package/version/version_selector.rb
|
280
|
+
- lib/composer/repository/base_repository.rb
|
281
|
+
- lib/composer/repository/composite_repository.rb
|
282
|
+
- lib/composer/repository/filesystem_repository.rb
|
283
|
+
- lib/composer/repository/hash_repository.rb
|
284
|
+
- lib/composer/repository/writeable_hash_repository.rb
|
285
|
+
- lib/composer/util/composer_mirror.rb
|
286
|
+
- php-composer.gemspec
|
287
|
+
- resources/composer-schema.json
|
data/lib/composer/error.rb
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# This file was ported to ruby from Composer php source code.
|
3
|
-
# Original Source: Composer\Package\BasePackage.php
|
4
|
-
#
|
5
|
-
# (c) Nils Adermann <naderman@naderman.de>
|
6
|
-
# Jordi Boggiano <j.boggiano@seld.be>
|
7
|
-
#
|
8
|
-
# For the full copyright and license information, please view the LICENSE
|
9
|
-
# file that was distributed with this source code.
|
10
|
-
#
|
11
|
-
|
12
|
-
module Composer
|
13
|
-
module Package
|
14
|
-
|
15
|
-
# Base class for packages providing name storage
|
16
|
-
# and default match implementation
|
17
|
-
# @php_author Nils Adermann <naderman@naderman.de>
|
18
|
-
# @author Ioannis Kappas <ikappas@devworks.gr>
|
19
|
-
class BasePackage
|
20
|
-
|
21
|
-
# base package attributes
|
22
|
-
attr_accessor :id, :repository, :transport_options
|
23
|
-
attr_reader :name, :pretty_name, :version, :pretty_version, :stability
|
24
|
-
|
25
|
-
STABILITY_STABLE = 0
|
26
|
-
STABILITY_RC = 5
|
27
|
-
STABILITY_BETA = 10
|
28
|
-
STABILITY_ALPHA = 15
|
29
|
-
STABILITY_DEV = 20
|
30
|
-
|
31
|
-
SUPPORTED_LINK_TYPES = {
|
32
|
-
'require' => {
|
33
|
-
'description' => 'requires',
|
34
|
-
'method' => 'requires'
|
35
|
-
},
|
36
|
-
'conflict' => {
|
37
|
-
'description' => 'conflicts',
|
38
|
-
'method' => 'conflicts'
|
39
|
-
},
|
40
|
-
'provide' => {
|
41
|
-
'description' => 'provides',
|
42
|
-
'method' => 'provides'
|
43
|
-
},
|
44
|
-
'replace' => {
|
45
|
-
'description' => 'replaces',
|
46
|
-
'method' => 'replaces'
|
47
|
-
},
|
48
|
-
'require-dev' => {
|
49
|
-
'description' => 'requires (for development)',
|
50
|
-
'method' => 'dev_requires'
|
51
|
-
}
|
52
|
-
}.freeze()
|
53
|
-
|
54
|
-
class << self
|
55
|
-
|
56
|
-
def stabilities
|
57
|
-
@stabilities ||= {
|
58
|
-
'stable' => STABILITY_STABLE,
|
59
|
-
'RC' => STABILITY_RC,
|
60
|
-
'beta' => STABILITY_BETA,
|
61
|
-
'alpha' => STABILITY_ALPHA,
|
62
|
-
'dev' => STABILITY_DEV,
|
63
|
-
}.freeze()
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
# Creates a new in memory package.
|
69
|
-
# Param: string name The package's name
|
70
|
-
# Param: string version The package's version
|
71
|
-
# Param: string pretty_version The package's non-normalized version
|
72
|
-
def initialize(name)
|
73
|
-
@pretty_name = name
|
74
|
-
@name = name.downcase
|
75
|
-
@id = -1
|
76
|
-
@transport_options = []
|
77
|
-
end
|
78
|
-
|
79
|
-
def attributes
|
80
|
-
dumper = Composer::Package::Dumper::HashDumper.new
|
81
|
-
dumper.dump(self)
|
82
|
-
end
|
83
|
-
|
84
|
-
# Set package type
|
85
|
-
# Param: string type
|
86
|
-
def type=(type)
|
87
|
-
@type = type
|
88
|
-
end
|
89
|
-
|
90
|
-
# Get package type
|
91
|
-
# Return: string
|
92
|
-
def type
|
93
|
-
@type ? @type : 'library'
|
94
|
-
end
|
95
|
-
|
96
|
-
# Set package repository
|
97
|
-
def repository=(repository)
|
98
|
-
if (@repository && repository != @repository)
|
99
|
-
raise LogicError, 'A package can only be added to one repository'
|
100
|
-
end
|
101
|
-
@repository = repository
|
102
|
-
end
|
103
|
-
|
104
|
-
# Get package repository
|
105
|
-
def repository
|
106
|
-
@repository
|
107
|
-
end
|
108
|
-
|
109
|
-
# def is_platform?
|
110
|
-
# @repository && @repository.instance_of?(PlatformRepository)
|
111
|
-
# end
|
112
|
-
|
113
|
-
# Returns package unique name, constructed from name, version and
|
114
|
-
# release type.
|
115
|
-
# Return: string
|
116
|
-
def unique_name
|
117
|
-
"#{name}-#{version}"
|
118
|
-
end
|
119
|
-
|
120
|
-
def pretty_string
|
121
|
-
"#{pretty_name} #{pretty_version}"
|
122
|
-
end
|
123
|
-
|
124
|
-
def to_s
|
125
|
-
unique_name
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|