Compare commits

...

6 commits

Author SHA1 Message Date
f481b134a8 chore(deps): update commitlint monorepo to v17.6.6 2023-07-09 23:01:26 +00:00
a578cbff0d
docs: fix readme
All checks were successful
ci/woodpecker/pr/checks Pipeline was successful
ci/woodpecker/push/checks Pipeline was successful
2023-07-10 00:39:30 +02:00
woodpecker[bot]
512728bf30 chore(release): 1.3.2
All checks were successful
ci/woodpecker/tag/checks Pipeline was successful
ci/woodpecker/push/checks Pipeline was successful
ci/woodpecker/tag/publish Pipeline was successful
2023-07-09 22:33:10 +00:00
woodpecker[bot]
53b0fb3732 chore(release): 1.3.2-0
All checks were successful
ci/woodpecker/manual/checks Pipeline was successful
ci/woodpecker/manual/release Pipeline was successful
2023-07-09 22:30:27 +00:00
woodpecker[bot]
0975561df9 chore(release): 1.3.1
All checks were successful
ci/woodpecker/push/checks Pipeline was successful
ci/woodpecker/manual/checks Pipeline was successful
ci/woodpecker/manual/release Pipeline was successful
2023-07-09 22:26:30 +00:00
694641c1da
ci: switch to gitea + woodpecker
All checks were successful
ci/woodpecker/pr/checks Pipeline was successful
ci/woodpecker/push/checks Pipeline was successful
ci/woodpecker/manual/checks Pipeline was successful
ci/woodpecker/manual/release Pipeline was successful
2023-07-10 00:18:44 +02:00
18 changed files with 477 additions and 387 deletions

View file

@ -0,0 +1,99 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
name: Bug Report
about: File a bug report
labels: ["bug", "to be confirmed"]
body:
- type: markdown
attributes:
value: |
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/tickwerk/issues) before submitting a new one.
Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information.
- type: markdown
attributes:
value: |
## Issue Description
- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What is the behavior that you expected?
validations:
required: true
- type: textarea
id: current
attributes:
label: Current Behavior
description: What is the current behavior, i.e., what happens actually?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: What are the steps to reproduce the problem?
placeholder: |
1.
2.
3.
4.
validations:
required: true
- type: textarea
id: context
attributes:
label: Context
description: Please provide any additional context that might be helpful, e.g. log messages, screenshots, videos, or exports of problematic scenes or worlds.
validations:
required: false
- type: markdown
attributes:
value: |
## Environment Details
- type: input
id: version
attributes:
label: Version
description: Which version(s) of Tickwerk are you seeing the problem on?
validations:
required: true
- type: input
id: foundry-version
attributes:
label: Foundry VTT Version
description: Which version(s) and build of Foundry VTT are you seeing the problem on?
validations:
required: true
- type: input
id: os
attributes:
label: Operating System
description: Which operating system are you using? (Windows, OS X, Linux (which distro))
placeholder: Windows
validations:
required: true
- type: dropdown
id: browser
attributes:
label: Browser / App
description: Are you using a Browser or the native Electron application? (Select all that apply)
multiple: true
options:
- Native Electron App
- Chrome
- Firefox
- Microsoft Edge
- Safari
- Other
validations:
required: true
- type: input
id: modules
attributes:
label: Relevant Modules
description: Please list any other active modules (including their versions) that you think might be relevant.
validations:
required: false

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
blank_issues_enabled: false

View file

@ -0,0 +1,28 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
name: Feature Request
description: Submit a feature request
labels: ["feature"]
body:
- type: markdown
attributes:
value: |
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/tickwerk/issues) before submitting a new one.
In order to submit an effective feature request, please provide the following information.
- type: textarea
id: description
attributes:
label: Description
description: Please describe the proposal in as much detail as you feel is necessary.
validations:
required: true
- type: textarea
id: context
attributes:
label: Context
description: Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already.
validations:
required: false

View file

@ -1,173 +0,0 @@
# SPDX-FileCopyrightText: 2021 Johannes Loher
# SPDX-FileCopyrightText: 2021 Oliver Rümpelein
#
# SPDX-License-Identifier: MIT
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
- if: $CI_COMMIT_TAG
variables:
PACKAGE_NAME: tickwerk
PACKAGE_TYPE: module
PACKAGE_REGISTRY_URL: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/$PACKAGE_NAME
stages:
- check
- build
- prepare-release
- release
- publish
image: node:lts
cache: &global_cache
paths:
- .yarn/cache
lint:
stage: check
before_script:
- yarn install --immutable
script:
- yarn lint
cache:
<<: *global_cache
reuse:
stage: check
image:
name: fsfe/reuse:latest
entrypoint: ['']
script:
- reuse lint
commitlint:
stage: check
before_script:
- yarn install --immutable
script:
- yarn run commitlint --from $CI_MERGE_REQUEST_DIFF_BASE_SHA
rules:
- if: "$CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_DIFF_BASE_SHA"
build:
stage: build
before_script:
- yarn install --immutable
- if [[ ! -z ${CI_COMMIT_TAG+x} ]]; then export NODE_ENV=production; fi
script:
- yarn build
cache:
<<: *global_cache
artifacts:
paths:
- dist
expire_in: 1 week
publish-artifacts:
stage: prepare-release
image: alpine:latest
before_script:
- apk update
- apk add zip curl
script: |
cd dist
zip -r ../$PACKAGE_TYPE.zip .
cd ..
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $PACKAGE_TYPE.zip "$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.zip"
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file dist/$PACKAGE_TYPE.json "$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.json"
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
changelog:
stage: prepare-release
before_script:
- yarn install --immutable
script:
- yarn changelog
cache:
<<: *global_cache
artifacts:
paths:
- CHANGELOG.md
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
.release-template: &release-template
stage: release
before_script:
- yarn install
- apt update
- apt install --yes jq
- REPOSITORY_URL=$(echo "${CI_REPOSITORY_URL}" | sed -e "s|gitlab-ci-token:.*@|${RELEASE_TOKEN}:${RELEASE_TOKEN_SECRET}@|g")
- git remote set-url origin $REPOSITORY_URL
- git config user.name $GITLAB_USER_LOGIN
- git config user.email $GITLAB_USER_EMAIL
- git branch -D ci-processing || true
- git checkout -b ci-processing
cache:
<<: *global_cache
script: |
yarn bump-version --release=${RELEASE_TYPE}
RELEASE_VERSION=$(jq -r '.version' < package.json)
git add package.json module.json
git --no-pager diff
git commit -m "chore(release): ${RELEASE_VERSION}"
git tag -f ${RELEASE_VERSION}
git push origin ci-processing:${CI_BUILD_REF_NAME} -o ci.skip
git push origin ${RELEASE_VERSION}
only:
- main
when: manual
release-patch:
variables:
RELEASE_TYPE: patch
<<: *release-template
release-minor:
variables:
RELEASE_TYPE: minor
<<: *release-template
release-major:
variables:
RELEASE_TYPE: major
<<: *release-template
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo 'release job'
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
release:
tag_name: $CI_COMMIT_TAG
description: './CHANGELOG.md'
assets:
links:
- name: '$PACKAGE_TYPE.zip'
url: '$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.zip'
filepath: /$PACKAGE_TYPE.zip
link_type: package
- name: '$PACKAGE_TYPE.json'
url: '$PACKAGE_REGISTRY_URL/$CI_COMMIT_TAG/$PACKAGE_TYPE.json'
filepath: /$PACKAGE_TYPE.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 dist/$PACKAGE_TYPE.json "$PACKAGE_REGISTRY_URL/latest/$PACKAGE_TYPE.json"
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'

View file

@ -1,48 +0,0 @@
Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/tickwerk/-/issues) before submitting a new one.
Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information.
# Issue Description
## Expected Behavior
(What is the behavior that you expected?)
## Current Behavior
(What is the current behavior, i.e., what happens actually?)
## Steps to Reproduce
(What are the steps to reproduce the problem?)
1. ...
2. ...
3. ...
## Context
(Please provide any additional context that might be helpful, e.g. log messages,
screenshots, videos, or exports of problematic scenes or worlds.)
# Environment Details
## Version
(Which version(s) of Tickwerk are you seeing the problem on?)
## Foundry VTT Version
(Which version(s) and build of Foundry VTT are you seeing the problem on?)
## Operating System
(Which operating system are you using? (Windows, OS X, Linux (which distro)))
## Browser / App
(Are you using a Browser or the native Electron application?)
## Relevant Modules
(Please list any active modules (including their versions) that you think might be relevant.)

View file

@ -1,3 +0,0 @@
SPDX-FileCopyrightText: 2022 Johannes Loher
SPDX-License-Identifier: MIT

View file

@ -1,11 +0,0 @@
Your issue may already have been reported! Please search on the issue tracker (https://git.f3l.de/dungeonslayers/tickwerk/-/issues) before submitting a new one.
In order to submit an effective feature request, please provide the following information.
# Description
(Please describe the proposal in as much detail as you feel is necessary.)
# Context
(Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already.)

View file

@ -1,3 +0,0 @@
SPDX-FileCopyrightText: 2022 Johannes Loher
SPDX-License-Identifier: MIT

2
.vscode/launch.json vendored
View file

@ -5,7 +5,7 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"type": "pwa-chrome", "type": "chrome",
"request": "launch", "request": "launch",
"runtimeExecutable": "/usr/bin/chromium", "runtimeExecutable": "/usr/bin/chromium",
"name": "Launch Chrome against localhost", "name": "Launch Chrome against localhost",

View file

@ -5,10 +5,4 @@
}, },
"eslint.nodePath": ".yarn/sdks", "eslint.nodePath": ".yarn/sdks",
"prettier.prettierPath": ".yarn/sdks/prettier/index.js", "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
"importSorter.generalConfiguration.sortOnBeforeSave": true,
"importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.type": "newLineEachExpressionAfterCountLimitExceptIfOnlyOne",
"importSorter.importStringConfiguration.maximumNumberOfImportExpressionsPerLine.count": 120,
"importSorter.importStringConfiguration.tabSize": 2,
"importSorter.importStringConfiguration.quoteMark": "single",
"importSorter.importStringConfiguration.trailingComma": "multiLine"
} }

45
.woodpecker/checks.yaml Normal file
View file

@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
variables:
- &node_image node:lts
when:
- event: push
branch: ${CI_REPO_DEFAULT_BRANCH}
- event: pull_request
- event: tag
- event: manual
steps:
install:
image: *node_image
commands:
- yarn install --immutable
lint:
group: check
image: *node_image
commands:
- yarn lint
reuse:
group: check
image: fsfe/reuse:latest
commands:
- reuse lint
commitlint:
group: check
image: *node_image
commands:
- git fetch
- yarn run commitlint --from origin/${CI_COMMIT_TARGET_BRANCH}
when:
event: pull_request
build:
group: build
image: *node_image
commands:
- export APPDATA=$(pwd)
- yarn build

92
.woodpecker/publish.yaml Normal file
View file

@ -0,0 +1,92 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
variables:
- &node_image node:lts
when:
event: tag
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[0-9]+)?$"
depends_on:
- checks
steps:
install:
image: *node_image
commands:
- yarn install --immutable
build:
image: *node_image
environment:
NODE_ENV: production
commands:
- export APPDATA=$(pwd)
- yarn build
package:
group: prepare-release
image: alpine:latest
commands:
- apk update
- apk add zip curl
- mv dist ${CI_REPO_NAME}
- zip -r ${CI_REPO_NAME}.zip ${CI_REPO_NAME}/*
changelog:
group: prepare-release
image: *node_image
commands:
- yarn changelog
choose-latest-channel:
group: prepare-release
image: alpine:latest
commands:
- echo latest > .RELEASE_CHANNEL
when:
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$"
choose-beta-channel:
group: prepare-release
image: alpine:latest
commands:
- echo beta > .RELEASE_CHANNEL
when:
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+-[0-9]+$"
release:
image: woodpeckerci/plugin-gitea-release
settings:
base_url: ${CI_FORGE_URL}
title: ${CI_COMMIT_TAG}
note: CHANGELOG.md
files:
- ${CI_REPO_NAME}.zip
- ${CI_REPO_NAME}/module.json
api_key:
from_secret: forge_token
publish-manifest:
group: publish
image: alpine:latest
commands:
- apk update
- apk add curl
- export RELEASE_CHANNEL=$(cat .RELEASE_CHANNEL)
- 'curl --header "Authorization: token $${FORGE_TOKEN}" -X "DELETE" "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/module.json"'
- 'curl --fail --header "Authorization: token $${FORGE_TOKEN}" --upload-file ${CI_REPO_NAME}/module.json "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/module.json"'
secrets:
- forge_token
publish-to-foundry-admin:
group: publish
image: johannesloher/foundry-publish
environment:
FVTT_DELETE_OBSOLETE_VERSIONS: 'true'
commands:
- export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/module.json
- export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/module.json
- foundry-publish
secrets:
- fvtt_package_id
- fvtt_username
- fvtt_password
when:
evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$"

41
.woodpecker/release.yaml Normal file
View file

@ -0,0 +1,41 @@
# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
variables:
- &node_image node:lts
when:
event: manual
branch: ${CI_REPO_DEFAULT_BRANCH}
depends_on:
- checks
steps:
install:
image: *node_image
commands:
- yarn install --immutable
release:
image: *node_image
commands:
- apt-get update
- apt-get install --yes jq
- export REPOSITORY_URL=$(echo "${CI_REPO_CLONE_URL}" | sed -e "s|://|://$${FORGE_TOKEN_NAME}:$${FORGE_TOKEN}@|g")
- git remote set-url origin $${REPOSITORY_URL}
- git config user.name woodpecker[bot]
- git config user.email woodpecker[bot]@${CI_SYSTEM_HOST}
- yarn bump-version --release=${RELEASE_TYPE}
- export RELEASE_VERSION=$(jq -r '.version' < package.json)
- git --no-pager diff
- git add package.json module.json
- 'git commit -m "chore(release): $${RELEASE_VERSION}"'
- git tag -f $${RELEASE_VERSION}
- git push origin ${CI_COMMIT_BRANCH}
- git push origin $${RELEASE_VERSION}
secrets:
- forge_token_name
- forge_token

View file

@ -7,6 +7,12 @@ SPDX-License-Identifier: MIT
# Tickwerk # Tickwerk
[![status-badge](https://ci.f3l.de/api/badges/10/status.svg)](https://ci.f3l.de/repos/10)
[![REUSE status](https://api.reuse.software/badge/git.f3l.de/dungeonslayers/tickwerk)](https://api.reuse.software/info/git.f3l.de/dungeonslayers/tickwerk)
[![Forge installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Ftickwerk&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=tickwerk)
[![Supported foundry versions](https://img.shields.io/endpoint?url=https://foundryshields.com/version?url=https://git.f3l.de/api/packages/dungeonslayers/generic/tickwerk/latest/module.json)](https://git.f3l.de/dungeonslayers/tickwerk)
[![Ko-fi](https://img.shields.io/badge/Ko--fi-ghostfvtt-00B9FE?logo=kofi)](https://ko-fi.com/ghostfvtt)
A tick based combat system for [Foundry Virtual Tabletop]. A tick based combat system for [Foundry Virtual Tabletop].
This module adjusts the combat to use ticks instead of rounds for tracking time. This module adjusts the combat to use ticks instead of rounds for tracking time.
@ -19,7 +25,7 @@ To install and use the Tickwerk module for Foundry Virtual Tabletop,
find it in the list in the **Install Module** dialog on the Setup menu of the find it in the list in the **Install Module** dialog on the Setup menu of the
application. Alternatively, paste the following Manifest URL in that dialog: application. Alternatively, paste the following Manifest URL in that dialog:
https://git.f3l.de/api/v4/projects/dungeonslayers%2Ftickwerk/packages/generic/tickwerk/latest/module.json https://git.f3l.de/api/packages/dungeonslayers/generic/tickwerk/latest/module.json
## Development ## Development

View file

@ -1,44 +1,44 @@
{ {
"id": "tickwerk", "id": "tickwerk",
"title": "Tickwerk", "title": "Tickwerk",
"description": "A tick based combat system for Foundry Virtual Tabletop", "description": "A tick based combat system for Foundry Virtual Tabletop",
"authors": [ "authors": [
{ {
"name": "Johannes Loher", "name": "Johannes Loher",
"email": "johannes.loher@fg4f.de", "email": "johannes.loher@fg4f.de",
"discord": "ghost#2000", "discord": "ghost#2000",
"ko-fi": "ghostfvtt" "ko-fi": "ghostfvtt"
} }
], ],
"url": "https://git.f3l.de/dungeonslayers/tickwerk", "url": "https://git.f3l.de/dungeonslayers/tickwerk",
"license": "https://git.f3l.de/dungeonslayers/tickwerk/-/raw/1.3.0/LICENSE.md", "license": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.3.2/LICENSE.md",
"readme": "https://git.f3l.de/dungeonslayers/tickwerk/-/raw/1.3.0/README.md", "readme": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.3.2/README.md",
"bugs": "https://git.f3l.de/dungeonslayers/tickwerk/-/issues", "bugs": "https://git.f3l.de/dungeonslayers/tickwerk/issues",
"changelog": "https://git.f3l.de/dungeonslayers/tickwerk/-/releases/1.3.0", "changelog": "https://git.f3l.de/dungeonslayers/tickwerk/releases/tag/1.3.2",
"version": "1.3.0", "version": "1.3.2",
"compatibility": { "compatibility": {
"minimum": "10.290", "minimum": "10.290",
"verified": "10" "verified": "10"
},
"esmodules": [
"tickwerk.js"
],
"styles": [
"styles/tickwerk.css"
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "lang/en.json"
}, },
{ "esmodules": [
"lang": "de", "tickwerk.js"
"name": "Deutsch", ],
"path": "lang/de.json" "styles": [
} "styles/tickwerk.css"
], ],
"manifest": "https://git.f3l.de/dungeonslayers/tickwerk/-/releases/permalink/latest/downloads/module.json", "languages": [
"download": "https://git.f3l.de/dungeonslayers/tickwerk/-/releases/1.3.0/downloads/module.zip", {
"manifestPlusVersion": "1.2.0" "lang": "en",
"name": "English",
"path": "lang/en.json"
},
{
"lang": "de",
"name": "Deutsch",
"path": "lang/de.json"
}
],
"manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/tickwerk/latest/module.json",
"download": "https://git.f3l.de/dungeonslayers/tickwerk/releases/download/1.3.2/tickwerk.zip",
"manifestPlusVersion": "1.2.0"
} }

View file

@ -1,58 +1,58 @@
{ {
"private": true, "private": true,
"name": "tickwerk", "name": "tickwerk",
"description": "A tick based combat system for Foundry Virtual Tabletop", "description": "A tick based combat system for Foundry Virtual Tabletop",
"version": "1.3.0", "version": "1.3.2",
"license": "https://git.f3l.de/dungeonslayers/tickwerk#licensing", "license": "https://git.f3l.de/dungeonslayers/tickwerk#licensing",
"homepage": "https://git.f3l.de/dungeonslayers/tickwerk", "homepage": "https://git.f3l.de/dungeonslayers/tickwerk",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://git.f3l.de/dungeonslayers/tickwerk" "url": "https://git.f3l.de/dungeonslayers/tickwerk"
}, },
"bugs": { "bugs": {
"url": "https://git.f3l.de/dungeonslayers/tickwerk/-/issues" "url": "https://git.f3l.de/dungeonslayers/tickwerk/issues"
}, },
"contributors": [ "contributors": [
{ {
"name": "Johannes Loher", "name": "Johannes Loher",
"email": "johannes.loher@fg4f.de" "email": "johannes.loher@fg4f.de"
} }
], ],
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "run-s clean:files build:files", "build": "run-s clean:files build:files",
"build:files": "rollup -c", "build:files": "rollup -c",
"watch": "rollup -c -w", "watch": "rollup -c -w",
"link-package": "node ./tools/link-package.js", "link-package": "node ./tools/link-package.js",
"clean": "run-p clean:files clean:link", "clean": "run-p clean:files clean:link",
"clean:files": "rimraf dist", "clean:files": "rimraf dist",
"clean:link": "node ./tools/link-package.js --clean", "clean:link": "node ./tools/link-package.js --clean",
"lint": "eslint --ext .js,.cjs,.mjs .", "lint": "eslint --ext .js,.cjs,.mjs .",
"lint:fix": "eslint --ext .js,.cjs,.mjs --fix .", "lint:fix": "eslint --ext .js,.cjs,.mjs --fix .",
"format": "prettier --write \"./**/*.(js|cjs|mjs|json|scss|yml)\"", "format": "prettier --write \"./**/*.(js|cjs|mjs|json|scss|yml)\"",
"bump-version": "node ./tools/bump-version.js", "bump-version": "node ./tools/bump-version.js",
"changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2" "changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "17.6.5", "@commitlint/cli": "17.6.6",
"@commitlint/config-conventional": "17.6.5", "@commitlint/config-conventional": "17.6.6",
"@guanghechen/rollup-plugin-copy": "5.0.1", "@guanghechen/rollup-plugin-copy": "5.0.1",
"@swc/core": "1.3.62", "@swc/core": "1.3.62",
"conventional-changelog-cli": "2.2.2", "conventional-changelog-cli": "2.2.2",
"conventional-changelog-conventionalcommits": "5.0.0", "conventional-changelog-conventionalcommits": "5.0.0",
"eslint": "8.42.0", "eslint": "8.42.0",
"eslint-config-prettier": "8.8.0", "eslint-config-prettier": "8.8.0",
"eslint-plugin-prettier": "4.2.1", "eslint-plugin-prettier": "4.2.1",
"fs-extra": "11.1.1", "fs-extra": "11.1.1",
"npm-run-all": "4.1.5", "npm-run-all": "4.1.5",
"prettier": "2.8.8", "prettier": "2.8.8",
"rimraf": "5.0.1", "rimraf": "5.0.1",
"rollup": "3.23.0", "rollup": "3.23.0",
"rollup-plugin-styles": "4.0.0", "rollup-plugin-styles": "4.0.0",
"rollup-plugin-swc3": "0.8.2", "rollup-plugin-swc3": "0.8.2",
"sass": "1.62.1", "sass": "1.62.1",
"semver": "7.5.1", "semver": "7.5.1",
"yargs": "17.7.2" "yargs": "17.7.2"
}, },
"packageManager": "yarn@3.6.0" "packageManager": "yarn@3.6.0"
} }

View file

@ -7,15 +7,21 @@ import semver from 'semver';
import yargs from 'yargs'; import yargs from 'yargs';
import { hideBin } from 'yargs/helpers'; import { hideBin } from 'yargs/helpers';
const repository = 'dungeonslayers/tickwerk'; const packageType = 'module';
const gitlabURL = 'https://git.f3l.de'; const repositoryOwner = process.env.CI_REPO_OWNER;
const repositoryName = process.env.CI_REPO_NAME;
const repositoryURL = process.env.CI_REPO_LINK;
const forgeURL = process.env.CI_FORGE_URL;
const getLicenseURL = (version) => `${gitlabURL}/${repository}/-/raw/${version}/LICENSE.md`; const getManifestUrl = (channel) =>
const getReadmeURL = (version) => `${gitlabURL}/${repository}/-/raw/${version}/README.md`; `${forgeURL}/api/packages/${repositoryOwner}/generic/${repositoryName}/${channel}/${packageType}.json`;
const getChangelogURL = (version) => `${gitlabURL}/${repository}/-/releases/${version}`; const getDownloadURL = (version) => `${repositoryURL}/releases/download/${version}/${repositoryName}.zip`;
const getDownloadURL = (version) => `${gitlabURL}/${repository}/-/releases/${version}/downloads/module.zip`; const bugsURL = `${repositoryURL}/issues`;
const getChangelogURL = (version) => `${repositoryURL}/releases/tag/${version}`;
const getReadmeURL = (version) => `${repositoryURL}/raw/tag/${version}/README.md`;
const getLicenseURL = (version) => `${repositoryURL}/raw/tag/${version}/LICENSE.md`;
const manifestPath = './module.json'; const manifestPath = `${packageType}.json`;
/** /**
* Get the contents of the manifest file as object. * Get the contents of the manifest file as object.
@ -41,6 +47,15 @@ function getTargetVersion(currentVersion, release) {
} }
} }
/**
* Get the channel for a given version.
* @param {string} version The version for which to get the channel
* @returns {"latest" | "beta"} The channel for the version
*/
function getChannel(version) {
return version.includes('-') ? 'beta' : 'latest';
}
/** /**
* Update version and download URL. * Update version and download URL.
* @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version
@ -66,13 +81,16 @@ function bumpVersion(release) {
console.log(`Bumping version number to '${targetVersion}'`); console.log(`Bumping version number to '${targetVersion}'`);
packageJson.version = targetVersion; packageJson.version = targetVersion;
fs.writeJSONSync('package.json', packageJson, { spaces: 2 }); fs.writeJSONSync('package.json', packageJson, { spaces: 4 });
manifest.license = getLicenseURL(targetVersion);
manifest.readme = getReadmeURL(targetVersion);
manifest.changelog = getChangelogURL(targetVersion);
manifest.version = targetVersion; manifest.version = targetVersion;
manifest.url = repositoryURL;
manifest.manifest = getManifestUrl(getChannel(targetVersion));
manifest.download = getDownloadURL(targetVersion); manifest.download = getDownloadURL(targetVersion);
fs.writeJSONSync(manifestPath, manifest, { spaces: 2 }); manifest.bugs = bugsURL;
manifest.changelog = getChangelogURL(targetVersion);
manifest.readme = getReadmeURL(targetVersion);
manifest.license = getLicenseURL(targetVersion);
fs.writeJSONSync(manifestPath, manifest, { spaces: 4 });
} }
const argv = yargs(hideBin(process.argv)).usage('Usage: $0').option('release', { const argv = yargs(hideBin(process.argv)).usage('Usage: $0').option('release', {

View file

@ -32,12 +32,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@commitlint/cli@npm:17.6.5": "@commitlint/cli@npm:17.6.6":
version: 17.6.5 version: 17.6.6
resolution: "@commitlint/cli@npm:17.6.5" resolution: "@commitlint/cli@npm:17.6.6"
dependencies: dependencies:
"@commitlint/format": ^17.4.4 "@commitlint/format": ^17.4.4
"@commitlint/lint": ^17.6.5 "@commitlint/lint": ^17.6.6
"@commitlint/load": ^17.5.0 "@commitlint/load": ^17.5.0
"@commitlint/read": ^17.5.1 "@commitlint/read": ^17.5.1
"@commitlint/types": ^17.4.4 "@commitlint/types": ^17.4.4
@ -48,16 +48,16 @@ __metadata:
yargs: ^17.0.0 yargs: ^17.0.0
bin: bin:
commitlint: cli.js commitlint: cli.js
checksum: acc57bdb732bf308c65e01a13d6b42f6f5f1a4dc40b2e743a5c0a4e797423fa8a2c9b4cc5377d9e6df47c06dc17e190081f7b7c0361c31de22dcf1a05619fa8a checksum: 91c2d06bc181cb286634d963e28c71739642a94252dcf2bcd800dd3ac1d8708d8ccd195aa513a65df00fcde281a128ed763ac51f640771a11140930c5f259df8
languageName: node languageName: node
linkType: hard linkType: hard
"@commitlint/config-conventional@npm:17.6.5": "@commitlint/config-conventional@npm:17.6.6":
version: 17.6.5 version: 17.6.6
resolution: "@commitlint/config-conventional@npm:17.6.5" resolution: "@commitlint/config-conventional@npm:17.6.6"
dependencies: dependencies:
conventional-changelog-conventionalcommits: ^5.0.0 conventional-changelog-conventionalcommits: ^5.0.0
checksum: f2c637a9935044d6dc800eabbb0e032354afb35a7c0dd65d37115320a0fbcf4586ad769647039d0d9347988182213d7ee53339df2af9b2c8a51209ab0225366f checksum: 0f649a2cbe684aa18555cb0027c21f58d74216dbe0a850be041af50f1db04e447b7d90995bee54c61059d735b398de61ac7ecbfd312d14480aac3a3f8c62dd66
languageName: node languageName: node
linkType: hard linkType: hard
@ -102,25 +102,25 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@commitlint/is-ignored@npm:^17.6.5": "@commitlint/is-ignored@npm:^17.6.6":
version: 17.6.5 version: 17.6.6
resolution: "@commitlint/is-ignored@npm:17.6.5" resolution: "@commitlint/is-ignored@npm:17.6.6"
dependencies: dependencies:
"@commitlint/types": ^17.4.4 "@commitlint/types": ^17.4.4
semver: 7.5.0 semver: 7.5.2
checksum: 2b7b7f0773192bb8da018fa789689751ac5692af01e1754a214aaebc8253ee533c191409835af0fdb3c12b2fbb4bec43aeb9e442fca165646db1382ea6c21ec9 checksum: ff5f8816765b3f2e9f16de32b1166dd099ab23793212bf4092203441fe3d9f282c80ed96cca5cd42b0ea96d899f8989bdaa6604a3f02bf4bd36b8c7c123968df
languageName: node languageName: node
linkType: hard linkType: hard
"@commitlint/lint@npm:^17.6.5": "@commitlint/lint@npm:^17.6.6":
version: 17.6.5 version: 17.6.6
resolution: "@commitlint/lint@npm:17.6.5" resolution: "@commitlint/lint@npm:17.6.6"
dependencies: dependencies:
"@commitlint/is-ignored": ^17.6.5 "@commitlint/is-ignored": ^17.6.6
"@commitlint/parse": ^17.6.5 "@commitlint/parse": ^17.6.5
"@commitlint/rules": ^17.6.5 "@commitlint/rules": ^17.6.5
"@commitlint/types": ^17.4.4 "@commitlint/types": ^17.4.4
checksum: 6a6c04a5ecaa89a3ad8a009489d85937ad4093d2b17dbfb9ec8ac3e7f84fac1cb04876bdd1e6306fb665474ca438598c2b874e9e44d4372a3bd99c34afcafca3 checksum: 8601cbfe037edd4aff38cf3929444e748499558dfb01a12f1e6067fb4496926711936cbd389cf792f5e3ea6b6900c6967ca5b56dc0555d75c71340ceddc6d076
languageName: node languageName: node
linkType: hard linkType: hard
@ -4830,17 +4830,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:7.5.0":
version: 7.5.0
resolution: "semver@npm:7.5.0"
dependencies:
lru-cache: ^6.0.0
bin:
semver: bin/semver.js
checksum: 2d266937756689a76f124ffb4c1ea3e1bbb2b263219f90ada8a11aebebe1280b13bb76cca2ca96bdee3dbc554cbc0b24752eb895b2a51577aa644427e9229f2b
languageName: node
linkType: hard
"semver@npm:7.5.1, semver@npm:^7.3.4, semver@npm:^7.3.5": "semver@npm:7.5.1, semver@npm:^7.3.4, semver@npm:^7.3.5":
version: 7.5.1 version: 7.5.1
resolution: "semver@npm:7.5.1" resolution: "semver@npm:7.5.1"
@ -4852,6 +4841,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:7.5.2":
version: 7.5.2
resolution: "semver@npm:7.5.2"
dependencies:
lru-cache: ^6.0.0
bin:
semver: bin/semver.js
checksum: 3fdf5d1e6f170fe8bcc41669e31787649af91af7f54f05c71d0865bb7aa27e8b92f68b3e6b582483e2c1c648008bc84249d2cd86301771fe5cbf7621d1fe5375
languageName: node
linkType: hard
"semver@npm:^6.0.0": "semver@npm:^6.0.0":
version: 6.3.0 version: 6.3.0
resolution: "semver@npm:6.3.0" resolution: "semver@npm:6.3.0"
@ -5324,8 +5324,8 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "tickwerk@workspace:." resolution: "tickwerk@workspace:."
dependencies: dependencies:
"@commitlint/cli": 17.6.5 "@commitlint/cli": 17.6.6
"@commitlint/config-conventional": 17.6.5 "@commitlint/config-conventional": 17.6.6
"@guanghechen/rollup-plugin-copy": 5.0.1 "@guanghechen/rollup-plugin-copy": 5.0.1
"@swc/core": 1.3.62 "@swc/core": 1.3.62
conventional-changelog-cli: 2.2.2 conventional-changelog-cli: 2.2.2