rpmchange 0.0.1

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZGE2OWI4NjlkOTk2YTgyMmIyZTU4NDI4YWQwY2M0YTdlMzQzN2Y4OA==
5
+ data.tar.gz: !binary |-
6
+ NDQ4ZTY1NGE2OTNkNDMwZDg3YTI3ZDQyZGQxMGJiYzczZjVmZGEzNA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZDBhYTk5OGM5OWE1MDc5NjkwM2E3NDdjZTBlMjYzNDI4YTNiMDViODFmZjA5
10
+ NmZkYjVlOTViYWMyZDk5M2Y4YjBjMTQ0ZTZmZGE2ODI0YjhlMjg5ZGE2NWEz
11
+ NzkxMjllZWQ3Njc3YTc1NzQ3MzI1ZjIzYTUzMDFlMjk0MmJiODM=
12
+ data.tar.gz: !binary |-
13
+ MTU1MjMxYzFlMjFiODdkN2ZjZWQ4ZTU5Y2Q1Y2Y4YmRjMzE1MDk2NjAyMzhh
14
+ YTdiN2M1YmNmNjEwMTcxNTg0MjllMDY2MjhhZjQ0ZTM0MzZiODRhZTdkNzJk
15
+ YWQ1YzZkODk3OThlMWQ4MWExNmVkODAwZGYwZjg5NzIxYWQ1MzY=
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+ .dat*
13
+ .repl_history
14
+ build/
15
+ /.yardoc/
16
+ /_yardoc/
17
+ /doc/
18
+ /rdoc/
19
+ /.bundle/
20
+ /vendor/bundle
21
+ /lib/bundler/man/
22
+ .tags
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm: 2.2.1
3
+ deploy:
4
+ provider: rubygems
5
+ api_key:
6
+ secure: O3hyYvf7TxqhzYQo4eu0f+WMO0EJhg2W1D1rx8vrviC/1VybQ9Ctl0WPWtL20/YohtDdAR0SG+PsMaiFKYJAl1RxmwkSre8GkBvHQlsWhKxQ8IPQpA4xZRUrMYN4OActlqREJBVrIjgGjOrfmnlf/9+4SjYRJhfH5yuz/fcb9/KbGTgLreEk4FRULRUfdAhw3xiWp7S9Cg8vYi4OU6NEJau3PbLfpGwzbv9Ms2JEzwj2ppASByN+jBjUfdX4t2hcUGFlTItRy2e+iM6MVX8apEhzUC+NHNuJuQR2YwdTpmPZZoGWp+tof3ToqPlBy9/DOkCqG0AF4gQUNlFFEaZ/riIymOyLVGHQUkaYE6Qs7a3WJ8fgaJlQDgopxGf6sm69LZ7+s690EsBiC9zNhNii2g6Mc4suVcW5baA6+O1I5gvx+D7Ac2aSPGZoaqG5c9IC+X0/YlIlskK8xABslNWnkDrUNJWJkElxUj6HfRBpkHOkkGDe7v6+n2lzw+pqrhd2ESrHnW1yVDa4+FWZWqV7IuIcgoN1PaO4d+XH2+e4lSokcEIf8Nz65vj0DBLP0Q9Yh6eEp/wATK3x9PLoNz+s92UE40YRXPjP8fjmxijqbpAsTCc8A1fRYveSudkZ4H1IVdLVP+oVKFvqqBGNxmndhEuQBhtsigfh838hrgvIg/4=
7
+ gem: rpmchange
8
+ on:
9
+ tags: true
10
+ repo: flant/rpmchange
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,94 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rpmchange (0.0.1)
5
+ diffy (>= 3.1.0, < 4.0)
6
+ thor (>= 0.19.1, < 1.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.4.0)
12
+ backports (3.6.8)
13
+ binding_of_caller (0.7.2)
14
+ debug_inspector (>= 0.0.1)
15
+ coderay (1.1.1)
16
+ debug_inspector (0.0.2)
17
+ diff-lcs (1.2.5)
18
+ diffy (3.1.0)
19
+ ethon (0.8.1)
20
+ ffi (>= 1.3.0)
21
+ faraday (0.9.2)
22
+ multipart-post (>= 1.2, < 3)
23
+ faraday_middleware (0.10.0)
24
+ faraday (>= 0.7.4, < 0.10)
25
+ ffi (1.9.10)
26
+ gh (0.14.0)
27
+ addressable
28
+ backports
29
+ faraday (~> 0.8)
30
+ multi_json (~> 1.0)
31
+ net-http-persistent (>= 2.7)
32
+ net-http-pipeline
33
+ highline (1.7.8)
34
+ json (1.8.3)
35
+ launchy (2.4.3)
36
+ addressable (~> 2.3)
37
+ method_source (0.8.2)
38
+ multi_json (1.11.2)
39
+ multipart-post (2.0.0)
40
+ net-http-persistent (2.9.4)
41
+ net-http-pipeline (1.0.1)
42
+ pry (0.10.3)
43
+ coderay (~> 1.1.0)
44
+ method_source (~> 0.8.1)
45
+ slop (~> 3.4)
46
+ pry-stack_explorer (0.4.9.2)
47
+ binding_of_caller (>= 0.7)
48
+ pry (>= 0.9.11)
49
+ pusher-client (0.6.2)
50
+ json
51
+ websocket (~> 1.0)
52
+ rake (10.5.0)
53
+ rspec (3.4.0)
54
+ rspec-core (~> 3.4.0)
55
+ rspec-expectations (~> 3.4.0)
56
+ rspec-mocks (~> 3.4.0)
57
+ rspec-core (3.4.4)
58
+ rspec-support (~> 3.4.0)
59
+ rspec-expectations (3.4.0)
60
+ diff-lcs (>= 1.2.0, < 2.0)
61
+ rspec-support (~> 3.4.0)
62
+ rspec-mocks (3.4.1)
63
+ diff-lcs (>= 1.2.0, < 2.0)
64
+ rspec-support (~> 3.4.0)
65
+ rspec-support (3.4.1)
66
+ slop (3.6.0)
67
+ thor (0.19.1)
68
+ travis (1.8.2)
69
+ backports
70
+ faraday (~> 0.9)
71
+ faraday_middleware (~> 0.9, >= 0.9.1)
72
+ gh (~> 0.13)
73
+ highline (~> 1.6)
74
+ launchy (~> 2.1)
75
+ pusher-client (~> 0.4)
76
+ typhoeus (~> 0.6, >= 0.6.8)
77
+ typhoeus (0.8.0)
78
+ ethon (>= 0.8.0)
79
+ websocket (1.2.2)
80
+
81
+ PLATFORMS
82
+ ruby
83
+
84
+ DEPENDENCIES
85
+ bundler (~> 1.7)
86
+ pry (>= 0.10.3, < 1.0)
87
+ pry-stack_explorer (>= 0.4.9.2, < 1.0)
88
+ rake (~> 10.0)
89
+ rpmchange!
90
+ rspec (~> 3.4, >= 3.4.0)
91
+ travis (~> 1.8, >= 1.8.2)
92
+
93
+ BUNDLED WITH
94
+ 1.11.2
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Flant
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # rpmchange
2
+ Simple rpm spec parser and emitter.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/bin/rpmchange ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # vi: set ft=ruby :
3
+ # vi: set sts=2 ts=2 sw=2 :
4
+
5
+ require 'rpmchange'
6
+
7
+ Rpmchange::Cli.start
@@ -0,0 +1,51 @@
1
+ module Rpmchange
2
+ class Cli < ::Thor
3
+ class << self
4
+ def shared_options
5
+ (@shared_options || {}).each do |name, options|
6
+ method_option name, options
7
+ end
8
+ end
9
+
10
+ def spec_construct(options)
11
+ Spec.loadfile(options['specfile'])
12
+ end
13
+
14
+ def spec_write!(spec)
15
+ File.open(options['specfile'], 'w') {|f| f.write spec.dump}
16
+ end
17
+ end # << self
18
+
19
+ @shared_options = {
20
+ specfile: {type: :string, desc: "path to spec file", required: true},
21
+ }
22
+
23
+ desc "append_changelog", "Make a new changelog entry at the end of current entries"
24
+ shared_options
25
+ method_option :name, {type: :string, desc: "maintainer name", required: true}
26
+ method_option :email, {type: :string, desc: "maintainer email", required: true}
27
+ method_option :message, {type: :string, desc: "changelog message", required: true}
28
+ def append_changelog
29
+ spec = self.class.spec_construct options
30
+ spec.append_changelog(name: options['name'],
31
+ email: options['email'],
32
+ message: options['message'])
33
+ self.class.spec_write! spec
34
+ end
35
+
36
+ desc "tag", "Get or set spec tag"
37
+ shared_options
38
+ method_option :name, {type: :string, desc: "tag name", required: true}
39
+ method_option :value, {type: :string, desc: "tag value"}
40
+ def tag
41
+ spec = self.class.spec_construct options
42
+ if options['value']
43
+ spec.set_tag(options['name'], options['value'])
44
+ self.class.spec_write! spec
45
+ else
46
+ value = spec.tag(options['name'])
47
+ puts value if value
48
+ end
49
+ end
50
+ end # Cli
51
+ end # Rpmchange
@@ -0,0 +1,235 @@
1
+ module Rpmchange
2
+ class Spec
3
+ class << self
4
+ def load(str)
5
+ Spec.new(str)
6
+ end
7
+
8
+ def loadfile(path)
9
+ Spec.new(Pathname.new(path).read)
10
+ end
11
+
12
+ def diff(a, b, **kwargs)
13
+ Diffy::Diff.new(a.to_s, b.to_s, {diff: "-U 3"}.merge(kwargs))
14
+ end
15
+
16
+ def without_macro
17
+ end
18
+ end # << self
19
+
20
+ attr_reader :str
21
+
22
+ def initialize(str)
23
+ @str = str
24
+ _load!
25
+ end
26
+
27
+ def reload
28
+ @sections = nil
29
+ end
30
+
31
+ def dump
32
+ [].tap do |res|
33
+ res.push *preamble_lines
34
+ sections.each do |section, by_params|
35
+ by_params.each {|params, lines|
36
+ res.push ["%#{section}", *params].join(' ')
37
+ res.push *lines
38
+ }
39
+ end
40
+ end.map {|line| line + "\n"}.join
41
+ end
42
+
43
+ def to_s
44
+ dump
45
+ end
46
+
47
+ def inspect
48
+ "#<#{self.class}: #{name}/#{full_version}>"
49
+ end
50
+
51
+ def diff(with: nil, **kwargs)
52
+ if with
53
+ self.class.diff(dump, with, **kwargs)
54
+ else
55
+ self.class.diff(str, dump, **kwargs)
56
+ end
57
+ end
58
+
59
+ def name
60
+ tag(:name)
61
+ end
62
+
63
+ def name=(value)
64
+ set_tag(:name, value)
65
+ end
66
+
67
+ def version
68
+ tag(:version)
69
+ end
70
+
71
+ def version=(value)
72
+ set_tag(:version, value)
73
+ end
74
+
75
+ def release
76
+ tag(:release)
77
+ end
78
+
79
+ def release=(value)
80
+ set_tag(:release, value)
81
+ end
82
+
83
+ def epoch
84
+ tag(:epoch)
85
+ end
86
+
87
+ def epoch=(value)
88
+ set_tag(:epoch, value)
89
+ end
90
+
91
+ def full_version
92
+ [epoch, [version, release].compact.join('-')]
93
+ .compact
94
+ .join(':')
95
+ .gsub(/%{.*}/, '')
96
+ end
97
+
98
+ def append_changelog(name:, email:, message:)
99
+ ["* #{Time.now.strftime("%a %b %e %Y")} #{name} <#{email}> - #{full_version}",
100
+ "- #{message}",
101
+ "",
102
+ ].reverse_each {|line| _prepend_line(lines: changelog_lines, new_line: line)}
103
+ end
104
+
105
+ def to_tag_name(tag)
106
+ tag.to_s.capitalize
107
+ end
108
+
109
+ def tag(tag)
110
+ match = preamble_lines.find {|line| line.start_with? "#{to_tag_name(tag)}:"}
111
+ res = match.split(':', 2).last if match
112
+ res.strip if res
113
+ end
114
+
115
+ def set_tag(tag, value)
116
+ _replace_line(lines: preamble_lines, new_line: "#{to_tag_name(tag)}: #{value.strip}", match: /#{to_tag_name(tag)}:/)
117
+ end
118
+
119
+ def append_tag(tag, value)
120
+ _append_line(lines: preamble_lines, new_line: "#{to_tag_name(tag)}: #{value}")
121
+ end
122
+
123
+ def append_patch(value)
124
+ append_patch_macro append_patch_tag(value)
125
+ end
126
+
127
+ def patch_tags
128
+ preamble_lines
129
+ .grep(_patch_tag_line_regex)
130
+ .map(&method(:_patch_tag_line_parse))
131
+ .to_h
132
+ end
133
+
134
+ def append_patch_tag(value)
135
+ patch_num = nil
136
+ make_line = proc do |insert_ind|
137
+ if insert_ind > 0
138
+ last_patch_num = _patch_tag_line_parse(preamble_lines[insert_ind - 1]).first
139
+ patch_num = last_patch_num + 1
140
+ else
141
+ patch_num = 0
142
+ end
143
+ "Patch#{patch_num}: #{value}"
144
+ end
145
+ _append_line(lines: preamble_lines, new_line: make_line, after: _patch_tag_line_regex)
146
+ patch_num
147
+ end
148
+
149
+ def append_patch_macro(num)
150
+ _append_line(lines: prep_lines, new_line: "%patch#{num} -p1", after: _patch_macro_line_regex)
151
+ nil
152
+ end
153
+
154
+ def sections
155
+ @sections ||= {}
156
+ end
157
+
158
+ def preamble_lines
159
+ @preamble_lines ||= []
160
+ end
161
+
162
+ SECTIONS = %i{prep build install clean check files changelog}
163
+ SECTIONS.each do |section|
164
+ define_method("#{section}_lines") {|params=nil| (sections[section] || {})[params] || []}
165
+ end
166
+
167
+ protected
168
+
169
+ def _patch_macro_line_regex
170
+ @_patch_macro_line_regex ||= /^%patch[0-9]*/
171
+ end
172
+
173
+ def _append_line(lines:, new_line:, after: nil)
174
+ find_index = proc do |lines|
175
+ if after
176
+ ind = lines.rindex {|line| line.to_s =~ after}
177
+ ind ? ind + 1 : -1
178
+ else
179
+ -1
180
+ end
181
+ end
182
+ _insert_line(lines: lines, new_line: new_line, find_index: find_index)
183
+ end
184
+
185
+ def _prepend_line(lines:, new_line:, before: nil)
186
+ find_index = proc do |lines|
187
+ if before
188
+ lines.index {|line| line.to_s =~ before} || 0
189
+ else
190
+ 0
191
+ end
192
+ end
193
+ _insert_line(lines: lines, new_line: new_line, find_index: find_index)
194
+ end
195
+
196
+ def _insert_line(lines:, new_line:, find_index:)
197
+ if ind = find_index.call(lines)
198
+ line = (new_line.respond_to?(:call) ? new_line.call(ind) : new_line).to_s.chomp
199
+ lines.insert(ind, line)
200
+ end
201
+ end
202
+
203
+ def _replace_line(lines:, new_line:, match:)
204
+ if ind = lines.index {|line| line.to_s =~ match}
205
+ line = (new_line.respond_to?(:call) ? new_line.call(ind) : new_line).to_s.chomp
206
+ lines[ind] = line
207
+ end
208
+ end
209
+
210
+ def _patch_tag_line_parse(line)
211
+ tag, value = line.split(':', 2)
212
+ [tag.split('Patch').last.to_i, value.strip] if tag
213
+ end
214
+
215
+ def _patch_tag_line_regex
216
+ @_patch_tag_line_regex ||= /^Patch[0-9]*:/
217
+ end
218
+
219
+ def _load!
220
+ current_section = preamble_lines
221
+ str.lines.each do |line|
222
+ line.chomp!
223
+ if section = SECTIONS.find {|s| line.start_with? "%#{s}"}
224
+ section_params = line.split(' ')[1..-1]
225
+ section_key = section_params.empty? ? nil : section_params
226
+ sections[section] ||= {}
227
+ sections[section][section_key] ||= []
228
+ current_section = sections[section][section_key]
229
+ else
230
+ current_section << line
231
+ end
232
+ end
233
+ end
234
+ end # Spec
235
+ end # Rpmchange
@@ -0,0 +1,3 @@
1
+ module Rpmchange
2
+ VERSION = '0.0.1'
3
+ end # Rpmchange
data/lib/rpmchange.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'thor'
2
+ require 'diffy'
3
+
4
+ require 'rpmchange/version'
5
+ require 'rpmchange/spec'
6
+ require 'rpmchange/cli'
data/rpmchange.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ require File.expand_path("../lib/rpmchange/version", __FILE__)
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "rpmchange"
5
+ spec.version = Rpmchange::VERSION
6
+ spec.authors = ["flant"]
7
+ spec.email = "256@flant.com"
8
+
9
+ spec.summary = "Packaging tool"
10
+ spec.description = "#{spec.summary}."
11
+ spec.license = "MIT"
12
+ spec.homepage = "https://github.com/flant/rpmchange"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
+ spec.executables = ["rpmchange"]
16
+
17
+ spec.required_ruby_version = ">= 2.2.1"
18
+
19
+ spec.add_dependency "thor", ">= 0.19.1", "< 1.0"
20
+ spec.add_dependency "diffy", ">= 3.1.0", "< 4.0"
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec", "~> 3.4", ">= 3.4.0"
25
+ spec.add_development_dependency "pry", ">= 0.10.3", "< 1.0"
26
+ spec.add_development_dependency 'pry-stack_explorer', '>= 0.4.9.2', '< 1.0'
27
+ spec.add_development_dependency "travis", "~> 1.8", ">= 1.8.2"
28
+ end
metadata ADDED
@@ -0,0 +1,206 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpmchange
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - flant
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.19.1
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.19.1
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: diffy
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 3.1.0
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '4.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 3.1.0
50
+ - - <
51
+ - !ruby/object:Gem::Version
52
+ version: '4.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: '1.7'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: '1.7'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '10.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '10.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '3.4'
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: 3.4.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '3.4'
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: 3.4.0
101
+ - !ruby/object:Gem::Dependency
102
+ name: pry
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: 0.10.3
108
+ - - <
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.10.3
118
+ - - <
119
+ - !ruby/object:Gem::Version
120
+ version: '1.0'
121
+ - !ruby/object:Gem::Dependency
122
+ name: pry-stack_explorer
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: 0.4.9.2
128
+ - - <
129
+ - !ruby/object:Gem::Version
130
+ version: '1.0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: 0.4.9.2
138
+ - - <
139
+ - !ruby/object:Gem::Version
140
+ version: '1.0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: travis
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: '1.8'
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: 1.8.2
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: '1.8'
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: 1.8.2
161
+ description: Packaging tool.
162
+ email: 256@flant.com
163
+ executables:
164
+ - rpmchange
165
+ extensions: []
166
+ extra_rdoc_files: []
167
+ files:
168
+ - .gitignore
169
+ - .rspec
170
+ - .travis.yml
171
+ - Gemfile
172
+ - Gemfile.lock
173
+ - LICENSE
174
+ - README.md
175
+ - Rakefile
176
+ - bin/rpmchange
177
+ - lib/rpmchange.rb
178
+ - lib/rpmchange/cli.rb
179
+ - lib/rpmchange/spec.rb
180
+ - lib/rpmchange/version.rb
181
+ - rpmchange.gemspec
182
+ homepage: https://github.com/flant/rpmchange
183
+ licenses:
184
+ - MIT
185
+ metadata: {}
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: 2.2.1
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ requirements: []
201
+ rubyforge_project:
202
+ rubygems_version: 2.4.5
203
+ signing_key:
204
+ specification_version: 4
205
+ summary: Packaging tool
206
+ test_files: []