elm_install 1.2.0 → 1.3.0
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/.rubocop.yml +4 -0
- data/Gemfile.lock +2 -2
- data/Readme.md +6 -0
- data/lib/elm_install/git_source.rb +16 -8
- data/lib/elm_install/identifier.rb +22 -0
- data/lib/elm_install/repository.rb +18 -1
- data/lib/elm_install/resolver.rb +2 -3
- data/lib/elm_install/version.rb +1 -1
- data/package.json +1 -1
- data/packaging/Gemfile +1 -1
- data/packaging/Gemfile.lock +4 -5
- data/spec/elm_install_spec.rb +1 -2
- data/spec/git_source_spec.rb +33 -3
- data/spec/identifer_spec.rb +1 -2
- data/spec/installer_spec.rb +2 -4
- data/spec/spec_helper.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c6f2e9e7bc312adb591680f029bb8ffe931d9eb
|
4
|
+
data.tar.gz: ae3e9b0a3d08c052f6dd9010fb36d55066e673b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1c8dc7e9c48edc0e89d300b24dda4f82c184d57b4c3eb6b3540c1a762a2649c1febab6acd0ce267157114a4e34d371b365f1bbfe02381d4b1792b7b9b015517
|
7
|
+
data.tar.gz: abd5efb9133618afb67407f22fea9b554a31f88f706b572e803af6af2a67306903249ad69b6c4d838953a9d7344522be409667eda41294b28fcf02713e1df8c1
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
elm_install (1.
|
4
|
+
elm_install (1.3.0)
|
5
5
|
adts (~> 0.1.2)
|
6
6
|
commander (~> 4.4, >= 4.4.2)
|
7
7
|
contracts (~> 0.16.0)
|
@@ -120,7 +120,7 @@ GEM
|
|
120
120
|
simplecov-html (0.10.0)
|
121
121
|
slop (3.6.0)
|
122
122
|
smart_colored (1.1.1)
|
123
|
-
solve (3.1.
|
123
|
+
solve (3.1.1)
|
124
124
|
molinillo (>= 0.5)
|
125
125
|
semverse (>= 1.1, < 3.0)
|
126
126
|
sparkr (0.4.1)
|
data/Readme.md
CHANGED
@@ -162,6 +162,12 @@ OPTIONS:
|
|
162
162
|
--verbose
|
163
163
|
```
|
164
164
|
|
165
|
+
## Known Issues
|
166
|
+
* Using the NPM package or the released binaries in windows while specifing a
|
167
|
+
relative directory as a package will fail because of the 2.2 travelling
|
168
|
+
ruby dependency. Using the >Ruby 2.3 with the gem installed works properly.
|
169
|
+
More #36
|
170
|
+
|
165
171
|
## FAQ
|
166
172
|
|
167
173
|
#### Do I need to use SSH keys?
|
@@ -33,7 +33,12 @@ module ElmInstall
|
|
33
33
|
when Branch::Just
|
34
34
|
@branch.ref
|
35
35
|
when Branch::Nothing
|
36
|
-
version
|
36
|
+
case version
|
37
|
+
when String
|
38
|
+
version
|
39
|
+
else
|
40
|
+
version.to_simple
|
41
|
+
end
|
37
42
|
end
|
38
43
|
|
39
44
|
repository.checkout ref
|
@@ -63,14 +68,15 @@ module ElmInstall
|
|
63
68
|
nil
|
64
69
|
end
|
65
70
|
|
66
|
-
Contract ArrayOf[Solve::Constraint] => ArrayOf[Semverse::Version]
|
71
|
+
Contract ArrayOf[Solve::Constraint], String => ArrayOf[Semverse::Version]
|
67
72
|
# Returns the available versions for a repository
|
68
73
|
#
|
69
74
|
# @param constraints [Array] The constraints
|
75
|
+
# @param elm_version [String] The Elm version to match against
|
70
76
|
#
|
71
77
|
# @return [Array] The versions
|
72
|
-
def versions(constraints)
|
73
|
-
if repository.cloned?
|
78
|
+
def versions(constraints, elm_version)
|
79
|
+
if repository.cloned? && !repository.fetched?
|
74
80
|
# Get updates from upstream
|
75
81
|
Logger.arrow "Getting updates for: #{package_name.bold}"
|
76
82
|
repository.fetch
|
@@ -80,21 +86,23 @@ module ElmInstall
|
|
80
86
|
when Branch::Just
|
81
87
|
[identifier.version(fetch(@branch.ref))]
|
82
88
|
when Branch::Nothing
|
83
|
-
matching_versions constraints
|
89
|
+
matching_versions constraints, elm_version
|
84
90
|
end
|
85
91
|
end
|
86
92
|
|
87
|
-
Contract ArrayOf[Solve::Constraint] => ArrayOf[Semverse::Version]
|
93
|
+
Contract ArrayOf[Solve::Constraint], String => ArrayOf[Semverse::Version]
|
88
94
|
# Returns the matchign versions for a repository for the given constraints
|
89
95
|
#
|
90
96
|
# @param constraints [Array] The constraints
|
97
|
+
# @param elm_version [String] The Elm version to match against
|
91
98
|
#
|
92
99
|
# @return [Array] The versions
|
93
|
-
def matching_versions(constraints)
|
100
|
+
def matching_versions(constraints, elm_version)
|
94
101
|
repository
|
95
102
|
.versions
|
96
103
|
.select do |version|
|
97
|
-
|
104
|
+
identifier.elm_version(fetch(version.to_s)) == elm_version &&
|
105
|
+
constraints.all? { |constraint| constraint.satisfies?(version) }
|
98
106
|
end
|
99
107
|
.sort
|
100
108
|
.reverse
|
@@ -7,6 +7,9 @@ module ElmInstall
|
|
7
7
|
# @return [Hash] The options
|
8
8
|
attr_reader :options
|
9
9
|
|
10
|
+
# @return [String] The initial Elm version
|
11
|
+
attr_reader :initial_elm_version
|
12
|
+
|
10
13
|
Contract Dir, Hash => Identifier
|
11
14
|
# Initialize a new identifier.
|
12
15
|
#
|
@@ -17,6 +20,7 @@ module ElmInstall
|
|
17
20
|
def initialize(directory, options = {})
|
18
21
|
@options = options
|
19
22
|
@dependency_sources = dependency_sources directory
|
23
|
+
@initial_elm_version = elm_version directory
|
20
24
|
@initial_dependencies = identify directory
|
21
25
|
self
|
22
26
|
end
|
@@ -41,6 +45,24 @@ module ElmInstall
|
|
41
45
|
Semverse::Version.new(json(directory)['version'])
|
42
46
|
end
|
43
47
|
|
48
|
+
Contract Dir => String
|
49
|
+
# Returns the Elm version for a package
|
50
|
+
#
|
51
|
+
# @param directory [Dir] The directory
|
52
|
+
#
|
53
|
+
# @return [String] The version
|
54
|
+
def elm_version(directory)
|
55
|
+
if json(directory)['elm-version'] =~ /<\s*0\.19/
|
56
|
+
'0.18'
|
57
|
+
elsif json(directory)['elm-version'] =~ /<\s*0\.18/
|
58
|
+
'0.17'
|
59
|
+
elsif json(directory)['elm-version'] =~ /<\s*0\.17/
|
60
|
+
'0.16'
|
61
|
+
else
|
62
|
+
''
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
44
66
|
Contract Dir => ArrayOf[Dependency]
|
45
67
|
# Identifies dependencies from a directory
|
46
68
|
#
|
@@ -11,7 +11,7 @@ module ElmInstall
|
|
11
11
|
# @return [String]
|
12
12
|
attr_reader :path
|
13
13
|
|
14
|
-
|
14
|
+
@@fetched = {}
|
15
15
|
|
16
16
|
Contract String, String => Repository
|
17
17
|
# Initializes a repository.
|
@@ -76,6 +76,22 @@ module ElmInstall
|
|
76
76
|
Dir.exist?(path)
|
77
77
|
end
|
78
78
|
|
79
|
+
# Returns if the repository has been fetched yet or not.
|
80
|
+
#
|
81
|
+
# @return [Bool]
|
82
|
+
def fetched?
|
83
|
+
@@fetched.key?(url)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Fetches changes from a repository
|
87
|
+
#
|
88
|
+
# @return [Void]
|
89
|
+
def fetch
|
90
|
+
return if fetched?
|
91
|
+
repo.fetch
|
92
|
+
@@fetched[url] = true
|
93
|
+
end
|
94
|
+
|
79
95
|
Contract None => Git::Base
|
80
96
|
# Clones the repository
|
81
97
|
#
|
@@ -83,6 +99,7 @@ module ElmInstall
|
|
83
99
|
def clone
|
84
100
|
Logger.arrow "Package: #{url.bold} not found in cache, cloning..."
|
85
101
|
FileUtils.mkdir_p path
|
102
|
+
@@fetched[url] = true
|
86
103
|
@repo = Git.clone(url, path)
|
87
104
|
end
|
88
105
|
end
|
data/lib/elm_install/resolver.rb
CHANGED
@@ -36,14 +36,13 @@ module ElmInstall
|
|
36
36
|
#
|
37
37
|
# @return nil
|
38
38
|
def resolve_dependency(dependency)
|
39
|
-
return if @dependencies[dependency.name]
|
40
|
-
|
41
39
|
@dependencies[dependency.name] ||= dependency
|
42
40
|
|
43
41
|
dependency
|
44
42
|
.source
|
45
|
-
.versions(dependency.constraints)
|
43
|
+
.versions(dependency.constraints, @identifier.initial_elm_version)
|
46
44
|
.each do |version|
|
45
|
+
next if @graph.artifact?(dependency.name, version)
|
47
46
|
resolve_dependencies(dependency, version)
|
48
47
|
end
|
49
48
|
|
data/lib/elm_install/version.rb
CHANGED
data/package.json
CHANGED
data/packaging/Gemfile
CHANGED
data/packaging/Gemfile.lock
CHANGED
@@ -5,26 +5,25 @@ GEM
|
|
5
5
|
commander (4.4.3)
|
6
6
|
highline (~> 1.7.2)
|
7
7
|
contracts (0.16.0)
|
8
|
-
elm_install (1.
|
8
|
+
elm_install (1.2.0)
|
9
9
|
adts (~> 0.1.2)
|
10
10
|
commander (~> 4.4, >= 4.4.2)
|
11
11
|
contracts (~> 0.16.0)
|
12
12
|
git (~> 1.3)
|
13
13
|
git_clone_url (~> 2.0)
|
14
|
-
hashdiff (~> 0.3.1)
|
15
14
|
indentation (~> 0.1.1)
|
15
|
+
molinillo (= 0.5.7)
|
16
16
|
smart_colored (~> 1.1, >= 1.1.1)
|
17
17
|
solve (~> 3.1)
|
18
18
|
git (1.3.0)
|
19
19
|
git_clone_url (2.0.0)
|
20
20
|
uri-ssh_git (>= 2.0)
|
21
|
-
hashdiff (0.3.4)
|
22
21
|
highline (1.7.8)
|
23
22
|
indentation (0.1.1)
|
24
23
|
molinillo (0.5.7)
|
25
24
|
semverse (2.0.0)
|
26
25
|
smart_colored (1.1.1)
|
27
|
-
solve (3.1.
|
26
|
+
solve (3.1.1)
|
28
27
|
molinillo (>= 0.5)
|
29
28
|
semverse (>= 1.1, < 3.0)
|
30
29
|
uri-ssh_git (2.0.0)
|
@@ -33,7 +32,7 @@ PLATFORMS
|
|
33
32
|
ruby
|
34
33
|
|
35
34
|
DEPENDENCIES
|
36
|
-
elm_install (= 1.
|
35
|
+
elm_install (= 1.2.0)
|
37
36
|
|
38
37
|
RUBY VERSION
|
39
38
|
ruby 2.2.2p95
|
data/spec/elm_install_spec.rb
CHANGED
data/spec/git_source_spec.rb
CHANGED
@@ -50,11 +50,24 @@ describe ElmInstall::GitSource do
|
|
50
50
|
expect(repository)
|
51
51
|
.to receive(:fetch)
|
52
52
|
|
53
|
+
expect(repository)
|
54
|
+
.to receive(:fetched?)
|
55
|
+
.and_return(false)
|
56
|
+
|
53
57
|
expect(repository)
|
54
58
|
.to receive(:versions)
|
55
59
|
.and_return([Semverse::Version.new('1.0.0')])
|
56
60
|
|
57
|
-
|
61
|
+
expect(repository)
|
62
|
+
.to receive(:checkout)
|
63
|
+
.with('1.0.0')
|
64
|
+
.and_return(Dir.new('.'))
|
65
|
+
|
66
|
+
expect(subject)
|
67
|
+
.to receive(:identifier)
|
68
|
+
.and_return(double(elm_version: '0.18'))
|
69
|
+
|
70
|
+
subject.versions([], '0.18')
|
58
71
|
end
|
59
72
|
end
|
60
73
|
|
@@ -88,6 +101,10 @@ describe ElmInstall::GitSource do
|
|
88
101
|
expect(repository)
|
89
102
|
.to receive(:fetch)
|
90
103
|
|
104
|
+
expect(repository)
|
105
|
+
.to receive(:fetched?)
|
106
|
+
.and_return(false)
|
107
|
+
|
91
108
|
expect(subject)
|
92
109
|
.to receive(:identifier)
|
93
110
|
.and_return(double(version: Semverse::Version.new('1.0.0')))
|
@@ -96,7 +113,7 @@ describe ElmInstall::GitSource do
|
|
96
113
|
.to receive(:checkout)
|
97
114
|
.and_return(Dir.new('.'))
|
98
115
|
|
99
|
-
subject.versions([])
|
116
|
+
subject.versions([], '0.18')
|
100
117
|
end
|
101
118
|
end
|
102
119
|
end
|
@@ -107,11 +124,24 @@ describe ElmInstall::GitSource do
|
|
107
124
|
expect(repository)
|
108
125
|
.to receive(:fetch)
|
109
126
|
|
127
|
+
expect(repository)
|
128
|
+
.to receive(:fetched?)
|
129
|
+
.and_return(false)
|
130
|
+
|
131
|
+
expect(repository)
|
132
|
+
.to receive(:checkout)
|
133
|
+
.with('1.0.0')
|
134
|
+
.and_return(Dir.new('.'))
|
135
|
+
|
136
|
+
expect(subject)
|
137
|
+
.to receive(:identifier)
|
138
|
+
.and_return(double(elm_version: '0.18'))
|
139
|
+
|
110
140
|
expect(repository)
|
111
141
|
.to receive(:versions)
|
112
142
|
.and_return([Semverse::Version.new('1.0.0')])
|
113
143
|
|
114
|
-
subject.versions([])
|
144
|
+
subject.versions([], '0.18')
|
115
145
|
end
|
116
146
|
end
|
117
147
|
end
|
data/spec/identifer_spec.rb
CHANGED
data/spec/installer_spec.rb
CHANGED
@@ -29,11 +29,10 @@ describe ElmInstall::Installer do
|
|
29
29
|
|
30
30
|
context 'sucessfull install' do
|
31
31
|
before do
|
32
|
-
|
32
|
+
allow(File)
|
33
33
|
.to receive(:read)
|
34
34
|
.with(File.join(Dir.pwd, 'elm-package.json'))
|
35
35
|
.and_return(main_package)
|
36
|
-
.twice
|
37
36
|
|
38
37
|
expect(File)
|
39
38
|
.to receive(:read)
|
@@ -74,11 +73,10 @@ describe ElmInstall::Installer do
|
|
74
73
|
end
|
75
74
|
|
76
75
|
before do
|
77
|
-
|
76
|
+
allow(File)
|
78
77
|
.to receive(:read)
|
79
78
|
.with(File.join(Dir.pwd, 'elm-package.json'))
|
80
79
|
.and_return(main_package)
|
81
|
-
.twice
|
82
80
|
|
83
81
|
expect(subject)
|
84
82
|
.to receive(:results)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elm_install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusztáv Szikszai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|