pumper 1.2.0 → 1.3.0
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 +4 -4
- data/README.md +13 -3
- data/bin/pumper +20 -11
- data/lib/pumper/configuration.rb +30 -14
- data/lib/pumper/version.rb +1 -1
- data/spec/lib/pumper/configuration_spec.rb +29 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e13030d4ff0a6db3a8def41fe5a5fe6f171a284a
|
4
|
+
data.tar.gz: 0faf78957bb24122e6ec617f8498c65534a8aa8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fe385d88d0cc688144c3351f588007353ee2c4ebd6cae67eb3f0a23d44af085a5a241d88020cbb59c11573d489ae542abf14f619821a6c4de76bb7bf71d690e
|
7
|
+
data.tar.gz: e6633941855111492eb4639935aa23674d9476d4211d7a573768eb11f39c61326571c6f61082ff0472f6798a5b92bfae8eebebb4297c9bf0b4d52108f0c644cd
|
data/README.md
CHANGED
@@ -67,9 +67,10 @@ Success bump current gem
|
|
67
67
|
------------------------- |:-----------------------------------------------------------
|
68
68
|
`--project` | Path to ruby project where <your_gem> needs update
|
69
69
|
`--absolute_path` | If project path is absolute
|
70
|
-
`--gemset` | Gemset name (if you use RVM)
|
71
|
-
`--vendor` | If project gems stored in the vendor/cache
|
70
|
+
`--gemset` | Gemset's name (if you use RVM)
|
71
|
+
`--vendor` | If project's gems stored in the vendor/cache
|
72
72
|
`--config` | If you want to use special config for updating project
|
73
|
+
`--list` | Select projects from `.pumper.yml` (use with --config)
|
73
74
|
|
74
75
|
|
75
76
|
Example:
|
@@ -97,10 +98,19 @@ projects:
|
|
97
98
|
absolute_path: true
|
98
99
|
gemset: ruby-2.1.0
|
99
100
|
vendor: true
|
101
|
+
another_project:
|
102
|
+
path: /Users/admin/Projects/another_project
|
103
|
+
|
100
104
|
```
|
101
105
|
|
102
106
|
and run
|
103
107
|
|
104
108
|
```sh
|
105
109
|
$ pumper --config
|
106
|
-
|
110
|
+
=>
|
111
|
+
# Update all (rails_project, another_project)
|
112
|
+
|
113
|
+
$ pumper --config --list rails_project
|
114
|
+
=>
|
115
|
+
# Update only rails_project
|
116
|
+
```
|
data/bin/pumper
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'optparse'
|
3
3
|
require 'pumper'
|
4
|
-
|
5
4
|
options = Hash.new
|
6
5
|
|
7
6
|
opts = OptionParser.new do |opts|
|
@@ -15,24 +14,34 @@ opts = OptionParser.new do |opts|
|
|
15
14
|
options[:is_absolute_path] = true
|
16
15
|
end
|
17
16
|
|
18
|
-
opts.on('-
|
17
|
+
opts.on('-g', '--gemset GEMSET', "Gemset's name (if you use rvm)") do |gemset|
|
18
|
+
options[:gemset] = gemset
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on('-e', '--vendor', "If project's gems stored in the vendor/cache") do
|
22
|
+
options[:is_vendor] = true
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on('-c', '--config', 'If you use .pumper.yml config') do
|
19
26
|
options[:config] = true
|
20
27
|
end
|
21
28
|
|
22
|
-
opts.on('-
|
23
|
-
options[:
|
29
|
+
opts.on('-l', '--list projectN[,projectN+1]', Array, 'List of projects (use with --config)') do |list|
|
30
|
+
options[:list] = list
|
24
31
|
end
|
25
32
|
|
26
|
-
opts.
|
27
|
-
|
33
|
+
opts.on_tail('-h', '--help', 'Show this message') do
|
34
|
+
puts opts
|
35
|
+
exit
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on_tail('--version', 'Show version') do
|
39
|
+
puts Pumper::VERSION
|
40
|
+
exit
|
28
41
|
end
|
29
42
|
end
|
30
43
|
|
31
44
|
opts.parse!
|
32
45
|
config_options = Pumper::Configuration.configure!(options)
|
33
46
|
|
34
|
-
|
35
|
-
config_options.each { |options| Pumper::Pump.new(options).perform }
|
36
|
-
else
|
37
|
-
Pumper::Pump.new(config_options).perform
|
38
|
-
end
|
47
|
+
config_options.each { |options| Pumper::Pump.new(options).perform }
|
data/lib/pumper/configuration.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Parse and validate options
|
2
2
|
# * _options_ - user's set options
|
3
|
-
# Return array of options hash (from .pumper.yml
|
4
|
-
# Return options hash unless set --config
|
3
|
+
# Return array of options hash (from .pumper.yml if set --config)
|
5
4
|
require 'yaml'
|
6
5
|
|
7
6
|
module Pumper
|
@@ -13,32 +12,49 @@ module Pumper
|
|
13
12
|
def configure!(options)
|
14
13
|
validate(options)
|
15
14
|
|
16
|
-
options[:config] ?
|
15
|
+
options[:config] ? by_config(options[:list]) : [ options ]
|
17
16
|
end
|
18
17
|
|
19
18
|
private
|
20
19
|
|
21
20
|
def validate(options)
|
22
21
|
if options[:config] && (options[:project] || options[:gemset] || options[:vendor])
|
23
|
-
raise InvalidOptions.new('Error: config option
|
22
|
+
raise InvalidOptions.new('Error: config option must be used without [project|gemset|vendor] options')
|
23
|
+
end
|
24
|
+
|
25
|
+
if options[:list] && options[:config].nil?
|
26
|
+
raise InvalidOptions.new('Option --list should be used with --config')
|
24
27
|
end
|
25
28
|
|
26
29
|
if options[:project].nil? && options[:config].nil?
|
27
|
-
raise ProjectNotSet.new('You need set project (--project <PATH_TO_PROJECT>) or use config')
|
30
|
+
raise ProjectNotSet.new('You need to set project (--project <PATH_TO_PROJECT>) or use --config')
|
28
31
|
end
|
29
32
|
end
|
30
33
|
|
31
|
-
def
|
34
|
+
def by_config(list)
|
35
|
+
config = parse_config
|
36
|
+
slice_config =
|
37
|
+
list.nil? ? config : slice(config, list)
|
38
|
+
|
39
|
+
slice_config.values
|
40
|
+
end
|
41
|
+
|
42
|
+
def parse_config
|
32
43
|
file = File.read(File.join(Dir.pwd, '.pumper.yml'))
|
33
|
-
YAML.load(file)['projects'].each_with_object(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
44
|
+
YAML.load(file)['projects'].each_with_object({}) do |(project, option), hash|
|
45
|
+
hash[project] =
|
46
|
+
{
|
47
|
+
project: option['path'],
|
48
|
+
is_absolute_path: option['absolute_path'],
|
49
|
+
gemset: option['gemset'],
|
50
|
+
is_vendor: option['vendor']
|
51
|
+
}
|
40
52
|
end
|
41
53
|
end
|
54
|
+
|
55
|
+
def slice(config, list)
|
56
|
+
config.select { |project, _| list.include?(project) }
|
57
|
+
end
|
42
58
|
end
|
43
59
|
end
|
44
|
-
end
|
60
|
+
end
|
data/lib/pumper/version.rb
CHANGED
@@ -5,23 +5,32 @@ describe Pumper::Configuration do
|
|
5
5
|
|
6
6
|
context 'when raise error ProjectNotSet' do
|
7
7
|
it { expect { subject }.to raise_error(Pumper::Configuration::ProjectNotSet) }
|
8
|
-
it { expect { subject }.to raise_exception('You need to set project (--project <PATH_TO_PROJECT>) or use config') }
|
8
|
+
it { expect { subject }.to raise_exception('You need to set project (--project <PATH_TO_PROJECT>) or use --config') }
|
9
9
|
end
|
10
10
|
|
11
11
|
context 'when valid project' do
|
12
12
|
let(:options) { { project: 'cashier' } }
|
13
13
|
|
14
|
-
it { is_expected.to eq(options) }
|
14
|
+
it { is_expected.to eq([ options ]) }
|
15
15
|
end
|
16
16
|
|
17
|
-
context '
|
18
|
-
|
17
|
+
context 'raise error InvalidOptions' do
|
18
|
+
context 'when set project and config options' do
|
19
|
+
let(:options) { { project: 'cashier', config: true, gemset: 'ruby-2.1.0' } }
|
19
20
|
|
20
|
-
|
21
|
+
it { expect { subject }.to raise_exception('Error: config option must be used without [project|gemset|vendor] options') }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when list option without config' do
|
25
|
+
let(:options) { { list: ['cashier'] } }
|
26
|
+
|
27
|
+
it { expect { subject }.to raise_exception('Option --list should be used with --config') }
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
31
|
context 'when --config' do
|
24
32
|
let(:options) { { config: true } }
|
33
|
+
|
25
34
|
before do
|
26
35
|
pwd = Dir.pwd
|
27
36
|
allow(Dir).to receive(:pwd) { "#{ pwd }/spec/fixtures" }
|
@@ -43,5 +52,20 @@ describe Pumper::Configuration do
|
|
43
52
|
}
|
44
53
|
])
|
45
54
|
end
|
55
|
+
|
56
|
+
context 'when --list' do
|
57
|
+
let(:options) { { config: true, list: ['my_app2'] } }
|
58
|
+
|
59
|
+
it 'should select only list projects' do
|
60
|
+
is_expected.to eq([
|
61
|
+
{
|
62
|
+
project: '/Users/admin/Projects/my_app2',
|
63
|
+
is_absolute_path: true,
|
64
|
+
gemset: 'ruby-2.1.0@my_app2',
|
65
|
+
is_vendor: nil
|
66
|
+
}
|
67
|
+
])
|
68
|
+
end
|
69
|
+
end
|
46
70
|
end
|
47
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pumper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikolay Sverchkov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01
|
11
|
+
date: 2015-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|