diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index 8f2fde8c7b9..d29995cdcda 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -1,26 +1,97 @@
-name: Documentation
+# see https://squidfunk.github.io/mkdocs-material/setup/setting-up-versioning/
+# execute once, after the first deployment has 'latest' as alias:
+# mike set-default latest --push
+
+name: Documentation
+
on:
push:
- branches:
+ branches:
- develop
- # only trigger workflow if one of these paths are affected as well
paths:
- 'mkdocs.yml'
- 'sootup.examples/**'
- 'docs/**'
+ release:
+ types: [ created, published ]
+
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ - closed
+ paths:
+ - 'mkdocs.yml'
+ - 'sootup.examples/**'
+ - 'docs/**'
+
+concurrency: pages
+
+permissions:
+ contents: write
+ pull-requests: write
+
jobs:
- deploy:
+ manage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
+ # to get tag information
+ - run: git fetch --prune --unshallow
+
- uses: actions/setup-python@v2
with:
python-version: 3.x
+
+ # install dependencies
+ - run: pip install mike
- run: pip install mkdocs-material
- run: pip install mkdocs-tooltips
- run: pip install git+https://github.com/RedisLabs/mkdocs-include.git
- run: pip install git+https://github.com/swissiety/LspLexer4Pygments.git
# grab latest release url of the JimpleLSP jar and download it
- run: curl -s -L -o ./jimplelsp.jar $(curl -s https://api.github.com/repos/swissiety/jimpleLsp/releases/latest | grep 'browser_download_url".*jar"' | cut -d ':' -f 2,3 | tr -d \")
- - run: mkdocs gh-deploy --force
+
+ - name: replace "{{ git_latest_release }}" with latest release tag version in .md files
+ run: sed -i 's\{{ git_latest_release }}\'$(git tag --sort=committerdate | grep -E '[0-9]' | tail -1 | cut -b 2-7)'\g' docs/**.md
+
+ - run: git fetch origin gh-pages --depth=1
+ - name: Configure git user
+ run: |
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "github-actions[bot]"
+
+ # on push to develop branch - keep a doc around for develop to show the current state
+ - name: deploy doc in subdirectory
+ if: github.event_name == 'push'
+ run: mike deploy develop
+
+ # on PR events..
+ - name: deploy doc in subdirectory
+ if: github.event_name == 'pull_request'
+ run: mike deploy ${{ github.head_ref }}_preview --push
+ # TODO: set to true when the release is capable of the documentation ;) && mike props ${{ github.head_ref }}_preview --set-string hidden=true --push
+
+ - name: comment link to preview
+ if: github.event_name == 'pull_request' && github.event.action != 'closed'
+ uses: marocchino/sticky-pull-request-comment@v2
+ with:
+ message: |
+ You updated the documentation - [Doc Preview](https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}_preview/${{ github.head_ref }}/).
+
+ # on PR close - delete preview
+ - name: delete the deployed preview
+ if: github.event_name == 'pull_request' && github.event.action == 'closed'
+ run: mike delete ${{ github.head_ref }}_preview --push
+
+
+ # on release events..
+ - name: deploy doc in subdirectory
+ if: github.event_name == 'release'
+ run: mike deploy ${{ github.ref_name }} --push
+
+ - name: set the new release doc as default (release published)
+ if: github.event_name == 'release' && github.event.action == 'published'
+ run: mike deploy --push --update-aliases ${{ github.ref_name }} latest
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000000..681cf908aa9
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,31 @@
+name: Create Release Draft
+
+on:
+ push:
+ tags:
+ # Push events to matching
+ - ^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$
+
+jobs:
+ build:
+ name: Create Release Draft
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@master
+ - name: Create Release
+ id: create_release
+ uses: actions/create-release@latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ github.ref }}
+ release_name: ${{ github.ref }}
+ body: |
+ **TODO:** update changes in this Release
+ - First Change
+ - Second Change
+ - ...
+ [Documentation](https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/${{ github.ref }}/
+ draft: true
+ prerelease: false
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
index d78d260eda0..dd9d9df0d9c 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -27,7 +27,7 @@ So we introduced [Design changes in SootUp](whatsnew.md), which aim to address S
The goal is a lighter library that can easily be understood and maintained to be included in other projects.
### Is this a drop-in replacement for Soot?
-Not really. SootUp has a completely new architecture and API, so it is not trivial to update existing projects that build on soot. We recommend using it for greenfield projects.
+Not really. SootUp has a completely new architecture and API, so it is not trivial to update existing projects that build on soot. We recommend using SootUp for greenfield projects.
## Supporters
diff --git a/docs/installation.md b/docs/installation.md
index f561370c6ec..eeef216d977 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -15,37 +15,37 @@ Take a look at the [Modules](whatsnew.md#modular-architecture) to learn more abo
org.soot-oss
sootup.core
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.java.core
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.java.sourcecode
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.java.bytecode
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.jimple.parser
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.callgraph
- 1.0.0
+ {{ git_latest_release }}
org.soot-oss
sootup.analysis
- 1.0.0
+ {{ git_latest_release }}
```
@@ -54,13 +54,13 @@ Take a look at the [Modules](whatsnew.md#modular-architecture) to learn more abo
Add the following dependency in the ```build.gradle``` file of your project to include all SootUp modules into your project.
```
-compile "org.soot-oss:sootup.core:1.0.0"
-compile "org.soot-oss:sootup.java.core:1.0.0"
-compile "org.soot-oss:sootup.java.sourcecode:1.0.0"
-compile "org.soot-oss:sootup.java.bytecode:1.0.0"
-compile "org.soot-oss:sootup.jimple.parser:1.0.0"
-compile "org.soot-oss:sootup.callgraph:1.0.0"
-compile "org.soot-oss:sootup.analysis:1.0.0"
+compile "org.soot-oss:sootup.core:{{ git_latest_release }}"
+compile "org.soot-oss:sootup.java.core{{ git_latest_release }}"
+compile "org.soot-oss:sootup.java.sourcecode{{ git_latest_release }}"
+compile "org.soot-oss:sootup.java.bytecode{{ git_latest_release }}"
+compile "org.soot-oss:sootup.jimple.parser{{ git_latest_release }}"
+compile "org.soot-oss:sootup.callgraph{{ git_latest_release }}"
+compile "org.soot-oss:sootup.analysis{{ git_latest_release }}"
```
## Building from Source
@@ -79,7 +79,7 @@ Alternatively, you can execute the following command in the project directory:
mvn install
```
-Or if you want to skip unit tests while building:
+Or if you want to skip tests while building:
```
mvn -Dskiptests install
diff --git a/mkdocs.yml b/mkdocs.yml
index 0d6610bfb85..68e7790d968 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,5 +1,5 @@
site_name: SootUp
-#site_url: https://example.com/
+site_url: https://soot-oss.github.io/SootUp/
repo_url: https://github.com/soot-oss/SootUp/
edit_uri: edit/develop/docs/
@@ -57,3 +57,6 @@ markdown_extensions:
- pymdownx.tabbed:
alternate_style: true
+extra:
+ version:
+ provider: mike
\ No newline at end of file