import * as path from 'path' import * as pMap from 'p-map' import { CONFIG_DEFAULT } from '@plastichub/osr-cli-commons' import { resolve } from '@plastichub/osr-cli-commons/fs' import { files } from '@plastichub/osr-cli-commons/glob' import { sync as cp } from '@plastichub/fs/copy' import { sync as exists } from '@plastichub/fs/exists' import { sync as rm } from '@plastichub/fs/remove' import { sync as read } from '@plastichub/fs/read' import { sync as write } from '@plastichub/fs/write' import { logger as _logger } from '@plastichub/core/debug' import * as ExifReader from 'exifreader' import { Logger, TTransportLogger, ILogObject } from 'tslog' import { createStream } from "rotating-file-stream" import { sanitize } from '@plastichub/osr-i18n/_cli' import { translateText } from '@plastichub/osr-i18n/lib/translate' import { IOptions as IOptionsI18n } from '@plastichub/osr-i18n/types' import { translate } from '@plastichub/osr-i18n/lib/translate' import { resize, getResizePatterns, format, getFormats, meta } from '@plastichub/osr-media/lib/media/images' import { ENABLED_PRODUCTS, I18N_SOURCE_LANGUAGE, I18N_STORE, LANGUAGES, OSRL_ENV, OSRL_LANG_FLAVOR, OSRL_MODULE_NAME, OSR_ROOT, PRODUCTS_TARGET_SRC, PRODUCT_CONFIG, PRODUCT_HUGO_TEMPLATE, OSRL_PRODUCT_PROFILE, PRODUCT_ROOT, PRODUCT_DIR, OSRL_ENVIRONMENT, RETAIL_LOG_LEVEL_I18N_PRODUCT_ASSETS, TASK_CONFIG_LOG_DIRECTORY } from './config' import { GalleryImage } from './images' const debug = false const verbose = true const logger = _logger('ph-site') const IMAGES_GLOB = '*.+(JPG|jpg|png|PNG|gif)' const _convertProductMedia = true const _translateProductAssets = true const _populateProductDefaults = true export const createSubLogger = (root: Logger, level: string, name: string): Logger => { const ret = root.getChildLogger({ name, type: "pretty", displayInstanceName: true, displayFilePath: 'hidden', instanceName: name, displayFunctionName: true, displayRequestId: true, displayLogLevel: true, colorizePrettyLogs: true, hostname: "osr-cli", displayLoggerName: true, displayTypes: false, prefix: ["\n\t "], }) const logFile = path.resolve(resolve(`${TASK_CONFIG_LOG_DIRECTORY}/${name}.log`)) const stream = createStream(logFile, { size: "10M", // rotate every 10 MegaBytes written interval: "1d", // rotate daily compress: "gzip", // compress rotated files }); const transport = { minLevel: level, transportLogger: { info: (logObject: ILogObject) => { stream.write(JSON.stringify(logObject, null, 2) + "\n"); } } } logger.attachTransport(transport.transportLogger as any, level as any) return logger } export const writeTaskConfig = (taskName, config: any) => { const file = path.resolve(resolve(`${TASK_CONFIG_LOG_DIRECTORY}/${taskName}.json`)) write(file, JSON.stringify(config, null, 2)) }