From f36c7f52b75f940e797649fbb170a58acb0bcb98 Mon Sep 17 00:00:00 2001
From: Johannes Loher <johannes.loher@fg4f.de>
Date: Fri, 17 Sep 2021 19:46:36 +0200
Subject: [PATCH 1/2] ci: publish to foundry automatically

---
 .gitlab-ci.yml  | 29 +++++++++++++++++++++++++----
 gulpfile.js     |  2 ++
 src/system.json |  1 +
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5f99b0e..098724d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,8 +8,9 @@ image: node:lts
 stages:
     - test
     - build
-    - publish
+    - prepare-release
     - release
+    - publish
 
 cache: &global_cache
     paths:
@@ -61,8 +62,8 @@ build:
         expire_in: 1 week
 
 publish-artifacts:
+    stage: prepare-release
     image: alpine:latest
-    stage: publish
     before_script:
         - apk update
         - apk add zip curl
@@ -70,12 +71,11 @@ publish-artifacts:
         zip -r ds4.zip ds4/*
         curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip"
         curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json"
-        curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json"
     rules:
         - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
 
 changelog:
-    stage: publish
+    stage: prepare-release
     before_script:
         - yarn install --immutable
     script:
@@ -150,3 +150,24 @@ release:
                   url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json"
                   filepath: /system.json
                   link_type: other
+
+publish-latest-manifest:
+    stage: publish
+    image: alpine:latest
+    before_script:
+        - apk update
+        - apk add zip curl
+    script: |
+        curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json"
+    rules:
+        - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
+
+publish-to-foundry-admin:
+    stage: publish
+    image: johannesloher/foundry-publish
+    variables:
+        FVTT_MANIFEST_PATH: ./src/system.json
+        FVTT_MANIFEST_URL: ${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}/downloads/system.json
+    script: foundry-publish
+    rules:
+        - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
diff --git a/gulpfile.js b/gulpfile.js
index 192a85c..8994300 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -24,6 +24,7 @@ const stylesExtension = ".scss";
 const sourceFileExtension = ".ts";
 const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"];
 const getDownloadURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}/downloads/ds4.zip`;
+const getChangelogURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}`;
 
 /********************/
 /*      BUILD       */
@@ -210,6 +211,7 @@ function bumpVersion(cb) {
 
         manifest.file.version = targetVersion;
         manifest.file.download = getDownloadURL(targetVersion);
+        manifest.file.changelog = getChangelogURL(targetVersion);
         fs.writeJSONSync(path.join(sourceDirectory, manifest.name), manifest.file, { spaces: 4 });
 
         return cb();
diff --git a/src/system.json b/src/system.json
index 319c702..5e86a6a 100644
--- a/src/system.json
+++ b/src/system.json
@@ -93,6 +93,7 @@
     "url": "https://git.f3l.de/dungeonslayers/ds4",
     "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json",
     "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3/downloads/ds4.zip",
+    "changelog": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3",
     "license": "https://git.f3l.de/dungeonslayers/ds4#licensing",
     "initiative": "@combatValues.initiative.total",
     "manifestPlusVersion": "1.0.0",

From 4f95ff59907d526787de464cdc76e3a929d56cc3 Mon Sep 17 00:00:00 2001
From: Johannes Loher <johannes.loher@fg4f.de>
Date: Fri, 17 Sep 2021 20:41:52 +0200
Subject: [PATCH 2/2] chore: reorder system.json

---
 src/system.json | 48 ++++++++++++++++++++++++------------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/src/system.json b/src/system.json
index 5e86a6a..76eccb5 100644
--- a/src/system.json
+++ b/src/system.json
@@ -2,9 +2,6 @@
     "name": "ds4",
     "title": "Dungeonslayers 4",
     "description": "The Dungeonslayers 4 system for FoundryVTT. Dungeonslayers by Christian Kennig is licensed under CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/). The icons by the authors of Game-icons.net are licensed under CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/). The token images by Devin Night (https://immortalnights.com/) and are licensed under the terms described at https://immortalnights.com/tokens/token-usage-rights/.",
-    "version": "1.4.3",
-    "minimumCoreVersion": "0.8.8",
-    "compatibleCoreVersion": "0.8.9",
     "author": "Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug, Max Tharr, Sascha Martens",
     "authors": [
         {
@@ -30,9 +27,28 @@
             "name": "Sascha Martens"
         }
     ],
+    "url": "https://git.f3l.de/dungeonslayers/ds4",
+    "license": "https://git.f3l.de/dungeonslayers/ds4/-/blob/master/README.md#licensing",
+    "readme": "https://git.f3l.de/dungeonslayers/ds4/-/blob/master/README.md",
+    "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues",
+    "changelog": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3",
+    "version": "1.4.3",
+    "minimumCoreVersion": "0.8.8",
+    "compatibleCoreVersion": "0.8.9",
     "esmodules": ["module/ds4.js"],
     "styles": ["css/ds4.css"],
-    "scripts": [],
+    "languages": [
+        {
+            "lang": "en",
+            "name": "English",
+            "path": "lang/en.json"
+        },
+        {
+            "lang": "de",
+            "name": "Deutsch",
+            "path": "lang/de.json"
+        }
+    ],
     "packs": [
         {
             "name": "special-creature-abilities",
@@ -75,27 +91,11 @@
             "entity": "Actor"
         }
     ],
-    "languages": [
-        {
-            "lang": "en",
-            "name": "English",
-            "path": "lang/en.json"
-        },
-        {
-            "lang": "de",
-            "name": "Deutsch",
-            "path": "lang/de.json"
-        }
-    ],
+    "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json",
+    "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3/downloads/ds4.zip",
+    "initiative": "@combatValues.initiative.total",
     "gridDistance": 1,
     "gridUnits": "m",
     "primaryTokenAttribute": "combatValues.hitPoints",
-    "url": "https://git.f3l.de/dungeonslayers/ds4",
-    "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json",
-    "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3/downloads/ds4.zip",
-    "changelog": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3",
-    "license": "https://git.f3l.de/dungeonslayers/ds4#licensing",
-    "initiative": "@combatValues.initiative.total",
-    "manifestPlusVersion": "1.0.0",
-    "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues"
+    "manifestPlusVersion": "1.0.0"
 }