toastyapps-gembox 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +5 -1
- data/lib/gembox.rb +13 -54
- data/lib/templates/bashrc +5 -0
- data/lib/templates/dispatch.rb +32 -0
- data/lib/templates/gemrc +2 -0
- data/lib/templates/shell.bash +1 -0
- metadata +5 -1
data/Manifest.txt
CHANGED
data/lib/gembox.rb
CHANGED
@@ -1,63 +1,24 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'yaml'
|
3
|
+
require 'erb'
|
3
4
|
|
4
5
|
class Gembox
|
5
|
-
VERSION = '1.1.
|
6
|
-
|
6
|
+
VERSION = '1.1.1'
|
7
|
+
attr_accessor :dir
|
7
8
|
def self.create(args)
|
9
|
+
|
8
10
|
dir = Dir.new(Dir.pwd+"/"+args.shift).path
|
9
11
|
Dir.chdir(dir)
|
10
|
-
|
12
|
+
|
13
|
+
@dir = dir = Dir.pwd
|
14
|
+
|
11
15
|
FileUtils.mkdir_p "#{dir}/usr/bin"
|
12
16
|
FileUtils.mkdir_p "#{dir}/gems"
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
File.open("#{dir}
|
18
|
-
f.puts "PS1=\"gembox:\\w> \""
|
19
|
-
f.puts "export PATH=#{dir}/usr/bin:\$PATH"
|
20
|
-
f.puts "alias gem='ruby #{dir}/dispatch.rb'"
|
21
|
-
f.puts "export GEM_PATH=#{dir}/gems"
|
22
|
-
f.puts "export GEM_HOME=#{dir}/gems"
|
23
|
-
end
|
24
|
-
File.open("#{dir}/shell.bash", "w") do |f|
|
25
|
-
f.puts "/usr/bin/env bash --rcfile #{dir}/.bashrc"
|
26
|
-
end
|
27
|
-
File.open("#{dir}/dispatch.rb", "w") do |f|
|
28
|
-
f.puts "#!/usr/bin/ruby"
|
29
|
-
f.puts "require 'rubygems'"
|
30
|
-
f.puts "require 'yaml'"
|
31
|
-
f.puts "require 'fileutils'"
|
32
|
-
f.puts "args=ARGV"
|
33
|
-
f.puts "command=args.shift"
|
34
|
-
f.puts "case command"
|
35
|
-
f.puts "when 'install'"
|
36
|
-
f.puts " system(\"gem --config-file #{dir}/.gemrc #\{command\} --bindir #{dir}/usr/bin #\{ARGV.join(' ')\}\")"
|
37
|
-
f.puts "when 'query'"
|
38
|
-
f.puts " puts 'here'"
|
39
|
-
f.puts " system(\"gem query #\{ARGV.join(' ')\}\")"
|
40
|
-
f.puts "when 'symlink'"
|
41
|
-
f.puts " data = YAML.load(File.open('#{dir}/gems.yaml').read)"
|
42
|
-
f.puts " gem_name = args.shift"
|
43
|
-
f.puts " if data[gem_name].keys.length == 1"
|
44
|
-
f.puts " FileUtils.mkdir_p('#{dir}/gems/gems/')"
|
45
|
-
f.puts " FileUtils.mkdir_p('#{dir}/gems/specifications/')"
|
46
|
-
f.puts " version = data[gem_name].keys[0]"
|
47
|
-
f.puts " gemdir = data[gem_name][version]"
|
48
|
-
f.puts " gemname = gem_name+'-'+version"
|
49
|
-
f.puts " gem_file = gemdir + '/gems/' + gemname"
|
50
|
-
f.puts " spec_file = gemdir + '/specifications/' + gemname + '.gemspec'"
|
51
|
-
f.puts " \`ln -s #\{gem_file\} #{dir}/gems/gems/#\{gemname\} && ln -s #\{spec_file\} #{dir}/gems/specifications/#\{gemname\}.gemspec\`"
|
52
|
-
f.puts " elsif data[gem_name].keys.length > 1"
|
53
|
-
f.puts " puts 'This gem has multiple versions. Gembox does not supporting gems with multiple versions installed yet.'"
|
54
|
-
f.puts " else"
|
55
|
-
f.puts " puts \"Could not find gem #\{gem_name\}\""
|
56
|
-
f.puts " end"
|
57
|
-
f.puts "else"
|
58
|
-
f.puts " system(\"gem --config-file #{dir}/.gemrc #\{command\} #\{ARGV.join(' ')\}\")"
|
59
|
-
f.puts "end"
|
60
|
-
end
|
17
|
+
|
18
|
+
File.open("#{dir}/.gemrc", 'w') { |f| f.puts ERB.new(File.open(File.dirname(__FILE__)+"/templates/gemrc").read).result(binding) }
|
19
|
+
File.open("#{dir}/.bashrc", "w") { |f| f.puts ERB.new(File.open(File.dirname(__FILE__)+"/templates/bashrc").read).result(binding) }
|
20
|
+
File.open("#{dir}/shell.bash", "w") {|f| f.puts ERB.new(File.open(File.dirname(__FILE__)+"/templates/shell.bash").read).result(binding) }
|
21
|
+
File.open("#{dir}/dispatch.rb", "w") { |f| f.puts ERB.new(File.open(File.dirname(__FILE__)+"/templates/dispatch.rb").read).result(binding) }
|
61
22
|
end
|
62
23
|
|
63
24
|
def self.shell(args)
|
@@ -86,9 +47,7 @@ class Gembox
|
|
86
47
|
end
|
87
48
|
end
|
88
49
|
end
|
89
|
-
File.open("gems.yaml", "w")
|
90
|
-
f.puts gemdata.to_yaml
|
91
|
-
end
|
50
|
+
File.open("gems.yaml", "w") { |f| f.puts gemdata.to_yaml }
|
92
51
|
system("sh shell.bash")
|
93
52
|
end
|
94
53
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'yaml'
|
4
|
+
require 'fileutils'
|
5
|
+
args=ARGV
|
6
|
+
command=args.shift
|
7
|
+
case command
|
8
|
+
when 'install'
|
9
|
+
system("gem --config-file <%= @dir %>/.gemrc #{command} --bindir <%= @dir %>/usr/bin #{ARGV.join(' ')}")
|
10
|
+
when 'query'
|
11
|
+
puts 'here'
|
12
|
+
system("gem query #{ARGV.join(' ')}")
|
13
|
+
when 'symlink'
|
14
|
+
data = YAML.load(File.open('<%= @dir %>/gems.yaml').read)
|
15
|
+
gem_name = args.shift
|
16
|
+
if data[gem_name].keys.length == 1
|
17
|
+
FileUtils.mkdir_p('<%= @dir %>/gems/gems/')
|
18
|
+
FileUtils.mkdir_p('<%= @dir %>/gems/specifications/')
|
19
|
+
version = data[gem_name].keys[0]
|
20
|
+
gemdir = data[gem_name][version]
|
21
|
+
gemname = gem_name+'-'+version
|
22
|
+
gem_file = gemdir + '/gems/' + gemname
|
23
|
+
spec_file = gemdir + '/specifications/' + gemname + '.gemspec'
|
24
|
+
`ln -s #{gem_file} <%= @dir %>/gems/gems/#{gemname} && ln -s #{spec_file} <%= @dir %>/gems/specifications/#{gemname}.gemspec`
|
25
|
+
elsif data[gem_name].keys.length > 1
|
26
|
+
puts 'This gem has multiple versions. Gembox does not supporting gems with multiple versions installed yet.'
|
27
|
+
else
|
28
|
+
puts "Could not find gem #{gem_name}"
|
29
|
+
end
|
30
|
+
else
|
31
|
+
system("gem --config-file <%= @dir %>/.gemrc #{command} #{ARGV.join(' ')}")
|
32
|
+
end
|
data/lib/templates/gemrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/usr/bin/env bash --rcfile <%= @dir %>/.bashrc
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toastyapps-gembox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Mongeau
|
@@ -30,6 +30,10 @@ files:
|
|
30
30
|
- Rakefile
|
31
31
|
- bin/gembox
|
32
32
|
- lib/gembox.rb
|
33
|
+
- lib/templates/dispatch.rb
|
34
|
+
- lib/templates/bashrc
|
35
|
+
- lib/templates/gemrc
|
36
|
+
- lib/templates/shell.bash
|
33
37
|
- test/test_gembox.rb
|
34
38
|
has_rdoc: true
|
35
39
|
homepage: http://www.halogenandtoast.com
|