elm_install 0.3.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.reek +4 -0
- data/.rspec +1 -0
- data/.rubocop.yml +4 -0
- data/Gemfile.lock +30 -25
- data/Rakefile +2 -2
- data/Readme.md +85 -23
- data/bin/elm-install +5 -2
- data/elm_install.gemspec +2 -0
- data/lib/elm_install.rb +18 -1
- data/lib/elm_install/base.rb +3 -46
- data/lib/elm_install/dependency.rb +37 -0
- data/lib/elm_install/directory_source.rb +66 -0
- data/lib/elm_install/ext.rb +23 -0
- data/lib/elm_install/git_source.rb +173 -0
- data/lib/elm_install/identifier.rb +133 -0
- data/lib/elm_install/installer.rb +38 -96
- data/lib/elm_install/populator.rb +54 -75
- data/lib/elm_install/repository.rb +82 -0
- data/lib/elm_install/resolver.rb +48 -118
- data/lib/elm_install/source.rb +18 -0
- data/lib/elm_install/types.rb +43 -0
- data/lib/elm_install/utils.rb +14 -20
- data/lib/elm_install/version.rb +1 -1
- data/package.json +1 -1
- data/packaging/Gemfile +1 -1
- data/packaging/Gemfile.lock +8 -4
- data/scripts/install.js +4 -4
- data/scripts/run.js +4 -4
- data/spec/directory_source_spec.rb +37 -0
- data/spec/{eml_install_spec.rb → elm_install_spec.rb} +6 -3
- data/spec/git_source_spec.rb +115 -0
- data/spec/identifer_spec.rb +53 -0
- data/spec/installer_spec.rb +57 -26
- data/spec/repository_spec.rb +44 -0
- data/spec/resolver_spec.rb +0 -73
- data/spec/spec_helper.rb +3 -1
- data/spec/utils_spec.rb +10 -15
- metadata +43 -17
- data/docs/How it works.md +0 -54
- data/lib/elm_install/cache.rb +0 -52
- data/lib/elm_install/elm_package.rb +0 -119
- data/lib/elm_install/git_resolver.rb +0 -129
- data/lib/elm_install/graph_builder.rb +0 -73
- data/spec/elm_package_spec.rb +0 -73
- data/spec/fixtures/cache.json +0 -8
- data/spec/fixtures/elm-package.json +0 -12
- data/spec/fixtures/invalid-elm-package.json +0 -6
- data/spec/fixtures/mismatched-elm-package.json +0 -9
- data/spec/fixtures/ref-cache.json +0 -4
- data/spec/git_resolver_spec.rb +0 -103
- data/spec/graph_builder_spec.rb +0 -36
- data/spec/populator_spec.rb +0 -44
@@ -0,0 +1,44 @@
|
|
1
|
+
describe ElmInstall::Repository do
|
2
|
+
subject { described_class.new '', '.' }
|
3
|
+
|
4
|
+
describe '#clone' do
|
5
|
+
it 'clones the repository' do
|
6
|
+
expect(FileUtils)
|
7
|
+
.to receive(:mkdir_p)
|
8
|
+
|
9
|
+
expect(Git)
|
10
|
+
.to receive(:clone)
|
11
|
+
.with('', '.')
|
12
|
+
.and_return(Git::Base.new)
|
13
|
+
|
14
|
+
subject.clone
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#checkout' do
|
19
|
+
it 'checks out the given reference' do
|
20
|
+
expect_any_instance_of(Git::Base)
|
21
|
+
.to receive(:reset_hard)
|
22
|
+
.twice
|
23
|
+
|
24
|
+
expect_any_instance_of(Git::Base)
|
25
|
+
.to receive(:checkout).with('')
|
26
|
+
|
27
|
+
subject.checkout('')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#versions' do
|
32
|
+
it 'returns the versions of the repository' do
|
33
|
+
expect_any_instance_of(Git::Base)
|
34
|
+
.to receive(:reset_hard)
|
35
|
+
|
36
|
+
expect_any_instance_of(Git::Base)
|
37
|
+
.to receive(:tags)
|
38
|
+
.and_return [double(name: 'test'), double(name: '1.0.0')]
|
39
|
+
|
40
|
+
expect(subject.versions)
|
41
|
+
.to eq([Semverse::Version.new('1.0.0')])
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/spec/resolver_spec.rb
CHANGED
@@ -1,75 +1,2 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe ElmInstall::Resolver do
|
4
|
-
subject { described_class.new cache, git_resolver }
|
5
|
-
|
6
|
-
let(:git_resolver) { ElmInstall::GitResolver.new directory: CACHE_DIRECTORY }
|
7
|
-
let(:cache) { ElmInstall::Cache.new directory: CACHE_DIRECTORY }
|
8
|
-
|
9
|
-
let(:directory) { File.join CACHE_DIRECTORY, 'github.com/test/repo' }
|
10
|
-
let(:core_directory) { File.join CACHE_DIRECTORY, 'github.com/base/core' }
|
11
|
-
|
12
|
-
let(:package_json) do
|
13
|
-
{ dependencies: { 'base/core' => '1.0.0 <= v < 2.0.0' } }.to_json
|
14
|
-
end
|
15
|
-
|
16
|
-
before do
|
17
|
-
FileUtils.mkdir_p directory
|
18
|
-
File.binwrite File.join(directory, 'elm-package.json'), package_json
|
19
|
-
Git.init directory
|
20
|
-
end
|
21
|
-
|
22
|
-
let(:url) { 'git@github.com:test/repo' }
|
23
|
-
|
24
|
-
let(:core_repo) do
|
25
|
-
repo = Git.init core_directory
|
26
|
-
File.binwrite File.join(core_directory, 'elm-package.json'), '{}'
|
27
|
-
repo
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'should resolve packages' do
|
31
|
-
expect(Git)
|
32
|
-
.to receive(:clone) { core_repo }
|
33
|
-
|
34
|
-
expect(Git)
|
35
|
-
.to receive(:ls_remote)
|
36
|
-
.and_return(tags: { name: '1.0.0' })
|
37
|
-
|
38
|
-
expect(ElmInstall::Logger)
|
39
|
-
.to receive(:arrow)
|
40
|
-
.with "Package: #{'https://github.com/base/core'.bold} not found in \
|
41
|
-
cache, cloning...".gsub(/\s+/, ' ')
|
42
|
-
|
43
|
-
allow_any_instance_of(Git::Remote)
|
44
|
-
.to receive(:url)
|
45
|
-
.and_return url
|
46
|
-
|
47
|
-
allow_any_instance_of(Git::Base)
|
48
|
-
.to receive(:tags)
|
49
|
-
.and_return [double(name: '1.0.0')]
|
50
|
-
|
51
|
-
allow_any_instance_of(Git::Base)
|
52
|
-
.to receive(:checkout)
|
53
|
-
|
54
|
-
subject
|
55
|
-
.instance_variable_get('@git_resolver')
|
56
|
-
.instance_variable_get('@check_cache')[directory] = {}
|
57
|
-
|
58
|
-
subject.instance_variable_get('@git_resolver').cache[directory] = {}
|
59
|
-
|
60
|
-
subject.add_constraints(
|
61
|
-
url => 'development',
|
62
|
-
'git@github.com:base/core' => '1.0.0 <= v < 2.0.0'
|
63
|
-
)
|
64
|
-
end
|
65
|
-
|
66
|
-
describe '#elm_dependencies' do
|
67
|
-
it 'should return empty hash on error' do
|
68
|
-
expect(ElmInstall::ElmPackage)
|
69
|
-
.to receive(:read)
|
70
|
-
.and_raise 'test'
|
71
|
-
|
72
|
-
expect(subject.elm_dependencies('test')).to eq({})
|
73
|
-
end
|
74
|
-
end
|
75
2
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
|
3
|
-
CACHE_DIRECTORY = 'spec/
|
3
|
+
CACHE_DIRECTORY = 'spec/cache'.freeze
|
4
4
|
|
5
5
|
RSpec.configure do |config|
|
6
6
|
config.before do
|
7
|
+
allow(Process).to receive(:exit)
|
8
|
+
allow(ElmInstall::Logger).to receive(:puts)
|
7
9
|
FileUtils.mkdir_p CACHE_DIRECTORY
|
8
10
|
end
|
9
11
|
|
data/spec/utils_spec.rb
CHANGED
@@ -1,34 +1,29 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe ElmInstall::Utils do
|
4
2
|
subject { described_class }
|
5
3
|
|
6
4
|
let(:package_variations) do
|
7
5
|
[
|
8
|
-
'git@github.com:test/repo',
|
9
6
|
'https://github.com/test/repo',
|
10
|
-
'git://github.com/test/repo'
|
7
|
+
'git://github.com/test/repo',
|
8
|
+
'git@github.com:test/repo'
|
11
9
|
]
|
12
10
|
end
|
13
11
|
|
14
|
-
describe '.package_version_path' do
|
15
|
-
it 'should return the path for a package in elm-stuff' do
|
16
|
-
package_variations.each do |package|
|
17
|
-
expect(subject.package_version_path(package, '1.0.0'))
|
18
|
-
.to eq(['test/repo', 'elm-stuff/packages/test/repo/1.0.0'])
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
12
|
describe '.transform_constraint' do
|
24
13
|
it 'should convert basic constraint' do
|
25
14
|
expect(subject.transform_constraint('0.1.0 <= v < 1.0.0'))
|
26
|
-
.to eq(
|
15
|
+
.to eq(
|
16
|
+
[Solve::Constraint.new('< 1.0.0'),
|
17
|
+
Solve::Constraint.new('>= 0.1.0')]
|
18
|
+
)
|
27
19
|
end
|
28
20
|
|
29
21
|
it 'should convert advanced constraint' do
|
30
22
|
expect(subject.transform_constraint('0.1.0 < v <= 1.0.0'))
|
31
|
-
.to eq(
|
23
|
+
.to eq(
|
24
|
+
[Solve::Constraint.new('<= 1.0.0'),
|
25
|
+
Solve::Constraint.new('> 0.1.0')]
|
26
|
+
)
|
32
27
|
end
|
33
28
|
end
|
34
29
|
end
|
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: 0.
|
4
|
+
version: 1.0.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-
|
11
|
+
date: 2017-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -120,6 +120,34 @@ dependencies:
|
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: 0.1.1
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: contracts
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 0.16.0
|
130
|
+
type: :runtime
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: 0.16.0
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: adts
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.1.2
|
144
|
+
type: :runtime
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 0.1.2
|
123
151
|
description:
|
124
152
|
email: gusztav.szikszai@digitalnatives.hu
|
125
153
|
executables:
|
@@ -140,18 +168,21 @@ files:
|
|
140
168
|
- Rakefile
|
141
169
|
- Readme.md
|
142
170
|
- bin/elm-install
|
143
|
-
- docs/How it works.md
|
144
171
|
- elm_install.gemspec
|
145
172
|
- lib/elm_install.rb
|
146
173
|
- lib/elm_install/base.rb
|
147
|
-
- lib/elm_install/
|
148
|
-
- lib/elm_install/
|
149
|
-
- lib/elm_install/
|
150
|
-
- lib/elm_install/
|
174
|
+
- lib/elm_install/dependency.rb
|
175
|
+
- lib/elm_install/directory_source.rb
|
176
|
+
- lib/elm_install/ext.rb
|
177
|
+
- lib/elm_install/git_source.rb
|
178
|
+
- lib/elm_install/identifier.rb
|
151
179
|
- lib/elm_install/installer.rb
|
152
180
|
- lib/elm_install/logger.rb
|
153
181
|
- lib/elm_install/populator.rb
|
182
|
+
- lib/elm_install/repository.rb
|
154
183
|
- lib/elm_install/resolver.rb
|
184
|
+
- lib/elm_install/source.rb
|
185
|
+
- lib/elm_install/types.rb
|
155
186
|
- lib/elm_install/utils.rb
|
156
187
|
- lib/elm_install/version.rb
|
157
188
|
- package.json
|
@@ -164,17 +195,12 @@ files:
|
|
164
195
|
- packaging/wrapper.sh
|
165
196
|
- scripts/install.js
|
166
197
|
- scripts/run.js
|
167
|
-
- spec/
|
168
|
-
- spec/
|
169
|
-
- spec/
|
170
|
-
- spec/
|
171
|
-
- spec/fixtures/invalid-elm-package.json
|
172
|
-
- spec/fixtures/mismatched-elm-package.json
|
173
|
-
- spec/fixtures/ref-cache.json
|
174
|
-
- spec/git_resolver_spec.rb
|
175
|
-
- spec/graph_builder_spec.rb
|
198
|
+
- spec/directory_source_spec.rb
|
199
|
+
- spec/elm_install_spec.rb
|
200
|
+
- spec/git_source_spec.rb
|
201
|
+
- spec/identifer_spec.rb
|
176
202
|
- spec/installer_spec.rb
|
177
|
-
- spec/
|
203
|
+
- spec/repository_spec.rb
|
178
204
|
- spec/resolver_spec.rb
|
179
205
|
- spec/spec_helper.rb
|
180
206
|
- spec/utils_spec.rb
|
data/docs/How it works.md
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
Program flow
|
2
|
-
------------
|
3
|
-
|
4
|
-
1. Try to load the cache of dependencies from `~/.elm-install/cache.json` and
|
5
|
-
load the cache of references from `~/.elm-install/ref-cache.json`. If no
|
6
|
-
cache files found initialize empty caches.
|
7
|
-
|
8
|
-
2. Read `dependencies` and `dependency-sources` from `elm-package.json` and
|
9
|
-
transform them from:
|
10
|
-
|
11
|
-
```
|
12
|
-
{
|
13
|
-
"dependencies": {
|
14
|
-
"elm-lang/core": "5.0.0 <= 6.0.0",
|
15
|
-
"gdotdesign/elm-ui": "1.0.0 <= 2.0.0"
|
16
|
-
},
|
17
|
-
"dependency-sources": {
|
18
|
-
"gdotdesign/elm-ui": {
|
19
|
-
"url": "git@bitbucket.com:gdotdesign/elm-ui",
|
20
|
-
"ref": "development"
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
```
|
25
|
-
|
26
|
-
to:
|
27
|
-
|
28
|
-
```
|
29
|
-
{
|
30
|
-
"https://github.com/elm-lang/core": "5.0.0 <= 6.0.0",
|
31
|
-
"git@bitbucket.com:gdotdesign/elm-ui": "development"
|
32
|
-
}
|
33
|
-
```
|
34
|
-
|
35
|
-
3. Add dependencies to the cache, skipping if the package is already added:
|
36
|
-
|
37
|
-
1. If a package is not added, it is cloned from it's remote repository into
|
38
|
-
the cache directory.
|
39
|
-
|
40
|
-
2. Tags are extracted and iterated over, checking out the tag, reading and
|
41
|
-
transforming it's the `elm-package.json` and adding it's dependecies (2.)
|
42
|
-
|
43
|
-
4. Try to solve dependencies from the caches.
|
44
|
-
|
45
|
-
5. (If no solution found) Go through the packages from the cache and update
|
46
|
-
their references and if it changed update the repository (fetching new
|
47
|
-
content)
|
48
|
-
|
49
|
-
6. (If no solution found) Solve dependencies from the updated cache.
|
50
|
-
|
51
|
-
7. Save cache.
|
52
|
-
|
53
|
-
8. (If solution found) Populate `elm-stuff` and write
|
54
|
-
`elm-stuff/exact-dependecies.json`.
|
data/lib/elm_install/cache.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative './base'
|
2
|
-
|
3
|
-
module ElmInstall
|
4
|
-
# This class is responsible for maintaining a cache
|
5
|
-
# of all the repositories their versions and their dependencies.
|
6
|
-
#
|
7
|
-
# By default the clones of the repositories live in the users
|
8
|
-
# home directory (~/.elm-install), this can be changed with
|
9
|
-
# the `directory` option.
|
10
|
-
class Cache < Base
|
11
|
-
# Initializes a cache with the given options.
|
12
|
-
#
|
13
|
-
# @param options [Hash] The options
|
14
|
-
def initialize(options)
|
15
|
-
@file = 'cache.json'
|
16
|
-
super options
|
17
|
-
end
|
18
|
-
|
19
|
-
# Adds a new dependency to the cache for a given package & version
|
20
|
-
# combination.
|
21
|
-
#
|
22
|
-
# @param package [String] The url of the package
|
23
|
-
# @param version [String] The semver version (1.0.0 or 1.0.0+master)
|
24
|
-
# @param constraint [Array] The constraint ["pacakge", "<= 1.0.0"]
|
25
|
-
#
|
26
|
-
# @return [Array] The dependencies of the package & version combination
|
27
|
-
def dependency(package, version, constraint)
|
28
|
-
ensure_package version
|
29
|
-
@cache[package][version] << constraint
|
30
|
-
end
|
31
|
-
|
32
|
-
# Ensures that a package & version combination exists in the cache.
|
33
|
-
#
|
34
|
-
# @param package [String] The url of the package
|
35
|
-
# @param version [String] The semver version (1.0.0 or 1.0.0+master)
|
36
|
-
#
|
37
|
-
# @return [Array] The dependencies of the package & version combination
|
38
|
-
def ensure_version(package, version)
|
39
|
-
ensure_package package
|
40
|
-
@cache[package][version] ||= []
|
41
|
-
end
|
42
|
-
|
43
|
-
# Ensures that a package exists in the cache.
|
44
|
-
#
|
45
|
-
# @param package [String] The url of the package
|
46
|
-
#
|
47
|
-
# @return [Hash] The dependency hash of the package
|
48
|
-
def ensure_package(package)
|
49
|
-
@cache[package] ||= {}
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,119 +0,0 @@
|
|
1
|
-
module ElmInstall
|
2
|
-
# This is a class for reading the `elm-package`.json file and
|
3
|
-
# transform it's `dependecies` field to a unified format.
|
4
|
-
module ElmPackage
|
5
|
-
# Returns the dependencies for the given `elm-package`.
|
6
|
-
#
|
7
|
-
# @param path [String] The path for the file
|
8
|
-
#
|
9
|
-
# @return [Hash] The hash of dependenceis (url => version or ref)
|
10
|
-
def self.dependencies(path, options = { silent: true })
|
11
|
-
json = read path, options
|
12
|
-
transform_dependencies(
|
13
|
-
json['dependencies'].to_h,
|
14
|
-
json['dependency-sources'].to_h
|
15
|
-
)
|
16
|
-
end
|
17
|
-
|
18
|
-
# Reads the given file as JSON.
|
19
|
-
#
|
20
|
-
# :reek:DuplicateMethodCall
|
21
|
-
#
|
22
|
-
# @param path [String] The path
|
23
|
-
#
|
24
|
-
# @return [Hash] The json
|
25
|
-
def self.read(path, options = { silent: true })
|
26
|
-
JSON.parse(File.read(path))
|
27
|
-
rescue JSON::ParserError
|
28
|
-
exit "Invalid JSON in file: #{path.bold}.", options
|
29
|
-
rescue Errno::ENOENT
|
30
|
-
exit "Could not find file: #{path.bold}.", options
|
31
|
-
end
|
32
|
-
|
33
|
-
# Exits the current process with the given message.
|
34
|
-
#
|
35
|
-
# @param message [String] The message
|
36
|
-
# @param options [Hash] The options
|
37
|
-
#
|
38
|
-
# @return [void]
|
39
|
-
def self.exit(message, options)
|
40
|
-
return {} if options[:silent]
|
41
|
-
Logger.arrow message
|
42
|
-
Process.exit
|
43
|
-
end
|
44
|
-
|
45
|
-
# Transform dependencies from (package name => version) to
|
46
|
-
# (url => version or ref) format using the `depdendency-sources` field.
|
47
|
-
#
|
48
|
-
# @param raw_dependencies [Hash] The raw dependencies
|
49
|
-
# @param sources [Hash] The sources for the dependencies
|
50
|
-
#
|
51
|
-
# @return [Hash] The dependencies
|
52
|
-
def self.transform_dependencies(raw_dependencies, sources)
|
53
|
-
raw_dependencies.each_with_object({}) do |(package, constraint), memo|
|
54
|
-
value = sources.fetch(package, package)
|
55
|
-
|
56
|
-
transform_dependency package, value, constraint, memo
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# Transforms a dependecy.
|
61
|
-
#
|
62
|
-
# :reek:LongParameterList
|
63
|
-
# :reek:DuplicateMethodCall
|
64
|
-
#
|
65
|
-
# @param package [String] The package
|
66
|
-
# @param value [String] The version
|
67
|
-
# @param constraint [String] The constarint
|
68
|
-
# @param memo [Hash] The hash to save the dependency to
|
69
|
-
#
|
70
|
-
# @return [Hash] The memo object
|
71
|
-
def self.transform_dependency(package, value, constraint, memo)
|
72
|
-
if value.is_a?(Hash)
|
73
|
-
check_path package, value['url']
|
74
|
-
memo[value['url']] = value['ref']
|
75
|
-
else
|
76
|
-
url = transform_package(value)
|
77
|
-
check_path package, url
|
78
|
-
memo[url] = constraint
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# Checks if the given url matches the given package.
|
83
|
-
#
|
84
|
-
# :reek:DuplicateMethodCall
|
85
|
-
#
|
86
|
-
# @param package [String] The package
|
87
|
-
# @param url [String] The url
|
88
|
-
#
|
89
|
-
# @return [void]
|
90
|
-
def self.check_path(package, url)
|
91
|
-
uri = GitCloneUrl.parse(url)
|
92
|
-
path = uri.path.sub(%r{^/}, '')
|
93
|
-
|
94
|
-
return if path == package
|
95
|
-
|
96
|
-
puts "
|
97
|
-
The source of package #{package.bold} is set to #{url.bold} which would
|
98
|
-
be install to #{"elm-stuff/#{path}".bold}. This would cause a conflict
|
99
|
-
when trying to compile anything.
|
100
|
-
|
101
|
-
The name of a package must match the source url's path.
|
102
|
-
|
103
|
-
#{package.bold} <=> #{path.bold}
|
104
|
-
"
|
105
|
-
Process.exit
|
106
|
-
end
|
107
|
-
|
108
|
-
# Transforms a package to it's url for if needed.
|
109
|
-
#
|
110
|
-
# @param key [String] The package
|
111
|
-
#
|
112
|
-
# @return [String] The url
|
113
|
-
def self.transform_package(key)
|
114
|
-
GitCloneUrl.parse(key).to_s.gsub(/\.git$/, '')
|
115
|
-
rescue
|
116
|
-
"https://github.com/#{key}"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|