/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/dlid-backup@0.5.2/lib/dlid-backup.class.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DlidBackup=void 0;const CollectorBase_type_1=require("./types/CollectorBase.type"),TargetBase_type_1=require("./types/TargetBase.type"),dlid_backup_configuration_class_1=require("./configuration/dlid-backup-configuration.class"),util_1=require("./util"),tmp=require("tmp"),Archive_1=require("./archive/Archive"),os=require("os"),util_2=require("./util"),getUtcNowString_function_1=require("./util/getUtcNowString.function"),date_macro_class_1=require("./macros/date-macro.class"),macro_store_class_1=require("./macros/macro-store.class"),fs=require("fs"),collectors_1=require("./collectors"),targets_1=require("./targets");class DlidBackup{constructor(e){this.parameters=e,this.readmeLines=[],this.version="0.5.2",util_2.logger.setLogLevel(util_1.LogLevel.Info,this.parameters)}async collect(){var e;let t=!1,o=tmp.tmpNameSync({postfix:".zip"});const i=new Archive_1.Archive(o),r=this.config.source,a={archive:i,config:this.config,options:this.config.sourceOptions,readmeLines:[]};try{t=await r.collect(a),(null===(e=a.readmeLines)||void 0===e?void 0:e.length)>0&&(this.readmeLines=this.readmeLines.concat(a.readmeLines))}catch(e){throw i.discard(),e}return{isCollected:t,zipFilename:o,archive:i}}async run(){return new Promise((async(e,t)=>{var o=new Date;try{const i=[new collectors_1.FilesystemCollector,new collectors_1.MySqlCollector,new targets_1.FileSystemTarget,new targets_1.FireStoreTarget,new targets_1.SynologyFilestationTarget];if(this.config=new dlid_backup_configuration_class_1.DlidBackupConfiguration(i,this.parameters),util_2.logger.info("version is ",this.version),this.config.macros=new macro_store_class_1.MacroStore,this.config.macros.add(new date_macro_class_1.DateMacroFormatter),await this.config.parseParameters(),0===this.config.action.indexOf("help"))return void this.help(this.config.action.replace(/^help\s?/,""));let r;if(r=await this.collect(),!r.isCollected)return util_2.logger.warn("No backup data was collected"),await r.archive.discard(),e();const a=[];a.push("DLID-BACKUP SUMMARY"),a.push("========================"),a.push("Thank you for using dlid-backup - http://github.com/dlid/dlid-backup/"),a.push(`Version: ${this.version}`),a.push(`Backup Started: ${getUtcNowString_function_1.getUtcNowString(o)}`),a.push(`Archive Created: ${getUtcNowString_function_1.getUtcNowString(new Date)}`),a.push(`Collector: ${this.config.source.name}`),a.push(`Target: ${this.config.target.name}`),a.push(`OS Type: ${os.type()}`),a.push(""),this.readmeLines=a.concat(this.readmeLines),r.archive.addString("dlid-backup.txt",this.readmeLines.join("\n")),util_2.logger.debug("Adding dlid-backup.txt to zip file"),await r.archive.save();const s=this.config.target,n={archiveFilename:r.zipFilename,config:this.config,options:this.config.targetOptions};try{await s.run(n)}catch(e){return t(e)}}catch(e){t(e)}e(!0)}))}deleteCollectedFile(e){try{fs.existsSync(e)&&(util_2.logger.debug("Deleting ",e),fs.unlinkSync(e))}catch(t){util_2.logger.debug("Error deleting ",e)}}help(e=null){if("macros"===e){console.log(),console.log("MacroStrings can be used to dynamically name files and folders"),console.log();const e=this.config.macros.format("weekly/{date:yyyy}/{date:yyyy'W'II}"),t=this.config.macros.format("monthly/{date:yyyy}/{date:yyyy-MM}");return console.log(`-t.folder="weekly/{date:yyyy}/{date:yyyy'W'II}"    -   Save weekly backup in weekly folder "${e}"`),console.log(`-t.folder="monthly/{date:yyyy}/{date:yyyy-MM}"    -   Save monthly backup "${t}"`),console.log(),void console.log("{date:<pattern>} - See https://date-fns.org/v2.14.0/docs/format for valid patterns")}console.log("\n        dlid-backup will zip [32msource[0m data\n            and save that data in [36mtarget[0m."),console.log("Usage\n            \ndlid-backup [run|explain]\n[32m-s:[0m<type> [32m--source:[0m<type>               The Source to make a backup of\n[32m-s.[0m<option>=val [32m--source[0m.<option>=val   Set an option for the source\n-t:<type> --target:<type>               The target - where to save the backup\n-t.<option>=val --target.<option>=val   Set an option for the target\n                    \n                    Sources\n                    ");var t=this.config.configurables.filter((e=>e instanceof CollectorBase_type_1.CollectorBase)),o=this.config.configurables.filter((e=>e instanceof TargetBase_type_1.TargetBase));t.forEach((e=>{const t=e;console.log(`[32m-s:${e.name}[0m - ${t.description}`);var o=e.getOptions().reduce(((e,t)=>{var o=`  -s.${t.key}=<${util_1.typeToString(t.type)}>`.length;return o>e?o:e}),0)+4;e.getOptions().forEach((e=>{var t=`  -s.${e.key}=<${util_1.typeToString(e.type)}>`.padEnd(o," "),i=!0===e.isRequired?"[required]":"";console.log(`${t} - ${i}${e.description}`)})),console.log("\n")})),console.log("Targets\n"),o.forEach((e=>{const t=e;console.log(`[36m-t:${e.name}[0m - ${t.description}`);var o=e.getOptions().reduce(((e,t)=>{var o=`  -t.${t.key}=<${util_1.typeToString(t.type)}>`.length;return o>e?o:e}),0)+4;e.getOptions().forEach((e=>{var t=`  [36m-t[0m.${e.key}=<${util_1.typeToString(e.type)}>`.padEnd(o," "),i=!0===e.isRequired?"[required]":"";console.log(`${t} - ${i}${e.description}`)})),console.log("\n")}))}}exports.DlidBackup=DlidBackup;
//# sourceMappingURL=/sm/1b8e29012ee0b6ce1d4b7b092db8cbf5218b4a43d441555cbdf4d0f772302b8a.map