vagrant-confucius 0.1.1 → 0.1.2
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/lib/vagrant/confucius/version.rb +1 -1
- data/lib/vagrant/confucius.rb +8 -83
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d13f743a0214cb5ae6fd46c88a82c62253a17692
|
4
|
+
data.tar.gz: 9bf107d109c834b820545e63bea27ba7266115ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08d2ad2e8bf54e5a1e5f2bac40a86fb0f54b1cee84f8aea56d1f10a48076c6b70e99bef58a2d21a8c3831d3d8f0f46dc2310e98a6e3c40de8ddb297d854d0a82
|
7
|
+
data.tar.gz: 921e08dd7371940ab65456897e2df1c9a2a9fad9cf406aece938695f08a10b127b9f29f1ba4a1f35683c98e467d5a854c7de0e0c1ded0c92af54140bb8286475
|
data/lib/vagrant/confucius.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# vim: set ai ft=ruby ts=2 sw=2 et!:
|
2
2
|
require "vagrant/confucius/version"
|
3
|
-
|
3
|
+
#
|
4
4
|
class ::Hash
|
5
5
|
def deep_merge(second)
|
6
6
|
merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
@@ -18,52 +18,22 @@ class ::Hash
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# Supplement String type with sha sha256 checksum
|
22
|
-
class ::String
|
23
|
-
def sha256()
|
24
|
-
sha = Digest::SHA256.new
|
25
|
-
sha << self.to_s
|
26
|
-
return sha.hexdigest
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# options (with box defaults and default profiles)
|
31
|
-
# profiles
|
32
|
-
# profiles' defaults
|
33
|
-
# user overrides
|
34
|
-
#
|
35
|
-
|
36
21
|
module Confucius
|
37
22
|
|
38
23
|
def self.load!()
|
39
24
|
global_options_file = '.confucius.yaml'
|
40
25
|
global_boxes_folder = 'boxes'
|
41
26
|
user_overrides_file = 'overrides'
|
42
|
-
|
43
|
-
return
|
27
|
+
|
28
|
+
return Profile.new(global_options_file, global_boxes_folder, user_overrides_file).getOverridenProfiles()
|
44
29
|
end
|
45
30
|
|
46
31
|
class Profile
|
47
32
|
require 'yaml'
|
48
|
-
require 'digest'
|
49
|
-
require 'diskcached'
|
50
33
|
#require 'pp'
|
51
34
|
|
52
35
|
attr_reader :basedir, :config, :configFile, :overrideFile, :profiles, :boxes_folder
|
53
36
|
|
54
|
-
def checksum_dir(dir)
|
55
|
-
sha = Digest::SHA256.new
|
56
|
-
files = Dir["#{dir}/**/*"].select {|f| File.file? f }
|
57
|
-
for file in files
|
58
|
-
sha << File.mtime(file).to_s
|
59
|
-
end
|
60
|
-
return sha.hexdigest
|
61
|
-
end
|
62
|
-
|
63
|
-
def checksum_file(file)
|
64
|
-
return Digest::SHA256.file(file).hexdigest
|
65
|
-
end
|
66
|
-
|
67
37
|
def initialize(global_options_file, global_boxes_folder, user_overrides_file)
|
68
38
|
|
69
39
|
@basedir = Vagrant::Environment.new().root_path
|
@@ -71,56 +41,11 @@ module Confucius
|
|
71
41
|
@boxes_folder = File.join(@basedir, global_boxes_folder)
|
72
42
|
@overridesFile = File.join(@basedir, user_overrides_file)
|
73
43
|
|
74
|
-
@
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
#puts 'config was cached'
|
80
|
-
rescue Diskcached::NotFound
|
81
|
-
#puts 'config is rebuilt'
|
82
|
-
@config = self.load_file(@configFile)
|
83
|
-
invalidate_cache = @diskcache.set(config_checksum, @config)
|
84
|
-
end
|
85
|
-
|
86
|
-
begin
|
87
|
-
overrides_checksum = self.checksum_file(@overridesFile)
|
88
|
-
@override = @diskcache.get(overrides_checksum)
|
89
|
-
#puts 'overrides was cached'
|
90
|
-
rescue Diskcached::NotFound
|
91
|
-
#puts 'overrides is rebuilt'
|
92
|
-
@override = self.load_file(@overridesFile)
|
93
|
-
invalidate_cache = @diskcache.set(overrides_checksum, @override)
|
94
|
-
end
|
95
|
-
|
96
|
-
begin
|
97
|
-
globalOverriden_checksum = "#{config_checksum}#{overrides_checksum}".sha256()
|
98
|
-
@globalOverriden = @diskcache.get(globalOverriden_checksum)
|
99
|
-
#puts 'globalOverriden was cached'
|
100
|
-
rescue Diskcached::NotFound
|
101
|
-
#puts 'globalOverriden is rebuilt'
|
102
|
-
@globalOverriden = self.conf_override(@config, @override)
|
103
|
-
invalidate_cache = @diskcache.set(globalOverriden_checksum, @globalOverriden)
|
104
|
-
end
|
105
|
-
|
106
|
-
begin
|
107
|
-
boxes_folder_checksum = self.checksum_dir(@boxes_folder)
|
108
|
-
@profiles = @diskcache.get(boxes_folder_checksum)
|
109
|
-
#puts 'boxes_folder was cached'
|
110
|
-
rescue Diskcached::NotFound
|
111
|
-
#puts 'boxes_folder is rebuilt'
|
112
|
-
@profiles = self.loadProfiles()
|
113
|
-
invalidate_cache = @diskcache.set(boxes_folder_checksum, @profiles)
|
114
|
-
end
|
115
|
-
|
116
|
-
# Let's invalidate the whole thing if not ok
|
117
|
-
if invalidate_cache
|
118
|
-
#puts 'invalidate_cache'
|
119
|
-
@diskcache.delete('overriden')
|
120
|
-
end
|
121
|
-
@overriden = @diskcache.cache('overriden') do
|
122
|
-
conf_override(@globalOverriden, @profiles)
|
123
|
-
end
|
44
|
+
@config = self.load_file(@configFile)
|
45
|
+
@override = self.load_file(@overridesFile)
|
46
|
+
@globalOverriden = self.conf_override(@config, @override)
|
47
|
+
@profiles = self.loadProfiles()
|
48
|
+
@overriden = conf_override(@globalOverriden, @profiles)
|
124
49
|
end
|
125
50
|
|
126
51
|
def getOverridenProfiles()
|