From d6f50fc51a6233036f7fc3d7d9956c6f63366cc4 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 16:22:13 +0200 Subject: [PATCH 1/5] use bash script for unpacking during import --- package.json | 1 - server/import.mjs | 7 +------ server/unpack.sh | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 server/unpack.sh diff --git a/package.json b/package.json index 5b70f08..e341bdc 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "cytoscape-elk": "^2.1.0", "cytoscape-klay": "^3.1.4", "debounce": "^1.2.1", - "decompress": "^4.2.1", "express": "^4.18.2", "lean4-infoview": "https://gitpkg.now.sh/leanprover/vscode-lean4/lean4-infoview?de0062c", "lean4web": "github:hhu-adam/lean4web", diff --git a/server/import.mjs b/server/import.mjs index 9bda8e3..1231f74 100644 --- a/server/import.mjs +++ b/server/import.mjs @@ -1,7 +1,6 @@ import { spawn } from 'child_process' import fs from 'fs'; import request from 'request' -import decompress from 'decompress' import requestProgress from 'request-progress' import { Octokit } from 'octokit'; @@ -77,11 +76,7 @@ async function doImport (owner, repo, id) { progress[id].output += `Download from ${url}\n` await download(id, url, `tmp/artifact_${artifactId}.zip`) progress[id].output += `Download finished.\n` - progress[id].output += `Unpacking ZIP.\n` - const files = await decompress(`tmp/artifact_${artifactId}.zip`, `tmp/artifact_${artifactId}`) - if (files.length != 1) { throw Error(`Unexpected number of files in ZIP: ${files.length}`) } - progress[id].output += `Unpacking TAR.\n` - const files_inner = await decompress(`tmp/artifact_${artifactId}/${files[0].path}`, `tmp/artifact_${artifactId}_inner`) + await runProcess(id, "/bin/bash", ["./unpack.sh", artifactId],".") let manifest = fs.readFileSync(`tmp/artifact_${artifactId}_inner/manifest.json`); manifest = JSON.parse(manifest); if (manifest.length !== 1) { diff --git a/server/unpack.sh b/server/unpack.sh new file mode 100644 index 0000000..4acb2dd --- /dev/null +++ b/server/unpack.sh @@ -0,0 +1,14 @@ +#/bin/bash + +ARTIFACT_ID=$1 + +mkdir workingdir +echo "Unpacking ZIP." +unzip tmp/artifact_${ARTIFACT_ID}.zip -d tmp/artifact_${ARTIFACT_ID} +echo "Unpacking TAR." +for f in tmp/artifact_${ARTIFACT_ID}/* #Should only be one file +do + echo "Unpacking $f" + mkdir tmp/artifact_${ARTIFACT_ID}_inner + tar -xvf $f -C tmp/artifact_${ARTIFACT_ID}_inner +done From ca2c3d001fadcc306d4390dbec446e85661b0618 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 16:40:37 +0200 Subject: [PATCH 2/5] use __dirname --- server/import.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/import.mjs b/server/import.mjs index 1231f74..90b94d6 100644 --- a/server/import.mjs +++ b/server/import.mjs @@ -76,7 +76,7 @@ async function doImport (owner, repo, id) { progress[id].output += `Download from ${url}\n` await download(id, url, `tmp/artifact_${artifactId}.zip`) progress[id].output += `Download finished.\n` - await runProcess(id, "/bin/bash", ["./unpack.sh", artifactId],".") + await runProcess(id, "/bin/bash", [`${__dirname}/unpack.sh`, artifactId],".") let manifest = fs.readFileSync(`tmp/artifact_${artifactId}_inner/manifest.json`); manifest = JSON.parse(manifest); if (manifest.length !== 1) { From e17616b73d9320e284a2dd8fa7792d206721b6b9 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 16:45:17 +0200 Subject: [PATCH 3/5] add __dirname def --- server/import.mjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/import.mjs b/server/import.mjs index 90b94d6..e1de9b9 100644 --- a/server/import.mjs +++ b/server/import.mjs @@ -4,6 +4,12 @@ import request from 'request' import requestProgress from 'request-progress' import { Octokit } from 'octokit'; +import { fileURLToPath } from 'url'; +import path from 'path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + const TOKEN = process.env.LEAN4GAME_GITHUB_TOKEN const octokit = new Octokit({ auth: TOKEN From 46de9fcb77b409603ce0bdbad9883c5674836f72 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 17:02:03 +0200 Subject: [PATCH 4/5] unzip -o --- server/unpack.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/unpack.sh b/server/unpack.sh index 4acb2dd..5a765db 100644 --- a/server/unpack.sh +++ b/server/unpack.sh @@ -2,9 +2,8 @@ ARTIFACT_ID=$1 -mkdir workingdir echo "Unpacking ZIP." -unzip tmp/artifact_${ARTIFACT_ID}.zip -d tmp/artifact_${ARTIFACT_ID} +unzip -o tmp/artifact_${ARTIFACT_ID}.zip -d tmp/artifact_${ARTIFACT_ID} echo "Unpacking TAR." for f in tmp/artifact_${ARTIFACT_ID}/* #Should only be one file do From fddbcb554821ef899f9034d29e6944993946c30c Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 17:47:47 +0200 Subject: [PATCH 5/5] unzip --- NOTES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NOTES.md b/NOTES.md index f94573e..ee7a6a2 100644 --- a/NOTES.md +++ b/NOTES.md @@ -188,3 +188,10 @@ Activate config: sudo nginx -t sudo nginx -s reload ``` + + +## Install `unzip` for Importing Docker Images + +``` +sudo apt-get install unzip +```