core/component-dependencies.ts (44 lines of code) (raw):

/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import { resolve } from "path"; import winston from "winston"; import { IBuiltStage } from "./pipeline-types"; import { IPipelineSchema } from "./rockefeller"; import crypto from "crypto"; export interface IComponentDependencies { logger: winston.Logger, dataRoot: string, workspaceRoot: string, library: { [key: string]: IBuiltStage }, localPipelineSchema: IPipelineSchema, pipelineSchema: IPipelineSchema, /* pipeline schema at root */ variables: { managed: {[key: string]: any}, defined: {[key: string]: any}, } setManagedVariable: (key: string, value: any) => void, } export function initDependencies(buildSchema: IPipelineSchema): IComponentDependencies { const logger = winston.createLogger({ level: 'debug', /* stylize the logs to a familiar format... */ format: winston.format.printf((info) => `[${info.level}] [${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString('en-US', { hour12: false })}] ${info.message}`), transports: [ // // - Write all logs with importance level of `error` or less to `error.log` // - Write all logs with importance level of `info` or less to `combined.log` // new winston.transports.Console(), /*new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }),*/ ], }); return { logger, dataRoot: resolve("./data"), workspaceRoot: resolve("./workspace"), library: {}, localPipelineSchema: buildSchema, pipelineSchema: buildSchema, variables: { managed: { workspaceRoot: resolve("./workspace"), dataRoot: resolve("./data"), testUUID: crypto.randomUUID(), }, defined: {}, }, setManagedVariable: (key: string, value: any) => {}, }; }