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
@@ -0,0 +1,53 @@
1
+ - if @diff["patterns"]
2
+ %a.scope_anchor{ id: "patterns" }
3
+ .scope#patterns_container
4
+ .row
5
+ .col-xs-1
6
+ %a{ href: "#patterns" }
7
+ %img.over.scope_logo_big{ :src => "/assets/logo-patterns.png",
8
+ "data-toggle" => "popover",
9
+ :title => "Patterns",
10
+ "data-content" => "#{scope_help("patterns")}" }
11
+ %span.toggle{ title: "Collapse/Expand" }
12
+ .col-xs-11
13
+ %h2
14
+ Patterns
15
+ .scope-summary
16
+ - if @diff["patterns"].only_in1
17
+ %span.summary-part
18
+ #{@description_a.name}: #{@diff["patterns"].only_in1.length} patterns
19
+ - if @diff["patterns"].only_in2
20
+ %span.summary-part
21
+ #{@description_b.name}: #{@diff["patterns"].only_in2.length} patterns
22
+ - if @diff["patterns"].common
23
+ %span.summary-part
24
+ %a.show-common-elements{ href: "#patterns_both" }<
25
+ both
26
+ = ": #{@diff["patterns"].common.length} patterns"
27
+ .row.scope_content.collapse.in
28
+ .row
29
+ .col-xs-1
30
+ .col-xs-5.table_container
31
+ - if @diff["patterns"].only_in1
32
+ = only_in_a
33
+ = render_partial "compare/pattern_list", list: @diff["patterns"].only_in1
34
+ .col-xs-1
35
+ .col-xs-5.table_container
36
+ - if @diff["patterns"].only_in2
37
+ = only_in_b
38
+ = render_partial "compare/pattern_list", list: @diff["patterns"].only_in2
39
+ - if @diff["patterns"].common
40
+ %a.both_anchor{ id: "patterns_both" }
41
+ .row
42
+ .col-xs-1
43
+ .col-xs-2
44
+ %a.show-common-elements{ href: "#patterns_both" }
45
+ Show common elements in patterns
46
+ %a.hide-common-elements{ href: "#", style: "display: none" }
47
+ Hide common elements in patterns
48
+ .row.scope_common_content.collapse
49
+ .col-xs-1
50
+ .col-xs-10.table_container
51
+ = in_both
52
+ = render_partial "compare/pattern_list", list: @diff["patterns"].common
53
+
@@ -0,0 +1,51 @@
1
+ - if @diff["repositories"]
2
+ %a.scope_anchor{ id: "repositories" }
3
+ .scope#repositories_container
4
+ .row
5
+ .col-xs-1
6
+ %img.over.scope_logo_big{ :src => "/assets/logo-repositories.png",
7
+ "data-toggle" => "popover",
8
+ :title => "Repositories",
9
+ "data-content" => "#{scope_help("repositories")}" }
10
+ %span.toggle{ title: "Collapse/Expand" }
11
+ .col-xs-11
12
+ %h2
13
+ Repositories
14
+ .scope-summary
15
+ - if @diff["repositories"].only_in1
16
+ %span.summary-part
17
+ #{@description_a.name}: #{@diff["repositories"].only_in1.length} repositories
18
+ - if @diff["repositories"].only_in2
19
+ %span.summary-part
20
+ #{@description_b.name}: #{@diff["repositories"].only_in2.length} repositories
21
+ - if @diff["repositories"].common
22
+ %span.summary-part
23
+ %a.show-common-elements{ href: "#repositories_both" }<
24
+ both
25
+ = ": #{@diff["repositories"].common.length} repositories"
26
+ .row.scope_content.collapse.in
27
+ .row
28
+ .col-xs-1
29
+ .col-xs-5.table_container
30
+ - if @diff["repositories"].only_in1
31
+ = only_in_a
32
+ = render_partial "compare/repository_list", list: @diff["repositories"].only_in1
33
+ .col-xs-1
34
+ .col-xs-5.table_container
35
+ - if @diff["repositories"].only_in2
36
+ = only_in_b
37
+ = render_partial "compare/repository_list", list: @diff["repositories"].only_in2
38
+ - if @diff["repositories"].common
39
+ %a.both_anchor{ id: "repositories_both" }
40
+ .row
41
+ .col-xs-1
42
+ .col-xs-2
43
+ %a.show-common-elements{ href: "#repositories_both" }
44
+ Show common elements in repositories
45
+ %a.hide-common-elements{ href: "#", style: "display: none" }
46
+ Hide common elements in repositories
47
+ .row.scope_common_content.collapse
48
+ .col-xs-1
49
+ .col-xs-10.table_container
50
+ = in_both
51
+ = render_partial "compare/repository_list", list: @diff["repositories"].common
@@ -0,0 +1,28 @@
1
+ %table.table.table-striped.table-hover.table-condensed
2
+ %thead
3
+ %tr
4
+ %th Name
5
+ %th Alias
6
+ %th URL
7
+ %th.small Type
8
+ %th.small Enabled
9
+ %th.small.visible-lg Autorefresh
10
+ %th.small.visible-lg GPG Check
11
+ %th.small.visible-lg Priority
12
+ %th.tiny.hidden-lg
13
+ %tbody
14
+ - list.each do |repo|
15
+ %tr
16
+ %td= repo.name
17
+ %td= repo.alias
18
+ %td
19
+ %a{ href: repo.url }= repo.url
20
+ %td= repo.type
21
+ %td= repo.enabled
22
+ %td.visible-lg= repo.autorefresh
23
+ %td.visible-lg= repo.gpgcheck
24
+ %td.visible-lg= repo.priority
25
+ %td.hidden-lg{ title: "Name: #{repo.name}\nAlias: #{repo.alias}\nUrl: #{repo.url}\n" |
26
+ "Type: #{repo.type}\nEnabled: #{repo.enabled}\nAutorefresh: " |
27
+ "#{repo.autorefresh}\nGPG Check: #{repo.gpgcheck}\nPriority: #{repo.priority}" } |
28
+ | ...
@@ -0,0 +1,11 @@
1
+ %table.table.table-striped.table-hover.table-condensed
2
+ %thead
3
+ %tr
4
+ %th Name
5
+ %th State
6
+ %tbody
7
+ - list.services.each do |service|
8
+ %tr
9
+ %td= service.name
10
+ %td{ class: "#{list.init_system}_#{service.state}" }
11
+ = service.state
@@ -0,0 +1,56 @@
1
+ - if @diff["services"]
2
+ %a.scope_anchor{ id: "services" }
3
+ .scope#services_container
4
+ .row
5
+ .col-xs-1
6
+ %a{ href: "#services" }
7
+ %img.over.scope_logo_big{ :src => "/assets/logo-services.png",
8
+ "data-toggle" => "popover",
9
+ :title => "Services",
10
+ "data-content" => "#{scope_help("services")}" }
11
+ %span.toggle{ title: "Collapse/Expand" }
12
+ .col-xs-11
13
+ %h2
14
+ Services
15
+ .scope-summary
16
+ - if @diff["services"].only_in1
17
+ %span.summary-part
18
+ #{@description_a.name}:
19
+ #{safe_length(@diff["services"].only_in1, :services)} services
20
+ (#{@diff["services"].only_in1.init_system})
21
+ - if @diff["services"].only_in2
22
+ %span.summary-part
23
+ #{@description_b.name}:
24
+ #{safe_length(@diff["services"].only_in2, :services)} services
25
+ (#{@diff["services"].only_in2.init_system})
26
+ - if @diff["services"].common
27
+ %span.summary-part
28
+ %a.show-common-elements{ href: "#services_both" }<
29
+ both
30
+ = ": #{safe_length(@diff["services"].common, :services)} services"
31
+ .row.scope_content.collapse.in
32
+ .row
33
+ .col-xs-1
34
+ .col-xs-5.table_container
35
+ - if safe_length(@diff["services"].only_in1, :services) > 0
36
+ = only_in_a
37
+ = render_partial "compare/service_list", list: @diff["services"].only_in1
38
+ .col-xs-1
39
+ .col-xs-5.table_container
40
+ - if safe_length(@diff["services"].only_in2, :services) > 0
41
+ = only_in_b
42
+ = render_partial "compare/service_list", list: @diff["services"].only_in2
43
+ - if safe_length(@diff["services"].common, :services) > 0
44
+ %a.both_anchor{ id: "services_both" }
45
+ .row
46
+ .col-xs-1
47
+ .col-xs-11
48
+ %a.show-common-elements{ href: "#services_both" }
49
+ Show common elements in services
50
+ %a.hide-common-elements{ href: "#", style: "display: none" }
51
+ Hide common elements in services
52
+ .row.scope_common_content.collapse
53
+ .col-xs-1
54
+ .col-xs-10.table_container
55
+ = in_both
56
+ = render_partial "compare/service_list", list: @diff["services"].common
@@ -0,0 +1,13 @@
1
+ %p
2
+ <strong>Files extracted:</strong> #{list.extracted ? "yes" : "no"}
3
+ - if list.files
4
+ %table.table.table-striped.table-hover.table-condensed.files-table
5
+ %thead
6
+ %tr
7
+ %th Name
8
+ %th Type
9
+ %tbody
10
+ - list.files.each do |file|
11
+ %tr
12
+ %td= file.name
13
+ %td= file.type
@@ -0,0 +1,59 @@
1
+ - if @diff["unmanaged_files"]
2
+ %a.scope_anchor{ id: "unmanaged_files" }
3
+ .scope#unmanaged_files_container
4
+ .row
5
+ .col-xs-1
6
+ %a{ href: "#unmanaged_files" }
7
+ %img.over.scope_logo_big{ :src => "/assets/logo-unmanaged-files.png",
8
+ "data-toggle" => "popover",
9
+ :title => "Unmanaged Files",
10
+ "data-content" => "#{scope_help("unmanaged_files")}" }
11
+ %span.toggle{ title: "Collapse/Expand" }
12
+ .col-xs-11
13
+ %h2
14
+ Unmanaged Files
15
+ .scope-summary
16
+ - if @diff["unmanaged_files"].only_in1
17
+ %span.summary-part
18
+ #{@description_a.name}:
19
+ #{safe_length(@diff["unmanaged_files"].only_in1, :files)} files
20
+ - if @diff["unmanaged_files"].only_in2
21
+ %span.summary-part
22
+ #{@description_b.name}:
23
+ #{safe_length(@diff["unmanaged_files"].only_in2, :files)} files
24
+ - if @diff["unmanaged_files"].common
25
+ %span.summary-part
26
+ %a.show-common-elements{ href: "#unmanaged_files_both" }<
27
+ both
28
+ = ": #{safe_length(@diff["unmanaged_files"].common, :files)} files"
29
+ - if diffable_unmanaged_files.length > 0
30
+ %span.summary-part
31
+ %a#diff-unmanaged-files{ "data-toggle" => "modal",
32
+ "data-target" => "#diff-unmanaged-files" }
33
+ Diff files
34
+ .row.scope_content.collapse.in
35
+ .row
36
+ .col-xs-1
37
+ .col-xs-5.table_container
38
+ - if safe_length(@diff["unmanaged_files"].only_in1, :files) > 0
39
+ = only_in_a
40
+ = render_partial "compare/unmanaged_file_list", list: @diff["unmanaged_files"].only_in1
41
+ .col-xs-1
42
+ .col-xs-5.table_container
43
+ - if safe_length(@diff["unmanaged_files"].only_in2, :files) > 0
44
+ = only_in_b
45
+ = render_partial "compare/unmanaged_file_list", list: @diff["unmanaged_files"].only_in2
46
+ - if safe_length(@diff["unmanaged_files"].common, :files) > 0
47
+ %a.both_anchor{ id: "unmanaged_files_both" }
48
+ .row
49
+ .col-xs-1
50
+ .col-xs-11
51
+ %a.show-common-elements{ href: "#unmanaged_files_both" }
52
+ Show common elements in unmanaged-files
53
+ %a.hide-common-elements{ href: "#", style: "display: none" }
54
+ Hide common elements in unmanaged-files
55
+ .row.scope_common_content.collapse
56
+ .col-xs-1
57
+ .col-xs-10.table_container
58
+ = in_both
59
+ = render_partial "compare/unmanaged_file_list", list: @diff["unmanaged_files"].common
@@ -0,0 +1,18 @@
1
+ %table.table.table-striped.table-hover.table-condensed
2
+ %thead
3
+ %tr
4
+ %th Name
5
+ %th.small UID
6
+ %th.small GID
7
+ %th Comment
8
+ %th Home
9
+ %th.small Shell
10
+ %tbody
11
+ - list.each do |user|
12
+ %tr
13
+ %td= user.name
14
+ %td= user.uid
15
+ %td= user.gid
16
+ %td= user.comment
17
+ %td= user.home
18
+ %td= user.shell
@@ -0,0 +1,52 @@
1
+ - if @diff["patterns"]
2
+ %a.scope_anchor{ id: "users" }
3
+ .scope#users_container
4
+ .row
5
+ .col-xs-1
6
+ %a{ href: "#users" }
7
+ %img.over.scope_logo_big{ :src => "/assets/logo-users.png",
8
+ "data-toggle" => "popover",
9
+ :title => "Users",
10
+ "data-content" => "#{scope_help("users")}" }
11
+ %span.toggle{ title: "Collapse/Expand" }
12
+ .col-xs-11
13
+ %h2
14
+ Users
15
+ .scope-summary
16
+ - if @diff["users"].only_in1
17
+ %span.summary-part
18
+ #{@description_a.name}: #{@diff["users"].only_in1.length} users
19
+ - if @diff["users"].only_in2
20
+ %span.summary-part
21
+ #{@description_b.name}: #{@diff["users"].only_in2.length} users
22
+ - if @diff["users"].common
23
+ %span.summary-part
24
+ %a.show-common-elements{ href: "#users_both" }<
25
+ both
26
+ = ": #{@diff["users"].common.length} users"
27
+ .row.scope_content.collapse.in
28
+ .row
29
+ .col-xs-1
30
+ .col-xs-5.table_container
31
+ - if @diff["users"].only_in1
32
+ = only_in_a
33
+ = render_partial "compare/user_list", list: @diff["users"].only_in1
34
+ .col-xs-1
35
+ .col-xs-5.table_container
36
+ - if @diff["users"].only_in2
37
+ = only_in_b
38
+ = render_partial "compare/user_list", list: @diff["users"].only_in2
39
+ - if @diff["users"].common
40
+ %a.both_anchor{ id: "users_both" }
41
+ .row
42
+ .col-xs-1
43
+ .col-xs-2
44
+ %a.show-common-elements{ href: "#users_both" }
45
+ Show common elements in users
46
+ %a.hide-common-elements{ href: "#", style: "display: none" }
47
+ Hide common elements in users
48
+ .row.scope_common_content.collapse
49
+ .col-xs-1
50
+ .col-xs-10.table_container
51
+ = in_both
52
+ = render_partial "compare/user_list", list: @diff["users"].common
@@ -0,0 +1,57 @@
1
+ - if config_files && config_files.files.length > 0
2
+ %div
3
+ %a.scope_anchor{ id: "config_files" }
4
+ .scope#config_files_container{ "data-scope" => "config_files" }
5
+ - count = config_files.files.length
6
+ = render_partial "scope_header",
7
+ :scope => "config_files",
8
+ :title => "Config Files",
9
+ :count => "#{count} #{Machinery.pluralize(count, "file")}"
10
+ .row.scope_content.collapse.in
11
+ - config_files.files.each do |file|
12
+ - if file.diff
13
+ .diff{ style: "display: none", "data-config-file-diff" => file.diff.file }
14
+ %span.diff-summary
15
+ #{file.diff.additions} additions & #{file.diff.deletions} deletions
16
+ %table.diff
17
+ - file.diff.lines.each do |line|
18
+ %tr{ class: line.type }
19
+ %td.active.linenumber= line.original_line_number
20
+ %td.linenumber= line.new_line_number
21
+ %td
22
+ = line.content
23
+ .col-xs-1
24
+ .col-xs-11
25
+ %table.table.table-striped.table-hover.table-condensed.files-table.filterable
26
+ %thead
27
+ %tr
28
+ %th Name
29
+ %th Package Name
30
+ %th Package Version
31
+ %th Changes
32
+ %th Mode
33
+ %th User
34
+ %th Group
35
+ %tbody
36
+ - config_files.files.each do |file|
37
+ %tr
38
+ %td
39
+ %span
40
+ - if file.on_disk?
41
+ %a.file-download{ href: "#" }
42
+ = file.name
43
+ - else
44
+ %span
45
+ = file.name
46
+ - if file.diff
47
+ %a.diff-toggle{ "data-config-file" => file.name, "data-toggle" => "popover" }
48
+ Show diff
49
+ %td= file.package_name
50
+ %td= file.package_version
51
+ %td
52
+ = file.changes.join(",")
53
+ - if file.error_message
54
+ %span{ title: file.error_message } (details)
55
+ %td= file.mode
56
+ %td= file.user
57
+ %td= file.group
@@ -0,0 +1,25 @@
1
+ - if groups
2
+ %div
3
+ %a.scope_anchor{ id: "groups" }
4
+ .scope#groups_container
5
+ = render_partial "scope_header",
6
+ :scope => "groups",
7
+ :title => "Groups",
8
+ :count => "#{groups.length} #{Machinery.pluralize(groups.length, "group")}"
9
+ .row.scope_content.collapse.in
10
+ .col-xs-1
11
+ .col-xs-11
12
+ %table.table.table-striped.table-hover.table-condensed.filterable
13
+ %thead
14
+ %tr
15
+ %th Name
16
+ %th GID
17
+ %th Password
18
+ %th Users
19
+ %tbody
20
+ - groups.each do |group|
21
+ %tr
22
+ %td= group.name
23
+ %td= group.gid
24
+ %td= group.password
25
+ %td= group.users.join(",")
@@ -0,0 +1,26 @@
1
+ - if os
2
+ %div
3
+ %a.scope_anchor{ :id => "os" }
4
+ .scope#os_container
5
+ .row
6
+ .col-xs-1
7
+ %img.scope_logo_big.over{ "src" => "assets/logo-os.png", "data-toggle" => "popover",
8
+ "title" => "Operating System", "data-content" => scope_help('os') }
9
+ %span.toggle{ title: "Collapse/Expand" }
10
+ .col-xs-11
11
+ %h2
12
+ Operating System
13
+ .scope-summary
14
+ = scope_meta_info("os")
15
+ .col-xs-1
16
+ .col-xs-3.scope_content.collapse.in
17
+ %table.table.table-striped.table-condensed
18
+ %tr
19
+ %th Name
20
+ %td= os.name
21
+ %tr
22
+ %th Version
23
+ %td= os.version
24
+ %tr
25
+ %th Architecture
26
+ %td= os.architecture