Narnach-gems 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -5,6 +5,10 @@ Rails code would not get into dependency issues.
5
5
 
6
6
  == Recent changes
7
7
 
8
+ === Version 0.1.4
9
+ It is now possible to add a list of gems to an existing project.
10
+ Changed internal storage format of ~/.gems.yml, which is auto-converted on use.
11
+
8
12
  === Version 0.1.3
9
13
  Bugfix: gem-specific installation options actually work as intended: passing compiler options to gems with C extensions.
10
14
 
data/bin/gems CHANGED
@@ -31,6 +31,10 @@ when 'configure'
31
31
  gems_config = GemsConfig.new(project)
32
32
  gemname = ARGV.shift
33
33
  gems_config.set_gem_options(gemname, ARGV)
34
+ when 'add'
35
+ gems_config = GemsConfig.new(project)
36
+ gems_file = ARGV.shift.to_s.strip
37
+ gems_config.add_gems(gems_file)
34
38
  else 'help'
35
39
  puts <<-EOS
36
40
  Syntax:
@@ -49,6 +53,8 @@ Actions and arguments:
49
53
  export <name> <file>
50
54
  Export all gems in project <name> to <file>.
51
55
  The file will be overwritten and can be parsed by the import action.
56
+ add <name> <file>
57
+ Add the gems <file> to project <name>.
52
58
  projects
53
59
  List all stored project names.
54
60
  configure <name> <gem> [option1 option2 option3]
data/gems.gemspec CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.name = 'gems'
4
4
  s.summary = "Gems is a simple tool to manage sets of RubyGems."
5
5
  s.description = "Gems is a simple tool to manage sets of RubyGems. It can be used to install and uninstall large numbers of gems."
6
- s.version = '0.1.3'
6
+ s.version = '0.1.4'
7
7
  s.date = '2008-08-19'
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Wes Oldenbeuving"]
data/lib/gems_config.rb CHANGED
@@ -7,6 +7,16 @@ class GemsConfig
7
7
  def initialize(name)
8
8
  @name = name
9
9
  end
10
+
11
+ def add_gems(file)
12
+ new_gems = GemsParser.new(file).gems
13
+ new_gems.each do |gemname, versions|
14
+ versions.each do |version|
15
+ add_gem(gemname, version)
16
+ end
17
+ end
18
+ save_config
19
+ end
10
20
 
11
21
  def export_gems(file)
12
22
  File.open(file,'wb') do |f|
@@ -31,8 +41,17 @@ class GemsConfig
31
41
  save_config
32
42
  end
33
43
 
44
+ # Load gems. Old data is automatically converted to new data.
34
45
  def gems
35
- project['gems'] ||= {}
46
+ gem_data = (project['gems'] ||= {})
47
+ return gem_data if gem_data.kind_of? Hash
48
+ new_gems = {}
49
+ gem_data.each do |gem_ary|
50
+ new_gems[gem_ary[0]] = gem_ary[1]
51
+ end
52
+ project['gems'] = new_gems
53
+ save_config
54
+ return gems
36
55
  end
37
56
 
38
57
  def project_names
@@ -40,6 +59,13 @@ class GemsConfig
40
59
  end
41
60
 
42
61
  protected
62
+
63
+ def add_gem(gemname, version)
64
+ gems[gemname] ||= []
65
+ gems[gemname] << version
66
+ gems[gemname].uniq!
67
+ gems[gemname].sort!
68
+ end
43
69
 
44
70
  def config
45
71
  @config ||= load_config
data/lib/gems_parser.rb CHANGED
@@ -18,7 +18,7 @@ class GemsParser
18
18
  private
19
19
 
20
20
  def parse_gems
21
- parsed_gems = []
21
+ parsed_gems = {}
22
22
  str.each do |line|
23
23
  gemname, *versions = line.split(" ")
24
24
  next if gemname.to_s.size == 0
@@ -28,7 +28,7 @@ class GemsParser
28
28
  versions.compact!
29
29
  versions.uniq!
30
30
  next if versions.size == 0
31
- parsed_gems << [gemname, versions]
31
+ parsed_gems[gemname] = versions
32
32
  end
33
33
  return parsed_gems
34
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Narnach-gems
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wes Oldenbeuving