History

Update Docker documentation (20.10.6)

Enoc committed 5 years ago

Commit 451ba371 parent 5d966ea6 files · +43 −419Browse files

Unified · Split

6 files
  1. lib/docs/filters/docker/clean_html_old.rb +0 −37
  2. lib/docs/filters/docker/clean_html_very_old.rb +0 −22
  3. lib/docs/filters/docker/entries.rb +1 −19
  4. lib/docs/filters/docker/entries_old.rb +0 −75
  5. lib/docs/filters/docker/entries_very_old.rb +0 −56
  6. lib/docs/scrapers/docker.rb +42 −210
lib/docs/filters/docker/clean_html_old.rb+0−37
@@ -1,37 +0,0 @@
1−module Docs
2− class Docker
3− class CleanHtmlOldFilter < Filter
4− def call
5− if root_page?
6− doc.inner_html = "<h1>Docker Documentation</h1>"
7− return doc
8− end
9−
10− @doc = at_css('#DocumentationText')
11−
12− at_css('h2').name = 'h1' unless at_css('h1')
13−
14− css('.anchorLink', '.reading-time', 'hr', '> div[style*="margin-top"]:last-child').remove
15−
16− css('h1 + h1').each do |node|
17− node.name = 'h2'
18− end
19−
20− css('pre').each do |node|
21− node.content = node.content
22− node['data-language'] = node.parent['class'][/language-(\w+)/, 1] if node.parent['class']
23− end
24−
25− css('div.highlighter-rouge').each do |node|
26− node.before(node.children).remove
27− end
28−
29− css('code.highlighter-rouge').each do |node|
30− node.content = node.content.gsub(/\s+/, ' ').strip
31− end
32−
33− doc
34− end
35− end
36− end
37−end
lib/docs/filters/docker/clean_html_very_old.rb+0−22
@@ -1,22 +0,0 @@
1−module Docs
2− class Docker
3− class CleanHtmlVeryOldFilter < Filter
4− def call
5− if root_page?
6− doc.inner_html = "<h1>Docker Documentation</h1>"
7− return doc
8− end
9−
10− @doc = at_css('#content')
11−
12− at_css('h2').name = 'h1' unless at_css('h1')
13−
14− css('pre').each do |node|
15− node.content = node.content
16− end
17−
18− doc
19− end
20− end
21− end
22−end
lib/docs/filters/docker/entries.rb+1−19
@@ -10,20 +10,7 @@ module Docs · 9 unmodified lines
1010
1111 def get_name
1212 return NAME_BY_SUBPATH[subpath] if NAME_BY_SUBPATH[subpath]
13− return at_css('h1').content unless nav_link
14−
15− name = nav_link.content.strip
16− name.capitalize! if name == 'exoscale'
17− name.remove! ' (base command)'
18−
19− if name =~ /\A[a-z\-\s]+\z/
20− name.prepend 'docker-compose ' if subpath =~ /compose\/reference\/./
21− name.prepend 'docker-machine ' if subpath =~ /machine\/reference\/./
22− else
23− name << " (#{product})" if name !~ /#{product}/i && !subpath.start_with?('get-started')
24− end
25−
26− name
13+ at_css('h1').content
2714 end
2815
2916 def get_type
@@ -37,11 +24,6 @@ module Docs · 7 unmodified lines
3724 product
3825 end
3926
40− def nav_link
41− return @nav_link if defined?(@nav_link)
42− @nav_link = at_css('.currentPage')
43− end
44−
4527 def product
4628 @product ||= subpath.split('/').first.capitalize
4729 end
lib/docs/filters/docker/entries_old.rb+0−75
@@ -1,75 +0,0 @@
1−module Docs
2− class Docker
3− class EntriesOldFilter < Docs::EntriesFilter
4− NAME_BY_SUBPATH = {
5− 'engine/' => 'Engine',
6− 'compose/' => 'Compose',
7− 'machine/' => 'Machine'
8− }
9−
10− def get_name
11− return NAME_BY_SUBPATH[subpath] if NAME_BY_SUBPATH[subpath]
12− return at_css('h1').content unless nav_link
13−
14− name = nav_link.content.strip
15− name.capitalize! if name == 'exoscale'
16− name.remove! ' (base command)'
17−
18− if name =~ /\A[a-z\-\s]+\z/
19− name.prepend 'docker-compose ' if subpath =~ /compose\/reference\/./
20− name.prepend 'docker-machine ' if subpath =~ /machine\/reference\/./
21− else
22− name << " (#{product})" if name !~ /#{product}/i
23− end
24−
25− name
26− end
27−
28− TYPE_BY_SUBPATH = {
29− 'engine/' => 'Engine',
30− 'compose/' => 'Compose',
31− 'machine/' => 'Machine'
32− }
33−
34− def get_type
35− return TYPE_BY_SUBPATH[subpath] if TYPE_BY_SUBPATH[subpath]
36− return 'Engine: CLI' if subpath.start_with?('engine/reference/commandline/')
37− return 'Engine: Admin Guide' if subpath.start_with?('engine/admin/')
38− return 'Engine: Security' if subpath.start_with?('engine/security/')
39− return 'Engine: Extend' if subpath.start_with?('engine/extend/')
40− return 'Engine: Get Started' if subpath.start_with?('engine/getstarted')
41− return 'Engine: Tutorials' if subpath.start_with?('engine/tutorials/')
42− return product if !nav_link && subpath =~ /\A\w+\/[\w\-]+\/\z/
43−
44− leaves = nav_link.ancestors('li.leaf').reverse
45− return product if leaves.length <= 2
46−
47− type = leaves[0..1].map { |node| node.at_css('> a').content.strip }.join(': ')
48− type.remove! %r{\ADocker }
49− type.remove! ' Engine'
50− type.sub! %r{Command[\-\s]line reference}i, 'CLI'
51− type.sub! 'CLI reference', 'CLI'
52− type
53− end
54−
55− def nav_link
56− return @nav_link if defined?(@nav_link)
57− @nav_link = at_css('.currentPage')
58−
59− unless @nav_link
60− link = at_css('#DocumentationText li a')
61− return unless link
62− link = at_css(".docsidebarnav_section a[href='#{link['href']}']")
63− return unless link
64− @nav_link = link.ancestors('.menu-closed').first.at_css('a')
65− end
66−
67− @nav_link
68− end
69−
70− def product
71− @product ||= subpath.split('/').first.capitalize
72− end
73− end
74− end
75−end
lib/docs/filters/docker/entries_very_old.rb+0−56
@@ -1,56 +0,0 @@
1−module Docs
2− class Docker
3− class EntriesVeryOldFilter < Docs::EntriesFilter
4− def get_name
5− name = nav_link ? nav_link.content.strip : at_css('#content h1').content.strip
6− name.capitalize! if name == 'exoscale'
7−
8− if name =~ /\A[a-z\-\s]+\z/
9− name.prepend 'docker ' if subpath =~ /engine\/reference\/commandline\/./
10− name.prepend 'docker-compose ' if subpath =~ /compose\/reference\/./
11− name.prepend 'docker-machine ' if subpath =~ /machine\/reference\/./
12− name.prepend 'swarm ' if subpath =~ /swarm\/reference\/./ && name != 'swarm'
13− else
14− name << " (#{product})" if name !~ /#{product}/i
15− end
16−
17− name
18− end
19−
20− def get_type
21− unless nav_link
22− return 'Engine: User guide' if subpath.start_with?('engine/userguide')
23− end
24−
25− type = nav_link.ancestors('article').to_a.reverse.to_a[0..1].map do |node|
26− node.at_css('> button').content.strip
27− end.join(': ')
28−
29− type.remove! %r{\ADocker }
30− type.remove! %r{ Engine}
31− type.sub! %r{Command[\-\s]line reference}i, 'CLI'
32− type = 'Engine: Reference' if type == 'Engine: reference'
33− type
34− end
35−
36− def nav_link
37− return @nav_link if defined?(@nav_link)
38− @nav_link = at_css('#multiple .active')
39−
40− unless @nav_link
41− link = at_css('#content li a')
42− return unless link
43− link = at_css("#multiple a[href='#{link['href']}']")
44− return unless link
45− @nav_link = link.ancestors('article').first.at_css('button')
46− end
47−
48− @nav_link
49− end
50−
51− def product
52− @product ||= subpath.split('/').first.capitalize
53− end
54− end
55− end
56−end
lib/docs/scrapers/docker.rb+42−210
@@ -1,11 +1,31 @@
11 module Docs
22 class Docker < UrlScraper
3+ include MultipleBaseUrls
4+
5+ self.name = 'Docker'
36 self.type = 'simple'
7+ self.release = '20.10.6'
8+
9+ self.base_urls = [
10+ 'https://docs.docker.com/',
11+ 'https://docs.docker.com/machine/'
12+ ]
13+
414 self.links = {
515 home: 'https://docker.com/',
616 code: 'https://github.com/docker/docker'
717 }
818
19+ html_filters.push 'docker/entries', 'docker/clean_html'
20+
21+ options[:only_patterns] = [/\Aget-started\//, /\Aengine\//, /\Acompose\//, /\Amachine\//, /\Anotary\//]
22+
23+ options[:skip_patterns] = [/\Aengine\/api\/v/, /glossary/, /docker-ee/]
24+
25+ options[:skip] = [
26+ 'engine/userguide/networking/get-started-overlay/'
27+ ]
28+
929 options[:trailing_slash] = true
1030
1131 options[:fix_urls] = ->(url) do
@@ -21,242 +41,54 @@ module Docs · 9 unmodified lines
2141 Docker, Inc. and other parties may also have trademark rights in other terms used herein.
2242 HTML
2343
44+ options[:replace_paths] = {
45+ 'engine/userguide/' => 'config/daemon',
46+ 'engine/userguide/labels-custom-metadata/' => 'config',
47+ 'engine/swarm/networking/' => 'network/overlay',
48+ 'engine/userguide/eng-image/dockerfile_best-practices/' => 'develop/develop-images/dockerfile_best-practices/',
49+ 'engine/userguide/networking/get-started-overlay/' => 'network/network-tutorial-overlay/',
50+ 'engine/userguide/networking/' => 'network/',
51+ 'engine/reference/api/' => 'develop/sdk',
52+ 'engine/api/latest/' => 'develop/sdk',
53+ 'get-started/part3/' => 'get-started/04_sharing_app/',
54+ 'engine/security/https/' => 'engine/security/protect-access/',
55+ 'compose/aspnet-mssql-compose/' => 'samples/aspnet-mssql-compose/',
56+ 'engine/examples/dotnetcore/' => 'samples/dotnetcore/'
57+ }
58+
2459 version '19' do
2560 self.release = '19.03'
26− self.base_url = "https://docs.docker.com/"
27−
28− html_filters.push 'docker/entries', 'docker/clean_html'
29−
30− options[:container] = '.wrapper .container-fluid .row'
31−
32− options[:only_patterns] = [/\Aget-started\//, /\Aengine\//, /\Acompose\//, /\Amachine\//, /\Anotary\//]
33− options[:skip_patterns] = [/\Aengine\/api\/v/, /glossary/, /docker-ee/]
34−
35− options[:replace_paths] = {
36− 'install/linux/ubuntu/' => 'install/linux/docker-ce',
37− 'get-started/part1' => 'get-started',
38− 'engine/installation/' => 'install',
39− 'engine/installation/linux/linux-postinstall/' => 'install/linux',
40− 'compose/overview/' => 'compose',
41− 'docker-cloud/' => 'docker-hub',
42− 'datacenter/install/linux/' => 'ee',
43− 'engine/userguide/' => 'config/daemon',
44− 'engine/admin/' => 'config/daemon',
45− 'opensource/get-help/' => 'opensource',
46− 'engine/tutorials/dockerimages/' => 'get-started',
47− 'engine/admin/volumes/bind-mounts/' => 'storage',
48− 'engine/tutorials/dockervolumes/' => 'storage',
49− 'engine/admin/volumes/volumes/' => 'storage',
50− 'engine/userguide/labels-custom-metadata/' => 'config',
51− 'engine/userguide/eng-image/multistage-build/' => 'develop/develop-images',
52− 'engine/swarm/networking/' => 'network',
53− 'engine/admin/resource_constraints/' => 'config/containers',
54− 'engine/admin/logging/overview/' => 'config/containers/logging',
55− 'engine/userguide/eng-image/dockerfile_best-practices/' => 'develop/develop-images',
56− 'engine/tutorials/dockerrepos/' => 'get-started',
57− 'engine/userguide/networking/' => 'network',
58− 'engine/userguide/networking/get-started-overlay/' => 'network',
59− 'engine/reference/commandline/swarm_join_token/' => 'engine/reference/commandline',
60− 'engine/understanding-docker/' => 'engine',
61− 'engine/userguide/dockervolumes/' => 'storage',
62− 'engine/installation/binaries/' => 'install/linux/docker-ce',
63− 'engine/userguide/networking/default_network/dockerlinks/' => 'network',
64− 'engine/reference/api/' => 'develop/sdk',
65− 'engine/admin/systemd/' => 'config/daemon',
66− 'engine/userguide/storagedriver/imagesandcontainers/' => 'storage/storagedriver',
67− 'engine/api/' => 'develop/sdk',
68− 'engine/userguide/networking/get-started-overlay' => 'network',
69− 'engine/userguide/networking/overlay-security-model/' => 'network',
70− 'engine/installation/linux/docker-ce/binaries/' => 'install/linux/docker-ce',
71− 'engine/admin/volumes/' => 'storage/volumes/',
72− 'engine/userguide/networking//' => 'network',
73− 'engine/reference/commandline' => 'engine/reference/commandline/docker',
74− 'engine/reference/commandline/' => 'engine/reference/commandline/docker/',
75− }
61+ self.base_url = "https://docs.docker.com"
7662 end
7763
7864 version '18' do
7965 self.release = '18.09'
80− self.base_url = "https://docs.docker.com/v#{release}/"
81−
82− html_filters.push 'docker/entries', 'docker/clean_html'
83−
84− options[:container] = '.wrapper .container-fluid .row'
85−
86− options[:only_patterns] = [/\Aget-started\//, /\Aengine\//, /\Acompose\//, /\Amachine\//, /\Anotary\//]
87− options[:skip_patterns] = [/\Aengine\/api\/v/, /glossary/, /docker-ee/]
88−
89− options[:replace_paths] = {
90− 'install/linux/ubuntu/' => 'install/linux/docker-ce',
91− 'get-started/part1' => 'get-started',
92− 'engine/installation/' => 'install',
93− 'engine/installation/linux/linux-postinstall/' => 'install/linux',
94− 'compose/overview/' => 'compose',
95− 'datacenter/install/linux/' => 'ee',
96− 'engine/userguide/' => 'config/daemon',
97− 'engine/admin/' => 'config/daemon',
98− 'opensource/get-help/' => 'opensource',
99− 'engine/tutorials/dockerimages/' => 'get-started',
100− 'engine/admin/volumes/bind-mounts/' => 'storage',
101− 'engine/tutorials/dockervolumes/' => 'storage',
102− 'engine/admin/volumes/volumes/' => 'storage',
103− 'engine/userguide/labels-custom-metadata/' => 'config',
104− 'engine/reference/api/' => 'develop/sdk',
105− 'engine/userguide/eng-image/multistage-build/' => 'develop/develop-images',
106− 'engine/swarm/networking/' => 'network',
107− 'engine/admin/resource_constraints/' => 'config/containers',
108− 'engine/admin/logging/overview/' => 'config/containers/logging',
109− 'engine/userguide/eng-image/dockerfile_best-practices/' => 'develop/develop-images',
110− 'engine/tutorials/dockerrepos/' => 'get-started',
111− 'engine/userguide/networking/' => 'network',
112− 'engine/userguide/networking/get-started-overlay/' => 'network',
113− 'engine/understanding-docker/' => 'engine',
114− 'engine/reference/commandline/swarm_join_token/' => 'engine/reference/commandline',
115− 'engine/userguide/dockervolumes/' => 'storage',
116− 'engine/admin/systemd/' => 'config/daemon',
117− 'engine/userguide/storagedriver/imagesandcontainers/' => 'storage/storagedriver',
118− 'engine/installation/binaries/' => 'install/linux/docker-ce',
119− 'engine/userguide/networking/default_network/dockerlinks/' => 'network',
120− 'engine/userguide/networking/overlay-security-model/' => 'network',
121− 'engine/userguide/networking/get-started-overlay' => 'network',
122− 'engine/api/' => 'develop/sdk',
123− 'engine/installation/linux/docker-ce/binaries/' => 'install/linux/docker-ce',
124− 'engine/admin/volumes/' => 'storage/volumes/',
125− 'engine/userguide/networking//' => 'network',
126− 'engine/reference/commandline' => 'engine/reference/commandline/docker',
127− 'engine/reference/commandline/' => 'engine/reference/commandline/docker/',
128− }
66+ self.base_url = "https://docs.docker.com"
12967 end
13068
13169 version '17' do
13270 self.release = '17.12'
133− self.base_url = "https://docs.docker.com/v#{release}/"
134−
135− html_filters.push 'docker/entries', 'docker/clean_html'
136−
137− options[:container] = '.wrapper .container-fluid .row'
138−
139− options[:only_patterns] = [/\Aget-started\//, /\Aengine\//, /\Acompose\//, /\Amachine\//, /\Anotary\//]
140− options[:skip_patterns] = [/\Aengine\/api\/v/, /glossary/, /docker-ee/]
141−
142− options[:replace_paths] = {
143− 'get-started/part1' => 'get-started',
144− 'engine/installation/' => 'install',
145− 'engine/installation/linux/linux-postinstall/' => 'install/linux',
146− 'opensource/get-help/' => 'opensource',
147− 'engine/admin/volumes/volumes/' => 'storage',
148− 'engine/tutorials/dockerimages/' => 'get-started',
149− 'engine/admin/volumes/bind-mounts/' => 'storage',
150− 'engine/tutorials/dockervolumes/' => 'storage',
151− 'datacenter/install/aws/' => 'docker-for-aws',
152− 'engine/userguide/' => 'config/daemon',
153− 'engine/admin/' => 'config/daemon',
154− 'engine/userguide/labels-custom-metadata/' => 'config',
155− 'engine/userguide/eng-image/multistage-build/' => 'develop/develop-images',
156− 'engine/swarm/networking/' => 'network',
157− 'engine/admin/resource_constraints/' => 'config/containers',
158− 'engine/admin/logging/overview/' => 'config/containers/logging',
159− 'engine/understanding-docker/' => 'engine',
160− 'engine/userguide/eng-image/dockerfile_best-practices/' => 'develop/develop-images',
161− 'engine/tutorials/dockerrepos/' => 'get-started',
162− 'engine/userguide/networking/' => 'network',
163− 'engine/reference/commandline/swarm_join_token/' => 'edge/engine/reference/commandline',
164− 'engine/userguide/networking/get-started-overlay/' => 'network',
165− 'engine/userguide/dockervolumes/' => 'storage',
166− 'engine/installation/binaries/' => 'install/linux/docker-ce',
167− 'engine/userguide/networking/default_network/dockerlinks/' => 'network',
168− 'engine/reference/api/' => 'develop/sdk',
169− 'engine/admin/live-restore/' => 'config/containers',
170− 'engine/api/' => 'develop/sdk',
171− 'engine/userguide/networking/get-started-overlay' => 'network',
172− 'security/security/' => 'engine/security',
173− 'engine/installation/linux/docker-ce/binaries/' => 'install/linux/docker-ce',
174− 'engine/reference/commandline/' => 'edge/engine/reference/commandline',
175− 'engine/admin/systemd/' => 'config/daemon',
176− 'engine/userguide/storagedriver/imagesandcontainers/' => 'storage/storagedriver',
177− 'engine/userguide/networking/overlay-security-model/' => 'network',
178− 'engine/admin/volumes/' => 'storage/volumes/',
179− 'engine/userguide/networking//' => 'network',
180− }
181− end
182−
183− module OldOptions
184− def self.included(klass)
185− klass.options[:only_patterns] = [/\Aengine\//, /\Acompose\//, /\Amachine\//]
186− klass.options[:skip_patterns] = [/\Aengine\/api\/v/, /\Aengine\/installation/]
187− klass.options[:skip] = %w(
188− /
189− engine/userguide/
190− engine/examples/
191− engine/reference/
192− engine/reference/api/
193− engine/reference/api/docker_remote_api_v1.24/
194− engine/getstarted/linux_install_help/
195− machine/reference/
196− machine/drivers/
197− machine/examples/
198− compose/reference/
199− )
200− klass.options[:replace_paths] = {
201− 'engine/userguide/networking/dockernetworks/' => 'engine/userguide/networking/',
202− 'engine/userguide/dockervolumes/' => 'engine/tutorials/dockervolumes/',
203− 'engine/reference/logging/overview/' => 'engine/admin/logging/overview/',
204− 'engine/reference/commandline/daemon/' => 'engine/reference/commandline/dockerd/',
205− 'engine/reference/commandline/' => 'engine/reference/commandline/docker/',
206− 'engine/reference/api/docker_remote_api/' => 'engine/api/',
207− 'engine/swarm/how-swarm-mode-works/' => 'engine/swarm/how-swarm-mode-works/nodes/',
208− 'engine/tutorials/dockerizing/' => 'engine/getstarted/step_one/',
209− 'engine/tutorials/usingdocker/' => 'engine/getstarted/step_three/',
210− 'engine/tutorials/dockerimages/' => 'engine/getstarted/step_four/',
211− 'engine/tutorials/dockerrepos/' => 'engine/getstarted/step_six/'
212− }
213− end
71+ self.base_url = "https://docs.docker.com"
21472 end
21573
21674 version '1.13' do
217− include OldOptions
218−
21975 self.release = '1.13'
220− self.base_url = "https://docs.docker.com/v#{self.version}/"
221−
222− html_filters.push 'docker/entries_old', 'docker/clean_html_old'
223−
224− options[:container] = '.container-fluid .row'
76+ self.base_url = "https://docs.docker.com"
22577 end
22678
22779 version '1.12' do
228− include OldOptions
229−
23080 self.release = '1.12'
231− self.base_url = "https://docs.docker.com/v#{self.version}/"
232−
233− html_filters.push 'docker/entries_old', 'docker/clean_html_old'
234−
235− options[:container] = '.container-fluid .row'
81+ self.base_url = "https://docs.docker.com"
23682 end
23783
23884 version '1.11' do
239− include OldOptions
240−
24185 self.release = '1.11'
242− self.base_url = "https://docs.docker.com/v#{self.version}/"
243−
244− html_filters.push 'docker/entries_very_old', 'docker/clean_html_very_old'
245−
246− options[:container] = '#docs'
247− options[:only_patterns] << /\Aswarm\//
86+ self.base_url = "https://docs.docker.com"
24887 end
24988
25089 version '1.10' do
251− include OldOptions
252−
25390 self.release = '1.10'
254− self.base_url = "https://docs.docker.com/v#{self.version}/"
255−
256− html_filters.push 'docker/entries_very_old', 'docker/clean_html_very_old'
257−
258− options[:container] = '#docs'
259− options[:only_patterns] << /\Aswarm\//
91+ self.base_url = "https://docs.docker.com"
26092 end
26193
26294 def get_latest_version(opts)