Compare commits

...

10 Commits

Author SHA1 Message Date
4362e94a88 4.0.5 2016-06-24 03:36:55 +02:00
fea9675b2a improve memory.toFs(Sync) 2016-06-24 03:36:51 +02:00
4522907af3 update README 2016-06-23 19:40:37 +02:00
163eb5a70c 4.0.4 2016-06-23 19:02:39 +02:00
fa5371a6bd update metadata 2016-06-23 19:02:34 +02:00
5ff7f8c3ac 4.0.3 2016-06-23 18:42:42 +02:00
0c49bbd4b2 4.0.2 2016-06-23 18:41:52 +02:00
f2e2a22a57 add gitlab-ci.yml 2016-06-23 18:41:45 +02:00
6ae30110f8 4.0.1 2016-06-23 18:39:06 +02:00
7b4626586c rename some actions 2016-06-23 18:39:02 +02:00
11 changed files with 260 additions and 177 deletions

36
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,36 @@
image: hosttoday/ht-docker-node:npmts
stages:
- test
- release
testLEGACY:
stage: test
script:
- npmci test legacy
tags:
- docker
allow_failure: true
testLTS:
stage: test
script:
- npmci test lts
tags:
- docker
testSTABLE:
stage: test
script:
- npmci test stable
tags:
- docker
release:
stage: release
script:
- npmci publish
only:
- tags
tags:
- docker

View File

@ -2,13 +2,12 @@
make files easily accessible for processing in javascript.
## Status
[![Build Status](https://travis-ci.org/pushrocks/smartfile.svg?branch=master)](https://travis-ci.org/pushrocks/smartfile)
[![Build status](https://ci.appveyor.com/api/projects/status/xefmtetv7bxupfby/branch/master?svg=true)](https://ci.appveyor.com/project/philkunz/smartfile/branch/master)
[![build status](https://gitlab.com/pushrocks/smartfile/badges/master/build.svg)](https://gitlab.com/pushrocks/smartfile/commits/master)
[![Dependency Status](https://david-dm.org/pushrocks/smartfile.svg)](https://david-dm.org/pushrocks/smartfile)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartfile/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartfile/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/smartfile/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartfile)
[![codecov.io](https://codecov.io/github/pushrocks/smartfile/coverage.svg?branch=master)](https://codecov.io/github/pushrocks/smartfile?branch=master)
## Supported file types:
* .yml .yaml
* .json
## Usage
smartfile is an approach of being one tool to handle files in diverse environments.
It can fetch files from remote locations, work with local disks and do pure memory operations.

View File

@ -1,12 +1,40 @@
import "typings-global";
/**
*
* @param filePath
* @returns {boolean}
*/
export declare let fileExistsSync: (filePath: any) => boolean;
/**
*
* @param filePath
* @returns {any}
*/
export declare let fileExists: (filePath: any) => any;
/**
* Checks if given path points to an existing directory
*/
export declare let isDirectory: (pathArg: any) => boolean;
/**
* Checks if a given path points to an existing file
*/
export declare let isFile: (pathArg: any) => boolean;
/**
* copies a file from A to B on the local disk
*/
export declare let copy: (fromArg: string, toArg: string) => any;
/**
* copies a file SYNCHRONOUSLY from A to B on the local disk
*/
export declare let copySync: (fromArg: string, toArg: string) => boolean;
/**
* removes a file or folder from local disk
*/
export declare let remove: (pathArg: string) => any;
/**
* removes a file SYNCHRONOUSLY from local disk
*/
export declare let removeSync: (pathArg: string) => boolean;
export declare let toFS: (options: {
from: string;
toPath: string;
}, cb?: any) => void;
/**
*
* @param filePathArg
@ -40,19 +68,11 @@ export declare let toVinylSync: (filePathArg: any, options?: {}) => any;
* @returns {any}
*/
export declare let requireReload: (path: string) => any;
export declare let foldersSync: (pathArg: any) => any;
export declare let folders: (pathArg: string) => any;
/**
*
* @param filePath
* @returns {boolean}
* lists Folders in a directory on local disk
*/
export declare let fileExistsSync: (filePath: any) => boolean;
export declare let listFolders: (pathArg: string) => any;
/**
*
* @param filePath
* @returns {any}
* lists Folders SYNCHRONOUSLY in a directory on local disk
*/
export declare let fileExists: (filePath: any) => any;
export declare let isDirectory: (pathArg: any) => boolean;
export declare let isFile: (pathArg: any) => boolean;
export declare let listFoldersSync: (pathArg: any) => any;

104
dist/smartfile.fs.js vendored

File diff suppressed because one or more lines are too long

View File

@ -45,11 +45,5 @@ export declare let toStringSync: (fileArg: plugins.vinyl) => string;
* @param fileNameArg
* @param fileBaseArg
*/
export declare let toFs: (fileArg: any, optionsArg: {
fileName: string;
filePath: string;
}) => any;
export declare let toFsSync: (fileArg: any, optionsArg: {
fileName: string;
filePath: string;
}) => void;
export declare let toFs: (fileContentArg: string | plugins.vinyl, filePathArg: any) => any;
export declare let toFsSync: (fileArg: any, filePathArg: string) => void;

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "smartfile",
"version": "4.0.0",
"version": "4.0.5",
"description": "offers smart ways to work with files in nodejs",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
"url": "https://github.com/pushrocks/smartfile.git"
"url": "https://gitlab.com/pushrocks/smartfile.git"
},
"keywords": [
"filesystem",
@ -22,9 +22,9 @@
"author": "Smart Coordination GmbH <office@push.rocks> (https://push.rocks)",
"license": "MIT",
"bugs": {
"url": "https://github.com/pushrocks/smartfile/issues"
"url": "https://gitlab.com/pushrocks/smartfile/issues"
},
"homepage": "https://github.com/pushrocks/smartfile",
"homepage": "https://gitlab.com/pushrocks/smartfile",
"dependencies": {
"beautylog": "^5.0.12",
"fs-extra": "^0.30.0",

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@ import * as smartfile from "../dist/index";
let beautylog = require("beautylog");
let gulp = require("gulp");
let gFunction = require("gulp-function");
import path = require("path");
import should = require("should");
let vinyl = require("vinyl");
@ -23,15 +24,15 @@ describe("smartfile".yellow,function(){
(smartfile.fs.fileExists("./test/notthere.json")).should.not.be.fulfilled();
});
});
describe(".foldersSync()",function(){
describe(".listFoldersSync()",function(){
it("should get the file type from a string",function(){
smartfile.fs.foldersSync("./test/").should.containDeep([ "testfolder"]);
smartfile.fs.foldersSync("./test/").should.not.containDeep([ "notExistentFolder"]);
smartfile.fs.listFoldersSync("./test/").should.containDeep([ "testfolder"]);
smartfile.fs.listFoldersSync("./test/").should.not.containDeep([ "notExistentFolder"]);
});
});
describe(".folders()",function(){
describe(".listFolders()",function(){
it("should get the file type from a string",function(done){
smartfile.fs.folders("./test/")
smartfile.fs.listFolders("./test/")
.then(function(folderArrayArg){
folderArrayArg.should.containDeep([ "testfolder"]);
folderArrayArg.should.not.containDeep([ "notExistentFolder"]);
@ -153,10 +154,7 @@ describe("smartfile".yellow,function(){
let localString = "myString";
smartfile.memory.toFs(
localString,
{
fileName:"./test/temp/testMemToFs.txt",
filePath:process.cwd()
}
path.join(process.cwd(),"./test/temp/testMemToFs.txt")
).then(done);
});
});
@ -164,10 +162,8 @@ describe("smartfile".yellow,function(){
it("should write a file to disk and return true if successfull",function(){
let localString = "myString";
smartfile.memory.toFsSync(
localString,{
fileName:"./test/temp/testMemToFsSync.txt",
filePath:process.cwd()
}
localString,
path.join(process.cwd(),"./test/temp/testMemToFsSync.txt")
);
});
});

View File

@ -3,10 +3,61 @@ import "typings-global";
import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require("./smartfile.interpreter");
/*===============================================================
============================ Checks =============================
===============================================================*/
/**
*
* @param filePath
* @returns {boolean}
*/
export let fileExistsSync = function(filePath):boolean {
let fileExistsBool:boolean = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true
}
catch(err){
fileExistsBool = false;
}
return fileExistsBool;
};
/**
*
* @param filePath
* @returns {any}
*/
export let fileExists = function(filePath){
let done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
};
/**
* Checks if given path points to an existing directory
*/
export let isDirectory = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isDirectory();
};
/**
* Checks if a given path points to an existing file
*/
export let isFile = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isFile();
};
/*===============================================================
============================ FS ACTIONS =========================
===============================================================*/
/**
* copies a file from A to B on the local disk
*/
export let copy = function(fromArg:string, toArg:string){
var done = plugins.q.defer();
plugins.fs.copy(fromArg,toArg,{},function(){
@ -15,11 +66,17 @@ export let copy = function(fromArg:string, toArg:string){
return done.promise;
};
/**
* copies a file SYNCHRONOUSLY from A to B on the local disk
*/
export let copySync = function(fromArg:string,toArg:string):boolean{
plugins.fs.copySync(fromArg,toArg);
return true;
};
/**
* removes a file or folder from local disk
*/
export let remove = function(pathArg:string){
var done = plugins.q.defer();
plugins.fs.remove(pathArg,function(){
@ -28,6 +85,9 @@ export let remove = function(pathArg:string){
return done.promise;
};
/**
* removes a file SYNCHRONOUSLY from local disk
*/
export let removeSync = function(pathArg:string):boolean{
plugins.fs.removeSync(pathArg);
return true;
@ -38,11 +98,6 @@ export let removeSync = function(pathArg:string):boolean{
============================ Write/Read =========================
===============================================================*/
export let toFS = function(options:{from:string,toPath:string}, cb=undefined){
};
/**
*
* @param filePathArg
@ -100,13 +155,10 @@ export let requireReload = function(path:string){
return plugins.requireReload(path);
};
export let foldersSync = function(pathArg){
return plugins.fs.readdirSync(pathArg).filter(function(file) {
return plugins.fs.statSync(plugins.path.join(pathArg, file)).isDirectory();
});
};
export let folders = function(pathArg:string){
/**
* lists Folders in a directory on local disk
*/
export let listFolders = function(pathArg:string){
let done = plugins.q.defer();
let folderArray = plugins.fs.readdirSync(pathArg).filter(function(file) {
return plugins.fs.statSync(plugins.path.join(pathArg, file)).isDirectory();
@ -115,41 +167,11 @@ export let folders = function(pathArg:string){
return done.promise;
};
/**
*
* @param filePath
* @returns {boolean}
* lists Folders SYNCHRONOUSLY in a directory on local disk
*/
export let fileExistsSync = function(filePath):boolean {
let fileExistsBool:boolean = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true
}
catch(err){
fileExistsBool = false;
}
return fileExistsBool;
};
/**
*
* @param filePath
* @returns {any}
*/
export let fileExists = function(filePath){
let done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
export let listFoldersSync = function(pathArg){
return plugins.fs.readdirSync(pathArg).filter(function(file) {
return plugins.fs.statSync(plugins.path.join(pathArg, file)).isDirectory();
});
return done.promise;
};
export let isDirectory = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isDirectory();
};
export let isFile = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isFile();
};

View File

@ -2,6 +2,7 @@ import "typings-global";
import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require("./smartfile.interpreter");
import vinyl = require("vinyl");
let Readable = require("stream").Readable;
/**
* allows you to create a gulp stream
@ -96,33 +97,31 @@ export let toStringSync = function(fileArg:plugins.vinyl){
* @param fileNameArg
* @param fileBaseArg
*/
export let toFs = function(fileArg,optionsArg:{fileName:string,filePath:string}){
export let toFs = function(fileContentArg:string|vinyl,filePathArg){
let done = plugins.q.defer();
//function checks to abort if needed
if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
throw new Error("expected a valid arguments");
if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
if (!fileContentArg || !filePathArg) throw new Error("expected valid arguments");
let filePath:string = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
// prepare actual write action
let fileString:string;
if (fileArg instanceof plugins.vinyl){
fileString = toStringSync(fileArg);
} else if (typeof fileArg === "string") {
fileString = fileArg;
let filePath:string = filePathArg;
if (fileContentArg instanceof plugins.vinyl){
fileString = toStringSync(fileContentArg);
} else if (typeof fileContentArg === "string") {
fileString = fileContentArg;
}
plugins.fs.writeFile(filePath,fileString,"utf8",done.resolve);
return done.promise;
};
export let toFsSync = function(fileArg,optionsArg:{fileName:string,filePath:string}){
export let toFsSync = function(fileArg,filePathArg:string){
//function checks to abort if needed
if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
throw new Error("expected a valid arguments");
if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
if (!fileArg || !filePathArg) throw new Error("expected a valid arguments");
let filePath = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
// prepare actual write action
let fileString:string;
let filePath:string = filePathArg;
if (fileArg instanceof plugins.vinyl){
fileString = toStringSync(fileArg);