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.
- checksums.yaml +4 -4
- data/.git_revision +1 -1
- data/NEWS +10 -0
- data/html/assets/compare/machinery.js +1 -0
- data/html/assets/jquery.searcher.min.js +5 -0
- data/html/assets/machinery.css +3 -0
- data/html/assets/show/machinery.js +10 -4
- data/html/comparison.html.haml +18 -652
- data/html/index.html.haml +93 -431
- data/html/partials/changed_managed_files.html.haml +41 -0
- data/html/partials/compare/alert.html.haml +22 -0
- data/html/partials/compare/changed_managed_file_list.html.haml +26 -0
- data/html/partials/compare/changed_managed_files.html.haml +57 -0
- data/html/partials/compare/config_file_list.html.haml +26 -0
- data/html/partials/compare/config_files.html.haml +54 -0
- data/html/partials/compare/group_list.html.haml +14 -0
- data/html/partials/compare/groups.html.haml +52 -0
- data/html/partials/compare/os.html.haml +32 -0
- data/html/partials/compare/os_table.html.haml +10 -0
- data/html/partials/compare/package_list.html.haml +23 -0
- data/html/partials/compare/packages.html.haml +66 -0
- data/html/partials/compare/pattern_list.html.haml +12 -0
- data/html/partials/compare/patterns.html.haml +53 -0
- data/html/partials/compare/repositories.html.haml +51 -0
- data/html/partials/compare/repository_list.html.haml +28 -0
- data/html/partials/compare/service_list.html.haml +11 -0
- data/html/partials/compare/services.html.haml +56 -0
- data/html/partials/compare/unmanaged_file_list.html.haml +13 -0
- data/html/partials/compare/unmanaged_files.html.haml +59 -0
- data/html/partials/compare/user_list.html.haml +18 -0
- data/html/partials/compare/users.html.haml +52 -0
- data/html/partials/config_files.html.haml +57 -0
- data/html/partials/groups.html.haml +25 -0
- data/html/partials/os.html.haml +26 -0
- data/html/partials/packages.html.haml +30 -0
- data/html/partials/patterns.html.haml +23 -0
- data/html/partials/repositories.html.haml +35 -0
- data/html/partials/scope_header.html.haml +17 -0
- data/html/partials/services.html.haml +23 -0
- data/html/partials/unmanaged_files.html.haml +28 -0
- data/html/partials/users.html.haml +29 -0
- data/lib/cli.rb +48 -40
- data/lib/exceptions.rb +7 -0
- data/lib/helper.rb +21 -0
- data/lib/hint.rb +1 -1
- data/lib/html.rb +9 -1
- data/lib/scope_file_access_archive.rb +1 -2
- data/lib/scope_file_access_flat.rb +1 -2
- data/lib/server.rb +104 -50
- data/lib/version.rb +1 -1
- data/machinery-helper/version.go +1 -1
- data/man/generated/machinery.1.gz +0 -0
- data/man/generated/machinery.1.html +106 -16
- metadata +47 -18
- data/html/assets/angular-sanitize.min.js +0 -16
- data/html/assets/angular.min.js +0 -251
- data/html/assets/compare/machinery-compare.js +0 -100
- 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,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
|