welsonjs/lib/file.js
Namhyeon, Go 94afeb406a
Some checks are pending
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Add some code to add the .env support
2024-10-14 04:38:18 +09:00

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;