elm_install 0.1.0 → 0.1.1
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/.gitignore +3 -0
- data/.rubocop.yml +3 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +5 -3
- data/Rakefile +1 -1
- data/elm_install.gemspec +2 -3
- data/lib/elm_install.rb +2 -1
- data/lib/elm_install/cache.rb +34 -2
- data/lib/elm_install/installer.rb +27 -7
- data/lib/elm_install/resolver.rb +0 -2
- data/lib/elm_install/utils.rb +4 -0
- data/lib/elm_install/version.rb +1 -1
- data/packaging/.ruby-gemset +1 -0
- data/packaging/Gemfile +5 -0
- data/packaging/Gemfile.lock +34 -0
- data/packaging/Rakefile +93 -0
- data/packaging/bundler-config +3 -0
- data/packaging/wrapper.sh +12 -0
- metadata +32 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a03f6fdb1a42bea5c14a87c7faa22623c146fbd
|
4
|
+
data.tar.gz: b484dc5f2566e0155da8a959a2ae1bf761f1ae10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d783886b984c689ea08f652fae2e909c6a441820c2fa22f0defa657643b736347c5ad5f9d93e6ead8ef8eeed46a39f4864dae03f11d55547c072c9dc19c50b14
|
7
|
+
data.tar.gz: 9a04dd69660a65a3a802ad1455c54a9c06be9612772f27b695b6b4cc43b90dfebe97467976c7915085afb8280713b4bf39405c1f0ed1b5fc5f80e2a2d65661d6
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.2
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
elm_install (0.1.
|
5
|
-
colorize (~> 0.8.1)
|
4
|
+
elm_install (0.1.1)
|
6
5
|
commander (~> 4.4, >= 4.4.2)
|
7
6
|
git (~> 1.3)
|
8
7
|
git_clone_url (~> 2.0)
|
8
|
+
hashdiff (~> 0.3.1)
|
9
|
+
smart_colored (~> 1.1, >= 1.1.1)
|
9
10
|
solve (~> 3.1)
|
10
11
|
|
11
12
|
GEM
|
@@ -22,7 +23,6 @@ GEM
|
|
22
23
|
virtus (~> 1.0)
|
23
24
|
coercible (1.0.0)
|
24
25
|
descendants_tracker (~> 0.0.1)
|
25
|
-
colorize (0.8.1)
|
26
26
|
commander (4.4.2)
|
27
27
|
highline (~> 1.7.2)
|
28
28
|
descendants_tracker (0.0.4)
|
@@ -42,6 +42,7 @@ GEM
|
|
42
42
|
git (1.3.0)
|
43
43
|
git_clone_url (2.0.0)
|
44
44
|
uri-ssh_git (>= 2.0)
|
45
|
+
hashdiff (0.3.1)
|
45
46
|
highline (1.7.8)
|
46
47
|
ice_nine (0.11.2)
|
47
48
|
launchy (2.4.3)
|
@@ -90,6 +91,7 @@ GEM
|
|
90
91
|
virtus (~> 1.0)
|
91
92
|
semverse (2.0.0)
|
92
93
|
sexp_processor (4.7.0)
|
94
|
+
smart_colored (1.1.1)
|
93
95
|
solve (3.1.0)
|
94
96
|
molinillo (>= 0.5)
|
95
97
|
semverse (>= 1.1, < 3.0)
|
data/Rakefile
CHANGED
data/elm_install.gemspec
CHANGED
@@ -15,8 +15,6 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.test_files =
|
16
16
|
`git ls-files -- {test,spec,features}/*`.split("\n")
|
17
17
|
|
18
|
-
puts `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
-
|
20
18
|
s.executables =
|
21
19
|
`git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
22
20
|
|
@@ -24,7 +22,8 @@ Gem::Specification.new do |s|
|
|
24
22
|
s.add_dependency 'git_clone_url', '~> 2.0'
|
25
23
|
s.add_dependency 'solve', '~> 3.1'
|
26
24
|
s.add_dependency 'commander', '~> 4.4', '>= 4.4.2'
|
27
|
-
s.add_dependency '
|
25
|
+
s.add_dependency 'smart_colored', '~> 1.1', '>= 1.1.1'
|
26
|
+
s.add_dependency 'hashdiff', '~> 0.3.1'
|
28
27
|
|
29
28
|
s.extra_rdoc_files = ['Readme.md']
|
30
29
|
end
|
data/lib/elm_install.rb
CHANGED
data/lib/elm_install/cache.rb
CHANGED
@@ -15,22 +15,30 @@ module ElmInstall
|
|
15
15
|
# Initializes a new cache with the given options.
|
16
16
|
def initialize(options = {})
|
17
17
|
@options = options
|
18
|
+
@ref_cache = {}
|
18
19
|
@cache = {}
|
19
20
|
load
|
20
21
|
end
|
21
22
|
|
22
23
|
# Saves the cache into the json file.
|
23
24
|
def save
|
25
|
+
File.binwrite(ref_file, JSON.pretty_generate(@ref_cache))
|
24
26
|
File.binwrite(file, JSON.pretty_generate(@cache))
|
25
27
|
end
|
26
28
|
|
27
29
|
# Loads a cache from the json file.
|
28
30
|
def load
|
31
|
+
@ref_cache = JSON.parse(File.read(ref_file))
|
29
32
|
@cache = JSON.parse(File.read(file))
|
30
33
|
rescue
|
34
|
+
@ref_cache = {}
|
31
35
|
@cache = {}
|
32
36
|
end
|
33
37
|
|
38
|
+
def clear
|
39
|
+
@ref_cache = {}
|
40
|
+
end
|
41
|
+
|
34
42
|
# Returns the directory where the cache is stored.
|
35
43
|
def directory
|
36
44
|
@options[:directory] || File.join(Dir.home, '.elm-install')
|
@@ -38,7 +46,7 @@ module ElmInstall
|
|
38
46
|
|
39
47
|
# Returns if there is a package in the cache (with at least one version).
|
40
48
|
def package?(package)
|
41
|
-
@cache.key?(package)
|
49
|
+
@ref_cache.key?(package) && @cache.key?(package)
|
42
50
|
end
|
43
51
|
|
44
52
|
# Adds a new dependency to the cache for a given package & version
|
@@ -71,14 +79,38 @@ module ElmInstall
|
|
71
79
|
if Dir.exist?(repo_path)
|
72
80
|
repo = Git.open(repo_path)
|
73
81
|
repo.reset_hard
|
82
|
+
|
83
|
+
unless @ref_cache[path]
|
84
|
+
refs = refs_for(repo_path)
|
85
|
+
|
86
|
+
if HashDiff.diff(@ref_cache[path], refs).empty?
|
87
|
+
Utils.log_with_arrow "Package: #{path.bold} is outdated fetching changes..."
|
88
|
+
repo.fetch
|
89
|
+
end
|
90
|
+
|
91
|
+
@ref_cache[path] = refs
|
92
|
+
end
|
93
|
+
|
74
94
|
repo
|
75
95
|
else
|
76
|
-
|
96
|
+
Utils.log_with_arrow "Package: #{path.bold} not found in cache, cloning..."
|
97
|
+
repo = Git.clone(path, repo_path)
|
98
|
+
@ref_cache[path] = refs_for(repo_path)
|
99
|
+
repo
|
77
100
|
end
|
78
101
|
end
|
79
102
|
|
80
103
|
private
|
81
104
|
|
105
|
+
def refs_for(repo_path)
|
106
|
+
refs = Git.ls_remote(repo_path)
|
107
|
+
refs.delete('head')
|
108
|
+
end
|
109
|
+
|
110
|
+
def ref_file
|
111
|
+
File.join(directory, 'ref-cache.json')
|
112
|
+
end
|
113
|
+
|
82
114
|
# Returns the path to the json file.
|
83
115
|
def file
|
84
116
|
File.join(directory, 'cache.json')
|
@@ -20,17 +20,36 @@ module ElmInstall
|
|
20
20
|
puts 'Resolving packages...'
|
21
21
|
resolver.add_constraints dependencies
|
22
22
|
|
23
|
-
puts 'Saving index cache...'
|
24
|
-
@cache.save
|
25
|
-
|
26
23
|
puts 'Solving dependencies...'
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
begin
|
25
|
+
populate_elm_stuff
|
26
|
+
rescue
|
27
|
+
puts ' ▶ Could not find a solution in local cache, refreshing packages...'
|
28
|
+
|
29
|
+
@cache.clear
|
30
|
+
resolver.add_constraints dependencies
|
31
|
+
|
32
|
+
begin
|
33
|
+
populate_elm_stuff
|
34
|
+
rescue Solve::Errors::NoSolutionError => e
|
35
|
+
puts 'Could not find a solution:'
|
36
|
+
puts indent(e.to_s)
|
37
|
+
end
|
38
|
+
end
|
30
39
|
end
|
31
40
|
|
32
41
|
private
|
33
42
|
|
43
|
+
def indent(str)
|
44
|
+
str.split("\n").map { |s| " #{s}" }.join("\n")
|
45
|
+
end
|
46
|
+
|
47
|
+
def end_sucessfully
|
48
|
+
puts 'Saving package cache...'
|
49
|
+
@cache.save
|
50
|
+
|
51
|
+
puts 'Packages configured successfully!'
|
52
|
+
end
|
34
53
|
# Populates the `elm-stuff` directory with the packages from
|
35
54
|
# the solution.
|
36
55
|
def populate_elm_stuff
|
@@ -39,6 +58,7 @@ module ElmInstall
|
|
39
58
|
end
|
40
59
|
|
41
60
|
write_exact_dependencies
|
61
|
+
end_sucessfully
|
42
62
|
end
|
43
63
|
|
44
64
|
# Resolves and copies a package and it's version to `elm-stuff/packages`
|
@@ -54,7 +74,7 @@ module ElmInstall
|
|
54
74
|
@cache.repository(package).checkout(ref)
|
55
75
|
|
56
76
|
version_str = ref == version ? ref : "#{ref}(#{version})"
|
57
|
-
Utils.log_with_dot "#{package_name} - #{version_str}"
|
77
|
+
Utils.log_with_dot "#{package_name.bold} - #{version_str.bold}"
|
58
78
|
|
59
79
|
return if Dir.exist?(package_path)
|
60
80
|
|
data/lib/elm_install/resolver.rb
CHANGED
data/lib/elm_install/utils.rb
CHANGED
@@ -23,6 +23,10 @@ module ElmInstall
|
|
23
23
|
puts ' ● '.green + message
|
24
24
|
end
|
25
25
|
|
26
|
+
def log_with_arrow(message)
|
27
|
+
puts " ▶ #{message}"
|
28
|
+
end
|
29
|
+
|
26
30
|
def package_version_path(package, version)
|
27
31
|
package_name = GitCloneUrl.parse(package).path
|
28
32
|
[package_name, File.join('elm-stuff', 'packages', package_name, version)]
|
data/lib/elm_install/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
elm-install
|
data/packaging/Gemfile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
colorize (0.8.1)
|
5
|
+
commander (4.4.2)
|
6
|
+
highline (~> 1.7.2)
|
7
|
+
elm_install (0.1.0)
|
8
|
+
colorize (~> 0.8.1)
|
9
|
+
commander (~> 4.4, >= 4.4.2)
|
10
|
+
git (~> 1.3)
|
11
|
+
git_clone_url (~> 2.0)
|
12
|
+
solve (~> 3.1)
|
13
|
+
git (1.3.0)
|
14
|
+
git_clone_url (2.0.0)
|
15
|
+
uri-ssh_git (>= 2.0)
|
16
|
+
highline (1.7.8)
|
17
|
+
molinillo (0.5.4)
|
18
|
+
semverse (2.0.0)
|
19
|
+
solve (3.1.0)
|
20
|
+
molinillo (>= 0.5)
|
21
|
+
semverse (>= 1.1, < 3.0)
|
22
|
+
uri-ssh_git (2.0.0)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
elm_install
|
29
|
+
|
30
|
+
RUBY VERSION
|
31
|
+
ruby 2.2.2p95
|
32
|
+
|
33
|
+
BUNDLED WITH
|
34
|
+
1.13.6
|
data/packaging/Rakefile
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
# For Bundler.with_clean_env
|
2
|
+
require 'bundler/setup'
|
3
|
+
require_relative '../lib/elm_install'
|
4
|
+
|
5
|
+
PACKAGE_NAME = 'elm-install'.freeze
|
6
|
+
VERSION = ElmInstall::VERSION
|
7
|
+
TRAVELING_RUBY_VERSION = '20150715-2.2.2'.freeze
|
8
|
+
|
9
|
+
desc 'Package your app'
|
10
|
+
task package: ['package:linux:x86', 'package:linux:x86_64', 'package:osx']
|
11
|
+
|
12
|
+
namespace :package do
|
13
|
+
namespace :linux do
|
14
|
+
desc 'Package your app for Linux x86'
|
15
|
+
task x86: [
|
16
|
+
:bundle_install,
|
17
|
+
"traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz"
|
18
|
+
] do
|
19
|
+
create_package('linux-x86')
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Package your app for Linux x86_64'
|
23
|
+
task x86_64: [
|
24
|
+
:bundle_install,
|
25
|
+
"traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz"
|
26
|
+
] do
|
27
|
+
create_package('linux-x86_64')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'Package your app for OS X'
|
32
|
+
task osx: [
|
33
|
+
:bundle_install,
|
34
|
+
"traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz"
|
35
|
+
] do
|
36
|
+
create_package('osx')
|
37
|
+
end
|
38
|
+
|
39
|
+
desc 'Install gems to local directory'
|
40
|
+
task :bundle_install do
|
41
|
+
sh 'rm -rf tmp'
|
42
|
+
sh 'mkdir tmp'
|
43
|
+
sh 'cp Gemfile Gemfile.lock tmp/'
|
44
|
+
Bundler.with_clean_env do
|
45
|
+
sh 'cd tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development'
|
46
|
+
end
|
47
|
+
sh 'rm -rf tmp'
|
48
|
+
sh 'rm -f vendor/*/*/cache/*'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz" do
|
53
|
+
download_runtime('linux-x86')
|
54
|
+
end
|
55
|
+
|
56
|
+
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
|
57
|
+
download_runtime('linux-x86_64')
|
58
|
+
end
|
59
|
+
|
60
|
+
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz" do
|
61
|
+
download_runtime('osx')
|
62
|
+
end
|
63
|
+
|
64
|
+
def create_package(target)
|
65
|
+
package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
|
66
|
+
sh "rm -rf #{package_dir}"
|
67
|
+
sh "mkdir #{package_dir}"
|
68
|
+
sh "mkdir -p #{package_dir}/lib/app"
|
69
|
+
sh "mkdir #{package_dir}/lib/ruby"
|
70
|
+
sh "tar -xzf traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/ruby"
|
71
|
+
sh "cp wrapper.sh #{package_dir}/elm-install"
|
72
|
+
sh "chmod +x #{package_dir}/elm-install"
|
73
|
+
sh "cp -pR vendor #{package_dir}/lib/"
|
74
|
+
sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/"
|
75
|
+
sh "mkdir #{package_dir}/lib/vendor/.bundle"
|
76
|
+
sh "cp bundler-config #{package_dir}/lib/vendor/.bundle/config"
|
77
|
+
|
78
|
+
sh 'rm -rf lib/vendor/ruby/*/gems/*/test'
|
79
|
+
sh 'rm -rf lib/vendor/ruby/*/gems/*/tests'
|
80
|
+
sh 'rm -rf lib/vendor/ruby/*/gems/*/spec'
|
81
|
+
sh 'rm -rf lib/vendor/ruby/*/gems/*/features'
|
82
|
+
sh 'rm -rf lib/vendor/ruby/*/gems/*/benchmark'
|
83
|
+
|
84
|
+
unless ENV['DIR_ONLY']
|
85
|
+
sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
|
86
|
+
sh "rm -rf #{package_dir}"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def download_runtime(target)
|
91
|
+
sh 'curl -L -O --fail ' \
|
92
|
+
"https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
|
93
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
# Figure out where this script is located.
|
5
|
+
SELFDIR="`dirname \"$0\"`"
|
6
|
+
SELFDIR="`cd \"$SELFDIR\" && pwd`"
|
7
|
+
|
8
|
+
export BUNDLE_GEMFILE="$SELFDIR/lib/vendor/Gemfile"
|
9
|
+
unset BUNDLE_IGNORE_CONFIG
|
10
|
+
|
11
|
+
# Run the actual binary using the bundled Ruby.
|
12
|
+
exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/vendor/ruby/2.2.0/bin/elm-install" "$@"
|
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.1.
|
4
|
+
version: 0.1.1
|
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: 2016-12-
|
11
|
+
date: 2016-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -73,19 +73,39 @@ dependencies:
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: 4.4.2
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
76
|
+
name: smart_colored
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: '1.1'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 1.1.1
|
85
|
+
type: :runtime
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '1.1'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 1.1.1
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: hashdiff
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.3.1
|
82
102
|
type: :runtime
|
83
103
|
prerelease: false
|
84
104
|
version_requirements: !ruby/object:Gem::Requirement
|
85
105
|
requirements:
|
86
106
|
- - "~>"
|
87
107
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
108
|
+
version: 0.3.1
|
89
109
|
description:
|
90
110
|
email: gusztav.szikszai@digitalnatives.hu
|
91
111
|
executables:
|
@@ -111,6 +131,12 @@ files:
|
|
111
131
|
- lib/elm_install/resolver.rb
|
112
132
|
- lib/elm_install/utils.rb
|
113
133
|
- lib/elm_install/version.rb
|
134
|
+
- packaging/.ruby-gemset
|
135
|
+
- packaging/Gemfile
|
136
|
+
- packaging/Gemfile.lock
|
137
|
+
- packaging/Rakefile
|
138
|
+
- packaging/bundler-config
|
139
|
+
- packaging/wrapper.sh
|
114
140
|
homepage: https://github.com/gdotdesign/elm-github-install
|
115
141
|
licenses: []
|
116
142
|
metadata: {}
|
@@ -130,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
156
|
version: '0'
|
131
157
|
requirements: []
|
132
158
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.4.8
|
134
160
|
signing_key:
|
135
161
|
specification_version: 4
|
136
162
|
summary: Install Elm packages from git repositories.
|