Files
py_publish/action.js
T
bryce 3a79dadc03
Push to main / Reset-Version-Tag (push) Successful in 6s
a
2026-05-18 15:14:35 -06:00

69 lines
1.8 KiB
JavaScript

import { execSync } from "child_process";
import { readFileSync, mkdirSync, writeFileSync, readdirSync } 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}`;
}