Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion fs-ops.html
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,10 @@ <h3>Details</h3>
path: {value: ""},
pathType: {value: "str"},
filename: {value: "", required: true},
filenameType: {value: "msg"}
filenameType: {value: "msg"},
recursive: {value: false, required: false},
maxRetries: {value: 0, required: false, validate:function(v) { return !v || !isNaN(v) }},
retryDelay: {value: 100, required: false, validate:function(v) { return !v || !isNaN(v) }},
},
inputs:1,
outputs:1,
Expand All @@ -308,6 +311,14 @@ <h3>Details</h3>
typeField: $("#node-input-filenameType")
});

$("#node-input-recursive").on("change", function() {
if($(this).is(':checked')) {
$(".form-row-recursive").show();
} else {
$(".form-row-recursive").hide();
}
}).change();

}
});
</script>
Expand All @@ -327,6 +338,19 @@ <h3>Details</h3>
<input type="text" id="node-input-filename" placeholder="File to delete" style="width:250px;">
<input type="hidden" id="node-input-filenameType">
</div>
<div class="form-row">
<label for="node-input-recursive"></label>
<input type="checkbox" id="node-input-recursive" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-recursive" style="width: auto"><i class="fa fa-sitemap"></i> Recursive</label>
</div>
<div class="form-row hide form-row-recursive">
<label for="node-input-maxRetries"><i class="fa fa-retweet"></i> Max retries</label>
<input type="number" id="node-input-maxRetries" style="width:250px;">
</div>
<div class="form-row hide form-row-recursive">
<label for="node-input-retryDelay"><i class="fa fa-pause"></i> Delay (ms)</label>
<input type="number" id="node-input-retryDelay" style="width:250px;">
</div>
</script>

<script type="text/x-red" data-help-name="fs-ops-delete">
Expand Down
23 changes: 17 additions & 6 deletions fs-ops.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,11 @@ module.exports = function(RED) {
node.pathType = n.pathType || "str";
node.filename = n.filename || "";
node.filenameType = n.filenameType || "msg";
node.recursive = n.recursive || false;
node.maxRetries = parseInt(n.maxRetries) || 0;
node.retryDelay = parseInt(n.retryDelay) || 100;

node.on("input", function(msg) {
node.on("input", async function(msg, send, done) {

var error = false;

Expand All @@ -285,15 +288,19 @@ module.exports = function(RED) {

var filename = RED.util.evaluateNodeProperty(node.filename, node.filenameType, node, msg);

var deleteFile = function(file) {
var deleteFile = async function(file) {
var p = path.join(pathname ? pathname : "", file ? file : "");
if(fs.existsSync(p)) {
const stats = fs.lstatSync(p);
try {
if (stats.isFile()) {
fs.unlinkSync(p);
} else if(stats.isDirectory()) {
fs.rmdirSync(p);
console.log({recursive: node.recursive, maxRetries: node.maxRetries, retryDelay: node.retryDelay});
const prom = new Promise(resolve => {
fs.rmdir(p, {recursive: node.recursive, maxRetries: node.maxRetries, retryDelay: node.retryDelay}, res => resolve(res));
});
await prom;
}
} catch(e) {
node.error(e, msg);
Expand All @@ -304,14 +311,18 @@ module.exports = function(RED) {


if (Array.isArray(filename)) {
filename.forEach(deleteFile);
for(const file of filename) {
await deleteFile(file);
}
} else {
deleteFile(filename);
await deleteFile(filename);
}

if (!error) {
node.send(msg);
send(msg);
}

done();
});
}

Expand Down