fix import mechanism

cleanup_stuff
joneugster 1 year ago
parent 5fcdee4f71
commit 427ce43e95

@ -1 +0,0 @@
LEAN4GAME_SINGLE_GAME=false

2
.gitignore vendored

@ -1,7 +1,7 @@
node_modules
client/dist
server/build
server/games
games/
server/lakefile.olean
**/lake-packages/
**/.DS_Store

@ -0,0 +1,26 @@
# Importing games
There is an mechanism to import games into your server. In order to use this mechanism, you need
to create a [Github Access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens). A fine-grained access token with only reading rights for public
repos will suffice.
You need to set the environment variables `LEAN4GAME_GITHUB_USER` and `LEAN4GAME_GITHUB_TOKEN`
with your user name and access token.
Then you can call:
> https://{website}/import/trigger/{owner}/{repo}
where you replace:
- website: The website your server runs on, e.g. `localhost:3000`
- owner, repo: The owner and repository name of the game you want to load from github.
will trigger to download the latest version of your game from github onto your server.
Once this import reports "Done", you should be able to play your game under:
> https://{website}/#/g/{owner}/{repo}
## data management
Everything downloaded remains in the folder `lean4game/games`.
the subfolder `tmp` contains downloaded artifacts and can be deleted without loss.
The other folders should only contain the built lean-games, sorted by owner and repo.

5
server/.gitignore vendored

@ -1,3 +1,2 @@
build
adam
nng
build/
games/

@ -79,14 +79,14 @@ async function doImport (owner, repo, id) {
artifactId = artifact.id
const url = artifact.archive_download_url
// Make sure the download folder exists
if (!fs.existsSync("../../games")){
fs.mkdirSync("../../games");
if (!fs.existsSync("../games")){
fs.mkdirSync("../games");
}
if (!fs.existsSync("../../games/tmp")){
fs.mkdirSync("../../games/tmp");
if (!fs.existsSync("../games/tmp")){
fs.mkdirSync("../games/tmp");
}
progress[id].output += `Download from ${url}\n`
await download(id, url, `../../games/tmp/${owner.toLowerCase()}_${repo.toLowerCase()}_${artifactId}.zip`)
await download(id, url, `../games/tmp/${owner.toLowerCase()}_${repo.toLowerCase()}_${artifactId}.zip`)
progress[id].output += `Download finished.\n`
await runProcess(id, "/bin/bash", [`${__dirname}/unpack.sh`, artifactId, owner.toLowerCase(), repo.toLowerCase()], ".")

@ -62,11 +62,11 @@ function startServerProcess(owner, repo) {
}
let game_dir = (owner == 'local') ?
path.join(__dirname, '..', '..', repo) :
path.join(__dirname, '..', '..', 'games', `${owner}`, `${repo}`)
path.join(__dirname, '..', repo) :
path.join(__dirname, '..', 'games', `${owner}`, `${repo}`)
if(!fs.existsSync(path.join(__dirname, '..', '..', 'games'))) {
console.error(`Did not find the following folder: ${path.join(__dirname, '..', '..', 'games')}`)
if(!fs.existsSync(path.join(__dirname, '..', 'games'))) {
console.error(`Did not find the following folder: ${path.join(__dirname, '..', 'games')}`)
console.error('Did you already import any games?')
return
}
@ -119,7 +119,7 @@ function fillQueue(owner, repo) {
// TODO: We disabled queue for now
if (!isDevelopment) { // Don't use queue in development
for (let tag in games) {
for (let tag in queueLength) {
queue[tag] = []
fillQueue(tag)
}

@ -5,7 +5,7 @@ OWNER=$2
REPO=$3
echo "Creating folders"
cd ../..
cd ..
# mkdir -p games
cd games
pwd

@ -28,6 +28,9 @@ export default defineConfig({
})
],
publicDir: "client/public",
optimizeDeps: {
exclude: ['games']
},
server: {
port: 3000,
proxy: {

Loading…
Cancel
Save