summaryrefslogtreecommitdiff
path: root/Library/SDK/Modules/Strawberry.AppManager.js
blob: 71f707961fa76b46b053f48d2bdef4bf4074cc19 (plain)
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
const path = require('path');
global._STRAWBERRY_CURRENT_APP = null;

module.exports = {
    Start: (app) => {
        Strawberry.Tick.Events = [];
        Strawberry.ProcessKeyboard = false;
        let name = path.basename(app, ".app");

        load("Strawberry.DisplayRaw");
        console.clear();
        let horizontal = Math.round(process.stdout.columns / 2 - (1 + (name.length / 2)));
        process.stdout.write(color.bgBlue.white(" ".repeat(horizontal) + name + " ".repeat(process.stdout.columns - horizontal - name.length)));

        global._STRAWBERRY_INIT_APP();
        global._STRAWBERRY_CURRENT_APP = app;
        require(app + "/Main.js")();
    },

    Quit: () => {
        Strawberry.Tick.Events = [];
        Strawberry.ProcessKeyboard = false;

        load("Strawberry.DisplayRaw");
        console.clear();
        process.stdout.write(color.bgBlue.white(" ".repeat(process.stdout.columns)));

        Object.keys(require.cache).map((i) => {
            let ji = 0;
            require.cache[i].children.map((j) => {
                if (require.cache[i].children[ji] !== undefined) {
                    let ki = 0;
                    require.cache[i].children[ji].children.map((k) => {
                        if (j.id.startsWith(global._STRAWBERRY_CURRENT_APP)) {
                            delete require.cache[i].children[j].children[ki];
                        }

                        ki++;
                    })
                }

                if (j.id.startsWith(global._STRAWBERRY_CURRENT_APP)) {
                    delete require.cache[i].children[ji];
                }

                ji++;
            })

            if (i.startsWith(global._STRAWBERRY_CURRENT_APP)) {
                delete require.cache[i];
            }
        })

        global._STRAWBERRY_CURRENT_APP = null;
        global._STRAWBERRY_INIT_APP();
        global._STRAWBERRY_SYSTEMSOFTWARE_INIT();
    }
}