Git Product home page Git Product logo

npm-hddspace's Introduction

hdd-space

This module provides getting information about free space and size of storage devices. Values represent amount of bytes.

Build Status Coverage Status

Update [August 2017]:

  • Fixed problems with russian locales on linux;
  • Support of promises (optional);
  • Huge refactoring;
  • Tests and code coverage;
  • Better support of typescript;
  • Codestyle;

Update [November 2016]:

  • Added support of MacOS (and possibly some other unix-based OSs);
  • Added options parameter (see below);
  • Slightly changed the output format;
  • Formated values (KB, MB, etc.);
  • Translated to TypeScript (fully usable from vanilla JS still);

Installation:

npm i hdd-space

Example of usage:

// typescript:
import hddSpace from 'hdd-space';

hddSpace({format: 'auto'}, info => console.log(info));

or

// typescript:
import {getHddInfo} from 'hdd-space';

getHddInfo({format: 'auto'}, info => console.log(info));

or

// typescript:
import {fetchHddInfo} from 'hdd-space';

fetchHddInfo({format: 'auto'})
  .then(info => console.log(info));

// or

...
console.log(await fetchHddInfo({format: 'auto'}));
...
var hddSpace = require('hdd-space');
hddSpace(function(info){
	console.log(info);
});

Output:

//win32
{ parts:
   [ { free: 1895112704, size: 34359734272, place: 'C:', letter: 'C:' },
     { free: 144044032, size: 50925137920, place: 'D:', letter: 'D:' },
     { free: 109913382912,
       size: 990202818560,
       place: 'F:',
       letter: 'F:' },
     { free: 1714561073152,
       size: 2000396742656,
       place: 'I:',
       letter: 'I:' },
     { free: 1173352448, size: 7819231232, place: 'J:', letter: 'J:' } ],
  total: { free: 1827686965248, size: 3083703664640 } }
  • mountOn - place for unix OSs;
  • letter - disk letter for win32;
  • place - either mountOn or letter for any system;
  • free - free space in bytes;
  • size - size of a storage in bytes;

It's possible to pass option object as the first argument. Options:

  • format
  • output (it's possible to pass custom command output)
  • platform (overrides auto detection, can be posix or win32)
  • fetchOutput (almost like output, but it's function)

format can be one of the following (case insesetive):

  • bit
  • byte
  • kb - 2 ^ 10 bytes
  • mb - 2 ^ 20 bytes
  • gb - 2 ^ 30 bytes
  • tb - 2 ^ 40 bytes
  • pb - 2 ^ 50 bytes
  • eb - 2 ^ 60 bytes
  • zb - 2 ^ 70 bytes
  • yb - 2 ^ 80 bytes
  • auto - messaure units will be selected automatically
  • a function that take a number of bytes and return whatever you'd like;

Custom format example

var hddSpace = require('hdd-space');
hddSpace({
    format: function (s) { return s.toLocaleString(); }
}, function (info) {
    console.log(info);
});

Output:

{ parts:
   [ { free: '1,895,206,912',
       size: '34,359,734,272',
       place: 'C:',
       letter: 'C:' },
     { free: '144,277,504',
       size: '50,925,137,920',
       place: 'D:',
       letter: 'D:' },
     ...],
  total: { free: '1,827,687,292,928', size: '3,083,703,664,640' } }

Auto format example

var hddSpace = require('hdd-space');
hddSpace({ format: 'auto' }, function (info) {
    console.log(info);
});

Output:

//win32:
{ parts:
   [ { free: '1.76 GB', size: '32.00 GB', place: 'C:', letter: 'C:' },
     { free: '147.07 MB', size: '47.43 GB', place: 'D:', letter: 'D:' },
     { free: '102.37 GB',
       size: '922.20 GB',
       place: 'F:',
       letter: 'F:' },
     { free: '1.56 TB', size: '1.82 TB', place: 'I:', letter: 'I:' },
     { free: '1.09 GB', size: '7.28 GB', place: 'J:', letter: 'J:' }
	 ...],
  total: { free: '1.66 TB', size: '2.80 TB' } }


//linux:

{ parts:
   [ { free: '981.19 MB',
       size: '981.19 MB',
       place: '/dev',
       mountOn: '/dev' },
     { free: '196.18 MB',
       size: '200.05 MB',
       place: '/run',
       mountOn: '/run' },
     { free: '44.25 GB', size: '55.76 GB', place: '/', mountOn: '/' },
     ...]
  total: { free: '44.25 GB', size: '55.76 GB' } }

// MacOS:

{ parts:
   [ { free: '65.31 GB', size: '111.86 GB', place: '/', mountOn: '/' },
     { free: '0 Bytes',
       size: '184.00 KB',
       place: '/dev',
       mountOn: '/dev' },
     ...],
  total: { free: '65.31 GB', size: '111.86 GB' } }

npm-hddspace's People

Contributors

int0h avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

raffis

npm-hddspace's Issues

Support Disk Labels for Windows

Any chance this awesome package will support disk labels for win32 platform?

It is a bit confusing to track what disk handles which data by C: D: E:

Thanks for your amazing work!

Support macOS

  TypeError: func is not a function
      at getCrossPlatformInfo (xxx/node_modules/hdd-space/hddSpace.js:113:2)
      at settings.js:77:44
      at Promise.F (xxx/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
      at _callee3$ (settings.js:77:27)
      at tryCatch (xxx/node_modules/babel-runtime/regenerator/runtime.js:72:40)
      at GeneratorFunctionPrototype.invoke [as _invoke] (xxx/node_modules/babel-runtime/regenerator/runtime.js:334:22)
      at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (xxx/node_modules/babel-runtime/regenerator/runtime.js:105:21)
      at step (xxx/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
      at xxx/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:20

External media connected via USB

Is it possible to detect external media connected via USB and process such disks or flash drives separately?

Like so:

{ parts:
   [ { free: 496592740352,
       size: 539028877312,
       place: 'X:',
       letter: 'X:',
       usb: true,
       label: 'My Flash' } ]

Thanks!

Disk detection on linux

On windows it works fine, but on my ubuntu 16.04.2 I have this output:

node hdd.js
{ parts:
[ { free: 'NaN PB', size: 'NaN PB', place: 'v', mountOn: 'v' },
{ free: 'NaN PB', size: 'NaN PB', place: 'n', mountOn: 'n' },
{ free: 'NaN PB', size: 'NaN PB', place: '/', mountOn: '/' },
{ free: 'NaN PB', size: 'NaN PB', place: 'm', mountOn: 'm' },
{ free: 'NaN PB', size: 'NaN PB', place: 'k', mountOn: 'k' },
{ free: 'NaN PB', size: 'NaN PB', place: 'p', mountOn: 'p' },
{ free: 'NaN PB', size: 'NaN PB', place: 's', mountOn: 's' },
{ free: 'NaN PB', size: 'NaN PB', place: 'o', mountOn: 'o' },
{ free: 'NaN PB', size: 'NaN PB', place: 's', mountOn: 's' },
{ free: 'NaN PB', size: 'NaN PB', place: '0', mountOn: '0' },
{ free: 'NaN PB', size: 'NaN PB', place: '1', mountOn: '1' } ],
total: { free: 'NaN PB', size: 'NaN PB' } }

here is hdd.js:
var hddSpace = require('hdd-space');
hddSpace({ format: 'auto' }, function (info) {
console.log(info);
});

TypeError: Cannot read property 'toLowerCase' of undefined

I'm trying to pass the options object into hddSpace as such:

 hddSpace({format: 'gb'}, (info: DriveInfo) => {
    resolve(info);
});

In your modules index.ts the following is thrown:

TypeError: Cannot read property 'toLowerCase' of undefined

In the documentation of the package it says:

It's possible to pass option object as the first argument. Now the only supported opion is format which can be one of the following (case insesetive): ...

What Am I doing wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.