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.
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,14 @@
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
+ module Mineshaft
10
+ VERSION = {
11
+ name: "mineshaft",
12
+ number: "0.1.0"
13
+ }
14
+ end
@@ -0,0 +1,4 @@
1
+ {
2
+ "2.1.0": "https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.bz2",
3
+ "2.3.0": "https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2"
4
+ }
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: []