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 @@
1module 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
37end
lib/docs/filters/docker/clean_html_very_old.rb+0−22
@@ -1,22 +0,0 @@
1module 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
22end
lib/docs/filters/docker/entries.rb+1−19
@@ -10,20 +10,7 @@ module Docs · 9 unmodified lines
10 10
11 def get_name11 def get_name
12 return NAME_BY_SUBPATH[subpath] if NAME_BY_SUBPATH[subpath]12 return NAME_BY_SUBPATH[subpath] if NAME_BY_SUBPATH[subpath]
13 return at_css('h1').content unless nav_link13 at_css('h1').content
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
27 end14 end
28 15
29 def get_type16 def get_type
@@ -37,11 +24,6 @@ module Docs · 7 unmodified lines
37 product24 product
38 end25 end
39 26
40 def nav_link
41 return @nav_link if defined?(@nav_link)
42 @nav_link = at_css('.currentPage')
43 end
44
45 def product27 def product
46 @product ||= subpath.split('/').first.capitalize28 @product ||= subpath.split('/').first.capitalize
47 end29 end
lib/docs/filters/docker/entries_old.rb+0−75
@@ -1,75 +0,0 @@
1module 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
75end
lib/docs/filters/docker/entries_very_old.rb+0−56
@@ -1,56 +0,0 @@
1module 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
56end
lib/docs/scrapers/docker.rb+42−210
@@ -1,11 +1,31 @@
1module Docs1module Docs
2 class Docker < UrlScraper2 class Docker < UrlScraper
3 include MultipleBaseUrls
4
5 self.name = 'Docker'
3 self.type = 'simple'6 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
4 self.links = {14 self.links = {
5 home: 'https://docker.com/',15 home: 'https://docker.com/',
6 code: 'https://github.com/docker/docker'16 code: 'https://github.com/docker/docker'
7 }17 }
8 18
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
9 options[:trailing_slash] = true29 options[:trailing_slash] = true
10 30
11 options[:fix_urls] = ->(url) do31 options[:fix_urls] = ->(url) do
@@ -21,242 +41,54 @@ module Docs · 9 unmodified lines
21 Docker, Inc. and other parties may also have trademark rights in other terms used herein.41 Docker, Inc. and other parties may also have trademark rights in other terms used herein.
22 HTML42 HTML
23 43
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
24 version '19' do59 version '19' do
25 self.release = '19.03'60 self.release = '19.03'
26 self.base_url = "https://docs.docker.com/"61 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 }
76 end62 end
77 63
78 version '18' do64 version '18' do
79 self.release = '18.09'65 self.release = '18.09'
80 self.base_url = "https://docs.docker.com/v#{release}/"66 self.base_url = "https://docs.docker.com"
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 }
129 end67 end
130 68
131 version '17' do69 version '17' do
132 self.release = '17.12'70 self.release = '17.12'
133 self.base_url = "https://docs.docker.com/v#{release}/"71 self.base_url = "https://docs.docker.com"
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
214 end72 end
215 73
216 version '1.13' do74 version '1.13' do
217 include OldOptions
218
219 self.release = '1.13'75 self.release = '1.13'
220 self.base_url = "https://docs.docker.com/v#{self.version}/"76 self.base_url = "https://docs.docker.com"
221
222 html_filters.push 'docker/entries_old', 'docker/clean_html_old'
223
224 options[:container] = '.container-fluid .row'
225 end77 end
226 78
227 version '1.12' do79 version '1.12' do
228 include OldOptions
229
230 self.release = '1.12'80 self.release = '1.12'
231 self.base_url = "https://docs.docker.com/v#{self.version}/"81 self.base_url = "https://docs.docker.com"
232
233 html_filters.push 'docker/entries_old', 'docker/clean_html_old'
234
235 options[:container] = '.container-fluid .row'
236 end82 end
237 83
238 version '1.11' do84 version '1.11' do
239 include OldOptions
240
241 self.release = '1.11'85 self.release = '1.11'
242 self.base_url = "https://docs.docker.com/v#{self.version}/"86 self.base_url = "https://docs.docker.com"
243
244 html_filters.push 'docker/entries_very_old', 'docker/clean_html_very_old'
245
246 options[:container] = '#docs'
247 options[:only_patterns] << /\Aswarm\//
248 end87 end
249 88
250 version '1.10' do89 version '1.10' do
251 include OldOptions
252
253 self.release = '1.10'90 self.release = '1.10'
254 self.base_url = "https://docs.docker.com/v#{self.version}/"91 self.base_url = "https://docs.docker.com"
255
256 html_filters.push 'docker/entries_very_old', 'docker/clean_html_very_old'
257
258 options[:container] = '#docs'
259 options[:only_patterns] << /\Aswarm\//
260 end92 end
261 93
262 def get_latest_version(opts)94 def get_latest_version(opts)