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 node_modules
client/dist client/dist
server/build server/build
server/games games/
server/lakefile.olean server/lakefile.olean
**/lake-packages/ **/lake-packages/
**/.DS_Store **/.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 build/
adam games/
nng

@ -79,14 +79,14 @@ async function doImport (owner, repo, id) {
artifactId = artifact.id artifactId = artifact.id
const url = artifact.archive_download_url const url = artifact.archive_download_url
// Make sure the download folder exists // Make sure the download folder exists
if (!fs.existsSync("../../games")){ if (!fs.existsSync("../games")){
fs.mkdirSync("../../games"); fs.mkdirSync("../games");
} }
if (!fs.existsSync("../../games/tmp")){ if (!fs.existsSync("../games/tmp")){
fs.mkdirSync("../../games/tmp"); fs.mkdirSync("../games/tmp");
} }
progress[id].output += `Download from ${url}\n` 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` progress[id].output += `Download finished.\n`
await runProcess(id, "/bin/bash", [`${__dirname}/unpack.sh`, artifactId, owner.toLowerCase(), repo.toLowerCase()], ".") 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') ? let game_dir = (owner == 'local') ?
path.join(__dirname, '..', '..', repo) : path.join(__dirname, '..', repo) :
path.join(__dirname, '..', '..', 'games', `${owner}`, `${repo}`) path.join(__dirname, '..', 'games', `${owner}`, `${repo}`)
if(!fs.existsSync(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 not find the following folder: ${path.join(__dirname, '..', 'games')}`)
console.error('Did you already import any games?') console.error('Did you already import any games?')
return return
} }
@ -119,7 +119,7 @@ function fillQueue(owner, repo) {
// TODO: We disabled queue for now // TODO: We disabled queue for now
if (!isDevelopment) { // Don't use queue in development if (!isDevelopment) { // Don't use queue in development
for (let tag in games) { for (let tag in queueLength) {
queue[tag] = [] queue[tag] = []
fillQueue(tag) fillQueue(tag)
} }

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

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

Loading…
Cancel
Save