import { execSync } from "child_process"; import { readFileSync, mkdirSync, writeFileSync, readdirSync, copyFileSync, } from "fs"; const libName = process.env.PWD.split("/").slice(-1)[0]; const version = readFileSync("version", { encoding: "utf8" }); const tarName = `${libName}-${version}.tar`; const repoBaseUrl = `${process.env.INPUT_REPO_URL}/${libName}/${version}`; const packageJsonUrls = []; // create base lib dir mkdirSync(libName); // Add base lib file to repo writeFileSync(`${libName}/__init__.py`, ""); // Update urls packageJsonUrls.push([`${libName}/__init__.py`, `__init__.py`]); // Generate module folders/files for (let modPy of readdirSync(".").filter((f) => f.slice(-3) == ".py")) { const modName = modPy.slice(0, -3); const modInitPath = `${modName}/__init__.py`; const modPyPath = `${modName}/${modName}.py`; // create mod dir mkdirSync(`${libName}/${modName}`); // move py file copyFileSync(modPy, `${libName}/${modPyPath}`, { encoding: "utf8", }); // Add module files to repo writeFileSync(`${libName}/${modInitPath}`, ""); // Update urls packageJsonUrls.push([`${libName}/${modInitPath}`, `${modInitPath}`]); packageJsonUrls.push([`${libName}/${modPyPath}`, `${modPyPath}`]); } // Add package.json to repo writeFileSync( `${libName}/package.json`, JSON.stringify({ urls: packageJsonUrls, deps: [], version: version, }), ); // create tar file execSync(`tar cf ${tarName} ${libName}`, { encoding: "utf8", }); console.log(readdirSync(libName)); let r = await fetch(`${repoBaseUrl}/${tarName}`, { method: "PUT", headers: { Authorization: `Basic ${Buffer.from(`${process.env.INPUT_REPO_USER}:${process.env.INPUT_REPO_PASS}`).toString("base64")}`, }, body: readFileSync(tarName).buffer, }); if (r.status > 399) { throw `${r.status}: FAILED TO UPLOAD TO ${repoBaseUrl}`; }