Skip to content

Commit

Permalink
Add deleteFile mask
Browse files Browse the repository at this point in the history
  • Loading branch information
ap0k4 committed Apr 28, 2024
1 parent e259b0c commit 2dd80a7
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 2 deletions.
24 changes: 24 additions & 0 deletions packages/protolib/bundles/os/context2/deleteFile.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import fs from 'fs/promises';
import { join } from 'path';

export const deleteFile = async(options: {
path: string,
done?: () => {},
error?: (err) => {}
}) => {
const path = options.path;
const done = options.done || (() => {});
const error = options.error;

try {
await fs.unlink(join('../../', path));
done(); // File successfully deleted
return;
} catch (err) {
if (error) {
error(err);
} else {
throw err;
}
}
}
4 changes: 3 additions & 1 deletion packages/protolib/bundles/os/context2/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import { runCommand } from './RunCommand'
import {listDir} from './listDir'
import { makeDir } from './makeDir'
import { fileExists } from './fileExists'
import { deleteFile } from './deleteFile'

export default {
readFile,
writeFile,
listDir,
runCommand,
makeDir,
fileExists
fileExists,
deleteFile
}
46 changes: 46 additions & 0 deletions packages/protolib/bundles/os/masks/DeleteFile.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { Node, NodeOutput, NodeParams, filterObject, restoreObject } from 'protoflow';
import { useColorFromPalette } from 'protoflow/src/diagram/Theme';
import { FileX } from 'lucide-react';

const DeleteFile = ({ node = {}, nodeData = {}, children }: any) => {
const color = useColorFromPalette(3); // Un color que pueda indicar alerta o eliminación
return (
<Node icon={FileX} node={node} isPreview={!node.id} title='Delete File' color={color} id={node.id} skipCustom={true}>
<NodeParams id={node.id} params={[{ label: 'Path', field: 'mask-path', type: 'input' }]} />
<div style={{height: '30px'}} />
<NodeOutput id={node.id} type={'input'} label={'Done'} vars={[]} handleId={'mask-done'} />
<NodeOutput id={node.id} type={'input'} label={'Error'} vars={['err']} handleId={'mask-error'} />
</Node>
)
}

export default {
id: 'os2.deleteFile',
type: 'CallExpression',
category: "OS",
keywords: ['fs', 'os', 'file', 'delete', 'remove'],
check: (node, nodeData) => {
return node.type == "CallExpression" && nodeData.to?.startsWith('context.os2.deleteFile')
},
getComponent: (node, nodeData, children) => <DeleteFile node={node} nodeData={nodeData} children={children} />,
filterChildren: filterObject({keys: {
path: 'input',
done: 'output',
error: 'output'
}}),
restoreChildren: restoreObject({keys: {
path: 'input',
done: { params: {'param-done': { key: ""}}},
error: { params: { 'param-error': { key: "err"}}}
}}),
getInitialData: () => {
return {
await: true,
to: 'context.os2.deleteFile',
"mask-path": {
value: "",
kind: "StringLiteral"
}
}
}
}
4 changes: 3 additions & 1 deletion packages/protolib/bundles/os/masks2/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import RunCommand from "./RunCommand";
import ListDir from "./ListDir";
import MakeDir from "./MakeDir";
import FileExists from "./FileExists";
import DeleteFile from "../masks/DeleteFile";

export default [
ReadFile,
WriteFile,
ListDir,
RunCommand,
MakeDir,
FileExists
FileExists,
DeleteFile
]

0 comments on commit 2dd80a7

Please sign in to comment.