machinery-tool 1.14.0 → 1.14.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.
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