diff --git a/test/test.ts b/test/test.ts index c4d18c1..71ce2e8 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,5 +1,5 @@ import * as smartfile from '../ts/index'; -import path = require('path'); +import * as path from 'path'; import { expect, tap } from '@pushrocks/tapbundle'; @@ -8,7 +8,9 @@ import { expect, tap } from '@pushrocks/tapbundle'; // --------------------------- tap.test('.fs.fileExistsSync -> should return an accurate boolean', async () => { + // tslint:disable-next-line: no-unused-expression expect(smartfile.fs.fileExistsSync('./test/testassets/mytest.json')).to.be.true; + // tslint:disable-next-line: no-unused-expression expect(smartfile.fs.fileExistsSync('./test/testassets/notthere.json')).be.false; }); diff --git a/test/test.virtualdirectory.ts b/test/test.virtualdirectory.ts new file mode 100644 index 0000000..ad32974 --- /dev/null +++ b/test/test.virtualdirectory.ts @@ -0,0 +1,15 @@ +import { tap, expect } from '@pushrocks/tapbundle'; + +import * as smartfile from '../ts'; + +tap.test('should create a virtualdirectory', async () => { + const virtualDir = await smartfile.VirtualDirectory.fromFsDirPath('./test/testassets/testfolder'); + expect(virtualDir.smartfileArray.length).to.equal(4); +}); + +tap.test('should write to a directory', async () => { + const virtualDir = await smartfile.VirtualDirectory.fromFsDirPath('./test/testassets/testfolder'); + virtualDir.saveToDisk('./test/testassets/test'); +}); + +tap.start(); \ No newline at end of file diff --git a/ts/smartfile.classes.smartfile.ts b/ts/smartfile.classes.smartfile.ts index 73cc117..d0e27d7 100644 --- a/ts/smartfile.classes.smartfile.ts +++ b/ts/smartfile.classes.smartfile.ts @@ -133,12 +133,10 @@ export class Smartfile extends plugins.smartjson.Smartjson { } public async writeToDir(dirPathArg: string) { - if (!plugins.path.isAbsolute(dirPathArg)) { - dirPathArg = plugins.path.join(process.cwd(), dirPathArg); - } - const relativePath = this.relative; - const filePath = plugins.path.join(dirPathArg, relativePath); + dirPathArg = plugins.smartpath.transform.toAbsolute(dirPathArg); + const filePath = plugins.path.join(dirPathArg, this.path); await memory.toFs(this.contentBuffer, filePath); + return filePath; } /** diff --git a/ts/smartfile.classes.virtualdirectory.ts b/ts/smartfile.classes.virtualdirectory.ts index 5ad4815..ae1dc15 100644 --- a/ts/smartfile.classes.virtualdirectory.ts +++ b/ts/smartfile.classes.virtualdirectory.ts @@ -24,16 +24,16 @@ export class VirtualDirectory { } // INSTANCE - private fileArray: Smartfile[] = []; + public smartfileArray: Smartfile[] = []; constructor() {} public addSmartfiles(smartfileArrayArg: Smartfile[]) { - this.fileArray = this.fileArray.concat(smartfileArrayArg); + this.smartfileArray = this.smartfileArray.concat(smartfileArrayArg); } public async getFileByPath(pathArg: string) { - for (const smartfile of this.fileArray) { + for (const smartfile of this.smartfileArray) { if (smartfile.path === pathArg) { return smartfile; } @@ -42,13 +42,17 @@ export class VirtualDirectory { public async toVirtualDirTransferableObject(): Promise { return { - files: this.fileArray.map(smartfileArg => smartfileArg.foldToJson()) + files: this.smartfileArray.map(smartfileArg => smartfileArg.foldToJson()) }; } - public async saveToDisk() { - for (const smartfileArg of this.fileArray) { - + public async saveToDisk(dirArg: string) { + console.log(`writing VirtualDirectory with ${this.smartfileArray.length} to directory: + --> ${dirArg}`); + for (const smartfileArg of this.smartfileArray) { + const filePath = await smartfileArg.writeToDir(dirArg); + console.log(`wrote ${smartfileArg.relative} to + --> ${filePath}`); } } diff --git a/ts/smartfile.fs.ts b/ts/smartfile.fs.ts index 829a43b..1491c43 100644 --- a/ts/smartfile.fs.ts +++ b/ts/smartfile.fs.ts @@ -227,7 +227,7 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri if (plugins.path.isAbsolute(miniMatchFilter)) { dirPath = '/'; } else { - dirPath = dirPathArg; + dirPath = plugins.smartpath.transform.toAbsolute(dirPathArg); } const fileTree = await listFileTree(dirPath, miniMatchFilter);