import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
import { GitServer } from "@ethicdevs/fastify-git-server";
import { Env } from "../../env";
import { GitServerServiceDeps } from "./types";
const makeOnPushEvent: ServiceMethodFactory<
GitServerServiceDeps,
[GitServer.Event],
void
> = (_) => {
return ({ data, message }) => {
message.write("\n");
if (data.packType === GitServer.PackType.RECEIVE) {
const receiveBuffer = [] as string[];
message.stream.on("data", (chunk) => receiveBuffer.push(chunk));
message.stream.on("close", () => {
console.log(
"message.stream::data:",
Buffer.from(receiveBuffer.join("")).toString("utf-8")
);
});
console.log("receive-pack");
message.write("🖖 See the details of your push at:\n");
message.write(
`🧲 ${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}/${data.repoSlug}/commits/some_commit_hash\n`
);
} else if (data.packType === GitServer.PackType.UPLOAD) {
console.log("upload-pack");
message.write(`🖖 Welcome at GitFOSS ${data.username}!\n`);
}
message.write("\n");
message.accept();
};
};
export default makeOnPushEvent;