diff --git a/env.d.ts b/env.d.ts
index 11f02fe..3ea6adc 100644
--- a/env.d.ts
+++ b/env.d.ts
@@ -1 +1,3 @@
///
+
+const __VERSION__: readonly string
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index f4a7c7a..804d588 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,6 +21,7 @@
"@types/node": "^18.16.17",
"@vitejs/plugin-vue": "^4.2.3",
"@vue/tsconfig": "^0.4.0",
+ "git-describe": "^4.1.1",
"npm-run-all": "^4.1.5",
"typescript": "~5.0.4",
"vite": "^4.3.9",
@@ -418,6 +419,12 @@
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==",
"dev": true
},
+ "node_modules/@types/semver": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "dev": true
+ },
"node_modules/@types/web-bluetooth": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
@@ -1109,6 +1116,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/git-describe": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-describe/-/git-describe-4.1.1.tgz",
+ "integrity": "sha512-JC8ganO5kO80G8+XE98TDDjnMXQN3Estk3qdJuG2EGRF/l6zuMTMcN+8OSfQZ5FWpqIRLB015anWX4aSRgnxAQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/semver": "^7.3.8",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ },
+ "optionalDependencies": {
+ "semver": "^5.6.0"
+ }
+ },
"node_modules/globalthis": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
@@ -1502,6 +1525,12 @@
"node": ">=4"
}
},
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -1858,9 +1887,9 @@
}
},
"node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
@@ -2667,6 +2696,12 @@
"integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==",
"dev": true
},
+ "@types/semver": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
+ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "dev": true
+ },
"@types/web-bluetooth": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
@@ -3228,6 +3263,17 @@
"get-intrinsic": "^1.1.1"
}
},
+ "git-describe": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-describe/-/git-describe-4.1.1.tgz",
+ "integrity": "sha512-JC8ganO5kO80G8+XE98TDDjnMXQN3Estk3qdJuG2EGRF/l6zuMTMcN+8OSfQZ5FWpqIRLB015anWX4aSRgnxAQ==",
+ "dev": true,
+ "requires": {
+ "@types/semver": "^7.3.8",
+ "lodash": "^4.17.21",
+ "semver": "^5.6.0"
+ }
+ },
"globalthis": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
@@ -3502,6 +3548,12 @@
"strip-bom": "^3.0.0"
}
},
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -3751,9 +3803,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true
},
"shebang-command": {
diff --git a/package.json b/package.json
index 313f312..a41a81b 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,8 @@
"bugs": "https://github.com/defnull/fediwall/issues",
"license": "AGPL-3.0-or-later",
"author": {
- "name" : "Marcel Hellkamp",
- "url" : "https://defnull.de/"
+ "name": "Marcel Hellkamp",
+ "url": "https://defnull.de/"
},
"private": true,
"scripts": {
@@ -29,6 +29,7 @@
"@types/node": "^18.16.17",
"@vitejs/plugin-vue": "^4.2.3",
"@vue/tsconfig": "^0.4.0",
+ "git-describe": "^4.1.1",
"npm-run-all": "^4.1.5",
"typescript": "~5.0.4",
"vite": "^4.3.9",
diff --git a/src/App.vue b/src/App.vue
index b2ef681..61cd473 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -5,6 +5,7 @@ import { useDocumentVisibility, useWindowSize, watchDebounced } from '@vueuse/co
import ConfigModal from './components/ConfigModal.vue';
import { loadConfig, type Config } from './config';
import InfoBar from './components/InfoBar.vue';
+import { gitVersion } from '@/defaults'
const config = ref();
@@ -418,9 +419,10 @@ const privacyLink = computed(() => {
}} mode]
diff --git a/src/defaults.ts b/src/defaults.ts
index 041bece..9b7621d 100644
--- a/src/defaults.ts
+++ b/src/defaults.ts
@@ -15,3 +15,5 @@ export const fallbackConfig: Config = {
// URL for a site-config file that overrides the default configuration above, if present.
export const siteConfigUrl = "wall-config.json"
+
+export const gitVersion = __VERSION__ || undefined;
diff --git a/vite.config.ts b/vite.config.ts
index a6c8698..4445fcb 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,10 +3,23 @@ import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression';
+import { gitDescribeSync } from 'git-describe';
+
+var version;
+
+try {
+ var gitInfo = gitDescribeSync();
+ version = `${gitInfo.tag}`;
+ if (gitInfo.distance)
+ version += `-${gitInfo.distance}+${gitInfo.hash}`
+} catch { }
// https://vitejs.dev/config/
export default defineConfig({
base: "./",
+ define: {
+ __VERSION__: JSON.stringify(version)
+ },
plugins: [
vue(), viteCompression()
],