devinstall 0.0.5 → 0.0.6
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 +7 -0
- data/.idea/devinstall.iml +3 -3
- data/.idea/misc.xml +1 -1
- data/devinstall.gemspec +1 -1
- data/lib/devinstall/deep_symbolize.rb +1 -1
- data/lib/devinstall/settings.rb +1 -0
- data/lib/devinstall/version.rb +1 -1
- data/lib/devinstall.rb +74 -75
- metadata +12 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 21d81d91ce39de101c87585be67fe8aeb67b3b3e
|
4
|
+
data.tar.gz: b425da5e779873153917ee6d6ed44c836b71d9a2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a83e7bb521527a4620312080b65dea0c97ce91d804391551f95f986e2c08b456256d6e70b157e2d08903a0bc6250047ec48478235288bd609e26552ef1c94c15
|
7
|
+
data.tar.gz: 0246b9fc91d49eb5b819859bf9b78a61074decea28e8a9671253e48b455b21f835ddd3a75829a12922f439843096ec952e7a70c6a6fe7d1d3089d7632e210913
|
data/.idea/devinstall.iml
CHANGED
@@ -15,9 +15,9 @@
|
|
15
15
|
</content>
|
16
16
|
<orderEntry type="inheritedJdk" />
|
17
17
|
<orderEntry type="sourceFolder" forTests="false" />
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.3.4, ruby-
|
19
|
-
<orderEntry type="library" scope="PROVIDED" name="getopt (v1.4.1, ruby-
|
20
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (v10.0.3, ruby-
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.3.4, RVM: ruby-2.0.0-p0) [gem]" level="application" />
|
19
|
+
<orderEntry type="library" scope="PROVIDED" name="getopt (v1.4.1, RVM: ruby-2.0.0-p0) [gem]" level="application" />
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v10.0.3, RVM: ruby-2.0.0-p0) [gem]" level="application" />
|
21
21
|
</component>
|
22
22
|
</module>
|
23
23
|
|
data/.idea/misc.xml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<project version="4">
|
3
|
-
<component name="ProjectRootManager" version="2" project-jdk-name="ruby-
|
3
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.0.0-p0" project-jdk-type="RUBY_SDK" />
|
4
4
|
</project>
|
5
5
|
|
data/devinstall.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = 'devinstall'
|
8
8
|
spec.version = Devinstall::VERSION
|
9
9
|
spec.authors = ['Dragos Boca']
|
10
|
-
spec.email =
|
10
|
+
spec.email = %w(dboca@mail.com)
|
11
11
|
spec.description = %q{remote builder and installer}
|
12
12
|
spec.summary = %q{Copy the source files to a build host, build the packages and install builded packages}
|
13
13
|
spec.homepage = 'http://github.com/dboca/devinstall'
|
data/lib/devinstall/settings.rb
CHANGED
@@ -16,6 +16,7 @@ module Settings
|
|
16
16
|
newsets = newsets[options[:env].to_sym] if options[:env] && newsets[options[:env].to_sym]
|
17
17
|
deep_merge!(@_settings, newsets)
|
18
18
|
end
|
19
|
+
|
19
20
|
def deep_merge!(target, data)
|
20
21
|
merger = proc { |_, v1, v2|
|
21
22
|
Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
data/lib/devinstall/version.rb
CHANGED
data/lib/devinstall.rb
CHANGED
@@ -7,98 +7,97 @@ require 'devinstall/settings' ## in near future we will have to abandon Setting
|
|
7
7
|
module Devinstall
|
8
8
|
class Pkg
|
9
9
|
|
10
|
-
|
11
10
|
# @param [Symbol] type
|
12
11
|
def get_version(type)
|
13
12
|
if type == :deb
|
14
|
-
deb_changelog
|
15
|
-
deb_package_version
|
13
|
+
deb_changelog = "#{Settings.local[:folder]}/debian/changelog" # This is the folder that should be checked
|
14
|
+
deb_package_version =File.open(deb_changelog, 'r').gets.chomp.sub(/^.*\((.*)\).*$/, "\1")
|
16
15
|
@_package_version[:deb]=deb_package_version
|
17
16
|
end
|
18
17
|
end
|
19
|
-
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def upload! (environment)
|
35
|
-
scp =Settings.base[:scp]
|
36
|
-
repo =Hash.new
|
37
|
-
type =Settings.repos[environment][:type]
|
38
|
-
[:user, :host, :folder].each do |k|
|
39
|
-
fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[environment].has_key?(k)
|
40
|
-
repo[k]=Settings.repos[environment][k]
|
41
|
-
end
|
42
|
-
build(type)
|
43
|
-
@package_files[type].each do |p|
|
44
|
-
system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}")
|
19
|
+
def new (package)
|
20
|
+
# curently implemented only for .deb packages (for .rpm later :D)
|
21
|
+
@package =package.to_sym
|
22
|
+
@_package_version =Hash.new # versions for types:
|
23
|
+
@package_files =Hash.new
|
24
|
+
arch =Settings.build[:arch]
|
25
|
+
pname ="#{package}_#{get_version :deb}"
|
26
|
+
@package_files[:deb] ={deb: "#{pname}_#{arch}.deb",
|
27
|
+
tgz: "#{pname}.tar.gz",
|
28
|
+
dsc: "#{pname}.dsc",
|
29
|
+
chg: "#{pname}_debian.changes"}
|
45
30
|
end
|
46
|
-
end
|
47
31
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
32
|
+
def upload! (environment)
|
33
|
+
scp =Settings.base[:scp]
|
34
|
+
repo =Hash.new
|
35
|
+
type =Settings.repos[environment][:type]
|
36
|
+
[:user, :host, :folder].each do |k|
|
37
|
+
fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[environment].has_key?(k)
|
38
|
+
repo[k]=Settings.repos[environment][k]
|
39
|
+
end
|
40
|
+
build(type)
|
41
|
+
@package_files[type].each do |p|
|
42
|
+
system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}")
|
43
|
+
end
|
54
44
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
45
|
+
|
46
|
+
# @param [Symbol] type
|
47
|
+
def build! (type)
|
48
|
+
unless Settings.packages[@package].has_key?(type)
|
49
|
+
puts("Package '#{@package}' cannot be built for the required environment")
|
50
|
+
puts("undefined build configuration for '#{type.to_s}'")
|
59
51
|
exit!(1)
|
60
52
|
end
|
61
|
-
build
|
62
|
-
|
53
|
+
build =Hash.new
|
54
|
+
[:user, :host, :folder, :target].each do |k|
|
55
|
+
unless Settings.build.has_key?(k)
|
56
|
+
puts("Undefined key 'build:#{k.to_s}:'")
|
57
|
+
exit!(1)
|
58
|
+
end
|
59
|
+
build[k]=Settings.build[k]
|
60
|
+
end
|
63
61
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
62
|
+
ssh =Settings.base[:ssh]
|
63
|
+
build_command=Settings.packages[@package][type][:build_command]
|
64
|
+
rsync =Settings.base[:rsync]
|
65
|
+
local_folder =Settings.local[:folder]
|
66
|
+
local_temp =Settings.local[:temp]
|
67
|
+
build_command.sub('%f', Settings.build[:folder]).
|
68
|
+
sub('%t', Settings.build[:target]).
|
69
|
+
sub('%p', @package.to_s).
|
70
|
+
sub('%T', type.to_s)
|
73
71
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
72
|
+
system("#{rsync} -az #{local_folder}/ #{build[:user]}@#{build[:host]}:#{build[:folder]}")
|
73
|
+
system("#{ssh} #{build[:user]}@#{build[:host]} -c \"#{build_command}\"")
|
74
|
+
@package_files[type].each do |p|
|
75
|
+
system("#{rsync} -az #{build[:user]}@#{build[:host]}/#{build[:target]}/#{p} #{local_temp}")
|
76
|
+
end
|
78
77
|
end
|
79
|
-
end
|
80
78
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
79
|
+
def install! (environment)
|
80
|
+
sudo =Settings.base[:sudo]
|
81
|
+
scp =Settings.base[:scp]
|
82
|
+
type =Settings.install[environment][:type]
|
83
|
+
local_temp =Settings.local[:temp]
|
84
|
+
build!(type)
|
85
|
+
install=Hash.new
|
86
|
+
[:user, :host, :folder].each do |k|
|
87
|
+
unless Settings.install[environment].has_key?(k)
|
88
|
+
puts "Undefined key 'install:#{environment.to_s}:#{k.to_s}'"
|
89
|
+
exit!(1)
|
90
|
+
end
|
91
|
+
install[k]=Settings[environment][k]
|
92
|
+
end
|
93
|
+
case type.to_sym
|
94
|
+
when :deb
|
95
|
+
system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}/#{install[:folder]}")
|
96
|
+
system("#{sudo} #{build![:user]}@#{build[:host]} \"dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}")
|
97
|
+
else
|
98
|
+
puts "unknown package type '#{type.to_s}'"
|
99
|
+
exit!(1)
|
92
100
|
end
|
93
|
-
install[k]=Settings[environment][k]
|
94
|
-
end
|
95
|
-
case type.to_sym
|
96
|
-
when :deb
|
97
|
-
system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}/#{install[:folder]}")
|
98
|
-
system("#{sudo} #{build![:user]}@#{build[:host]} \"dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}")
|
99
|
-
else
|
100
|
-
puts "unknown package type '#{type.to_s}'"
|
101
|
-
exit!(1)
|
102
101
|
end
|
103
102
|
end
|
104
103
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devinstall
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Dragos Boca
|
@@ -14,49 +13,43 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: getopt
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
description: remote builder and installer
|
@@ -93,27 +86,26 @@ files:
|
|
93
86
|
homepage: http://github.com/dboca/devinstall
|
94
87
|
licenses:
|
95
88
|
- MIT
|
89
|
+
metadata: {}
|
96
90
|
post_install_message:
|
97
91
|
rdoc_options: []
|
98
92
|
require_paths:
|
99
93
|
- lib
|
100
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
95
|
requirements:
|
103
|
-
- -
|
96
|
+
- - '>='
|
104
97
|
- !ruby/object:Gem::Version
|
105
98
|
version: '0'
|
106
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
100
|
requirements:
|
109
|
-
- -
|
101
|
+
- - '>='
|
110
102
|
- !ruby/object:Gem::Version
|
111
103
|
version: '0'
|
112
104
|
requirements: []
|
113
105
|
rubyforge_project:
|
114
|
-
rubygems_version:
|
106
|
+
rubygems_version: 2.0.3
|
115
107
|
signing_key:
|
116
|
-
specification_version:
|
108
|
+
specification_version: 4
|
117
109
|
summary: Copy the source files to a build host, build the packages and install builded
|
118
110
|
packages
|
119
111
|
test_files: []
|