All files / src index.ts

72.09% Statements 31/43
61.54% Branches 8/13
100% Functions 3/3
72.09% Lines 31/43

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91  1x 1x 1x 1x               1x   8x   8x   8x 7x   7x               2x 2x 2x           2x 2x 2x                 2x 2x 2x   1x       1x                           1x   7x     7x   2x 2x   2x 2x   2x 2x   1x        
import Drive from './classes/drive';
import {Darwin} from './platforms/darwin';
import {Linux} from './platforms/linux';
import {Windows} from './platforms/windows';
import {Utils} from './utils/utils';
 
/**
 * Get disk info according current platform.
 *
 * @author Cristiam Mercado
 * @return {Promise<Drive[]>} Promise resolves array of disks and their info.
 */
export function getDiskInfo(): Promise<Drive[]> {
 
    return new Promise((resolve, reject) => {
 
        try {
 
            const platform = Utils.detectPlatform();
            let drivesInfo: Drive[];
 
            switch (platform) {
                case 'aix': // IBM AIX platform
                    reject(new Error(`Platform not supported: ${platform}`));
                    break;
                case 'android': // Android platform
                    reject(new Error(`Platform not supported: ${platform}`));
                    break;
                case 'darwin': // Darwin platfrom(MacOS, IOS etc)
                    drivesInfo = Darwin.run();
                    resolve(drivesInfo);
                    break;
                case 'freebsd': // FreeBSD Platform
                    drivesInfo = Darwin.run();
                    resolve(drivesInfo);
                    break;
                case 'linux': // Linux Platform
                    drivesInfo = Linux.run();
                    resolve(drivesInfo);
                    break;
                case 'openbsd': // OpenBSD platform
                    drivesInfo = Darwin.run();
                    resolve(drivesInfo);
                    break;
                case 'sunos': // SunOS platform
                    reject(new Error(`Platform not supported: ${platform}`));
                    break;
                case 'win32': // windows platform
                    drivesInfo = Windows.run();
                    resolve(drivesInfo);
                    break;    
                default: // unknown platform
                    reject(new Error(`Platform not recognized: ${platform}`));
            }
 
        } catch (e) {
            reject(e);
        }
 
    })
 
}
 
/**
 * Get disk info according current platform in an syncronous way.
 *
 * @author Cristiam Mercado
 * @return {Drive[]} Array of disks and their info.
 * @throws {Error} Current platform must be win32, linux or darwin.
 */
export function getDiskInfoSync(): Drive[] {
 
    const platform = Utils.detectPlatform();
    let drivesInfo: Drive[];
 
    switch (platform) {
        case 'win32':
            drivesInfo = Windows.run();
            return drivesInfo;
        case 'linux':
            drivesInfo = Linux.run();
            return drivesInfo;
        case 'darwin':
            drivesInfo = Darwin.run();
            return drivesInfo;
        default:
            throw new Error(`Platform not recognized: ${platform}`);
    }
 
}