mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-11 21:12:09 +10:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
import { logger } from "../logging";
|
|
|
|
export type TaskRunContext = {
|
|
progress: (progress: number) => void;
|
|
logger: typeof logger;
|
|
};
|
|
|
|
export function wrapTaskContext(
|
|
context: TaskRunContext,
|
|
options: { min: number; max: number; prefix: string },
|
|
): TaskRunContext {
|
|
const child = context.logger.child({
|
|
prefix: options.prefix,
|
|
});
|
|
|
|
return {
|
|
progress(progress) {
|
|
if (progress > 100 || progress < 0) {
|
|
logger.warn("[wrapTaskContext] progress must be between 0 and 100");
|
|
}
|
|
|
|
// I was too tired to figure this out
|
|
// https://stackoverflow.com/a/929107
|
|
const oldRange = 100;
|
|
const newRange = options.max - options.min;
|
|
const adjustedProgress = (progress * newRange) / oldRange + options.min;
|
|
return context.progress(adjustedProgress);
|
|
},
|
|
logger: child,
|
|
};
|
|
}
|
|
|
|
|
|
// /**
|
|
// * Create a log message with a timestamp in the format YYYY-MM-DD HH:mm:ss.SSS UTC
|
|
// * @param message
|
|
// * @returns
|
|
// */
|
|
// function msgWithTimestamp(message: string): string {
|
|
// const now = new Date();
|
|
|
|
// const pad = (n: number, width = 2) => n.toString().padStart(width, "0");
|
|
|
|
// const year = now.getUTCFullYear();
|
|
// const month = pad(now.getUTCMonth() + 1);
|
|
// const day = pad(now.getUTCDate());
|
|
|
|
// const hours = pad(now.getUTCHours());
|
|
// const minutes = pad(now.getUTCMinutes());
|
|
// const seconds = pad(now.getUTCSeconds());
|
|
// const milliseconds = pad(now.getUTCMilliseconds(), 3);
|
|
|
|
// const log: typeof TaskLog.infer = {
|
|
// timestamp: `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds} UTC`,
|
|
// message,
|
|
// };
|
|
// return JSON.stringify(log);
|
|
// }
|