|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|