uberinstaller 1.0.2 → 1.1.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 +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:
|