# All files / src index.ts

100% Statements 50/50
100% Branches 18/18
100% Functions 3/3
100% Lines 50/50

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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    1x
    1x
    1x
    1x

    1x

    18x

    18x

    18x
    14x

    14x

    1x
    1x

    1x
    1x

    2x
    2x
    2x

    2x
    2x
    2x

    2x
    2x
    2x

    2x
    2x
    2x

    1x
    1x

    2x
    2x
    2x

    1x

    4x

    1x

    18x

    18x

    1x

    1x

    2x
    2x

    2x
    2x

    2x
    2x

    2x
    2x

    1x

    6x
    6x

    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 'aix': // IBM AIX platform
                throw new Error("Platform not supported: " + platform);
            case 'android': // Android platform
                throw new Error("Platform not supported: " + platform);
            case 'darwin': // Darwin platfrom(MacOS, IOS etc)
                drivesInfo = Darwin.run();
                return drivesInfo;
            case 'freebsd': // FreeBSD Platform
                drivesInfo = Darwin.run();
                return drivesInfo;
            case 'linux': // Linux Platform
                drivesInfo = Linux.run();
                return drivesInfo;
            case 'openbsd': // OpenBSD platform
                drivesInfo = Darwin.run();
                return drivesInfo;
            case 'sunos': // SunOS platform
                throw new Error("Platform not supported: " + platform);
            case 'win32': // windows platform
                drivesInfo = Windows.run();
                return drivesInfo;
            default: // unknown platform
                throw new Error("Platform not recognized: " + platform);
        }

    }