73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
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}`);
|
|
|
|
// 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}`;
|
|
}
|