Docker image support #18

Merged
Sirherobrine23 merged 6 commits from dockerImage into main 2023-03-29 16:19:56 +00:00
7 changed files with 522 additions and 235 deletions
Showing only changes of commit e0efdbde39 - Show all commits

View File

@@ -2,6 +2,7 @@ import * as Debian from "@sirherobrine23/debian";
import { packageManeger, packageData } from "./database.js";
import { aptStreamConfig } from "./config.js";
import { extendsCrypto } from "@sirherobrine23/extends";
import { fileRestore } from "./packageManege.js"
import express from "express";
import stream from "node:stream";
import openpgp from "openpgp";
@@ -116,6 +117,7 @@ export default function main(packageManeger: packageManeger, config: aptStreamCo
Filename: path.resolve("/", pathRoot ?? "", "pool", packageComponent ?? "main", `${control.Package}_${control.Architecture}_${control.Version}.deb`),
})));
}
__stream.push(null);
return extendsCrypto.createHashAsync(comp ? comp : __stream);
});
return Object.assign(comp ? comp : __stream, __load);
@@ -149,5 +151,13 @@ export default function main(packageManeger: packageManeger, config: aptStreamCo
}));
});
app.get("/pool/:componentName/(:package)_(:arch)_(:version).deb", async (req, res, next) => {
const { componentName, package: packageName, arch, version: packageVersion } = req.params;
const packageID = (await packageManeger.search({packageComponent: componentName, packageArch: arch})).find(({packageControl: { Package, Version }}) => packageName === Package && Version === packageVersion);
if (!packageID) return res.status(404).json({error: "Package not exist"});
console.log(packageID);
return fileRestore(packageID, config).then(str => str.pipe(res.writeHead(200, {}))).catch(next);
});
return app;
}

View File

@@ -19,6 +19,7 @@ export async function fileRestore(packageDb: packageData, repoConfig: aptStreamC
return coreHttp.streamRequest(url, {headers: header, query});
} else if (source.type === "github") {
const { token } = source, { url } = packageDb.fileRestore;
return coreHttp.streamRequest(url, {headers: token ? {"Authorization": "token "+token} : {}});
} else if (source.type === "oracle_bucket") {
const { authConfig } = source, { fileRestore: { path } } = packageDb;
@@ -114,7 +115,7 @@ export class syncRepository extends EventEmitter {
this.emit("error", err);
continue;
}
await userAuth.setup().then(async () => {
for (const tag of tags) {
const manifestManeger = new dockerUtils.Manifest(await registry.getManifets(tag, userAuth), registry);