diff --git a/doc-tool/src/dotty/tools/dottydoc/DocDriver.scala b/doc-tool/src/dotty/tools/dottydoc/DocDriver.scala
index deab5184a1f9..6431d25df856 100644
--- a/doc-tool/src/dotty/tools/dottydoc/DocDriver.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/DocDriver.scala
@@ -46,25 +46,27 @@ class DocDriver extends Driver {
val projectUrl = Option(ctx.settings.projectUrl.value).filter(_.nonEmpty)
val projectLogo = Option(ctx.settings.projectLogo.value).filter(_.nonEmpty)
val docSnapshot = ctx.settings.docSnapshot.value
- var baseUrl = "/"
- var outDir = File(siteRoot, "_site")
- if docSnapshot then
- val folderName = if projectVersion.endsWith("NIGHTLY") then "nightly" else projectVersion
- outDir = File(outDir, folderName)
- baseUrl = s"$baseUrl$folderName"
+ val baseUrl = "/"
+ val outDir = File(siteRoot, "_site")
+ val snapshotFolderName = if projectVersion.endsWith("NIGHTLY") then "nightly" else projectVersion
+ val snapshotOutDir = File(outDir, snapshotFolderName)
+ val snapshotBaseUrl = s"$baseUrl$snapshotFolderName"
if (projectName.isEmpty)
ctx.error(s"Site project name not set. Use `-project
` to set the project name")
else if (!siteRoot.exists || !siteRoot.isDirectory)
ctx.error(s"Site root does not exist: $siteRoot")
else {
- Site(siteRoot, outDir, projectName, projectVersion, projectUrl, projectLogo, ctx.docbase.packages, baseUrl)
- .generateApiDocs()
- .copyStaticFiles()
- .generateHtmlFiles()
- .generateBlog()
+ def generateSite(outDir: File, baseUrl: String) =
+ Site(siteRoot, outDir, projectName, projectVersion, projectUrl, projectLogo, ctx.docbase.packages, baseUrl)
+ .generateApiDocs()
+ .copyStaticFiles()
+ .generateHtmlFiles()
+ .generateBlog()
+ generateSite(outDir, baseUrl)
+ if docSnapshot then generateSite(snapshotOutDir, snapshotBaseUrl)
ctx.docbase.printSummary()
}
diff --git a/project/scripts/genDocs b/project/scripts/genDocs
index 15016e1c1f97..7389be48c69c 100755
--- a/project/scripts/genDocs
+++ b/project/scripts/genDocs
@@ -41,7 +41,10 @@ git fetch doc-remote gh-pages
git checkout gh-pages
# save the old snapshots to the newly generated site
-mv 0.*/ $PWD/docs/_site
+# This command must never fail since failures short-circuit the script
+# The reason for failure is that no folder matches "0.*" pattern
+# because snapshots may not be generated yet
+(mv 0.*/ $PWD/docs/_site; true)
# move newly generated _site dir to $PWD
mv $PWD/docs/_site .