# All files / src/platforms darwin.ts

100% Statements 17/17
100% Branches 8/8
100% Functions 3/3
100% Lines 16/16

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
    471x

    1x
    1x

    1x

    1x

    12x
    12x
    12x

    12x

    156x

    144x
    144x

    144x

    144x

    12x

    1x
     import {Constants} from '../utils/constants';

    import Drive from '../classes/drive';
    import {Utils} from "../utils/utils";

    /**
     * Class with OSX specific logic to get disk info.
     */
    export class Darwin {

        /**
         * Execute specific OSX command to get disk info.
         *
         * @return {Drive[]} List of drives and their info.
         */
        public static run(): Drive[] {

            const drives: Drive[] = [];
            const buffer = Utils.execute(Constants.DARWIN_COMMAND);
            const lines = buffer.toString().split('\n');

            lines.forEach((value, index, array) => {

                if (value !== '') {

                    const line: string = value.replace(/ +(?= )/g, '');
                    const tokens = line.split(' ');

                    const d = new Drive(
                        tokens[0],
                        isNaN(parseFloat(tokens[1])) ? 0 : +tokens[1],
                        isNaN(parseFloat(tokens[2])) ? 0 : +tokens[2],
                        isNaN(parseFloat(tokens[3])) ? 0 : +tokens[3],
                        tokens[4],
                        tokens[5]);

                    drives.push(d);

                }

            });

            return drives;
        }

    }