From f20657ff71f76d0a572391c96279f118289683b8 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Wed, 1 Dec 2021 01:14:07 +0100 Subject: [PATCH] BREAKING CHANGE(relative pathing): improved relative pathing --- ts/smartfile.classes.smartfile.ts | 35 +++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/ts/smartfile.classes.smartfile.ts b/ts/smartfile.classes.smartfile.ts index 7eca0d4..ed90e53 100644 --- a/ts/smartfile.classes.smartfile.ts +++ b/ts/smartfile.classes.smartfile.ts @@ -3,9 +3,9 @@ import * as fs from './smartfile.fs'; import * as memory from './smartfile.memory'; export interface ISmartfileConstructorOptions { - path?: string; - contentBuffer?: Buffer; - base?: string; + path: string; + contentBuffer: Buffer; + base: string; } /** @@ -21,20 +21,26 @@ export class Smartfile extends plugins.smartjson.Smartjson { * creates a Smartfile from a filePath * @param filePath */ - public static async fromFilePath(filePath: string) { + public static async fromFilePath(filePath: string, baseArg: string = process.cwd()) { filePath = plugins.path.resolve(filePath); const fileBuffer = fs.toBufferSync(filePath); const smartfile = new Smartfile({ - path: filePath, contentBuffer: fileBuffer, + base: baseArg, + path: plugins.path.relative(baseArg, filePath), }); return smartfile; } - public static async fromBuffer(filePath: string, contentBufferArg: Buffer) { + public static async fromBuffer( + filePath: string, + contentBufferArg: Buffer, + baseArg: string = process.cwd() + ) { const smartfile = new Smartfile({ contentBuffer: contentBufferArg, - path: filePath, + base: baseArg, + path: plugins.path.relative(baseArg, filePath), }); return smartfile; @@ -43,11 +49,13 @@ export class Smartfile extends plugins.smartjson.Smartjson { public static async fromString( filePath: string, contentStringArg: string, - encodingArg: 'utf8' | 'binary' + encodingArg: 'utf8' | 'binary', + baseArg = process.cwd() ) { const smartfile = new Smartfile({ contentBuffer: Buffer.from(contentStringArg, encodingArg), - path: filePath, + base: baseArg, + path: plugins.path.relative(baseArg, filePath), }); return smartfile; @@ -122,11 +130,12 @@ export class Smartfile extends plugins.smartjson.Smartjson { * - no argument write to exactly where the file was picked up */ public async write() { - await memory.toFs(this.contentBuffer, this.path); + await memory.toFs(this.contentBuffer, plugins.path.join(this.base, this.path)); } /** * writes the file to path given as argument + * note: if the path is not absolute, takes process.cwd() as base * @param filePathArg */ public async writeToDiskAtPath(filePathArg: string) { @@ -152,14 +161,14 @@ export class Smartfile extends plugins.smartjson.Smartjson { * read file from disk */ public async read() { - this.contentBuffer = await fs.toBuffer(this.path); + this.contentBuffer = await fs.toBuffer(plugins.path.join(this.base, this.path)); } /** * deletes the file from disk at its original location */ public async delete() { - await fs.remove(this.path); + await fs.remove(plugins.path.join(this.base, this.path)); } // ----------------------------------------------- @@ -186,7 +195,7 @@ export class Smartfile extends plugins.smartjson.Smartjson { * return relative path of file */ public get relative(): string { - return plugins.path.relative(this.base, this.path); + return this.path; } /**