ruth 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: feab1c50c9941379b158c905ed05bc1cd7e228a6
4
- data.tar.gz: 9979dd40738bbc533baffbfdf5f75b975a383e9e
3
+ metadata.gz: 882394a009b84db98c70df750c76e18d6679c25c
4
+ data.tar.gz: ae53d339ad08d97370af0e2b73cc0a4b299b5b2a
5
5
  SHA512:
6
- metadata.gz: 931c5c1dc17965a97d630139b13678e685974dd74ecbc66660d7756e5aa2d5c731a865507c825d58287cbc60d66e4d52de1b0981bbf9c0fe8b7e75498fd5a7dd
7
- data.tar.gz: 3717ed574a41fe59a87c4a379814380b8ea423902243d0b289ad852f42b3f6706ff4ed44e58694efaf79670094ebe2022a250fe04bcf02c6fbb710d5b99de2c0
6
+ metadata.gz: 34c0adfb864c6c5da10146c35b1b960f68869016c21cdbe629ede6c0022d832fe78af1e04108f00a5a570d3bdcd7e57a5320dbcd05f1f57dd10465a1d5b132c9
7
+ data.tar.gz: 0338dada8b25384ed1f942847220c317de634921590955d73760ed2b194da27b7f9af5432bbd0bd8df73256e317ff78ed3ce6796e411d30da08fbee514d31b06
data/lib/ruth.rb CHANGED
@@ -1,2 +1,3 @@
1
+ require 'yaml'
1
2
  require 'ruth/gemfile'
2
3
  require 'ruth/version'
data/lib/ruth/gemfile.rb CHANGED
@@ -2,34 +2,35 @@
2
2
  module Ruth
3
3
  # Gemfile generator
4
4
  class Gemfile
5
- attr_accessor :conf, :output
5
+ attr_accessor :file, :data, :gem, :gemfile
6
6
 
7
- def initialize
8
- @output = []
9
- end
7
+ def initialize(yaml_file)
8
+ @gem = []
9
+ @file = yaml_file
10
+ @data = parse_yaml_file
10
11
 
11
- # Public - Set @conf with filled YAML data
12
- #
13
- # conf - Array YAML list
14
- #
15
- # Returns nil
16
- def set_conf(conf)
17
- @conf = conf
12
+ parse_gemfile_items
18
13
  end
19
14
 
20
15
  # Public - Generate Gemfile
21
16
  #
22
17
  # Returns Array
23
- def generate(conf = nil)
18
+ def final_gemfile
19
+ @gem.join("\n")
20
+ end
24
21
 
25
- if @conf.nil?
26
- fail "Please use set_conf() method or provide conf for generate()"
27
- else
28
- @conf = conf
22
+ # Public - Write parsed data into a Gemfile
23
+ #
24
+ # file - String location fo the file
25
+ #
26
+ # Returns nil
27
+ def write_gemfile
28
+ begin
29
+ fd = File.open(@gemfile, 'w')
30
+ fd.write(final_gemfile)
31
+ ensure
32
+ fd.close unless fd.nil?
29
33
  end
30
-
31
- iterate
32
- @output
33
34
  end
34
35
 
35
36
  private
@@ -37,8 +38,8 @@ module Ruth
37
38
  # Private - Go trough provided keys and generate output
38
39
  #
39
40
  # Returns nil
40
- def iterate
41
- @conf.keys.map do |key|
41
+ def parse_gemfile_items
42
+ @data.keys.map do |key|
42
43
  case key
43
44
  when :source
44
45
  sources
@@ -52,8 +53,12 @@ module Ruth
52
53
  #
53
54
  # Returns nil
54
55
  def sources
55
- @conf[:source].each do |h|
56
- @output << "source '#{h}'"
56
+ if @data[:source].kind_of?(String)
57
+ @gem << "source '#{@data[:source]}"
58
+ elsif @data[:source].kind_of?(Array)
59
+ @data[:source].each do |h|
60
+ @gem<< "source '#{h}'"
61
+ end
57
62
  end
58
63
  end
59
64
 
@@ -61,9 +66,9 @@ module Ruth
61
66
  #
62
67
  # Returns nil
63
68
  def general_list
64
- @conf[:general].each do |g|
69
+ @data[:general].each do |g|
65
70
  if g.kind_of?(String)
66
- @output << "gem '#{g}'"
71
+ @gem<< "gem '#{g}'"
67
72
  elsif g.kind_of?(Hash)
68
73
  detailed_gem_list(g)
69
74
  end
@@ -74,35 +79,59 @@ module Ruth
74
79
  #
75
80
  # Returns nil
76
81
  def detailed_gem_list(hash)
77
- gem = []
78
-
82
+ items = []
79
83
  hash.keys.map do |key|
80
84
  case key
81
85
  when :name
82
- gem << "gem '#{hash[:name]}'"
86
+ items << "gem '#{hash[key]}'"
83
87
  when :git
84
- gem << ":git => '#{hash[:git]}'"
88
+ items << ":git => '#{hash[key]}'"
85
89
  when :branch
86
- gem << ":branch => '#{hash[:branch]}'"
90
+ items << ":branch => '#{hash[key]}'"
87
91
  when :version
88
- case hash[:version]
89
- when />=/, /~>/, /</
90
- gem << hash[:version]
91
- else
92
- fail "Please provide correct version: ~> #{hash[:version]} / >= \
93
- #{hash[:version]}"
94
- end
92
+ items << verify_version
95
93
  when :require
96
- gem << ":require => #{hash[:require]}"
94
+ items << ":require => #{hash[key]}"
97
95
  when :group
98
- if hash[:group].kind_of?(String)
99
- gem << ":group => #{hash[:group]}"
100
- elsif hash[:group].kind_of?(Array)
101
- gem << ":group => [#{hash[:group].join(', ')}]"
102
- end
96
+ items << gem_group
103
97
  end
104
98
  end
105
- @output << gem.join(', ')
99
+ @gem << items.join(', ')
100
+ end
101
+
102
+ # Private - Check kind of group we hav
103
+ #
104
+ # group - Array or String of groups where gem belongs
105
+ #
106
+ # Returns String
107
+ def gem_group(group)
108
+ if group.kind_of?(String)
109
+ ":group => #{group}"
110
+ elsif group.kind_of?(Array)
111
+ ":group => [#{group.join(', ')}]"
112
+ end
106
113
  end
114
+
115
+ # Private - Check if version key data syntax is correct
116
+ #
117
+ # version - String
118
+ #
119
+ # Returns String
120
+ def verify_version(version)
121
+ ver = [/>=/, /~>/, /</].any? { |w| w =~ version }
122
+ if ver
123
+ gem << version
124
+ else
125
+ fail "Please provide correct version: ~> #{hash[:version]} / >= \
126
+ #{hash[:version]}"
127
+ end
128
+ end
129
+ # Private - Read YAML file
130
+ #
131
+ # Return Hash
132
+ def parse_yaml_file
133
+ YAML.load_file(@file)
134
+ end
135
+
107
136
  end
108
137
  end
data/lib/ruth/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ruth
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antun Krasic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-31 00:00:00.000000000 Z
11
+ date: 2014-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler