php-composer 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/composer.rb +2 -0
- data/lib/composer/repository/base_repository.rb +48 -0
- data/lib/composer/repository/composite_repository.rb +132 -0
- data/lib/composer/repository/hash_repository.rb +20 -19
- data/lib/composer/repository/writeable_hash_repository.rb +2 -0
- data/lib/composer/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd0828242017fa93167a253e4fbce6bbae871628
|
4
|
+
data.tar.gz: 69d2a47754a7c7185470305e96e0a688c2af3c6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ae70ad8be0979752a5dc60cf9443e11cd77be59dfa52f4843df3e885606bd0d54561e0acf4464d30d86f7c81ba2e45beab9b74a22b8ca078a1c599405ff5a67
|
7
|
+
data.tar.gz: 66aceb42043d3823308f769835d78a8a5b7df75fb93e3e9b1aa41d4e37665b323e489495204360e45b9bb864cce515cfbe8777136e6e8b72e1d6ce7783c4a13b
|
data/lib/composer.rb
CHANGED
@@ -44,9 +44,11 @@ require 'composer/package/version/version_selector'
|
|
44
44
|
# Dir[File.join(File.dirname(__FILE__), "composer/package/version/*.rb")].each {|file| require file }
|
45
45
|
|
46
46
|
# /repository
|
47
|
+
require 'composer/repository/base_repository'
|
47
48
|
require 'composer/repository/hash_repository'
|
48
49
|
require 'composer/repository/writeable_hash_repository'
|
49
50
|
require 'composer/repository/filesystem_repository'
|
51
|
+
require 'composer/repository/composite_repository'
|
50
52
|
|
51
53
|
module Composer
|
52
54
|
end
|
@@ -0,0 +1,48 @@
|
|
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
|
+
module Composer
|
13
|
+
module Repository
|
14
|
+
# Base repository.
|
15
|
+
#
|
16
|
+
# PHP Authors:
|
17
|
+
# Nils Adermann <naderman@naderman.de>
|
18
|
+
# Konstantin Kudryashov <ever.zet@gmail.com>
|
19
|
+
# Jordi Boggiano <j.boggiano@seld.
|
20
|
+
#
|
21
|
+
# Ruby Authors:
|
22
|
+
# Ioannis Kappas <ikappas@devworks.gr>
|
23
|
+
class BaseRepository
|
24
|
+
SEARCH_FULLTEXT = 0
|
25
|
+
SEARCH_NAME = 1
|
26
|
+
|
27
|
+
def package?
|
28
|
+
# implement inside child
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_package(name, version)
|
32
|
+
# implement inside child
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_packages(name, version = nil)
|
36
|
+
# implement inside child
|
37
|
+
end
|
38
|
+
|
39
|
+
def packages
|
40
|
+
# implement inside child
|
41
|
+
end
|
42
|
+
|
43
|
+
def search(query, mode = 0)
|
44
|
+
# implement inside child
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
#
|
2
|
+
# This file was ported to ruby from Composer php source code.
|
3
|
+
# Original Source: Composer\Repository\CompositeRepository.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 Repository
|
14
|
+
# CompositeRepository repository.
|
15
|
+
#
|
16
|
+
# PHP Authors:
|
17
|
+
# Beau Simensen <beau@dflydev.com>
|
18
|
+
#
|
19
|
+
# Ruby Authors:
|
20
|
+
# Ioannis Kappas <ikappas@devworks.gr>
|
21
|
+
class CompositeRepository < Composer::Repository::BaseRepository
|
22
|
+
# Initializes filesystem repository.
|
23
|
+
# @param [Array] An array of reporitories
|
24
|
+
def initialize(repositories)
|
25
|
+
unless repositories
|
26
|
+
raise ArgumentError,
|
27
|
+
'repositories must be specified'
|
28
|
+
end
|
29
|
+
unless repositories.is_a?(Array)
|
30
|
+
raise TypeError,
|
31
|
+
'repositories type must be an \
|
32
|
+
Array of Composer::Repository::BaseRepository'
|
33
|
+
end
|
34
|
+
@repositories = []
|
35
|
+
repositories.each do |repository|
|
36
|
+
add_repository(repository)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def repositories
|
41
|
+
@repositories
|
42
|
+
end
|
43
|
+
|
44
|
+
def package?(package)
|
45
|
+
@repositories.each do |repo|
|
46
|
+
if repo.package?(package)
|
47
|
+
return true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
false
|
51
|
+
end
|
52
|
+
|
53
|
+
def find_package(name, version = nil)
|
54
|
+
package = nil
|
55
|
+
@repositories.each do |repo|
|
56
|
+
package = repo.find_package(name, version)
|
57
|
+
break unless package.nil?
|
58
|
+
end
|
59
|
+
package
|
60
|
+
end
|
61
|
+
|
62
|
+
def find_packages(name, version = nil)
|
63
|
+
packages = []
|
64
|
+
@repositories.each do |repo|
|
65
|
+
repo_packages = repo.find_packages(name, version)
|
66
|
+
repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
|
67
|
+
end
|
68
|
+
packages
|
69
|
+
end
|
70
|
+
|
71
|
+
def search(query, mode = 0)
|
72
|
+
matches = []
|
73
|
+
@repositories.each do |repo|
|
74
|
+
repo_matches = repo.search(query, mode)
|
75
|
+
repo_matches.map{ |m| matches.push(m) } unless repo_matches.empty?
|
76
|
+
end
|
77
|
+
matches
|
78
|
+
end
|
79
|
+
|
80
|
+
# def filter_packages(callback, class_name = 'Composer::Package::Package')
|
81
|
+
# @repositories.each do |repo|
|
82
|
+
# if (false === repo.filter_packages(callback, class_name))
|
83
|
+
# return false
|
84
|
+
# end
|
85
|
+
# end
|
86
|
+
# true
|
87
|
+
# end
|
88
|
+
|
89
|
+
def packages
|
90
|
+
packages = []
|
91
|
+
@repositories.each do |repo|
|
92
|
+
repo_packages = repo.packages
|
93
|
+
repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
|
94
|
+
end
|
95
|
+
packages
|
96
|
+
end
|
97
|
+
|
98
|
+
def remove_package(package)
|
99
|
+
@repositories.each do |repo|
|
100
|
+
repo.remove_package(package)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def count
|
105
|
+
total = 0;
|
106
|
+
@repositories.each do |repo|
|
107
|
+
total += repo.count
|
108
|
+
end
|
109
|
+
total
|
110
|
+
end
|
111
|
+
|
112
|
+
def add_repository(repository)
|
113
|
+
unless repository
|
114
|
+
raise ArgumentError,
|
115
|
+
'repository must be specified'
|
116
|
+
end
|
117
|
+
unless repository.is_a?(Composer::Repository::BaseRepository)
|
118
|
+
raise TypeError,
|
119
|
+
'repository type must be a \
|
120
|
+
Composer::Repository::BaseRepository or superclass'
|
121
|
+
end
|
122
|
+
if repository.instance_of?(Composer::Repository::CompositeRepository)
|
123
|
+
repository.repositories.each do |repo|
|
124
|
+
add_repository(repo)
|
125
|
+
end
|
126
|
+
else
|
127
|
+
@repositories.push(repository)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
module Composer
|
13
13
|
module Repository
|
14
|
-
class HashRepository
|
14
|
+
class HashRepository < Composer::Repository::BaseRepository
|
15
15
|
def initialize(packages = [])
|
16
16
|
packages.each do |package|
|
17
17
|
add_package(package)
|
@@ -23,17 +23,21 @@ module Composer
|
|
23
23
|
name = name.downcase
|
24
24
|
|
25
25
|
# normalize version
|
26
|
-
if version
|
26
|
+
if !version.nil?
|
27
27
|
version_parser = Composer::Package::Version::VersionParser.new
|
28
28
|
version = version_parser.normalize(version)
|
29
29
|
end
|
30
30
|
|
31
|
+
match = nil
|
31
32
|
packages.each do |package|
|
32
|
-
if package.name === name
|
33
|
-
|
33
|
+
if package.name === name
|
34
|
+
if version.nil? || package.version === version
|
35
|
+
match = package
|
36
|
+
break
|
37
|
+
end
|
34
38
|
end
|
35
39
|
end
|
36
|
-
|
40
|
+
match
|
37
41
|
end
|
38
42
|
|
39
43
|
def find_packages(name, version = nil)
|
@@ -49,40 +53,37 @@ module Composer
|
|
49
53
|
matches = []
|
50
54
|
packages.each do |package|
|
51
55
|
if package.name === name && (nil === version || version === package.version)
|
52
|
-
matches
|
56
|
+
matches.push(package)
|
53
57
|
end
|
54
58
|
end
|
55
59
|
matches
|
56
60
|
end
|
57
61
|
|
58
|
-
def search(query,
|
62
|
+
def search(query, mode = 0)
|
59
63
|
regex = /(?:#{query.split(/\s+/).join('|')})/i
|
60
64
|
matches = {}
|
61
65
|
packages.each do |package|
|
62
66
|
name = package.name
|
63
67
|
|
64
68
|
# already matched
|
65
|
-
next if matches[
|
69
|
+
next if matches[name]
|
66
70
|
|
67
71
|
# search
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
next unless (
|
75
|
-
full_search == false &&
|
76
|
-
regex.match(name)
|
77
|
-
)
|
72
|
+
unless regex.match(name)
|
73
|
+
unless mode === Composer::Repository::BaseRepository::SEARCH_FULLTEXT &&
|
74
|
+
package.instance_of?(Composer::Package::CompletePackage) &&
|
75
|
+
regex.match("#{package.keywords ? package.keywords.join(' ') : ''} #{package.description ? package.description : ''}")
|
76
|
+
next
|
77
|
+
end
|
78
78
|
end
|
79
79
|
|
80
80
|
matches[name] = {
|
81
81
|
'name' => package.pretty_name,
|
82
82
|
'description' => package.description,
|
83
83
|
}
|
84
|
+
|
84
85
|
end
|
85
|
-
matches
|
86
|
+
matches.values
|
86
87
|
end
|
87
88
|
|
88
89
|
def package?(package)
|
data/lib/composer/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: php-composer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ioannis Kappas
|
@@ -153,6 +153,8 @@ files:
|
|
153
153
|
- lib/composer/package/root_package.rb
|
154
154
|
- lib/composer/package/version/version_parser.rb
|
155
155
|
- lib/composer/package/version/version_selector.rb
|
156
|
+
- lib/composer/repository/base_repository.rb
|
157
|
+
- lib/composer/repository/composite_repository.rb
|
156
158
|
- lib/composer/repository/filesystem_repository.rb
|
157
159
|
- lib/composer/repository/hash_repository.rb
|
158
160
|
- lib/composer/repository/writeable_hash_repository.rb
|