machinery-tool 1.14.0 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.git_revision +1 -1
  3. data/NEWS +10 -0
  4. data/html/assets/compare/machinery.js +1 -0
  5. data/html/assets/jquery.searcher.min.js +5 -0
  6. data/html/assets/machinery.css +3 -0
  7. data/html/assets/show/machinery.js +10 -4
  8. data/html/comparison.html.haml +18 -652
  9. data/html/index.html.haml +93 -431
  10. data/html/partials/changed_managed_files.html.haml +41 -0
  11. data/html/partials/compare/alert.html.haml +22 -0
  12. data/html/partials/compare/changed_managed_file_list.html.haml +26 -0
  13. data/html/partials/compare/changed_managed_files.html.haml +57 -0
  14. data/html/partials/compare/config_file_list.html.haml +26 -0
  15. data/html/partials/compare/config_files.html.haml +54 -0
  16. data/html/partials/compare/group_list.html.haml +14 -0
  17. data/html/partials/compare/groups.html.haml +52 -0
  18. data/html/partials/compare/os.html.haml +32 -0
  19. data/html/partials/compare/os_table.html.haml +10 -0
  20. data/html/partials/compare/package_list.html.haml +23 -0
  21. data/html/partials/compare/packages.html.haml +66 -0
  22. data/html/partials/compare/pattern_list.html.haml +12 -0
  23. data/html/partials/compare/patterns.html.haml +53 -0
  24. data/html/partials/compare/repositories.html.haml +51 -0
  25. data/html/partials/compare/repository_list.html.haml +28 -0
  26. data/html/partials/compare/service_list.html.haml +11 -0
  27. data/html/partials/compare/services.html.haml +56 -0
  28. data/html/partials/compare/unmanaged_file_list.html.haml +13 -0
  29. data/html/partials/compare/unmanaged_files.html.haml +59 -0
  30. data/html/partials/compare/user_list.html.haml +18 -0
  31. data/html/partials/compare/users.html.haml +52 -0
  32. data/html/partials/config_files.html.haml +57 -0
  33. data/html/partials/groups.html.haml +25 -0
  34. data/html/partials/os.html.haml +26 -0
  35. data/html/partials/packages.html.haml +30 -0
  36. data/html/partials/patterns.html.haml +23 -0
  37. data/html/partials/repositories.html.haml +35 -0
  38. data/html/partials/scope_header.html.haml +17 -0
  39. data/html/partials/services.html.haml +23 -0
  40. data/html/partials/unmanaged_files.html.haml +28 -0
  41. data/html/partials/users.html.haml +29 -0
  42. data/lib/cli.rb +48 -40
  43. data/lib/exceptions.rb +7 -0
  44. data/lib/helper.rb +21 -0
  45. data/lib/hint.rb +1 -1
  46. data/lib/html.rb +9 -1
  47. data/lib/scope_file_access_archive.rb +1 -2
  48. data/lib/scope_file_access_flat.rb +1 -2
  49. data/lib/server.rb +104 -50
  50. data/lib/version.rb +1 -1
  51. data/machinery-helper/version.go +1 -1
  52. data/man/generated/machinery.1.gz +0 -0
  53. data/man/generated/machinery.1.html +106 -16
  54. metadata +47 -18
  55. data/html/assets/angular-sanitize.min.js +0 -16
  56. data/html/assets/angular.min.js +0 -251
  57. data/html/assets/compare/machinery-compare.js +0 -100
  58. data/html/assets/show/machinery-show.js +0 -72
@@ -74,7 +74,6 @@ module ScopeFileAccessArchive
74
74
  content = file_content(system_file)
75
75
  return false if content.empty?
76
76
 
77
- output = Cheetah.run("file", "-", stdin: content, stdout: :capture)
78
- !output.include?("ASCII")
77
+ Machinery.content_is_binary?(content.slice(0, 1024))
79
78
  end
80
79
  end
@@ -30,8 +30,7 @@ module ScopeFileAccessFlat
30
30
  path = system_file.scope.file_path(system_file)
31
31
  return false if File.zero?(path)
32
32
 
33
- output = Cheetah.run("file", path, stdout: :capture)
34
- !output.include?("ASCII")
33
+ Machinery.content_is_binary?(File.read(path))
35
34
  end
36
35
 
37
36
  def has_file?(name)
@@ -17,11 +17,88 @@
17
17
 
18
18
  class Server < Sinatra::Base
19
19
  module Helpers
20
+ def render_partial(partial, locals = {})
21
+ source = File.read(File.join(Machinery::ROOT, "html/partials/#{partial}.html.haml"))
22
+ haml source, locals: locals
23
+ end
24
+
25
+ def render_scope(scope)
26
+ render_partial scope, scope => @description[scope]
27
+ end
28
+
29
+ def scope_meta_info(scope)
30
+ return "" if !@description[scope]
31
+
32
+ " (" \
33
+ "inspected host: '#{@description[scope].meta.hostname}', " \
34
+ "at: #{DateTime.parse(@description[scope].meta.modified).strftime("%F %T")})"
35
+ end
36
+
20
37
  def scope_help(scope)
21
38
  text = File.read(File.join(Machinery::ROOT, "plugins", "#{scope}/#{scope}.md"))
22
39
  Kramdown::Document.new(text).to_html
23
40
  end
24
41
 
42
+ def safe_length(object, attribute)
43
+ if object && collection = object.send(attribute)
44
+ collection.length
45
+ else
46
+ 0
47
+ end
48
+ end
49
+
50
+ def only_in_a
51
+ "<h3>Only in '#{@description_a.name}':</h3>"
52
+ end
53
+
54
+ def only_in_b
55
+ "<h3>Only in '#{@description_b.name}':</h3>"
56
+ end
57
+
58
+ def in_both
59
+ "<h3>In both descriptions:</h3>"
60
+ end
61
+
62
+ def changed
63
+ "<h3>In both with different attributes:</h3>"
64
+ end
65
+
66
+ def changed_packages
67
+ changed = []
68
+ @diff["packages"].changed.each do |change|
69
+ changes = []
70
+ relevant_attributes = ["version", "vendor", "arch"]
71
+
72
+ if change[0].version == change[1].version
73
+ relevant_attributes.push("release")
74
+ if change[0].release == change[1].release
75
+ relevant_attributes.push("checksum")
76
+ end
77
+ end
78
+
79
+ relevant_attributes.each do |attribute|
80
+ if change[0][attribute] != change[1][attribute]
81
+ changes.push(attribute + ": " + change[0][attribute] + " ↔ " + change[1][attribute])
82
+ end
83
+ end
84
+
85
+ changed.push(change[0].name + " (" + changes.join(", ") + ")")
86
+ end
87
+ changed
88
+ end
89
+
90
+ def diffable_unmanaged_files
91
+ return @diffable_unmanaged_files if @diffable_unmanaged_files
92
+
93
+ return [] if !@diff["unmanaged_files"] || !@diff["unmanaged_files"].only_in1 ||
94
+ !@diff["unmanaged_files"].only_in2
95
+
96
+ files_in_1 = @diff["unmanaged_files"].only_in1.files.select(&:file?).map(&:name)
97
+ files_in_2 = @diff["unmanaged_files"].only_in2.files.select(&:file?).map(&:name)
98
+
99
+ @diffable_unmanaged_files = files_in_1 & files_in_2
100
+ end
101
+
25
102
  def diff_to_object(diff)
26
103
  diff = Machinery.scrub(diff)
27
104
  lines = diff.lines[2..-1]
@@ -79,29 +156,6 @@ class Server < Sinatra::Base
79
156
 
80
157
  helpers Helpers
81
158
 
82
- get "/descriptions/:id.js" do
83
- description = SystemDescription.load(params[:id], settings.system_description_store)
84
- diffs_dir = description.scope_file_store("analyze/config_file_diffs").path
85
- if description.config_files && diffs_dir
86
- # Enrich description with the config file diffs
87
- description.config_files.files.each do |file|
88
- path = File.join(diffs_dir, file.name + ".diff")
89
- file.diff = diff_to_object(File.read(path)) if File.exists?(path)
90
- end
91
- end
92
-
93
- # Enrich file information with downloadable flag
94
- ["config_files", "changed_managed_files", "unmanaged_files"].each do |scope|
95
- next if !description[scope]
96
-
97
- description[scope].files.each do |file|
98
- file.downloadable = file.on_disk?
99
- end
100
- end
101
-
102
- description.to_hash.to_json
103
- end
104
-
105
159
  get "/descriptions/:id/files/:scope/*" do
106
160
  description = SystemDescription.load(params[:id], settings.system_description_store)
107
161
  filename = File.join("/", params["splat"].first)
@@ -122,41 +176,31 @@ class Server < Sinatra::Base
122
176
  content
123
177
  end
124
178
 
125
- get "/compare/:a/:b.json" do
126
- description_a = SystemDescription.load(params[:a], settings.system_description_store)
127
- description_b = SystemDescription.load(params[:b], settings.system_description_store)
179
+ get "/compare/:a/:b" do
180
+ @description_a = SystemDescription.load(params[:a], settings.system_description_store)
181
+ @description_b = SystemDescription.load(params[:b], settings.system_description_store)
128
182
 
129
- diff = {
130
- meta: {
131
- description_a: description_a.name,
132
- description_b: description_b.name,
133
- }
134
- }
183
+ @meta = {}
184
+ @diff = {}
135
185
 
136
186
  Inspector.all_scopes.each do |scope|
137
- if description_a[scope] && description_b[scope]
138
- comparison = Comparison.compare_scope(description_a, description_b, scope)
139
- diff[scope] = comparison.as_json
187
+ if @description_a[scope] && @description_b[scope]
188
+ @diff[scope] = Comparison.compare_scope(@description_a, @description_b, scope)
140
189
  else
141
- diff[:meta][:uninspected] ||= Hash.new
190
+ @meta[:uninspected] ||= Hash.new
142
191
 
143
- if !description_a[scope] && description_b[scope]
144
- diff[:meta][:uninspected][description_a.name] ||= Array.new
145
- diff[:meta][:uninspected][description_a.name] << scope
192
+ if !@description_a[scope] && @description_b[scope]
193
+ @meta[:uninspected][@description_a.name] ||= Array.new
194
+ @meta[:uninspected][@description_a.name] << scope
146
195
  end
147
- if !description_b[scope] && description_a[scope]
148
- diff[:meta][:uninspected][description_b.name] ||= Array.new
149
- diff[:meta][:uninspected][description_b.name] << scope
196
+ if !@description_b[scope] && @description_a[scope]
197
+ @meta[:uninspected][@description_b.name] ||= Array.new
198
+ @meta[:uninspected][@description_b.name] << scope
150
199
  end
151
200
  end
152
201
  end
153
202
 
154
- diff.to_json
155
- end
156
-
157
- get "/compare/:a/:b" do
158
- haml File.read(File.join(Machinery::ROOT, "html/comparison.html.haml")),
159
- locals: { description_a: params[:a], description_b: params[:b] }
203
+ haml File.read(File.join(Machinery::ROOT, "html/comparison.html.haml"))
160
204
  end
161
205
 
162
206
  get "/compare/:a/:b/files/:scope/*" do
@@ -175,7 +219,17 @@ class Server < Sinatra::Base
175
219
  end
176
220
 
177
221
  get "/:id" do
178
- haml File.read(File.join(Machinery::ROOT, "html/index.html.haml")),
179
- locals: { description_name: params[:id] }
222
+ @description = SystemDescription.load(params[:id], settings.system_description_store)
223
+
224
+ diffs_dir = @description.scope_file_store("analyze/config_file_diffs").path
225
+ if @description.config_files && diffs_dir
226
+ # Enrich description with the config file diffs
227
+ @description.config_files.files.each do |file|
228
+ path = File.join(diffs_dir, file.name + ".diff")
229
+ file.diff = diff_to_object(File.read(path)) if File.exists?(path)
230
+ end
231
+ end
232
+
233
+ haml File.read(File.join(Machinery::ROOT, "html/index.html.haml"))
180
234
  end
181
235
  end
@@ -17,6 +17,6 @@
17
17
 
18
18
  module Machinery
19
19
 
20
- VERSION = "1.14.0"
20
+ VERSION = "1.14.1"
21
21
 
22
22
  end
@@ -2,4 +2,4 @@
2
2
 
3
3
  package main
4
4
 
5
- const VERSION = "9787fc1eff835522740423ff35c98b78205b31cb"
5
+ const VERSION = "a879bc791c625025e2861c0bc37a2d2207da250a"
Binary file
@@ -67,6 +67,7 @@
67
67
  <a href="#export-autoyast-Export-System-Description-as-AutoYasST-profile">export-autoyast — Export System Description as AutoYasST profile</a>
68
68
  <a href="#export-kiwi-Export-System-Description-as-KIWI-Image-Description">export-kiwi — Export System Description as KIWI Image Description</a>
69
69
  <a href="#inspect-Inspect-Running-System">inspect — Inspect Running System</a>
70
+ <a href="#inspect-container-Inspect-Container">inspect-container — Inspect Container</a>
70
71
  <a href="#list-List-System-Descriptions">list — List System Descriptions</a>
71
72
  <a href="#man-Shows-Man-Page">man — Shows Man Page</a>
72
73
  <a href="#move-Move-System-Description">move — Move System Description</a>
@@ -900,6 +901,105 @@ configuration files are saved:</p>
900
901
  </ul>
901
902
 
902
903
 
904
+ <h2 id="inspect-container-Inspect-Container">inspect-container — Inspect Container</h2>
905
+
906
+ <h3 id="SYNOPSIS">SYNOPSIS</h3>
907
+
908
+ <p><code>machinery inspect-container</code> <a href="#OPTIONS" title="OPTIONS" data-bare-link="true">OPTIONS</a> IMAGENAME</p>
909
+
910
+ <p><code>machinery inspect-container</code> <a href="#OPTIONS" title="OPTIONS" data-bare-link="true">OPTIONS</a> IMAGEID</p>
911
+
912
+ <p><code>machinery</code> help inspect-container</p>
913
+
914
+ <h3 id="DESCRIPTION">DESCRIPTION</h3>
915
+
916
+ <p>The <code>inspect-container</code> command inspects a container image. It creates and starts the container from the provided image before inspection
917
+ and generates a system description from the gathered data. After the inspection the container will be killed and removed again.
918
+ This approach ensures that no containers and images are affected by the inspection.</p>
919
+
920
+ <p>Right now we support only images from the type <code>docker</code>.</p>
921
+
922
+ <p>The system data is structured into scopes, controlled by the
923
+ <code>--scope</code> option.</p>
924
+
925
+ <p><strong>Note</strong>:
926
+ Machinery will always inspect all specified scopes, and skip scopes which
927
+ trigger errors.</p>
928
+
929
+ <h3 id="ARGUMENTS">ARGUMENTS</h3>
930
+
931
+ <dl>
932
+ <dt><code>IMAGENAME / IMAGEID</code> (required)</dt><dd>The name or id of the image to be inspected. The provided name or id will also be
933
+ used as the name of the stored system description unless another name is
934
+ provided with the <code>--name</code> option.</dd>
935
+ </dl>
936
+
937
+
938
+ <h3 id="OPTIONS">OPTIONS</h3>
939
+
940
+ <dl>
941
+ <dt><code>-n NAME</code>, <code>--name=NAME</code> (optional)</dt><dd><p>Store the system description under the specified name.</p></dd>
942
+ <dt><code>-s SCOPE</code>, <code>--scope=SCOPE</code> (optional)</dt><dd><p>Inspect image for specified scope.
943
+ See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more information.</p></dd>
944
+ <dt><code>-e SCOPE</code>, <code>--exclude-scope=EXCLUDE-SCOPE</code> (optional)</dt><dd><p>Inspect image for all scopes except the specified scope.
945
+ See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more information.</p></dd>
946
+ <dt><code>-x</code>, <code>--extract-files</code> (optional)</dt><dd><p>Extract changed configuration and unmanaged files from the inspected container.
947
+ Shortcut for the combination of <code>--extract-changed-config-files</code>,
948
+ <code>--extract-unmanaged-files</code>, and <code>--extract-changed-managed-files</code></p></dd>
949
+ <dt><code>--extract-changed-config-files</code> (optional)</dt><dd><p>Extract changed configuration files from the inspected image.</p></dd>
950
+ <dt><code>--extract-unmanaged-files</code> (optional)</dt><dd><p>Extract unmanaged files from the inspected image.</p></dd>
951
+ <dt><code>--extract-changed-managed-files</code> (optional)</dt><dd><p>Extract changed managed files from inspected image.</p></dd>
952
+ <dt><code>--skip-files</code> (optional)</dt><dd><p>Do not consider given files or directories during inspection. Either provide
953
+ one file or directory name or a list of names separated by commas. You can
954
+ also point to a file which contains a list of files to filter (one per line)
955
+ by adding an '@' before the path, e.g.</p>
956
+
957
+ <p> $ <code>machinery</code> inspect-container --skip-files=@/path/to/filter_file mycontainer</p>
958
+
959
+ <p>If a filename contains a comma it needs to be escaped, e.g.</p>
960
+
961
+ <p> $ <code>machinery</code> inspect-container --skip-files=/file\,with_comma mycontainer</p>
962
+
963
+ <p><strong>Note</strong>: File or directory names are not expanded, e.g. '../path' is taken
964
+ literally and not expanded.</p></dd>
965
+ <dt><code>--verbose</code> (optional)</dt><dd><p>Display the filters which are used during inspection.</p></dd>
966
+ </dl>
967
+
968
+
969
+ <h3 id="PREREQUISITES">PREREQUISITES</h3>
970
+
971
+ <ul>
972
+ <li><p>Inspecting a container requires an image specified by the name or id.</p></li>
973
+ <li><p>The image to be inspected needs to have the following commands:</p>
974
+
975
+ <ul>
976
+ <li><code>rpm</code></li>
977
+ <li><code>zypper</code> or <code>yum</code></li>
978
+ <li><code>rsync</code></li>
979
+ <li><code>chkconfig</code></li>
980
+ <li><code>cat</code></li>
981
+ <li><code>sed</code></li>
982
+ <li><code>find</code></li>
983
+ </ul>
984
+ </li>
985
+ </ul>
986
+
987
+
988
+ <h3 id="EXAMPLES">EXAMPLES</h3>
989
+
990
+ <dl>
991
+ <dt>Inspect docker-container <code>mycontainer</code> and save system description under name 'MyContainer':</dt><dd><p></p>
992
+
993
+ <p>$ <code>machinery</code> inspect-container --name=MyContainer mycontainer</p></dd>
994
+ <dt>Inspect docker-container <code>076f46c1bef1</code> and save system description under name 'MySecondContainer':</dt><dd><p></p>
995
+
996
+ <p>$ <code>machinery</code> inspect-container --name=MySecondContainer 076f46c1bef1</p></dd>
997
+ <dt>Extracts changed managed files and saves them:</dt><dd><p></p>
998
+
999
+ <p>$ <code>machinery</code> inspect-container --scope=changed-managed-files --extract-files mycontainer</p></dd>
1000
+ </dl>
1001
+
1002
+
903
1003
  <h2 id="list-List-System-Descriptions">list — List System Descriptions</h2>
904
1004
 
905
1005
  <h3 id="SYNOPSIS">SYNOPSIS</h3>
@@ -1030,7 +1130,7 @@ Currently displays [HOSTNAME] and (DATE).</dd>
1030
1130
 
1031
1131
  <h3 id="SYNOPSIS">SYNOPSIS</h3>
1032
1132
 
1033
- <p><code>machinery serve</code> [-p PORT | --port=PORT] [-i IP | --ip=IP] NAME</p>
1133
+ <p><code>machinery serve</code> [-p PORT | --port=PORT] [--public] NAME</p>
1034
1134
 
1035
1135
  <p><code>machinery</code> help serve</p>
1036
1136
 
@@ -1055,10 +1155,8 @@ IP address and the port can be configured using the according options.</p>
1055
1155
 
1056
1156
  <p>Ports can be selected in a range between 2-65535. Ports between 2 and 1023 can only be
1057
1157
  chosen when <code>machinery</code> will be executed as <code>root</code> user.</p></dd>
1058
- <dt><code>-i IP</code>, <code>--ip=IP</code> (optional)</dt><dd><p>Specify the IP address on which the web server will be made available. Default: 127.0.0.1</p>
1059
-
1060
- <p>It's only possible to use an IP address (or hostnames resolving to an IP address) which
1061
- is assigned to a network interface on the local machine.</p></dd>
1158
+ <dt><code>--public</code> (optional)</dt><dd><p>Specifying this option, lets the server listen on each configured IP address. By default
1159
+ the server will only listen on the localhost IP address 127.0.0.1</p></dd>
1062
1160
  </dl>
1063
1161
 
1064
1162
 
@@ -1068,9 +1166,9 @@ is assigned to a network interface on the local machine.</p></dd>
1068
1166
  <dt>Serve the system description taken from the last inspection, saved as <code>earth</code>:</dt><dd><p></p>
1069
1167
 
1070
1168
  <p>$ <code>machinery</code> serve earth</p></dd>
1071
- <dt>Make the system description available to other machines on the network:</dt><dd><p></p>
1169
+ <dt>Make the system description available to other machines on the network on port 3000:</dt><dd><p></p>
1072
1170
 
1073
- <p>$ <code>machinery</code> serve earth -i 10.10.100.123 -p 3000</p></dd>
1171
+ <p>$ <code>machinery</code> serve earth --public --port 3000</p></dd>
1074
1172
  </dl>
1075
1173
 
1076
1174
 
@@ -1078,7 +1176,7 @@ is assigned to a network interface on the local machine.</p></dd>
1078
1176
 
1079
1177
  <h3 id="SYNOPSIS">SYNOPSIS</h3>
1080
1178
 
1081
- <p><code>machinery show</code> [-s SCOPE | --scope=SCOPE] [-e EXCLUDE-SCOPE | --exclude-scope=EXCLUDE-SCOPE] [--no-pager] [--show-diffs] [--html] [-p PORT | --port=PORT] [-i IP | --ip=IP] NAME</p>
1179
+ <p><code>machinery show</code> [-s SCOPE | --scope=SCOPE] [-e EXCLUDE-SCOPE | --exclude-scope=EXCLUDE-SCOPE] [--no-pager] [--show-diffs] [--html] NAME</p>
1082
1180
 
1083
1181
  <p><code>machinery</code> help show</p>
1084
1182
 
@@ -1110,14 +1208,6 @@ See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more infor
1110
1208
  for more information).</p></dd>
1111
1209
  <dt><code>--html</code> (optional)</dt><dd><p>Run a web server and open the system description in HTML format in your web browser using the
1112
1210
  <code>xdg-open</code> command.</p></dd>
1113
- <dt><code>-p PORT</code>, <code>--port=PORT</code> (optional)</dt><dd><p>Specify the port on which the web server will serve the system description: Default: 7585</p>
1114
-
1115
- <p>Ports can be selected in a range between 2-65535. Ports between 2 and 1023 can only be
1116
- chosen when <code>machinery</code> will be executed as <code>root</code> user.</p></dd>
1117
- <dt><code>-i IP</code>, <code>--ip=IP</code> (optional)</dt><dd><p>Specify the IP address on which the web server will be made available. Default: 127.0.0.1</p>
1118
-
1119
- <p>It's only possible to use an IP address (or hostnames resolving to an IP address) which
1120
- is assigned to a network interface on the local machine.</p></dd>
1121
1211
  <dt><code>--verbose</code> (optional)</dt><dd><p>Display the filters which were applied before showing the system description.</p></dd>
1122
1212
  </dl>
1123
1213
 
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machinery-tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 1.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SUSE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-06 00:00:00.000000000 Z
11
+ date: 2015-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cheetah
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.8.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.8.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: abstract_method
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.2.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.2.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.6.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.6.0
69
69
  - !ruby/object:Gem::Dependency
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.11.0
75
+ version: '2.11'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 2.11.0
82
+ version: '2.11'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: json-schema
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -126,14 +126,14 @@ dependencies:
126
126
  name: tilt
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: '2.0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '2.0'
139
139
  - !ruby/object:Gem::Dependency
@@ -243,18 +243,16 @@ files:
243
243
  - export_helpers/unmanaged_files_kiwi_excludes
244
244
  - filters/default_filters.json
245
245
  - filters/filter-packages-for-build.yaml
246
- - html/assets/angular-sanitize.min.js
247
- - html/assets/angular.min.js
248
246
  - html/assets/arrow_down.png
249
247
  - html/assets/arrow_up.png
250
248
  - html/assets/bootstrap-popover.js
251
249
  - html/assets/bootstrap-tooltip.js
252
250
  - html/assets/bootstrap.min.css
253
251
  - html/assets/collapse.js
254
- - html/assets/compare/machinery-compare.js
255
252
  - html/assets/compare/machinery.js
256
253
  - html/assets/cross.png
257
254
  - html/assets/jquery-2.1.1.min.js
255
+ - html/assets/jquery.searcher.min.js
258
256
  - html/assets/logo-changed-managed-files-small.png
259
257
  - html/assets/logo-changed-managed-files.png
260
258
  - html/assets/logo-config-files-small.png
@@ -279,12 +277,43 @@ files:
279
277
  - html/assets/machinery.css
280
278
  - html/assets/modal.js
281
279
  - html/assets/reset.png
282
- - html/assets/show/machinery-show.js
283
280
  - html/assets/show/machinery.js
284
281
  - html/assets/transition.js
285
282
  - html/assets/wheels_horizontal.png
286
283
  - html/comparison.html.haml
287
284
  - html/index.html.haml
285
+ - html/partials/changed_managed_files.html.haml
286
+ - html/partials/compare/alert.html.haml
287
+ - html/partials/compare/changed_managed_file_list.html.haml
288
+ - html/partials/compare/changed_managed_files.html.haml
289
+ - html/partials/compare/config_file_list.html.haml
290
+ - html/partials/compare/config_files.html.haml
291
+ - html/partials/compare/group_list.html.haml
292
+ - html/partials/compare/groups.html.haml
293
+ - html/partials/compare/os.html.haml
294
+ - html/partials/compare/os_table.html.haml
295
+ - html/partials/compare/package_list.html.haml
296
+ - html/partials/compare/packages.html.haml
297
+ - html/partials/compare/pattern_list.html.haml
298
+ - html/partials/compare/patterns.html.haml
299
+ - html/partials/compare/repositories.html.haml
300
+ - html/partials/compare/repository_list.html.haml
301
+ - html/partials/compare/service_list.html.haml
302
+ - html/partials/compare/services.html.haml
303
+ - html/partials/compare/unmanaged_file_list.html.haml
304
+ - html/partials/compare/unmanaged_files.html.haml
305
+ - html/partials/compare/user_list.html.haml
306
+ - html/partials/compare/users.html.haml
307
+ - html/partials/config_files.html.haml
308
+ - html/partials/groups.html.haml
309
+ - html/partials/os.html.haml
310
+ - html/partials/packages.html.haml
311
+ - html/partials/patterns.html.haml
312
+ - html/partials/repositories.html.haml
313
+ - html/partials/scope_header.html.haml
314
+ - html/partials/services.html.haml
315
+ - html/partials/unmanaged_files.html.haml
316
+ - html/partials/users.html.haml
288
317
  - inspect_helpers/changed_files.sh
289
318
  - inspect_helpers/yum_repositories.py
290
319
  - lib/analyze_config_file_diffs_task.rb