import { exec, GLib } from "astal"

const featureTest = () => {
    // Check if awk is available
    try {
        exec( 'awk -V' );
        exec( 'sed --version' );
        enabled = true;
    } catch ( e ) {
        printerr( '[ SysInfo ] AWK or SED missing! No system info will be available' );
        enabled = false;
        return;
    }
    try {
        exec( 'mpstat' );
    } catch ( e ) {
        availableFeatures.cpu = false;
        printerr( '[ SysInfo ] Feature Test for CPU info failed. mpstat from the sysstat package missing!' );
    }

    // Screen brightness... CTL might be available, but no screen controllable
    // Battery... acpi might be present, but potentially no bat
}

let enabled = false;

const availableFeatures = {
    cpu: true,
    ram: true,
    bat: true,
    net: false,
    brightness: true,
}

const sysInfoFetcher = () => {
    if ( enabled ) {
        if ( availableFeatures.cpu ) {
            const cpuUtil = exec( 'mpstat | awk "/all/ {print(100 - $NF)"}' );
        }
        if ( availableFeatures.ram ) {
            const ramUtil = exec( `free | awk '/Mem/ { printf("%.2f\\n", ($3/$2)*100) }'` );
        }
        if ( availableFeatures.bat ) {
            const acpi = exec( `acpi -i | grep 'Battery'` );
            // TODO: Parse acpi output
        }
        // if ( availableFeatures.net ) {
        //     // Using ifstat or vnstat probably, get current network de
        // }
        if ( availableFeatures.brightness ) {
            
        }
    }
}

const SystemInfo = () => {
    
    return <box></box>
}


export default {
    SystemInfo
}
