php-composer 0.4.5 → 1.0.0.pre.alpha11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rbenv-gemsets +1 -0
  3. data/.rubocop.yml +131 -188
  4. data/.ruby-version +1 -0
  5. data/Gemfile +0 -9
  6. data/Rakefile +11 -0
  7. data/lib/composer.rb +52 -49
  8. data/lib/composer/json/json_file.rb +110 -83
  9. data/lib/composer/json/json_formatter.rb +43 -77
  10. data/lib/composer/json/{json_validaton_error.rb → json_validation_error.rb} +6 -2
  11. data/lib/composer/package/alias_package.rb +77 -61
  12. data/lib/composer/package/complete_package.rb +88 -18
  13. data/lib/composer/package/dumper/hash_dumper.rb +50 -118
  14. data/lib/composer/package/dumper/hash_dumper/complete_package_attribute_dumpers.rb +47 -0
  15. data/lib/composer/package/dumper/hash_dumper/package_attribute_dumpers.rb +145 -0
  16. data/lib/composer/package/dumper/hash_dumper/root_package_attribute_dumpers.rb +24 -0
  17. data/lib/composer/package/link.rb +15 -5
  18. data/lib/composer/package/loader/hash_loader.rb +92 -228
  19. data/lib/composer/package/loader/hash_loader/complete_package_attribute_loaders.rb +83 -0
  20. data/lib/composer/package/loader/hash_loader/package_attribute_loaders.rb +181 -0
  21. data/lib/composer/package/loader/hash_loader/root_package_attribute_loaders.rb +32 -0
  22. data/lib/composer/package/loader/json_loader.rb +7 -9
  23. data/lib/composer/package/package.rb +611 -43
  24. data/lib/composer/package/root_alias_package.rb +186 -15
  25. data/lib/composer/package/root_package.rb +12 -4
  26. data/lib/composer/package/version/version_parser.rb +16 -532
  27. data/lib/composer/package/version/version_selector.rb +127 -68
  28. data/lib/composer/repository/base_repository.rb +46 -3
  29. data/lib/composer/repository/composite_repository.rb +4 -4
  30. data/lib/composer/repository/filesystem_repository.rb +15 -8
  31. data/lib/composer/repository/hash_repository.rb +62 -45
  32. data/lib/composer/repository/writeable_hash_repository.rb +5 -5
  33. data/lib/composer/util/composer_mirror.rb +76 -0
  34. data/php-composer.gemspec +14 -8
  35. data/resources/composer-schema.json +12 -0
  36. metadata +117 -16
  37. data/lib/composer/error.rb +0 -8
  38. data/lib/composer/package/base_package.rb +0 -130
  39. data/lib/composer/package/link_constraint/base_constraint.rb +0 -36
  40. data/lib/composer/package/link_constraint/empty_constraint.rb +0 -35
  41. data/lib/composer/package/link_constraint/multi_constraint.rb +0 -67
  42. data/lib/composer/package/link_constraint/specific_constraint.rb +0 -41
  43. data/lib/composer/package/link_constraint/version_constraint.rb +0 -221
  44. 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 |name, package|
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
@@ -1,11 +1,12 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'composer/version'
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::VERSION
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 = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
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.8.7'
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', '~> 5.0'
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.5
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: 2015-11-27 00:00:00.000000000 Z
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: '5.0'
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: '5.0'
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/json_validaton_error.rb
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/version.rb
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.8.7
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.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
@@ -1,8 +0,0 @@
1
- module Composer
2
- class Error < ::StandardError; end
3
- class ArgumentError < Error; end
4
- class TypeError < Error; end
5
- class UnexpectedValueError < Error; end
6
- class LogicError < Error; end
7
- class InvalidRepositoryError < Error; end
8
- end
@@ -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