mirror of
https://git.sanhost.net/sanasol/hytale-f2p.git
synced 2026-02-26 14:51:48 -03:00
Compare commits
3 Commits
v2.3.0-tes
...
v2.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a71fdac8c | ||
|
|
4b9eae215b | ||
|
|
1510eceb0f |
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@@ -9,8 +9,8 @@ on:
|
|||||||
env:
|
env:
|
||||||
# Domain for small API calls (goes through Cloudflare - fine for <100MB)
|
# Domain for small API calls (goes through Cloudflare - fine for <100MB)
|
||||||
FORGEJO_API: https://git.sanhost.net/api/v1
|
FORGEJO_API: https://git.sanhost.net/api/v1
|
||||||
# Direct to Forgejo port (bypasses Cloudflare + Traefik for large uploads)
|
# Direct upload URL (bypasses Cloudflare for large files) - set in repo secrets
|
||||||
FORGEJO_UPLOAD: http://208.69.78.130:3001/api/v1
|
FORGEJO_UPLOAD: ${{ secrets.FORGEJO_UPLOAD_URL }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-release:
|
create-release:
|
||||||
@@ -107,13 +107,13 @@ jobs:
|
|||||||
- run: npm ci
|
- run: npm ci
|
||||||
|
|
||||||
- name: Build Linux Packages
|
- name: Build Linux Packages
|
||||||
run: npx electron-builder --linux AppImage deb rpm --publish never
|
run: npx electron-builder --linux AppImage deb rpm pacman --publish never
|
||||||
|
|
||||||
- name: Upload to Release
|
- name: Upload to Release
|
||||||
run: |
|
run: |
|
||||||
RELEASE_ID=$(curl -s "${FORGEJO_API}/repos/${GITHUB_REPOSITORY}/releases/tags/${{ github.ref_name }}" \
|
RELEASE_ID=$(curl -s "${FORGEJO_API}/repos/${GITHUB_REPOSITORY}/releases/tags/${{ github.ref_name }}" \
|
||||||
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" | python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])')
|
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" | python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])')
|
||||||
for file in dist/*.AppImage dist/*.AppImage.blockmap dist/*.deb dist/*.rpm dist/latest-linux.yml; do
|
for file in dist/*.AppImage dist/*.AppImage.blockmap dist/*.deb dist/*.rpm dist/*.pacman dist/latest-linux.yml; do
|
||||||
[ -f "$file" ] || continue
|
[ -f "$file" ] || continue
|
||||||
echo "Uploading $file..."
|
echo "Uploading $file..."
|
||||||
curl -s --max-time 600 -X POST "${FORGEJO_UPLOAD}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=$(basename $file)" \
|
curl -s --max-time 600 -X POST "${FORGEJO_UPLOAD}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=$(basename $file)" \
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ const logger = require('./logger');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
|
const https = require('https');
|
||||||
|
|
||||||
|
const FORGEJO_API = 'https://git.sanhost.net/api/v1';
|
||||||
|
const FORGEJO_REPO = 'sanasol/hytale-f2p';
|
||||||
|
|
||||||
class AppUpdater {
|
class AppUpdater {
|
||||||
constructor(mainWindow) {
|
constructor(mainWindow) {
|
||||||
@@ -14,6 +18,34 @@ class AppUpdater {
|
|||||||
this.setupAutoUpdater();
|
this.setupAutoUpdater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch the latest non-draft release tag from Forgejo and set the feed URL
|
||||||
|
*/
|
||||||
|
async _resolveUpdateUrl() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
https.get(`${FORGEJO_API}/repos/${FORGEJO_REPO}/releases?limit=5`, (res) => {
|
||||||
|
let data = '';
|
||||||
|
res.on('data', (chunk) => data += chunk);
|
||||||
|
res.on('end', () => {
|
||||||
|
try {
|
||||||
|
const releases = JSON.parse(data);
|
||||||
|
const latest = releases.find(r => !r.draft && !r.prerelease);
|
||||||
|
if (latest) {
|
||||||
|
const url = `https://git.sanhost.net/${FORGEJO_REPO}/releases/download/${latest.tag_name}`;
|
||||||
|
console.log(`Auto-update URL resolved to: ${url}`);
|
||||||
|
autoUpdater.setFeedURL({ provider: 'generic', url });
|
||||||
|
resolve(url);
|
||||||
|
} else {
|
||||||
|
reject(new Error('No published release found'));
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}).on('error', reject);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
setupAutoUpdater() {
|
setupAutoUpdater() {
|
||||||
|
|
||||||
// Configure logger for electron-updater
|
// Configure logger for electron-updater
|
||||||
@@ -216,8 +248,10 @@ class AppUpdater {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkForUpdatesAndNotify() {
|
checkForUpdatesAndNotify() {
|
||||||
// Check for updates and notify if available
|
// Resolve latest release URL then check for updates
|
||||||
autoUpdater.checkForUpdatesAndNotify().catch(err => {
|
this._resolveUpdateUrl().catch(err => {
|
||||||
|
console.warn('Failed to resolve update URL:', err.message);
|
||||||
|
}).then(() => autoUpdater.checkForUpdatesAndNotify()).catch(err => {
|
||||||
console.error('Failed to check for updates:', err);
|
console.error('Failed to check for updates:', err);
|
||||||
|
|
||||||
// Network errors are not critical - just log and continue
|
// Network errors are not critical - just log and continue
|
||||||
@@ -245,8 +279,10 @@ class AppUpdater {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkForUpdates() {
|
checkForUpdates() {
|
||||||
// Manual check for updates (returns promise)
|
// Manual check - resolve latest release URL first
|
||||||
return autoUpdater.checkForUpdates().catch(err => {
|
return this._resolveUpdateUrl().catch(err => {
|
||||||
|
console.warn('Failed to resolve update URL:', err.message);
|
||||||
|
}).then(() => autoUpdater.checkForUpdates()).catch(err => {
|
||||||
console.error('Failed to check for updates:', err);
|
console.error('Failed to check for updates:', err);
|
||||||
|
|
||||||
// Network errors are not critical - just return no update available
|
// Network errors are not critical - just return no update available
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
provider: github
|
provider: generic
|
||||||
owner: amiayweb # Change to your own GitHub username
|
url: https://git.sanhost.net/sanasol/hytale-f2p/releases/latest/download
|
||||||
repo: Hytale-F2P
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hytale-f2p-launcher",
|
"name": "hytale-f2p-launcher",
|
||||||
"version": "2.2.2",
|
"version": "2.3.0",
|
||||||
"description": "A modern, cross-platform launcher for Hytale with automatic updates and multi-client support",
|
"description": "A modern, cross-platform launcher for Hytale with automatic updates and multi-client support",
|
||||||
"homepage": "https://github.com/amiayweb/Hytale-F2P",
|
"homepage": "https://github.com/amiayweb/Hytale-F2P",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
@@ -118,9 +118,8 @@
|
|||||||
"createStartMenuShortcut": true
|
"createStartMenuShortcut": true
|
||||||
},
|
},
|
||||||
"publish": {
|
"publish": {
|
||||||
"provider": "github",
|
"provider": "generic",
|
||||||
"owner": "amiayweb",
|
"url": "https://git.sanhost.net/sanasol/hytale-f2p/releases/latest/download"
|
||||||
"repo": "Hytale-F2P"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user