devinstall 0.2.0 → 0.2.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 +4 -4
- data/bin/pkg-tool +16 -13
- data/lib/devinstall/settings.rb +5 -0
- data/lib/devinstall/version.rb +1 -1
- data/lib/devinstall.rb +56 -27
- 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: c2f2c6937b701ffa7244cbbcad05ec74cf378383
|
4
|
+
data.tar.gz: febe47467ab63606b4bf1c9d43fe1b0fb331da3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24d0732f67276785ae6785c9df8ac46f275b711932ad355b59c5064e108d13dcc244ae0cf08a6935349d8250f2e0eaebe78f4e6afe953b2ba69dd03899315f5a
|
7
|
+
data.tar.gz: 9a0cbe36d5203618ce5046a207db353e5bb2e5b5b0575d2e2766da629ac32a02b84a89af1ae8982ebb8b9911c3423a27130e81a0f0cb27bff78fe673c3bde539
|
data/bin/pkg-tool
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'getopt/long'
|
4
4
|
require 'devinstall'
|
5
5
|
require 'devinstall/settings'
|
6
|
-
require 'pp'
|
7
6
|
|
8
7
|
begin
|
9
8
|
opt =Getopt::Long.getopts(
|
@@ -15,12 +14,13 @@ begin
|
|
15
14
|
['--build', '-b',],
|
16
15
|
['--upload', '-u',],
|
17
16
|
['--install', '-i',],
|
17
|
+
['--test', '-t,'],
|
18
18
|
['--help', '-h',],
|
19
19
|
)
|
20
20
|
rescue
|
21
21
|
puts 'Invalid option in command line'
|
22
22
|
help!
|
23
|
-
exit!
|
23
|
+
exit! 1
|
24
24
|
end
|
25
25
|
|
26
26
|
def help!
|
@@ -38,21 +38,21 @@ if opt['help']
|
|
38
38
|
exit!(0)
|
39
39
|
end
|
40
40
|
unless opt['config']
|
41
|
-
puts 'You must specify
|
42
|
-
exit! 1
|
41
|
+
puts 'You must specify the config file'
|
42
|
+
exit! 1 # Exit
|
43
43
|
end
|
44
|
-
Settings.load!
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
Settings.load! opt['config']
|
45
|
+
|
46
|
+
['package', 'env', 'type'].each do |o|
|
47
|
+
if Settings.defaults[o.to_sym]
|
48
|
+
opt[o]=Settings.defaults[o.to_sym]
|
48
49
|
end
|
49
50
|
end
|
50
|
-
puts "Working on #{opt['package']} for environment #{opt['env']}"
|
51
|
-
unless opt['package'] && opt['config'] && opt['type'] && opt['env'] && (opt['build'] || opt['upload'] || opt['install'])
|
52
|
-
puts 'You must speciffy --config file, --package, --type and --env and one of the actions (--build, --install, --upload)'
|
53
|
-
exit!(0)
|
54
|
-
end
|
55
51
|
|
52
|
+
unless opt['package'] && opt['config'] && opt['type'] && opt['env'] && (opt['build'] || opt['upload'] || opt['install'] || opt['test'])
|
53
|
+
puts 'You must speciffy --config file, --package, --type and --env and one of the actions (--build, --install, --upload or --test)'
|
54
|
+
exit! 1
|
55
|
+
end
|
56
56
|
package=Devinstall::Pkg.new(opt['package'])
|
57
57
|
|
58
58
|
if opt['build']
|
@@ -62,5 +62,8 @@ elsif opt['install']
|
|
62
62
|
package.install(opt['env'].to_sym)
|
63
63
|
elsif opt['upload']
|
64
64
|
package.build(opt['type'].to_sym)
|
65
|
+
package.run_tests(opt['env'].to_sym)
|
65
66
|
package.upload(opt['env'].to_sym)
|
67
|
+
elsif opt['test']
|
68
|
+
package.run_tests(opt['env'].to_sym)
|
66
69
|
end
|
data/lib/devinstall/settings.rb
CHANGED
data/lib/devinstall/version.rb
CHANGED
data/lib/devinstall.rb
CHANGED
@@ -8,7 +8,6 @@ require 'pp'
|
|
8
8
|
|
9
9
|
module Devinstall
|
10
10
|
|
11
|
-
|
12
11
|
class Pkg
|
13
12
|
|
14
13
|
# @param [Symbol] type
|
@@ -34,20 +33,16 @@ module Devinstall
|
|
34
33
|
chg: "#{pname}_amd64.changes"}
|
35
34
|
end
|
36
35
|
|
37
|
-
def upload (
|
38
|
-
unless Settings.repos[:environments][env]
|
39
|
-
puts "Undefined environment '#{env}'"
|
40
|
-
exit! 1
|
41
|
-
end
|
36
|
+
def upload (environment)
|
42
37
|
scp =Settings.base[:scp]
|
43
38
|
repo =Hash.new
|
44
|
-
type =Settings.repos[:environments][
|
39
|
+
type =Settings.repos[:environments][environment][:type]
|
45
40
|
[:user, :host, :folder].each do |k|
|
46
|
-
fail("Unexistent key repos:#{
|
47
|
-
repo[k]=Settings.repos[:environments][
|
41
|
+
fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[:environments][environment].has_key?(k)
|
42
|
+
repo[k]=Settings.repos[:environments][environment][k]
|
48
43
|
end
|
49
|
-
|
50
|
-
|
44
|
+
build(type)
|
45
|
+
@package_files[type].each do |p|
|
51
46
|
system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}")
|
52
47
|
end
|
53
48
|
end
|
@@ -56,9 +51,9 @@ module Devinstall
|
|
56
51
|
def build (type)
|
57
52
|
puts "Building package #{@package} type #{type.to_s}"
|
58
53
|
unless Settings.packages[@package].has_key?(type)
|
59
|
-
puts("Package '#{@package}' cannot be built for the required
|
54
|
+
puts("Package '#{@package}' cannot be built for the required environment")
|
60
55
|
puts("undefined build configuration for '#{type.to_s}'")
|
61
|
-
exit!
|
56
|
+
exit!(1)
|
62
57
|
end
|
63
58
|
build =Hash.new
|
64
59
|
[:user, :host, :folder, :target].each do |k|
|
@@ -80,41 +75,75 @@ module Devinstall
|
|
80
75
|
gsub('%p', @package.to_s).
|
81
76
|
gsub('%T', type.to_s)
|
82
77
|
|
83
|
-
|
78
|
+
upload_sources("#{local_folder}/", "#{build[:user]}@#{build[:host]}:#{build[:folder]}")
|
84
79
|
system("#{ssh} #{build[:user]}@#{build[:host]} \"#{build_command}\"")
|
85
|
-
@package_files[type].each do |p,t|
|
86
|
-
puts "Receiving target #{p.to_s}
|
80
|
+
@package_files[type].each do |p, t|
|
81
|
+
puts "Receiving target #{p.to_s} for #{t.to_s}"
|
87
82
|
system("#{rsync} -az #{build[:user]}@#{build[:host]}:#{build[:target]}/#{t} #{local_temp}")
|
88
83
|
end
|
89
84
|
end
|
90
85
|
|
91
|
-
def
|
92
|
-
|
93
|
-
|
86
|
+
def run_tests(environment)
|
87
|
+
# for tests we will use aprox the same setup as for build
|
88
|
+
test =Hash.new
|
89
|
+
[:user, :machine, :command, :folder].each do |k|
|
90
|
+
unless Settings.tests[environment].has_key?(k)
|
91
|
+
puts("Undefined key 'tests:#{environment}:#{k.to_s}:'")
|
92
|
+
exit!(1)
|
93
|
+
end
|
94
|
+
test[k]=Settings.tests[environment][k]
|
95
|
+
end
|
96
|
+
ssh =Settings.base[:ssh]
|
97
|
+
|
98
|
+
test[:command] = test[:command].gsub('%f', test[:folder]).
|
99
|
+
gsub('%t', Settings.build[:target]).
|
100
|
+
gsub('%p', @package.to_s)
|
101
|
+
|
102
|
+
local_folder =File.expand_path Settings.local[:folder] #take the sources from the local folder
|
103
|
+
|
104
|
+
upload_sources("#{local_folder}/", "#{test[:user]}@#{test[:machine]}:#{test[:folder]}") # upload them to the test machine
|
105
|
+
|
106
|
+
puts "Running all tests for the #{environment} environment"
|
107
|
+
puts "This will take some time"
|
108
|
+
ret=system("#{ssh} #{test[:user]}@#{test[:machine]} \"#{test[:command]}\"")
|
109
|
+
if ret
|
110
|
+
puts "Errors during test. Aborting current procedure"
|
94
111
|
exit! 1
|
95
112
|
end
|
96
|
-
|
113
|
+
rescue Exception => ee
|
114
|
+
puts "Unknown exception during parsing config file"
|
115
|
+
puts "Aborting (#{ee})"
|
116
|
+
exit! 1
|
117
|
+
end
|
118
|
+
|
119
|
+
def install (environment)
|
120
|
+
puts "Installing #{@package} in #{environment} environment."
|
97
121
|
sudo =Settings.base[:sudo]
|
98
122
|
scp =Settings.base[:scp]
|
99
|
-
type=Settings.install[:environments][
|
123
|
+
type=Settings.install[:environments][environment][:type].to_sym
|
100
124
|
local_temp =Settings.local[:temp]
|
101
125
|
install=Hash.new
|
102
126
|
[:user, :host, :folder].each do |k|
|
103
|
-
unless Settings.install[:environments][
|
104
|
-
puts "Undefined key 'install
|
105
|
-
exit!
|
127
|
+
unless Settings.install[:environments][environment].has_key?(k)
|
128
|
+
puts "Undefined key 'install:#{environment.to_s}:#{k.to_s}'"
|
129
|
+
exit! 1
|
106
130
|
end
|
107
|
-
install[k]=Settings.install[:environments][
|
131
|
+
install[k]=Settings.install[:environments][environment][k]
|
108
132
|
end
|
109
133
|
case type
|
110
134
|
when :deb
|
111
|
-
system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}
|
135
|
+
system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}:#{install[:folder]}")
|
112
136
|
system("#{sudo} #{Settings.build[:user]}@#{Settings.build[:host]} \"dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}\"")
|
113
137
|
else
|
114
138
|
puts "unknown package type '#{type.to_s}'"
|
115
|
-
exit!
|
139
|
+
exit! 1
|
116
140
|
end
|
117
141
|
end
|
142
|
+
|
143
|
+
def upload_sources (source, dest)
|
144
|
+
rsync =Settings.base[:rsync]
|
145
|
+
system("#{rsync} -az #{source} #{dest}")
|
146
|
+
end
|
118
147
|
end
|
119
148
|
end
|
120
149
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devinstall
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dragos Boca
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|