mineshaft 0.1.0 → 0.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/bin/mineshaft +7 -16
- data/lib/mineshaft.rb +3 -3
- data/lib/mineshaft/environment.rb +11 -2
- data/lib/mineshaft/installer.rb +99 -0
- data/lib/mineshaft/shell.rb +16 -0
- data/lib/mineshaft/version.rb +1 -1
- data/versions/versions.yaml +3 -0
- metadata +7 -48
- data/lib/mineshaft/install.rb +0 -61
- data/versions/versions.json +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e11df319043122c74bab2d8148dc30a48811f614
|
4
|
+
data.tar.gz: 7636c96c94070bc76b7289a67da21d275d428450
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6931e961db2057c40a64bcef81feee98392ad819c9998f462156850acf2c9ab11622859a7bfce7ae852265aa5ef798da6233c1de19eddec11231c1b5c2f43bc
|
7
|
+
data.tar.gz: 653d7e2dbbfe6d6553f8abc15f51aa748ee28bc08dd6d59d5ae1e595b4e9fc42ce6fb47b2bcce5d0af5953e636749ac19a87f8c9616c80d6a2c993d76a0cfff8
|
data/bin/mineshaft
CHANGED
@@ -10,18 +10,19 @@
|
|
10
10
|
|
11
11
|
require "mineshaft"
|
12
12
|
require "optparse"
|
13
|
+
require "yaml"
|
13
14
|
|
14
15
|
options = {}
|
15
16
|
|
16
17
|
parser = OptionParser.new do |opts|
|
17
18
|
opts.banner = "usage: minecart [options] environment"
|
18
19
|
|
19
|
-
opts.on("v", "--version", "displays the current version of minecart") do
|
20
|
-
puts Mineshaft::VERSION[:name]
|
20
|
+
opts.on("-v", "--version", "displays the current version of minecart") do
|
21
|
+
puts "#{Mineshaft::VERSION[:name]} v#{Mineshaft::VERSION[:number]}"
|
21
22
|
exit
|
22
23
|
end
|
23
24
|
|
24
|
-
opts.on("-
|
25
|
+
opts.on("-r",
|
25
26
|
"--ruby-version VERSION",
|
26
27
|
"specify the version of Ruby to install"
|
27
28
|
) do |version|
|
@@ -31,17 +32,7 @@ end
|
|
31
32
|
|
32
33
|
parser.parse!
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
versions = JSON.parse(File.read('versions/versions.json'))
|
39
|
-
|
40
|
-
versions.each do |number, url|
|
41
|
-
@url = url if number == options[:version]
|
42
|
-
end
|
43
|
-
|
44
|
-
ruby_install = Mineshaft::Install.new
|
45
|
-
ruby_install.download(@url, environment.dir)
|
46
|
-
ruby_install.build(environment.dir)
|
35
|
+
if ARGV.include?("new")
|
36
|
+
dir_name = ARGV[ARGV.index("new") + 1]
|
37
|
+
Mineshaft::Environment.new(dir_name, options).create
|
47
38
|
end
|
data/lib/mineshaft.rb
CHANGED
@@ -6,6 +6,6 @@
|
|
6
6
|
#
|
7
7
|
# Copyright (c) 2017 Cameron Testerman
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
require "mineshaft/environment"
|
10
|
+
require "mineshaft/installer"
|
11
|
+
require "mineshaft/version"
|
@@ -12,12 +12,21 @@ module Mineshaft
|
|
12
12
|
class Environment
|
13
13
|
attr_reader :dir
|
14
14
|
|
15
|
-
def initialize(dir)
|
16
|
-
@dir= dir
|
15
|
+
def initialize(dir, options)
|
16
|
+
@dir = dir
|
17
|
+
@options = options
|
17
18
|
end
|
18
19
|
|
19
20
|
def create
|
20
21
|
FileUtils::mkdir_p(@dir)
|
22
|
+
versions = YAML.load_file(File.join(File.dirname(File.expand_path(__FILE__)), '../../versions/versions.yaml'))
|
23
|
+
version = @options[:version] ? @options[:version] : Mineshaft::Installer.get_latest_stable
|
24
|
+
installer = Mineshaft::Installer.new do |config|
|
25
|
+
config.url = versions[version]
|
26
|
+
config.directory = @dir
|
27
|
+
config.version = version
|
28
|
+
end
|
29
|
+
installer.run
|
21
30
|
end
|
22
31
|
end
|
23
32
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# mineshaft
|
2
|
+
#
|
3
|
+
# author:: Cameron Testerman
|
4
|
+
# email:: cameronbtesterman@gmail.com
|
5
|
+
# created:: 2017-04-14 1:19PM
|
6
|
+
#
|
7
|
+
# Copyright (c) 2017 Cameron Testerman
|
8
|
+
|
9
|
+
require 'fileutils'
|
10
|
+
require 'net/http'
|
11
|
+
require 'rubygems/package'
|
12
|
+
require 'zlib'
|
13
|
+
require 'mineshaft/shell'
|
14
|
+
|
15
|
+
module Mineshaft
|
16
|
+
class Installer
|
17
|
+
attr_accessor :url, :directory, :version
|
18
|
+
|
19
|
+
include Mineshaft::Shell
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
@ruby_archive = "ruby.tar.gz"
|
23
|
+
yield self
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_latest_stable
|
27
|
+
"2.4.2"
|
28
|
+
end
|
29
|
+
|
30
|
+
def find_slash_indices(url)
|
31
|
+
slash_array = []
|
32
|
+
url = url.split("")
|
33
|
+
i = 0
|
34
|
+
|
35
|
+
url.each do |l|
|
36
|
+
break if slash_array.length == 3
|
37
|
+
slash_array.push(i) if l == "/"
|
38
|
+
i += 1
|
39
|
+
end
|
40
|
+
|
41
|
+
@slash_array = slash_array
|
42
|
+
end
|
43
|
+
|
44
|
+
def split_url(url)
|
45
|
+
find_slash_indices(url)
|
46
|
+
beg = @slash_array[1] + 1
|
47
|
+
fin = @slash_array[2] - 1
|
48
|
+
site = url[beg..fin]
|
49
|
+
fin += 1
|
50
|
+
tar = url[fin..url.length]
|
51
|
+
|
52
|
+
yield site, tar
|
53
|
+
end
|
54
|
+
|
55
|
+
def download(url, download_dir)
|
56
|
+
puts "Downloading #{url}"
|
57
|
+
split_url(url) do |site, file|
|
58
|
+
Net::HTTP.start(site) do |http|
|
59
|
+
response = http.get(file)
|
60
|
+
open("#{download_dir}/#@ruby_archive", "w") do |f|
|
61
|
+
f.write(response.body)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def unzip(dir)
|
68
|
+
FileUtils::mkdir_p("#{dir}/ruby-#@version")
|
69
|
+
tar_extract = Gem::Package::TarReader.new(Zlib::GzipReader.open("#{dir}/#@ruby_archive"))
|
70
|
+
tar_extract.rewind
|
71
|
+
tar_extract.each do |entry|
|
72
|
+
puts entry.full_name
|
73
|
+
if entry.directory?
|
74
|
+
FileUtils::mkdir_p("#{dir}/#{entry.full_name}")
|
75
|
+
elsif entry.file?
|
76
|
+
File.open("#{dir}/#{entry.full_name}", 'w') {|file| file.write(entry.read)}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
tar_extract.close
|
80
|
+
end
|
81
|
+
|
82
|
+
def run
|
83
|
+
download(@url, @directory)
|
84
|
+
unzip(@directory)
|
85
|
+
build(@directory)
|
86
|
+
end
|
87
|
+
|
88
|
+
def build(prefix)
|
89
|
+
dir = "#{Dir.pwd}/#{prefix}/ruby-#@version"
|
90
|
+
commands = [
|
91
|
+
"sudo chmod +x configure tool/ifchange",
|
92
|
+
"sudo ./configure --prefix #{Dir.pwd}/#{prefix}",
|
93
|
+
"sudo make",
|
94
|
+
"sudo make install"
|
95
|
+
]
|
96
|
+
commands.each { |command| shell(dir, command) }
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# mineshaft
|
2
|
+
#
|
3
|
+
# author:: Cameron Testerman
|
4
|
+
# email:: cameronbtesterman@gmail.com
|
5
|
+
# created:: 2017-10-23 7:01PM
|
6
|
+
#
|
7
|
+
# Copyright (c) 2017 Cameron Testerman
|
8
|
+
|
9
|
+
module Mineshaft
|
10
|
+
module Shell
|
11
|
+
def shell(dir, cmd)
|
12
|
+
puts "Running #{cmd} in #{dir}"
|
13
|
+
%x{ cd #{dir} && #{cmd} }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/mineshaft/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mineshaft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Testerman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rspec
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: json
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: optparse
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
11
|
+
date: 2017-10-23 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
55
13
|
description:
|
56
14
|
email: cameronbtesterman@gmail.com
|
57
15
|
executables:
|
@@ -62,9 +20,10 @@ files:
|
|
62
20
|
- bin/mineshaft
|
63
21
|
- lib/mineshaft.rb
|
64
22
|
- lib/mineshaft/environment.rb
|
65
|
-
- lib/mineshaft/
|
23
|
+
- lib/mineshaft/installer.rb
|
24
|
+
- lib/mineshaft/shell.rb
|
66
25
|
- lib/mineshaft/version.rb
|
67
|
-
- versions/versions.
|
26
|
+
- versions/versions.yaml
|
68
27
|
homepage: https://github.com/camerontesterman/mineshaft
|
69
28
|
licenses:
|
70
29
|
- MIT
|
@@ -85,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
44
|
version: '0'
|
86
45
|
requirements: []
|
87
46
|
rubyforge_project:
|
88
|
-
rubygems_version: 2.6.
|
47
|
+
rubygems_version: 2.6.11
|
89
48
|
signing_key:
|
90
49
|
specification_version: 4
|
91
50
|
summary: Ruby virtual environment manager
|
data/lib/mineshaft/install.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# mineshaft
|
2
|
-
#
|
3
|
-
# author:: Cameron Testerman
|
4
|
-
# email:: cameronbtesterman@gmail.com
|
5
|
-
# created:: 2017-04-14 1:19PM
|
6
|
-
#
|
7
|
-
# Copyright (c) 2017 Cameron Testerman
|
8
|
-
|
9
|
-
require 'json'
|
10
|
-
require 'net/http'
|
11
|
-
|
12
|
-
module Mineshaft
|
13
|
-
class Install
|
14
|
-
def get_latest_stable
|
15
|
-
"2.3.0"
|
16
|
-
end
|
17
|
-
|
18
|
-
def find_slash_indices(url)
|
19
|
-
slash_array = []
|
20
|
-
url = url.split("")
|
21
|
-
i = 0
|
22
|
-
|
23
|
-
url.each do |l|
|
24
|
-
break if slash_array.length == 3
|
25
|
-
slash_array.push(i) if l == "/"
|
26
|
-
i += 1
|
27
|
-
end
|
28
|
-
|
29
|
-
@slash_array = slash_array
|
30
|
-
end
|
31
|
-
|
32
|
-
def split_url(url)
|
33
|
-
find_slash_indices(url)
|
34
|
-
beg = @slash_array[1] + 1
|
35
|
-
fin = @slash_array[2] - 1
|
36
|
-
site = url[beg..fin]
|
37
|
-
fin += 1
|
38
|
-
tar = url[fin..url.length]
|
39
|
-
|
40
|
-
yield site, tar
|
41
|
-
end
|
42
|
-
|
43
|
-
def download(url, download_dir)
|
44
|
-
split_url(url) do |site, file|
|
45
|
-
Net::HTTP.start(site) do |http|
|
46
|
-
response = http.get(file)
|
47
|
-
open("#{download_dir}/ruby.tar.bz2", "w") do |f|
|
48
|
-
f.write(response.body)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def unzip
|
55
|
-
end
|
56
|
-
|
57
|
-
def build(prefix)
|
58
|
-
%x(./configure --prefix #{prefix}; make; sudo make install)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
data/versions/versions.json
DELETED