freeze_gems 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/freeze ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'freeze_gems'
@@ -0,0 +1,102 @@
1
+ require 'rubygems'
2
+ require 'optparse'
3
+ require 'ostruct'
4
+ require 'fileutils'
5
+ require 'rhash'
6
+
7
+ create_file = ''
8
+ install_gem = false
9
+ show_gems = false
10
+ filename = ""
11
+ gems = {}
12
+
13
+ opts = OptionParser.new do |opt|
14
+ opt.banner = "Usage: freeze_gems.rb [options]"
15
+
16
+ opt.on("-f filename", "Filename with gems should be install.") do |file|
17
+ filename = file
18
+ end
19
+
20
+ opt.on("-c filename", "Create a file with all gems installed.") do |create|
21
+ create_file = create
22
+ end
23
+
24
+ opt.on("-i", "--install", "Install all gems or execute dry run.") do |install|
25
+ install_gem = install
26
+ end
27
+
28
+ opt.on("-s", "--show", "Show all gems included in file.") do |show|
29
+ show_gems = show
30
+ end
31
+
32
+ opt.on_tail("-h", "--help", "Help") do
33
+ puts opt
34
+ exit
35
+ end
36
+ end
37
+
38
+ if ARGV.empty?
39
+ puts opts
40
+ exit
41
+ end
42
+
43
+ opts.parse!(ARGV)
44
+
45
+ init = Time.now
46
+ if !filename.empty? and create_file.empty?
47
+ if File.extname(filename).match(/\.yml|\.yaml/)
48
+ gems = YAML.load(File.read(filename))
49
+ end
50
+
51
+ if install_gem
52
+ gems.each_pair do |id, gem|
53
+ puts "Install ID: #{id} Gem: #{gem.keys.to_s}"
54
+ system %{gem install #{gem.keys.to_s} -v #{gem.values}}
55
+ end
56
+ else
57
+ gems.each_pair do |id, gem|
58
+ puts "ID: #{id}"
59
+ puts "Gem: #{gem.keys.to_s}"
60
+ puts "Gem: #{gem.values}"
61
+ end
62
+ end
63
+
64
+ puts "All gems are installed in: #{Time.now - init}"
65
+ end
66
+
67
+ if filename.empty? and !create_file.empty?
68
+ file = "/tmp/gems"
69
+ system %{gem list > #{file}}
70
+
71
+ gems = RHash.new
72
+ ids = 1
73
+ File.open(file) do |line|
74
+ while l = line.gets
75
+ gem = l.match(/([\w+|\-|\_])*\s\(/).to_s.rstrip.sub("(",'')
76
+ gem.rstrip
77
+ version = l.match(/(\d+\.\d+\.\d+)|(\d+\.\d+)/)
78
+
79
+ next if gem.match(/rvm/i) or gem.match(/freeze_gems/i)
80
+
81
+ gems[ids] = {gem.rstrip => version.to_s}
82
+ if show_gems
83
+ puts "Gem: #{gem.rstrip} (#{version})"
84
+ end
85
+ ids += 1
86
+ end
87
+ end
88
+
89
+ FileUtils.rm(file)
90
+
91
+ gems.sort!
92
+
93
+ unless create_file.match(/\.yaml|\.yml/)
94
+ create_file += '.yaml'
95
+ end
96
+
97
+ File.open(create_file, 'w') do |out|
98
+ out.puts gems.to_yaml
99
+ end
100
+ end
101
+
102
+
data/test/test.rb ADDED
@@ -0,0 +1 @@
1
+ require 'lib/rproject'
data/test/test.yml ADDED
@@ -0,0 +1,5 @@
1
+ 1:
2
+ "wxruby" : "2.0.0"
3
+ 2:
4
+ "unroller" : "1.0.0"
5
+
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: freeze_gems
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Rodrigo Mello Nardi
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-07-19 00:00:00 -03:00
19
+ default_executable: freeze
20
+ dependencies: []
21
+
22
+ description: |-
23
+ List the gems installed and generates a file.
24
+ This file will be used to install the gems on another computer. This command allow import/export of gems.
25
+ email: rodrigomellonardi@gmail.com
26
+ executables:
27
+ - freeze
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
32
+ files:
33
+ - lib/freeze_gems.rb
34
+ - test/test.rb
35
+ - test/test.yml
36
+ - bin/freeze
37
+ has_rdoc: true
38
+ homepage: http://rubyhideoutprogramming.blogspot.com/
39
+ licenses: []
40
+
41
+ post_install_message:
42
+ rdoc_options:
43
+ - --charset=UTF-8
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 3
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.7
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: Freeze gems
71
+ test_files:
72
+ - test/test.rb