Skip to content

Commit f8562e7

Browse files
committed
Init
0 parents  commit f8562e7

File tree

1 file changed

+251
-0
lines changed

1 file changed

+251
-0
lines changed

createDummyPages.js

+251
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
let fs = require('fs')
2+
let childProcess = require('child_process')
3+
4+
let blogPostBase = 'https://reasonml.org/blog'
5+
let rescriptBase = 'https://rescript-lang.org'
6+
let manualBase = `${rescriptBase}/docs/manual/latest`
7+
8+
let docLanguages = [
9+
'en',
10+
'es-ES',
11+
'fr',
12+
'ja',
13+
'ko',
14+
'pt-BR',
15+
'ru',
16+
'zh-CN',
17+
'zh-TW',
18+
]
19+
20+
let mainPages = {
21+
'built-with-bucklescript.html': rescriptBase,
22+
'built-with-bucklescript/index.html': rescriptBase,
23+
'examples.html': `${manualBase}/newcomer-examples`,
24+
'examples/index.html': `${manualBase}/newcomer-examples`,
25+
'faq.html': `${manualBase}/faq`,
26+
'faq/index.html': `${manualBase}/faq`,
27+
'gettingStarted.html': `${manualBase}/introduction`,
28+
'gettingStarted/index.html': `${manualBase}/introduction`,
29+
'index.html': rescriptBase,
30+
}
31+
32+
let docPages = {
33+
'automatic-interface-generation.html': `${rescriptBase}/docs/manual/latest/introduction`,
34+
'automatic-interface-generation/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
35+
'better-data-structures-printing-debug-mode.html': `${rescriptBase}/docs/manual/latest/shared-data-types`,
36+
'better-data-structures-printing-debug-mode/index.html': `${rescriptBase}/docs/manual/latest/shared-data-types`,
37+
'bind-to-global-values.html': `${rescriptBase}/docs/manual/latest/bind-to-global-js-values`,
38+
'bind-to-global-values/index.html': `${rescriptBase}/docs/manual/latest/bind-to-global-js-values`,
39+
'browser-support-polyfills.html': `${rescriptBase}/docs/manual/latest/browser-support-polyfills`,
40+
'browser-support-polyfills/index.html': `${rescriptBase}/docs/manual/latest/browser-support-polyfills`,
41+
'build-advanced.html': `${rescriptBase}/docs/manual/latest/build-advanced`,
42+
'build-advanced/index.html': `${rescriptBase}/docs/manual/latest/build-advanced`,
43+
'build-configuration.html': `${rescriptBase}/docs/manual/latest/build-configuration`,
44+
'build-configuration/index.html': `${rescriptBase}/docs/manual/latest/build-configuration`,
45+
'build-overview.html': `${rescriptBase}/docs/manual/latest/build-overview`,
46+
'build-overview/index.html': `${rescriptBase}/docs/manual/latest/build-overview`,
47+
'build-performance.html': `${rescriptBase}/docs/manual/latest/build-performance`,
48+
'build-performance/index.html': `${rescriptBase}/docs/manual/latest/build-performance`,
49+
'class.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object#bind-to-a-js-object-thats-a-class`,
50+
'class/index.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object#bind-to-a-js-object-thats-a-class`,
51+
'common-data-types.html': `${rescriptBase}/docs/manual/latest/shared-data-types`,
52+
'common-data-types/index.html': `${rescriptBase}/docs/manual/latest/shared-data-types`,
53+
'community.html': `${rescriptBase}/community`,
54+
'community/index.html': `${rescriptBase}/community`,
55+
'comparison-to-jsoo.html': `${rescriptBase}/docs/manual/latest/introduction`,
56+
'comparison-to-jsoo/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
57+
'compiler-architecture-principles.html': `${rescriptBase}/docs/manual/latest/introduction`,
58+
'compiler-architecture-principles/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
59+
'concepts-overview.html': `${rescriptBase}/docs/manual/latest/concepts-overview`,
60+
'concepts-overview/index.html': `${rescriptBase}/docs/manual/latest/concepts-overview`,
61+
'conditional-compilation.html': `${rescriptBase}/docs/manual/latest/introduction`,
62+
'conditional-compilation/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
63+
'difference-from-native-ocaml.html': `${rescriptBase}/docs/manual/latest/introduction`,
64+
'difference-from-native-ocaml/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
65+
'ecosystem.html': `${rescriptBase}/docs/manual/latest/libraries`,
66+
'ecosystem/index.html': `${rescriptBase}/docs/manual/latest/libraries`,
67+
'embed-raw-javascript.html': `${rescriptBase}/docs/manual/latest/embed-raw-javascript`,
68+
'embed-raw-javascript/index.html': `${rescriptBase}/docs/manual/latest/embed-raw-javascript`,
69+
'exceptions.html': `${rescriptBase}/docs/manual/latest/exceptions`,
70+
'exceptions/index.html': `${rescriptBase}/docs/manual/latest/exceptions`,
71+
'extended-compiler-options.html': `${rescriptBase}/docs/manual/latest/introduction`,
72+
'extended-compiler-options/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
73+
'function.html': `${rescriptBase}/docs/manual/latest/function`,
74+
'function/index.html': `${rescriptBase}/docs/manual/latest/function`,
75+
'generate-converters-accessors.html': `${rescriptBase}/docs/manual/latest/introduction`,
76+
'generate-converters-accessors/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
77+
'import-export.html': `${rescriptBase}/docs/manual/latest/import-from-export-to-js`,
78+
'import-export/index.html': `${rescriptBase}/docs/manual/latest/import-from-export-to-js`,
79+
'installation.html': `${rescriptBase}/docs/manual/latest/installation#new-project`,
80+
'installation/index.html': `${rescriptBase}/docs/manual/latest/installation#new-project`,
81+
'interop-cheatsheet.html': `${rescriptBase}/docs/manual/latest/interop-cheatsheet`,
82+
'interop-cheatsheet/index.html': `${rescriptBase}/docs/manual/latest/interop-cheatsheet`,
83+
'interop-misc.html': `${rescriptBase}/docs/manual/latest/introduction`,
84+
'interop-misc/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
85+
'interop-overview.html': `${rescriptBase}/docs/manual/latest/introduction`,
86+
'interop-overview/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
87+
'interop-with-js-build-systems.html': `${rescriptBase}/docs/manual/latest/interop-with-js-build-systems`,
88+
'interop-with-js-build-systems/index.html': `${rescriptBase}/docs/manual/latest/interop-with-js-build-systems`,
89+
'intro-to-external.html': `${rescriptBase}/docs/manual/latest/external`,
90+
'intro-to-external/index.html': `${rescriptBase}/docs/manual/latest/external`,
91+
'json.html': `${rescriptBase}/docs/manual/latest/json`,
92+
'json/index.html': `${rescriptBase}/docs/manual/latest/json`,
93+
'load-third-party-libraries.html': `${rescriptBase}/try`,
94+
'load-third-party-libraries/index.html': `${rescriptBase}/try`,
95+
'new-project.html': `${rescriptBase}/docs/manual/latest/installation#new-project`,
96+
'new-project/index.html': `${rescriptBase}/docs/manual/latest/installation#new-project`,
97+
'nodejs-special-variables.html': `${rescriptBase}/docs/manual/latest/bind-to-global-js-values#special-global-values`,
98+
'nodejs-special-variables/index.html': `${rescriptBase}/docs/manual/latest/bind-to-global-js-values#special-global-values`,
99+
'null-undefined-option.html': `${rescriptBase}/docs/manual/latest/null-undefined-option`,
100+
'null-undefined-option/index.html': `${rescriptBase}/docs/manual/latest/null-undefined-option`,
101+
'object-2.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object`,
102+
'object-2/index.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object`,
103+
'object.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object`,
104+
'object/index.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object`,
105+
'pipe-first.html': `${rescriptBase}/docs/manual/latest/pipe`,
106+
'pipe-first/index.html': `${rescriptBase}/docs/manual/latest/pipe`,
107+
'playground.html': `${rescriptBase}/try`,
108+
'playground/index.html': `${rescriptBase}/try`,
109+
'property-access.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object#bind-using-special-bs-getters--setters`,
110+
'property-access/index.html': `${rescriptBase}/docs/manual/latest/bind-to-js-object#bind-using-special-bs-getters--setters`,
111+
'regular-expression.html': `${rescriptBase}/docs/manual/latest/primitive-types#regular-expression`,
112+
'regular-expression/index.html': `${rescriptBase}/docs/manual/latest/primitive-types#regular-expression`,
113+
'return-value-wrapping.html': `${rescriptBase}/docs/manual/latest/bind-to-js-function#function-nullable-return-value-wrapping`,
114+
'return-value-wrapping/index.html': `${rescriptBase}/docs/manual/latest/bind-to-js-function#function-nullable-return-value-wrapping`,
115+
'roadmap.html': `${rescriptBase}/docs/manual/latest/introduction`,
116+
'roadmap/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
117+
'stdlib-overview.html': `${rescriptBase}/apis/latest`,
118+
'stdlib-overview/index.html': `${rescriptBase}/apis/latest`,
119+
'try.html': `${rescriptBase}/docs/manual/latest/try`,
120+
'try/index.html': `${rescriptBase}/docs/manual/latest/try`,
121+
'upgrade-to-v7.html': `${rescriptBase}/docs/manual/latest/introduction`,
122+
'upgrade-to-v7/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
123+
'use-existing-ocaml-libraries.html': `${rescriptBase}/docs/manual/latest/introduction`,
124+
'use-existing-ocaml-libraries/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
125+
'what-why.html': `${rescriptBase}/docs/manual/latest/introduction`,
126+
'what-why/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
127+
'why-bucklescript-matters-for-javascript-platform.html': `${rescriptBase}/docs/manual/latest/introduction`,
128+
'why-bucklescript-matters-for-javascript-platform/index.html': `${rescriptBase}/docs/manual/latest/introduction`,
129+
}
130+
131+
let blogPages = {
132+
'blog/2017/10/01/announcing-1-0.html': `${blogPostBase}/bucklescript-release-1-0`,
133+
'blog/2017/10/01/announcing-1-0/index.html': `${blogPostBase}/bucklescript-release-1-0`,
134+
'blog/2017/10/02/release-1-4-2.html': `${blogPostBase}/bucklescript-release-1-4-2`,
135+
'blog/2017/10/02/release-1-4-2/index.html': `${blogPostBase}/bucklescript-release-1-4-2`,
136+
'blog/2017/10/03/release-1-4-3.html': `${blogPostBase}/bucklescript-release-1-4-3`,
137+
'blog/2017/10/03/release-1-4-3/index.html': `${blogPostBase}/bucklescript-release-1-4-3`,
138+
'blog/2017/10/04/release-1-5-0.html': `${blogPostBase}/bucklescript-release-1-5-0`,
139+
'blog/2017/10/04/release-1-5-0/index.html': `${blogPostBase}/bucklescript-release-1-5-0`,
140+
'blog/2017/10/05/release-1-5-1.html': `${blogPostBase}/bucklescript-release-1-5-1`,
141+
'blog/2017/10/05/release-1-5-1/index.html': `${blogPostBase}/bucklescript-release-1-5-1`,
142+
'blog/2017/10/06/release-1-5-2.html': `${blogPostBase}/bucklescript-release-1-5-2`,
143+
'blog/2017/10/06/release-1-5-2/index.html': `${blogPostBase}/bucklescript-release-1-5-2`,
144+
'blog/2017/10/07/release-1-7-0.html': `${blogPostBase}/bucklescript-release-1-7-0`,
145+
'blog/2017/10/07/release-1-7-0/index.html': `${blogPostBase}/bucklescript-release-1-7-0`,
146+
'blog/2017/10/08/release-1-7-4.html': `${blogPostBase}/bucklescript-release-1-7-4`,
147+
'blog/2017/10/08/release-1-7-4/index.html': `${blogPostBase}/bucklescript-release-1-7-4`,
148+
'blog/2017/10/09/release-1-7-5.html': `${blogPostBase}/bucklescript-release-1-7-5`,
149+
'blog/2017/10/09/release-1-7-5/index.html': `${blogPostBase}/bucklescript-release-1-7-5`,
150+
'blog/2017/12/01/new-doc-site.html': `${blogPostBase}/new-doc-site`,
151+
'blog/2017/12/01/new-doc-site/index.html': `${blogPostBase}/new-doc-site`,
152+
'blog/2018/03/13/a-small-step-for-bucklescript.html': `${blogPostBase}/a-small-step-for-bucklescript`,
153+
'blog/2018/03/13/a-small-step-for-bucklescript/index.html': `${blogPostBase}/a-small-step-for-bucklescript`,
154+
'blog/2018/04/16/release-3-0-0.html': `${blogPostBase}/bucklescript-release-3-0-0`,
155+
'blog/2018/04/16/release-3-0-0/index.html': `${blogPostBase}/bucklescript-release-3-0-0`,
156+
'blog/2018/05/21/release-3-1-0.html': `${blogPostBase}/bucklescript-release-3-1-0`,
157+
'blog/2018/05/21/release-3-1-0/index.html': `${blogPostBase}/bucklescript-release-3-1-0`,
158+
'blog/2018/05/23/release-3-1-4.html': `${blogPostBase}/bucklescript-release-3-1-4`,
159+
'blog/2018/05/23/release-3-1-4/index.html': `${blogPostBase}/bucklescript-release-3-1-4`,
160+
'blog/2018/07/17/release-4-0-0.html': `${blogPostBase}/bucklescript-release-4-0-0-pt1`,
161+
'blog/2018/07/17/release-4-0-0/index.html': `${blogPostBase}/bucklescript-release-4-0-0-pt1`,
162+
'blog/2018/07/17/release-4-0-0II.html': `${blogPostBase}/bucklescript-release-4-0-0-pt2`,
163+
'blog/2018/07/17/release-4-0-0II/index.html': `${blogPostBase}/bucklescript-release-4-0-0-pt2`,
164+
'blog/2018/11/13/arity-zero.html': `${blogPostBase}/arity-zero`,
165+
'blog/2018/11/13/arity-zero/index.html': `${blogPostBase}/arity-zero`,
166+
'blog/2018/11/19/next-half.html': `${blogPostBase}/bucklescript-roadmap-q3-4-2018`,
167+
'blog/2018/11/19/next-half/index.html': `${blogPostBase}/bucklescript-roadmap-q3-4-2018`,
168+
'blog/2018/12/05/release-4-0-8.html': `${blogPostBase}/bucklescript-release-4-0-8`,
169+
'blog/2018/12/05/release-4-0-8/index.html': `${blogPostBase}/bucklescript-release-4-0-8`,
170+
'blog/2019/01/07/release-4-0-17.html': `${blogPostBase}/bucklescript-release-4-0-17`,
171+
'blog/2019/01/07/release-4-0-17/index.html': `${blogPostBase}/bucklescript-release-4-0-17`,
172+
'blog/2019/01/11/scalable.html': `${blogPostBase}/scalable`,
173+
'blog/2019/01/11/scalable/index.html': `${blogPostBase}/scalable`,
174+
'blog/2019/03/1/feature-preview.html': `${blogPostBase}/feature-preview-variadic`,
175+
'blog/2019/03/1/feature-preview/index.html': `${blogPostBase}/feature-preview-variadic`,
176+
'blog/2019/03/21/release-5-0.html': `${blogPostBase}/bucklescript-release-5-0`,
177+
'blog/2019/03/21/release-5-0/index.html': `${blogPostBase}/bucklescript-release-5-0`,
178+
'blog/2019/03/31/release-6-0.html': `${blogPostBase}/bucklescript-release-6-0`,
179+
'blog/2019/03/31/release-6-0/index.html': `${blogPostBase}/bucklescript-release-6-0`,
180+
'blog/2019/04/09/release-schedule.html': `${blogPostBase}/bucklescript-release-5-0-1`,
181+
'blog/2019/04/09/release-schedule/index.html': `${blogPostBase}/bucklescript-release-5-0-1`,
182+
'blog/2019/04/22/release-5-0-4.html': `${blogPostBase}/bucklescript-release-5-0-4`,
183+
'blog/2019/04/22/release-5-0-4/index.html': `${blogPostBase}/bucklescript-release-5-0-4`,
184+
'blog/2019/05/21/ffi-overview.html': `${blogPostBase}/ffi-overview`,
185+
'blog/2019/05/21/ffi-overview/index.html': `${blogPostBase}/ffi-overview`,
186+
'blog/2019/06/26/release-5-0-5.html': `${blogPostBase}/bucklescript-release-5-0-5`,
187+
'blog/2019/06/26/release-5-0-5/index.html': `${blogPostBase}/bucklescript-release-5-0-5`,
188+
'blog/2019/08/12/release-5-10-0.html': `${blogPostBase}/bucklescript-release-5-1-0`,
189+
'blog/2019/08/12/release-5-10-0/index.html': `${blogPostBase}/bucklescript-release-5-1-0`,
190+
'blog/2019/09/23/release-5-20-0.html': `${blogPostBase}/bucklescript-release-5-2-0`,
191+
'blog/2019/09/23/release-5-20-0/index.html': `${blogPostBase}/bucklescript-release-5-2-0`,
192+
'blog/2019/10/16/another-encoding.html': `${blogPostBase}/another-encoding`,
193+
'blog/2019/10/16/another-encoding/index.html': `${blogPostBase}/another-encoding`,
194+
'blog/2019/11/18/whats-new-in-7.html': `${blogPostBase}/whats-new-in-7-pt1`,
195+
'blog/2019/11/18/whats-new-in-7/index.html': `${blogPostBase}/whats-new-in-7-pt1`,
196+
'blog/2019/12/20/release-7-02.html': `${blogPostBase}/bucklescript-release-7-0-2`,
197+
'blog/2019/12/20/release-7-02/index.html': `${blogPostBase}/bucklescript-release-7-0-2`,
198+
'blog/2019/12/27/whats-new-in-7-cont.html': `${blogPostBase}/whats-new-in-7-pt2`,
199+
'blog/2019/12/27/whats-new-in-7-cont/index.html': `${blogPostBase}/whats-new-in-7-pt2`,
200+
'blog/2020/02/04/release-7-1-0.html': `${blogPostBase}/bucklescript-release-7-1-0`,
201+
'blog/2020/02/04/release-7-1-0/index.html': `${blogPostBase}/bucklescript-release-7-1-0`,
202+
'blog/2020/02/07/union-types-in-bucklescript.html': `${blogPostBase}/union-types-in-bucklescript`,
203+
'blog/2020/02/07/union-types-in-bucklescript/index.html': `${blogPostBase}/union-types-in-bucklescript`,
204+
'blog/2020/02/20/loading-stdlib-in-memory.html': `${blogPostBase}/loading-stdlib-in-memory`,
205+
'blog/2020/02/20/loading-stdlib-in-memory/index.html': `${blogPostBase}/loading-stdlib-in-memory`,
206+
'blog/2020/03/12/release-7-2.html': `${blogPostBase}/bucklescript-release-7-2`,
207+
'blog/2020/03/12/release-7-2/index.html': `${blogPostBase}/bucklescript-release-7-2`,
208+
'blog/2020/03/26/generalize-uncurry.html': `${blogPostBase}/generalize-uncurry`,
209+
'blog/2020/03/26/generalize-uncurry/index.html': `${blogPostBase}/generalize-uncurry`,
210+
'blog/2020/04/13/release-7-3.html': `${blogPostBase}/bucklescript-release-7-3`,
211+
'blog/2020/04/13/release-7-3/index.html': `${blogPostBase}/bucklescript-release-7-3`,
212+
'blog/2020/05/06/exception-encoding.html': `${blogPostBase}/a-story-of-exception-encoding`,
213+
'blog/2020/05/06/exception-encoding/index.html': `${blogPostBase}/a-story-of-exception-encoding`,
214+
'blog/index.html': `${rescriptBase}/blog`,
215+
'blog/page2/index.html': `${rescriptBase}/blog`,
216+
'blog/page3/index.html': `${rescriptBase}/blog`,
217+
'blog/page4/index.html': `${rescriptBase}/blog`,
218+
'blog/page5/index.html': `${rescriptBase}/blog`,
219+
}
220+
221+
let createFile = (filePath, redirectLink) => {
222+
let p = filePath.split('/')
223+
if (p.length > 1) {
224+
let dirs = p.slice(0, p.length - 1).join('/')
225+
childProcess.execFileSync('mkdir', ['-p', dirs])
226+
}
227+
228+
let content = `
229+
<link rel="canonical" href="${redirectLink}"/>
230+
<meta http-equiv="refresh" content="0; url=${redirectLink}" />
231+
`
232+
fs.writeFileSync(filePath, content)
233+
}
234+
235+
Object.entries(blogPages).forEach(([pathSpec, redirectLink]) => {
236+
createFile(pathSpec, redirectLink)
237+
})
238+
239+
Object.entries(mainPages).forEach(([pathSpec, redirectLink]) => {
240+
createFile(pathSpec, redirectLink)
241+
docLanguages.forEach(language => {
242+
createFile(language + '/' + pathSpec, redirectLink)
243+
})
244+
})
245+
246+
Object.entries(docPages).forEach(([pathSpec, redirectLink]) => {
247+
createFile('docs/' + pathSpec, redirectLink)
248+
docLanguages.forEach(language => {
249+
createFile('docs/' + language + '/' + pathSpec, redirectLink)
250+
})
251+
})

0 commit comments

Comments
 (0)