mineshaft 0.1.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 +7 -0
- data/bin/mineshaft +47 -0
- data/lib/mineshaft.rb +11 -0
- data/lib/mineshaft/environment.rb +23 -0
- data/lib/mineshaft/install.rb +61 -0
- data/lib/mineshaft/version.rb +14 -0
- data/versions/versions.json +4 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3d712869ecc7565150cf6e63b4529308b2fd8a5a
|
4
|
+
data.tar.gz: 5bd72dfb92dedb9e7f957502a138222de40f7cfa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: edb9a8a9725ee71ad054a9780f0570f5e203082b406b96283e7b58a0dbef77017ad984e468420f7b3bc61a8f5fdeaffe8d66247efb2cbdc71f8af83e56b91e07
|
7
|
+
data.tar.gz: 0202eea20a9f32f1525b46b74f64cd2d48d4b9fe903aa8c37ae1f80899aa8e9ae0b28bf50bbfea5bdc694b2cdea01f0f1471e651c68d1a035f6882cee02c8859
|
data/bin/mineshaft
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# mineshaft
|
4
|
+
#
|
5
|
+
# author:: Cameron Testerman
|
6
|
+
# email:: cameronbtesterman@gmail.com
|
7
|
+
# created:: 2017-04-14 1:19PM
|
8
|
+
#
|
9
|
+
# Copyright (c) 2017 Cameron Testerman
|
10
|
+
|
11
|
+
require "mineshaft"
|
12
|
+
require "optparse"
|
13
|
+
|
14
|
+
options = {}
|
15
|
+
|
16
|
+
parser = OptionParser.new do |opts|
|
17
|
+
opts.banner = "usage: minecart [options] environment"
|
18
|
+
|
19
|
+
opts.on("v", "--version", "displays the current version of minecart") do
|
20
|
+
puts Mineshaft::VERSION[:name] + " " + Mineshaft::VERSION[:number]
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on("-V",
|
25
|
+
"--ruby-version VERSION",
|
26
|
+
"specify the version of Ruby to install"
|
27
|
+
) do |version|
|
28
|
+
options[:version] = version
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
parser.parse!
|
33
|
+
|
34
|
+
unless ARGV.last.nil?
|
35
|
+
environment = Mineshaft::Environment.new(ARGV.last)
|
36
|
+
environment.create
|
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)
|
47
|
+
end
|
data/lib/mineshaft.rb
ADDED
@@ -0,0 +1,11 @@
|
|
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_relative "./mineshaft/environment"
|
10
|
+
require_relative "./mineshaft/install"
|
11
|
+
require_relative "./mineshaft/version"
|
@@ -0,0 +1,23 @@
|
|
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
|
+
|
11
|
+
module Mineshaft
|
12
|
+
class Environment
|
13
|
+
attr_reader :dir
|
14
|
+
|
15
|
+
def initialize(dir)
|
16
|
+
@dir= dir
|
17
|
+
end
|
18
|
+
|
19
|
+
def create
|
20
|
+
FileUtils::mkdir_p(@dir)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,61 @@
|
|
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
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mineshaft
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Cameron Testerman
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-20 00:00:00.000000000 Z
|
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'
|
55
|
+
description:
|
56
|
+
email: cameronbtesterman@gmail.com
|
57
|
+
executables:
|
58
|
+
- mineshaft
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- bin/mineshaft
|
63
|
+
- lib/mineshaft.rb
|
64
|
+
- lib/mineshaft/environment.rb
|
65
|
+
- lib/mineshaft/install.rb
|
66
|
+
- lib/mineshaft/version.rb
|
67
|
+
- versions/versions.json
|
68
|
+
homepage: https://github.com/camerontesterman/mineshaft
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.6.13
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Ruby virtual environment manager
|
92
|
+
test_files: []
|