From 56ecffce5e010798445b907070bfdf852dd2396d Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Fri, 11 Jun 2021 13:42:54 +0200 Subject: [PATCH 1/3] Update scaladoc docs --- docs/docs/usage/scaladoc/changing-versions.md | 29 ++++++++++++++++++ docs/docs/usage/scaladoc/settings.md | 16 ++++++++++ docs/images/scaladoc/nightly.gif | Bin 0 -> 71759 bytes .../tools/scaladoc/ScaladocSettings.scala | 4 ++- 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 docs/docs/usage/scaladoc/changing-versions.md create mode 100644 docs/images/scaladoc/nightly.gif diff --git a/docs/docs/usage/scaladoc/changing-versions.md b/docs/docs/usage/scaladoc/changing-versions.md new file mode 100644 index 000000000000..b86e450c63e6 --- /dev/null +++ b/docs/docs/usage/scaladoc/changing-versions.md @@ -0,0 +1,29 @@ +--- +title: Multiple versions changing +--- + +# {{ page.title }} + +Scaladoc now provides convenient way to link between different versions of documentation. The feature is pretty handy if we want to expose older docs for users that didn't migrate to the new version of our library. + +### How to setup it + +The feature was designed for easy scalability with no need to regenerate all scaladocs after adding next version. Becuase of that we decided to introduce the new setting passed during creation of scaladoc `-versions-dictionary-url` pointing with URL to JSON document holding information about locations of specific versions. The JSON file has single property "versions" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. + +Example JSON file: +``` +{ + "versions": { + "3.0.X": "https://dotty.epfl.ch/3.0.X/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + +This enforce us to provide the setting while genereting docs for each of the versions, however it gives us more flexebility later. Consider one want to add next version of the API docs along previous 5 versions he/she has already published. The only thing is to upload them to some web server host and update the JSON file with another entry. All scaladocs will now become aware of the new scaladoc version. + +### How does it look from user perspective + +Providing JSON file via `-versions-dictionary-url` enables scaladoc to link between versions. We found it convenient to change the revision label into drop-down menu that let you change between different version. Everything will change automatically, no need for further setup. + +![](../../../images/scaladoc/nightly.gif) diff --git a/docs/docs/usage/scaladoc/settings.md b/docs/docs/usage/scaladoc/settings.md index bc5e10c8c1c1..c156d3e8b3f7 100644 --- a/docs/docs/usage/scaladoc/settings.md +++ b/docs/docs/usage/scaladoc/settings.md @@ -117,3 +117,19 @@ A base URL to use as prefix and add `canonical` URLs to all pages. The canonical ##### -siteroot A directory containing static files from which to generate documentation. Default directory is `./docs` + +##### -versions-dictionary-url + +A URL pointing to a JSON document containing a dictionary version -> documentation location. +The JSON file has single property "versions" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. +Useful for libraries that maintain different releases docs. + +Example JSON file: +``` +{ + "versions": { + "3.0.X": "https://dotty.epfl.ch/3.0.X/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` diff --git a/docs/images/scaladoc/nightly.gif b/docs/images/scaladoc/nightly.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6e764a032d56271c74ba93b183501dd51724275 GIT binary patch literal 71759 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 DYJ~BT literal 0 HcmV?d00001 diff --git a/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala b/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala index 542cba0bc84d..b0aa223adce4 100644 --- a/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala +++ b/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala @@ -96,7 +96,9 @@ class ScaladocSettings extends SettingGroup with AllScalaSettings: val versionsDictionaryUrl: Setting[String] = StringSetting( "-versions-dictionary-url", "versions dictionary url", - "A URL pointing to a JSON document containing a dictionary version -> documentation location. Useful for libraries that maintain different releases docs", + "A URL pointing to a JSON document containing a dictionary version -> documentation location. " + + "The JSON file has single property \"versions\" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. " + + "Useful for libraries that maintain different releases docs.", "" ) From a427977f5c5172de516967c52f5363a8404f9f70 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Wed, 16 Jun 2021 12:24:52 +0200 Subject: [PATCH 2/3] Fix scaladoc README --- scaladoc/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scaladoc/README.md b/scaladoc/README.md index d63a9551b64c..5f7560372976 100644 --- a/scaladoc/README.md +++ b/scaladoc/README.md @@ -23,10 +23,10 @@ sbt scaladoc/generateSelfDocumentation sbt scaladoc/generateScalaDocumentation ``` -To actually view the documentation, the easiest way is to run the following in project root: +To actually view the documentation, the easiest way is to run the following in the project root: ``` -cd output +cd scaladoc/output python3 -m http.server 8080 ``` From 123b28679c973ccc0dc0b68df5e5bf501ca095d2 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Fri, 18 Jun 2021 13:48:18 +0200 Subject: [PATCH 3/3] Apply requested changes to scaladoc documentation --- docs/docs/usage/scaladoc/changing-versions.md | 29 --------------- docs/docs/usage/scaladoc/settings.md | 9 ++--- docs/docs/usage/scaladoc/site-versioning.md | 36 +++++++++++++++++++ .../tools/scaladoc/ScaladocSettings.scala | 4 +-- 4 files changed, 43 insertions(+), 35 deletions(-) delete mode 100644 docs/docs/usage/scaladoc/changing-versions.md create mode 100644 docs/docs/usage/scaladoc/site-versioning.md diff --git a/docs/docs/usage/scaladoc/changing-versions.md b/docs/docs/usage/scaladoc/changing-versions.md deleted file mode 100644 index b86e450c63e6..000000000000 --- a/docs/docs/usage/scaladoc/changing-versions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Multiple versions changing ---- - -# {{ page.title }} - -Scaladoc now provides convenient way to link between different versions of documentation. The feature is pretty handy if we want to expose older docs for users that didn't migrate to the new version of our library. - -### How to setup it - -The feature was designed for easy scalability with no need to regenerate all scaladocs after adding next version. Becuase of that we decided to introduce the new setting passed during creation of scaladoc `-versions-dictionary-url` pointing with URL to JSON document holding information about locations of specific versions. The JSON file has single property "versions" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. - -Example JSON file: -``` -{ - "versions": { - "3.0.X": "https://dotty.epfl.ch/3.0.X/docs/index.html", - "Nightly": "https://dotty.epfl.ch/docs/index.html" - } -} -``` - -This enforce us to provide the setting while genereting docs for each of the versions, however it gives us more flexebility later. Consider one want to add next version of the API docs along previous 5 versions he/she has already published. The only thing is to upload them to some web server host and update the JSON file with another entry. All scaladocs will now become aware of the new scaladoc version. - -### How does it look from user perspective - -Providing JSON file via `-versions-dictionary-url` enables scaladoc to link between versions. We found it convenient to change the revision label into drop-down menu that let you change between different version. Everything will change automatically, no need for further setup. - -![](../../../images/scaladoc/nightly.gif) diff --git a/docs/docs/usage/scaladoc/settings.md b/docs/docs/usage/scaladoc/settings.md index c156d3e8b3f7..d83f59472ffe 100644 --- a/docs/docs/usage/scaladoc/settings.md +++ b/docs/docs/usage/scaladoc/settings.md @@ -120,16 +120,17 @@ A directory containing static files from which to generate documentation. Defaul ##### -versions-dictionary-url -A URL pointing to a JSON document containing a dictionary version -> documentation location. -The JSON file has single property "versions" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. -Useful for libraries that maintain different releases docs. +A URL pointing to a JSON document containing a dictionary: `version label -> documentation location`. +The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html +Useful for libraries that maintain different versions of their documentation. Example JSON file: ``` { "versions": { - "3.0.X": "https://dotty.epfl.ch/3.0.X/docs/index.html", + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", "Nightly": "https://dotty.epfl.ch/docs/index.html" } } ``` + diff --git a/docs/docs/usage/scaladoc/site-versioning.md b/docs/docs/usage/scaladoc/site-versioning.md new file mode 100644 index 000000000000..69a3f6687825 --- /dev/null +++ b/docs/docs/usage/scaladoc/site-versioning.md @@ -0,0 +1,36 @@ +--- +title: Site versioning +--- + +# {{ page.title }} + +Scaladoc provides a convenient way to switch between different versions of the documentation. The feature is useful if we want to expose older docs for users that didn't migrate to the new version of our library. + +### How to setup it + +The feature was designed for easy scalability with no need to regenerate all scaladocs after adding a new version. To do so a new setting is introduced: `-versions-dictionary-url`. Its argument must be a URL to a JSON document holding information about the locations of specific versions. The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html + +Example JSON file: +``` +{ + "versions": { + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + +This enforce us to provide the setting while generating docs for each of the versions, however it gives us more flexibility later. If you want to add a version of the API docs next to the previous 5 versions that you have already published, then you only need to upload the new docs to a web server and add a new entry to the JSON file. All versions of the site will now become aware of the new site version. + +The important thing to note is that there is only one JSON file to avoid redundancy and each scaladoc must set up its URL location beforehand, for example, in sbt: + +``` +doc / scalacOptions ++= Seq("-versions-dictionary-url", "https://dotty.epfl.ch/versions.json") +``` + + +### How does it look from user perspective + +Providing a JSON file via `-versions-dictionary-url` enables scaladoc to link between versions. It is also convenient to be able to change the revision label in the drop-down menu. Everything will change automatically. + +![](../../../images/scaladoc/nightly.gif) diff --git a/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala b/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala index b0aa223adce4..c857f37222fc 100644 --- a/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala +++ b/scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala @@ -96,9 +96,9 @@ class ScaladocSettings extends SettingGroup with AllScalaSettings: val versionsDictionaryUrl: Setting[String] = StringSetting( "-versions-dictionary-url", "versions dictionary url", - "A URL pointing to a JSON document containing a dictionary version -> documentation location. " + + "A URL pointing to a JSON document containing a dictionary `version label -> documentation location`. " + "The JSON file has single property \"versions\" that holds dictionary of labels of specific docs and URL pointing to their index.html top-level file. " + - "Useful for libraries that maintain different releases docs.", + "Useful for libraries that maintain different versions of their documentation.", "" )