mirror of
				https://github.com/gnh1201/welsonjs.git
				synced 2025-10-30 20:41:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			260 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| //////////////////////////////////////////////////////////////////////////////////
 | |
| //
 | |
| //    file.js
 | |
| //    with the PIPE based IPC (lib/pipe-ipc.js)
 | |
| //
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| var STD = require("lib/std");
 | |
| var PipeIPC = require("lib/pipe-ipc");
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // fileExists
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function fileExists(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var exists = FSO.FileExists(FN);
 | |
|     FSO = null;
 | |
|     return exists;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // folderExists
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function folderExists(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var exists = FSO.FolderExists(FN);
 | |
|     FSO = null;
 | |
|     return exists;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // fileGet
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function fileGet(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var file = FSO.GetFile(FN);
 | |
|     FSO = null;
 | |
|     return file;
 | |
| }
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // readFile
 | |
| //    Read the conents of the pass filename and return as a string
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function readFile(FN, charset) {
 | |
|     if (typeof charset === "undefined") {
 | |
|         console.warn("CHARSET has not been passed. Force to UTF-8.");
 | |
|         charset = PipeIPC.CdoUTF_8;
 | |
|     }
 | |
| 
 | |
|     var text =  ''; 
 | |
|     var pipe = PipeIPC.connect("volatile");
 | |
|     pipe.setCharset(charset);
 | |
|     pipe.loadFromFile(FN, charset);
 | |
|     text += pipe.read();
 | |
|     pipe.destroy();
 | |
| 
 | |
|     return text;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // writeFile
 | |
| //    Write the passed content to named disk file
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function writeFile(FN, content, charset) {
 | |
|     if (typeof content === "undefined") {
 | |
|         console.warn("CONTENT has not been passed. Force to empty string.");
 | |
|         content = '';
 | |
|     }
 | |
|     if (typeof charset === "undefined") {
 | |
|         console.warn("CHARSET has not been passed. Force to UTF-8.");
 | |
|         charset = PipeIPC.CdoUTF_8;
 | |
|     }
 | |
| 
 | |
|     var pipe = PipeIPC.connect("volatile");
 | |
|     pipe.setCharset(charset);
 | |
|     pipe.startRecorder(FN, PipeIPC.ForWriting);
 | |
|     pipe.write(content);
 | |
|     pipe.destroy();
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // writeBinaryFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function writeBinaryFile(FN, DATA) {
 | |
|     var BinaryStream = CreateObject("ADODB.Stream");
 | |
|     BinaryStream.Type = PipeIPC.adTypeBinary;
 | |
|     BinaryStream.Open();
 | |
|     BinaryStream.Write(DATA);
 | |
|     BinaryStream.SaveToFile(FN, adSaveCreateOverWrite);
 | |
|     BinaryStream.Close();
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // moveFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function moveFile(FROM, TO) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var result = FSO.MoveFile(FROM, TO);
 | |
|     FSO = null;
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // createFolder
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function createFolder(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var result = FSO.CreateFolder(FN);
 | |
|     FSO = null;
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // deleteFolder
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function deleteFolder(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var result = FSO.DeleteFolder(FN);
 | |
|     FSO = null;
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // deleteFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function deleteFile(FN) {
 | |
|     var FSO = CreateObject("Scripting.FileSystemObject");
 | |
|     var result = FSO.DeleteFile(FN);
 | |
|     FSO = null;
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // includeFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function includeFile(FN) {
 | |
|     try {
 | |
|         eval(readFile(FN));
 | |
|     } catch (e) {
 | |
|         console.error(e.message, "in", FN);
 | |
|     }
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // appendFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function appendFile(FN, content, charset) {
 | |
|     var result = false;
 | |
|     var pipe = PipeIPC.connect(PipeIPC.CRC32(FN));
 | |
|     pipe.setCharset(charset);
 | |
|     pipe.startRecorder(FN, PipeIPC.ForAppending);
 | |
|     result = pipe.write(content);
 | |
|     pipe.close();
 | |
| 
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // prependFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function prependFile(FN, content, charset) {
 | |
|     var pipe = PipeIPC.connect("volatile");
 | |
|     pipe.setCharset(charset);
 | |
|     pipe.startRecorder(FN, PipeIPC.ForWriting);
 | |
|     pipe.write(content);
 | |
|     pipe.destroy();
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| // rotateFile
 | |
| /////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| function rotateFile(FN, content, numOfLines, charset) {
 | |
|     var result = false;
 | |
|     var pipe = PipeIPC.connect(PipeIPC.CRC32(FN));
 | |
|     pipe.setCharset(charset);
 | |
|     pipe.setMaxSentences(numOfLines);
 | |
|     pipe.startRecorder(FN, PipeIPC.ForAppending);
 | |
|     result = pipe.write(content);
 | |
|     pipe.close();
 | |
| 
 | |
|     return result;
 | |
| }
 | |
| 
 | |
| // Function to load and parse the .env file
 | |
| var loadEnvFromFile = function(envFilePath, callback) {
 | |
|     try {
 | |
|         // Read the file content using PipeIPC.CdoCharset.CdoUTF_8 encoding
 | |
|         var envString = readFile(envFilePath, PipeIPC.CdoCharset.CdoUTF_8);
 | |
|         
 | |
|         // Parse the environment variables
 | |
|         var envConfig = parseEnv(envString);
 | |
| 
 | |
|         console.log('Environment variables loaded from ' + envFilePath);
 | |
| 
 | |
|         // Call the callback function if provided
 | |
|         if (typeof callback === "function") {
 | |
|             try {
 | |
|                 callback(envConfig);
 | |
|             } catch (e) {
 | |
|                 console.error('Callback error:', e.message);
 | |
|             }
 | |
|         }
 | |
|     } catch (e) {
 | |
|         console.error('Error reading environment file:', envFilePath, e.message);
 | |
|     }
 | |
| };
 | |
| 
 | |
| // Function to find --env-file argument in the args array and load the environment file
 | |
| var loadEnvFromArgs = function(args, callback) {
 | |
|     var envFileArg = args.find(function(x) {
 | |
|         return x.startsWith('--env-file=');
 | |
|     });
 | |
| 
 | |
|     if (envFileArg) {
 | |
|         var envFilePath = envFileArg.split('=')[1];
 | |
|         loadEnvFromFile(envFilePath, callback);
 | |
|     } else {
 | |
|         console.warn('No --env-file argument provided.');
 | |
|     }
 | |
| };
 | |
| 
 | |
| exports.fileExists = fileExists;
 | |
| exports.folderExists = folderExists;
 | |
| exports.fileGet = fileGet;
 | |
| exports.readFile = readFile;
 | |
| exports.writeFile = writeFile;
 | |
| exports.writeBinaryFile = writeBinaryFile;
 | |
| exports.moveFile = moveFile;
 | |
| exports.createFolder = createFolder;
 | |
| exports.deleteFolder = deleteFolder;
 | |
| exports.deleteFile = deleteFile;
 | |
| exports.includeFile = includeFile;
 | |
| exports.appendFile = appendFile;
 | |
| exports.rotateFile = rotateFile;
 | |
| exports.loadEnvFromFile = loadEnvFromFile;
 | |
| exports.loadEnvFromArgs = loadEnvFromArgs;
 | |
| 
 | |
| exports.CdoCharset = PipeIPC.CdoCharset;
 | |
| 
 | |
| exports.VERSIONINFO = "File IO Library (file.js) version 0.2.13";
 | |
| exports.AUTHOR = "abuse@catswords.net";
 | |
| exports.global = global;
 | |
| exports.require = global.require;
 |