mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-13 06:10:01 -04:00
autoupdater, use ~/.config or windows equivalent for config
This commit is contained in:
parent
ba77d77036
commit
def0854064
5 changed files with 185 additions and 124 deletions
46
pnpm-lock.yaml
generated
46
pnpm-lock.yaml
generated
|
@ -1,4 +1,4 @@
|
||||||
lockfileVersion: '6.0'
|
lockfileVersion: '6.1'
|
||||||
|
|
||||||
settings:
|
settings:
|
||||||
autoInstallPeers: true
|
autoInstallPeers: true
|
||||||
|
@ -23,8 +23,8 @@ importers:
|
||||||
specifier: ^6.10.2
|
specifier: ^6.10.2
|
||||||
version: 6.10.2
|
version: 6.10.2
|
||||||
'@tomphttp/bare-client':
|
'@tomphttp/bare-client':
|
||||||
specifier: ^2.2.0-alpha
|
specifier: file:../bare-client-custom
|
||||||
version: 2.2.0-alpha
|
version: file:bare-client-custom
|
||||||
'@tomphttp/bare-server-node':
|
'@tomphttp/bare-server-node':
|
||||||
specifier: ^2.0.1
|
specifier: ^2.0.1
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
|
@ -94,10 +94,14 @@ importers:
|
||||||
version: 5.1.6
|
version: 5.1.6
|
||||||
|
|
||||||
Ultraviolet:
|
Ultraviolet:
|
||||||
|
dependencies:
|
||||||
|
bare-client-custom:
|
||||||
|
specifier: workspace:2.2.0-alpha
|
||||||
|
version: link:../bare-client-custom
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tomphttp/bare-client':
|
'@tomphttp/bare-client':
|
||||||
specifier: ^2.2.0-alpha
|
specifier: file:../bare-client-custom/
|
||||||
version: 2.2.0-alpha
|
version: file:bare-client-custom
|
||||||
css-tree:
|
css-tree:
|
||||||
specifier: ^2.3.1
|
specifier: ^2.3.1
|
||||||
version: 2.3.1
|
version: 2.3.1
|
||||||
|
@ -197,7 +201,7 @@ importers:
|
||||||
corium:
|
corium:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/browser':
|
'@rollup/browser':
|
||||||
specifier: ^3.17.2
|
specifier: ^3.28.0
|
||||||
version: 3.28.0
|
version: 3.28.0
|
||||||
'@swc/helpers':
|
'@swc/helpers':
|
||||||
specifier: ^0.4.14
|
specifier: ^0.4.14
|
||||||
|
@ -379,6 +383,9 @@ importers:
|
||||||
'@inquirer/select':
|
'@inquirer/select':
|
||||||
specifier: ^1.2.7
|
specifier: ^1.2.7
|
||||||
version: 1.2.7
|
version: 1.2.7
|
||||||
|
'@types/follow-redirects':
|
||||||
|
specifier: ^1.14.1
|
||||||
|
version: 1.14.1
|
||||||
boxen:
|
boxen:
|
||||||
specifier: ^7.1.1
|
specifier: ^7.1.1
|
||||||
version: 7.1.1
|
version: 7.1.1
|
||||||
|
@ -400,6 +407,9 @@ importers:
|
||||||
firebase:
|
firebase:
|
||||||
specifier: ^10.1.0
|
specifier: ^10.1.0
|
||||||
version: 10.1.0(react-native@0.72.3)
|
version: 10.1.0(react-native@0.72.3)
|
||||||
|
follow-redirects:
|
||||||
|
specifier: ^1.15.2
|
||||||
|
version: 1.15.2
|
||||||
inquirer:
|
inquirer:
|
||||||
specifier: ^9.2.10
|
specifier: ^9.2.10
|
||||||
version: 9.2.10
|
version: 9.2.10
|
||||||
|
@ -4409,9 +4419,6 @@ packages:
|
||||||
resolution: {integrity: sha512-WyIVnSAqzfrLejmOhh/l/LtDOeK+SHnBGi/z+QyliVP1T1JxoNE5eecwxlV+osM9J6FTAYVGNHr8/5bubaIj6Q==}
|
resolution: {integrity: sha512-WyIVnSAqzfrLejmOhh/l/LtDOeK+SHnBGi/z+QyliVP1T1JxoNE5eecwxlV+osM9J6FTAYVGNHr8/5bubaIj6Q==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@tomphttp/bare-client@2.2.0-alpha:
|
|
||||||
resolution: {integrity: sha512-xhcflOpwr92tkpp8SoDhB3nK3LHMBIjx+vgow37XobQew2k0/mXSxmaU7BsDFpOIa1CcLCEsR8gWn0v7Cy9+7Q==}
|
|
||||||
|
|
||||||
/@tomphttp/bare-server-node@2.0.1:
|
/@tomphttp/bare-server-node@2.0.1:
|
||||||
resolution: {integrity: sha512-L42TC/AldYRFBRZSxhkI0FC5TL8EC/NAsepNC/cWYTTiHQJ7mGg/vdTqNz8ShTYHr6LTHYkuD3/81nhX55SYtA==}
|
resolution: {integrity: sha512-L42TC/AldYRFBRZSxhkI0FC5TL8EC/NAsepNC/cWYTTiHQJ7mGg/vdTqNz8ShTYHr6LTHYkuD3/81nhX55SYtA==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
|
@ -4534,6 +4541,12 @@ packages:
|
||||||
'@types/qs': 6.9.7
|
'@types/qs': 6.9.7
|
||||||
'@types/serve-static': 1.15.2
|
'@types/serve-static': 1.15.2
|
||||||
|
|
||||||
|
/@types/follow-redirects@1.14.1:
|
||||||
|
resolution: {integrity: sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==}
|
||||||
|
dependencies:
|
||||||
|
'@types/node': 20.4.10
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/glob@8.1.0:
|
/@types/glob@8.1.0:
|
||||||
resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
|
resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
|
@ -4702,7 +4715,6 @@ packages:
|
||||||
|
|
||||||
/@types/uuid@9.0.2:
|
/@types/uuid@9.0.2:
|
||||||
resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==}
|
resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@types/webrtc@0.0.36:
|
/@types/webrtc@0.0.36:
|
||||||
resolution: {integrity: sha512-tYFarc92EluXU7XyRmWbkQXSbZIOHTdDOudFPal9u/TNTQuouWpIHV/2o9bNAdqvTJFjLJh/zflCOLWbL30tEQ==}
|
resolution: {integrity: sha512-tYFarc92EluXU7XyRmWbkQXSbZIOHTdDOudFPal9u/TNTQuouWpIHV/2o9bNAdqvTJFjLJh/zflCOLWbL30tEQ==}
|
||||||
|
@ -7764,6 +7776,16 @@ packages:
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/follow-redirects@1.15.2:
|
||||||
|
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
||||||
|
engines: {node: '>=4.0'}
|
||||||
|
peerDependencies:
|
||||||
|
debug: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
debug:
|
||||||
|
optional: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/for-each@0.3.3:
|
/for-each@0.3.3:
|
||||||
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -12827,7 +12849,6 @@ packages:
|
||||||
/uuid@9.0.0:
|
/uuid@9.0.0:
|
||||||
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
|
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: false
|
|
||||||
|
|
||||||
/v8-compile-cache-lib@3.0.1:
|
/v8-compile-cache-lib@3.0.1:
|
||||||
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
|
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
|
||||||
|
@ -13314,14 +13335,15 @@ packages:
|
||||||
file:bare-client-custom:
|
file:bare-client-custom:
|
||||||
resolution: {directory: bare-client-custom, type: directory}
|
resolution: {directory: bare-client-custom, type: directory}
|
||||||
name: bare-client-custom
|
name: bare-client-custom
|
||||||
|
version: 2.2.0-alpha
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/uuid': 9.0.2
|
'@types/uuid': 9.0.2
|
||||||
uuid: 9.0.0
|
uuid: 9.0.0
|
||||||
dev: false
|
|
||||||
|
|
||||||
file:corium:
|
file:corium:
|
||||||
resolution: {directory: corium, type: directory}
|
resolution: {directory: corium, type: directory}
|
||||||
name: corium
|
name: corium
|
||||||
|
version: 1.0.0-alpha.2
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/browser': 3.28.0
|
'@rollup/browser': 3.28.0
|
||||||
'@swc/helpers': 0.4.14
|
'@swc/helpers': 0.4.14
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"@esbuild-plugins/node-resolve": "^0.2.2",
|
"@esbuild-plugins/node-resolve": "^0.2.2",
|
||||||
"@inquirer/prompts": "^3.0.2",
|
"@inquirer/prompts": "^3.0.2",
|
||||||
"@inquirer/select": "^1.2.7",
|
"@inquirer/select": "^1.2.7",
|
||||||
|
"@types/follow-redirects": "^1.14.1",
|
||||||
"boxen": "^7.1.1",
|
"boxen": "^7.1.1",
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.3.1",
|
||||||
|
@ -23,6 +24,7 @@
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"express-ws": "^5.0.2",
|
"express-ws": "^5.0.2",
|
||||||
"firebase": "^10.1.0",
|
"firebase": "^10.1.0",
|
||||||
|
"follow-redirects": "^1.15.2",
|
||||||
"inquirer": "^9.2.10",
|
"inquirer": "^9.2.10",
|
||||||
"ipaddr.js": "^2.1.0",
|
"ipaddr.js": "^2.1.0",
|
||||||
"isomorphic-ws": "^5.0.0",
|
"isomorphic-ws": "^5.0.0",
|
||||||
|
|
24
server/src/autoupdater.ts
Normal file
24
server/src/autoupdater.ts
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import { datadir } from "./lib";
|
||||||
|
import { spawn } from "child_process";
|
||||||
|
import fs from "fs";
|
||||||
|
import { https } from 'follow-redirects';
|
||||||
|
let dir = datadir();
|
||||||
|
let platform = `${process.platform}-${process.arch}`
|
||||||
|
let appname = `adrift-server-${platform}`;
|
||||||
|
if (process.platform == "win32") {
|
||||||
|
appname += ".exe";
|
||||||
|
}
|
||||||
|
https.get(
|
||||||
|
"https://github.com/MercuryWorkshop/adrift/releases/latest/download/adrift-server-${}", resp => {
|
||||||
|
let file = fs.createWriteStream(`${dir}/${appname}`);
|
||||||
|
resp.pipe(file);
|
||||||
|
|
||||||
|
|
||||||
|
file.on("finish", () => {
|
||||||
|
fs.chmodSync(`${dir}/${appname}`, "755");
|
||||||
|
setTimeout(() => {
|
||||||
|
// this timeout shouldn't be needed, but it is
|
||||||
|
spawn(`${dir}/${appname}`, [], { stdio: "inherit" });
|
||||||
|
}, 2000);
|
||||||
|
});
|
||||||
|
})
|
8
server/src/lib.ts
Normal file
8
server/src/lib.ts
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
export function datadir(): string {
|
||||||
|
let base = (process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Preferences' : process.env.HOME + "/.config")) + "/adrift-server"
|
||||||
|
if (!fs.existsSync(base))
|
||||||
|
fs.mkdirSync(base);
|
||||||
|
return base;
|
||||||
|
}
|
|
@ -17,8 +17,11 @@ import TrackerList from "tracker-list";
|
||||||
|
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import { exit } from "process";
|
import { exit } from "process";
|
||||||
|
import { datadir } from "./lib";
|
||||||
|
|
||||||
async function config() {
|
async function config() {
|
||||||
|
let dir = datadir();
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!(await confirm({
|
!(await confirm({
|
||||||
message:
|
message:
|
||||||
|
@ -67,13 +70,13 @@ async function config() {
|
||||||
type,
|
type,
|
||||||
credentials,
|
credentials,
|
||||||
};
|
};
|
||||||
console.log(chalk.bold("Writing choices to config.json..."));
|
console.log(chalk.bold(`Writing choices to ${dir}/config.json...`));
|
||||||
|
|
||||||
fs.writeFile("config.json", JSON.stringify(conf), () => {});
|
fs.writeFile(`${dir}/config.json`, JSON.stringify(conf), () => { });
|
||||||
return conf;
|
return conf;
|
||||||
}
|
}
|
||||||
async function login(credentials: any) {
|
async function login(credentials: any) {
|
||||||
for (;;) {
|
for (; ;) {
|
||||||
credentials.email = await input({
|
credentials.email = await input({
|
||||||
message: "Enter your account's email address",
|
message: "Enter your account's email address",
|
||||||
});
|
});
|
||||||
|
@ -95,9 +98,11 @@ async function login(credentials: any) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(async () => {
|
(async () => {
|
||||||
|
let dir = datadir();
|
||||||
|
|
||||||
let conf;
|
let conf;
|
||||||
try {
|
try {
|
||||||
conf = JSON.parse(fs.readFileSync("config.json").toString());
|
conf = JSON.parse(fs.readFileSync(`${dir}/config.json`).toString());
|
||||||
} catch {
|
} catch {
|
||||||
conf = await config();
|
conf = await config();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue