From d6f50fc51a6233036f7fc3d7d9956c6f63366cc4 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Mon, 15 May 2023 16:22:13 +0200 Subject: [PATCH] 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