uberinstaller 1.0.2 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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[:debug]
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
@@ -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
- @local_pkg_path = nil
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
- validate 'json'
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Uberinstaller
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.1"
3
3
  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.0.2
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: 2013-12-16 00:00:00.000000000 Z
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: ! " Uberinstaller is a ruby gem that make easy to install system packages
159
- from a JSON configuration file.\n Thinked for Ubuntu, can handle pre and post installation
160
- commands, repositories and PPA, package installation from system repositories, git
161
- repositories or local files.\n\n Supports different Package Managers as the defaults
162
- one can be modified, extended and changed as needed.\n"
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.8.25
213
+ rubygems_version: 2.1.11
240
214
  signing_key:
241
- specification_version: 3
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: