uberinstaller 1.0.2 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +15 -0
- data/lib/uberinstaller/cli.rb +6 -2
- data/lib/uberinstaller/config.rb +1 -1
- data/lib/uberinstaller/installer.rb +6 -1
- data/lib/uberinstaller/parser.rb +23 -0
- data/lib/uberinstaller/runner.rb +5 -0
- data/lib/uberinstaller/version.rb +1 -1
- metadata +30 -56
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4039f958c8165c82fb9cb472055666197d7383e0
|
4
|
+
data.tar.gz: c4fa343b75ab2c7323b5c8a9a0e327fccc5aee37
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 18461fdd0a53d1bba3046fc86de6e2d5edf66711110b47a4437310b79f35944542975c688910aac019aecb665e92d83ba4deaacd51a815460ce5b1fbce522f41
|
7
|
+
data.tar.gz: 320f944128a9f372dfb6634d47744d04fb2bd092d2aa8fa9001f3d74b119a5579537e218ad56c5613437307e735ec57cfadfa240fc4a0e9f2e38178a322bc987
|
data/README.md
CHANGED
@@ -49,6 +49,21 @@ after all => cmds/after/all.sh
|
|
49
49
|
|
50
50
|
Blocking package configuration as Debconf in Debian system must be properly avoided ( APT Package Manager use gnome DEBIAN_FRONTEND to avoid apt-get hangs)
|
51
51
|
|
52
|
+
## Folder structure
|
53
|
+
|
54
|
+
package
|
55
|
+
├── cmds
|
56
|
+
├── log
|
57
|
+
├── pkgs
|
58
|
+
└── package.json
|
59
|
+
|
60
|
+
## Variables substitution
|
61
|
+
|
62
|
+
You can use some variables in package.json:
|
63
|
+
- `:cmds`: path to package/cmds folder
|
64
|
+
- `:pgks`: path to package/pkgs folder
|
65
|
+
- `:json`: path to package/package.json file
|
66
|
+
|
52
67
|
## Docs
|
53
68
|
|
54
69
|
http://rubydoc.info/docs/yard/file/docs/GettingStarted.md
|
data/lib/uberinstaller/cli.rb
CHANGED
@@ -29,16 +29,20 @@ module Uberinstaller
|
|
29
29
|
:type => :boolean,
|
30
30
|
:default => false,
|
31
31
|
:desc => "Enable dry run, no modification to the system will be made during this execution"
|
32
|
+
method_option :no_log,
|
33
|
+
:type => :boolean,
|
34
|
+
:default => false,
|
35
|
+
:desc => "Disable log creation, output logger on STDOUT"
|
32
36
|
def install(file)
|
33
37
|
Uberinstaller::Loggable.level = Logger::WARN
|
34
38
|
Uberinstaller::Loggable.level = Logger::INFO if options[:verbose]
|
35
39
|
Uberinstaller::Loggable.level = Logger::DEBUG if options[:debug]
|
36
40
|
|
37
|
-
Uberinstaller::Loggable.log_path = File.join(File.dirname(file), 'log', "#{Time.now}.log") unless options[:
|
41
|
+
Uberinstaller::Loggable.log_path = File.join(File.dirname(file), 'log', "#{Time.now}.log") unless options[:no_log]
|
38
42
|
|
39
43
|
Uberinstaller::Config.uberdirectory = File.dirname file
|
40
44
|
Uberinstaller::Config.dry_run = options[:dry_run]
|
41
|
-
|
45
|
+
|
42
46
|
begin
|
43
47
|
runner = Uberinstaller.new file
|
44
48
|
runner.preprocess
|
data/lib/uberinstaller/config.rb
CHANGED
@@ -32,7 +32,7 @@ module Uberinstaller
|
|
32
32
|
@local_pkg_path = nil
|
33
33
|
# @!attribute [r] json_path
|
34
34
|
# absolute path in which locate json file to be imported in configuration
|
35
|
-
@
|
35
|
+
@json_path = nil
|
36
36
|
|
37
37
|
# @!attribute [rw] remote_package_manager
|
38
38
|
# the package manager used to install system type packages
|
@@ -236,7 +236,12 @@ module Uberinstaller
|
|
236
236
|
|
237
237
|
def preprocess_json
|
238
238
|
logger.debug 'JSON type validation'
|
239
|
-
|
239
|
+
begin
|
240
|
+
validate 'json'
|
241
|
+
rescue Exception => e
|
242
|
+
@body[:skip] = true
|
243
|
+
raise e
|
244
|
+
end
|
240
245
|
end
|
241
246
|
|
242
247
|
def validate_json
|
data/lib/uberinstaller/parser.rb
CHANGED
@@ -4,6 +4,7 @@ require 'uberinstaller/logger'
|
|
4
4
|
require 'uberinstaller/exception'
|
5
5
|
|
6
6
|
require 'json'
|
7
|
+
require 'shellwords'
|
7
8
|
|
8
9
|
module Uberinstaller
|
9
10
|
class Parser
|
@@ -38,6 +39,9 @@ module Uberinstaller
|
|
38
39
|
def run
|
39
40
|
begin
|
40
41
|
@json = IO.read(@file)
|
42
|
+
|
43
|
+
@json = _replace_tokens(@json)
|
44
|
+
|
41
45
|
# Comments are stripped out! FUCK YEAH!
|
42
46
|
@data = JSON.parse @json, :symbolize_names => true
|
43
47
|
rescue JSON::ParserError
|
@@ -47,5 +51,24 @@ module Uberinstaller
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
54
|
+
private
|
55
|
+
|
56
|
+
# Replace specific tokens with path
|
57
|
+
#
|
58
|
+
# @param file_content [String] the content of the json file in which the
|
59
|
+
# substitution should take place
|
60
|
+
def _replace_tokens(file_content)
|
61
|
+
logger.debug "Replacing :cmds with #{Config.command_path.shellescape}"
|
62
|
+
file_content.gsub!(':cmds', Config.command_path.shellescape)
|
63
|
+
|
64
|
+
logger.debug "Replacing :pkgs with #{Config.local_pkg_path.shellescape}"
|
65
|
+
file_content.gsub!(':pkgs', Config.local_pkg_path.shellescape)
|
66
|
+
|
67
|
+
logger.debug "Replacing :json with #{Config.json_path.shellescape}"
|
68
|
+
file_content.gsub!(':json', Config.json_path.shellescape)
|
69
|
+
|
70
|
+
file_content
|
71
|
+
end
|
72
|
+
|
50
73
|
end
|
51
74
|
end
|
data/lib/uberinstaller/runner.rb
CHANGED
@@ -20,6 +20,9 @@ module Uberinstaller
|
|
20
20
|
#
|
21
21
|
# @param file [String] the file name to be used for this execution
|
22
22
|
def initialize(file)
|
23
|
+
logger.debug Config.command_path
|
24
|
+
logger.debug Config.local_pkg_path
|
25
|
+
logger.debug Config.json_path
|
23
26
|
logger.info "Processing JSON file: #{file}"
|
24
27
|
|
25
28
|
# check if element has already been processed
|
@@ -202,6 +205,8 @@ module Uberinstaller
|
|
202
205
|
parser = Parser.new(file)
|
203
206
|
data = parser.data[:packages].each { |p| p[1][:type] = get_package_type p[1] }
|
204
207
|
nested_packages.merge! data
|
208
|
+
|
209
|
+
@packages.delete(pkg_name.to_sym)
|
205
210
|
end
|
206
211
|
end
|
207
212
|
end
|
metadata
CHANGED
@@ -1,165 +1,146 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uberinstaller
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Edoardo Tenani
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-07-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
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: rspec
|
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: pry
|
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
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: redcarpet
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: yard
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: colored
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: hash_keyword_args
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: octokit
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: thor
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
|
-
description:
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
139
|
+
description: |2
|
140
|
+
Uberinstaller is a ruby gem that make easy to install system packages from a JSON configuration file.
|
141
|
+
Thinked for Ubuntu, can handle pre and post installation commands, repositories and PPA, package installation from system repositories, git repositories or local files.
|
142
|
+
|
143
|
+
Supports different Package Managers as the defaults one can be modified, extended and changed as needed.
|
163
144
|
email:
|
164
145
|
- edoardo.tenani@gmail.com
|
165
146
|
executables:
|
@@ -212,33 +193,26 @@ files:
|
|
212
193
|
homepage: https://github.com/endorama/UberInstaller
|
213
194
|
licenses:
|
214
195
|
- MIT
|
196
|
+
metadata: {}
|
215
197
|
post_install_message:
|
216
198
|
rdoc_options: []
|
217
199
|
require_paths:
|
218
200
|
- lib
|
219
201
|
required_ruby_version: !ruby/object:Gem::Requirement
|
220
|
-
none: false
|
221
202
|
requirements:
|
222
|
-
- -
|
203
|
+
- - '>='
|
223
204
|
- !ruby/object:Gem::Version
|
224
205
|
version: '0'
|
225
|
-
segments:
|
226
|
-
- 0
|
227
|
-
hash: -4253208566518924367
|
228
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
|
-
none: false
|
230
207
|
requirements:
|
231
|
-
- -
|
208
|
+
- - '>='
|
232
209
|
- !ruby/object:Gem::Version
|
233
210
|
version: '0'
|
234
|
-
segments:
|
235
|
-
- 0
|
236
|
-
hash: -4253208566518924367
|
237
211
|
requirements: []
|
238
212
|
rubyforge_project:
|
239
|
-
rubygems_version: 1.
|
213
|
+
rubygems_version: 2.1.11
|
240
214
|
signing_key:
|
241
|
-
specification_version:
|
215
|
+
specification_version: 4
|
242
216
|
summary: Install lots of system packages from a single JSON configuration file
|
243
217
|
test_files: []
|
244
218
|
has_rdoc:
|