limit-tree-size

1.0.6 • Public • Published

limit-tree-size

NPM

limit-tree-size allows to limit directories sizes by polling a set of predefined folder paths. When the size of a checked folder is higher than its limit, files are deleted in order to keep the size below/equal its limit.

LimitTreeSize Class Usage

Install

npm install limit-tree-size --save

With fixed folders

First we need to instantiate a LimitDirs:

const LimitTreeSize = require("limit-tree-size");

const dirLimiter = new LimitTreeSize(
  {
    "forceDirs": [{
      "dir": "./test/repos-test/basic/",
      "limitMB": 5 // 5 MB
    }],
    "autoDiscoverNewSubDirs": false,
    "verbose": false
  });

and then launch it:

dirLimiter.launch();

This will watch the directory ./test/repos-test/basic/ and make sure its size is less than 5 MB. Whenever a file is created or changed, if the new folder size is larger than 5 MB, the file will be deleted.

Automatic Subdir discovery

First let's instantiate a LimitTreeSize:

const dirLimiter = new LimitTreeSize(
  {
    "rootDir": "./test/repos-test/websites/",
    "level": 2,
    "autoDiscoverNewSubDirs": true,
    "intervalAutoScan": 3, // in seconds
    "defaultLimitMB": 5,
    "verbose": false
  });

dirLimiter.launch();

This will check every 3 seconds for new sub directories with level 2 and limit these directories to 5 MB. So let's say we now have the following tree:

-- ./test/repos-test/websites/
---- ./test/repos-test/websites/user1
------ ./test/repos-test/websites/user1/website1
------ ./test/repos-test/websites/user1/website2

Both website1 and website2 will be limited to 5 MB each. The level represents the number of children steps. With level 1, it would look for the direct subdirectories.

Callback Events

Some callbacks can be defined for different event types:

  • callbackBeginDeletion: When the deletion of files process begins.
  • callbackEndDeletion: When the deletion of files process ends.
  • callbackOnDelete(filename): When a file (filename) is deleted.
  • callbackOnCheckSizes: When the process to check the sizes begins.

Example usage:

const dirLimiter = new LimitTreeSize(
  {
    "rootDir": "./test/repos-test/websites/",
    "level": 2,
    "autoDiscoverNewSubDirs": true,
    "intervalAutoScan": 3, // in seconds
    "defaultLimitMB": 5,
    "verbose": false,
    "callbackBeginDeletion": function() { console.log("begin deletion"); },
    "callbackEndDeletion": function() { console.log("end deletion"); },
    "callbackOnDelete": function(filename) { console.log(filename + " deleted"); },
    "callbackOnCheckSizes":
      function(dir, currentSize, limitSize) {
        console.log("checking sizes for ... " + dir); 
      }
  });

dirLimiter.launch();

Command Line Interface

npm install -g limit-tree-size

The command line usage is the following:

limit-tree-size launch --rootDir <rootDir> --level <level> --intervalAutoScan <intervalAutoScan> --defaultLimitMB <defaultLimitMB> --verbose <verbose>

License

ISC

Readme

Keywords

Package Sidebar

Install

npm i limit-tree-size

Weekly Downloads

1

Version

1.0.6

License

ISC

Last publish

Collaborators

  • martinlev