mirror of
https://git.sanhost.net/sanasol/hytale-f2p
synced 2026-02-26 16:21:49 -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:
|
||||
# Domain for small API calls (goes through Cloudflare - fine for <100MB)
|
||||
FORGEJO_API: https://git.sanhost.net/api/v1
|
||||
# Direct to Forgejo port (bypasses Cloudflare + Traefik for large uploads)
|
||||
FORGEJO_UPLOAD: http://208.69.78.130:3001/api/v1
|
||||
# Direct upload URL (bypasses Cloudflare for large files) - set in repo secrets
|
||||
FORGEJO_UPLOAD: ${{ secrets.FORGEJO_UPLOAD_URL }}
|
||||
|
||||
jobs:
|
||||
create-release:
|
||||
@@ -107,13 +107,13 @@ jobs:
|
||||
- run: npm ci
|
||||
|
||||
- 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
|
||||
run: |
|
||||
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"])')
|
||||
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
|
||||
echo "Uploading $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 path = require('path');
|
||||
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 {
|
||||
constructor(mainWindow) {
|
||||
@@ -14,6 +18,34 @@ class AppUpdater {
|
||||
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() {
|
||||
|
||||
// Configure logger for electron-updater
|
||||
@@ -216,8 +248,10 @@ class AppUpdater {
|
||||
}
|
||||
|
||||
checkForUpdatesAndNotify() {
|
||||
// Check for updates and notify if available
|
||||
autoUpdater.checkForUpdatesAndNotify().catch(err => {
|
||||
// Resolve latest release URL then check for updates
|
||||
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);
|
||||
|
||||
// Network errors are not critical - just log and continue
|
||||
@@ -245,8 +279,10 @@ class AppUpdater {
|
||||
}
|
||||
|
||||
checkForUpdates() {
|
||||
// Manual check for updates (returns promise)
|
||||
return autoUpdater.checkForUpdates().catch(err => {
|
||||
// Manual check - resolve latest release URL first
|
||||
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);
|
||||
|
||||
// Network errors are not critical - just return no update available
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
provider: github
|
||||
owner: amiayweb # Change to your own GitHub username
|
||||
repo: Hytale-F2P
|
||||
provider: generic
|
||||
url: https://git.sanhost.net/sanasol/hytale-f2p/releases/latest/download
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"homepage": "https://github.com/amiayweb/Hytale-F2P",
|
||||
"main": "main.js",
|
||||
@@ -118,9 +118,8 @@
|
||||
"createStartMenuShortcut": true
|
||||
},
|
||||
"publish": {
|
||||
"provider": "github",
|
||||
"owner": "amiayweb",
|
||||
"repo": "Hytale-F2P"
|
||||
"provider": "generic",
|
||||
"url": "https://git.sanhost.net/sanasol/hytale-f2p/releases/latest/download"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user