ruth 0.0.2 → 0.0.3

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.
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