@putout/operator-filesystem
v5.0.0
Published
🐊Putout operator adds ability to filesystem referenced variables that was not defined
Downloads
37,068
Maintainers
Readme
@putout/operator-filesystem
🐊Putout operator adds ability to lint filesystem.
Install
npm i putout @putout/operator-filesystem
API
createFile(directoryPath: DirectoryPath, name: string, content?: string): FilePath
const {operator} = require('putout');
const {findFile, createFile} = operator;
const [dirPath] = findFile(ast, 'hello');
const filePath = createFile(dirPath, 'world.txt', 'hello world');
createDirectory(directoryPath: DirectoryPath, name: string): DirectoryPath
const {operator} = require('putout');
const {
createDirectory,
findFile,
} = operator;
const [dirPath] = findFile(ast, 'hello');
const newDirectoryPath = createDirectory(dirPath, 'world');
findFile(directoryPath: DirectoryPath, name: string | string[]): (FilePath | DirectoryPath)[]
const {operator} = require('putout');
const {finedFiles, findFile} = operator;
const [filePath] = findFile(ast, 'hello');
You can also pass array of file masks:
import {operator} from 'putout';
const {findFile} = operator;
const coupleFiles = findFile(ast, ['*.js', '*.ts']);
And even search for a directory:
import {operator} from 'putout';
const {findFile} = operator;
const coupleFiles = findFile(ast, ['/home/coderaiser', '/home/coderaiser/putout']);
getParentDirectory(path: FilePath | DirectoryPath): FilePath | null
const {operator} = require('putout');
const {
createDirectory,
findFile,
getParentDirectory,
} = operator;
const [dirPath] = findFile(ast, 'hello');
const newDirectoryPath = createDirectory(dirPath, 'world');
dirPath === getParentDirectory(newDirectoryPath);
// returns
true;
getFilename(path: FilePath | DirectoryPath): string
const {operator} = require('putout');
const {getFilename} = operator;
const name = getFilename(filePath);
getFileType(path: FilePath): string
const {operator} = require('putout');
const {getFilename, getFileType} = operator;
getFileType(filePath);
// returns
'file';
getFileContent(path: FilePath): [is: boolean, content: string]
Get content
property if it exists, use readFileContent
to read file from Filesystem.
const {operator} = require('putout');
const {getFileContent} = operator;
getFileContent(filePath);
// returns
[true, 'hello world'];
removeFile(filePath: Path)
const {operator} = require('putout');
const {removeFile} = operator;
removeFile(filePath);
copyFile(path: FilePath | DirectoryPath, directoryPath: DirectoryPath)
const {operator} = require('putout');
const {moveFile, copyFile} = operator;
copyFile(filePath, dirPath);
moveFile(path: FilePath | DirectoryPath, directoryPath: DirectoryPath)
const {operator} = require('putout');
const {moveFile} = operator;
moveFile(filePath, dirPath);
readFileContent(filePath: FilePath): string
const {operator} = require('putout');
const {readFileContent} = operator;
readFileContent(filePath);
// returns
'hello';
writeFileContent(filePath: FilePath, content: string)
const {operator} = require('putout');
const {
writeFileContent,
readFileContent,
} = operator;
writeFileContent(filePath, 'hello');
readFileContent(filePath);
// returns
'hello';
renameFile(path: FilePath | DirectoryPath, name: string)
const {operator} = require('putout');
const {renameFile, findFile} = operator;
const [filePath] = findFile(path, 'README.md');
renameFile(filePath, 'readme.md');
this is the same as:
renameFile(filePath, '/any/path/here/readme.md');
Since basename
is used.
The
path.basename()
method returns the last portion of a path, similar to the Unix basename command. Trailing directory separators are ignored.(c) nodejs.org
To move file use moveFile()
.
Example
const montag = require('montag');
const {
parse,
print,
operator,
} = require('putout');
const {renameFile, findFile} = operator;
const ast = parse(montag`
putout_processor_filesystem({
"type": "directory",
"filename": "/hello",
"files": []
});
`);
const [filePath] = findFile(ast, 'hello');
renameFile(filePath, 'world');
print(ast);
// returns
`
putout_processor_filesystem({
"type": "directory",
"filename": "/hello",
"files": []
});
`;
License
MIT