import { execAsync } from 'astal';

import AstalApps from 'gi://AstalApps';


const bash = async(strings: TemplateStringsArray | string, ...values: unknown[]) => {
    const cmd = typeof strings === 'string' ?
        strings :
        strings.flatMap((str, i) => `${str}${values[i] ?? ''}`)
            .join('');

    return execAsync(['bash', '-c', cmd]).catch((err) => {
        console.error(cmd, err);

        return '';
    });
};

export const launchApp = (app: AstalApps.Application) => {
    const exe = app.executable
        .split(/\s+/)
        .filter((str) => !str.startsWith('%') && !str.startsWith('@'))
        .join(' ');

    bash(`${exe} &`);
    app.frequency += 1;
};