summaryrefslogtreecommitdiffstats
path: root/scripts/oe-setup-vscode
blob: b8642780d57e2a5183bdf60e685038ae24e02c37 (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
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
#!/bin/sh

usage() {
    echo "$0 <OEINIT> <BUILDDIR>"
    echo "  OEINIT:   path to directory where the .vscode folder is"
    echo "  BUILDDIR: directory passed to the oe-init-setup-env script"
}

if [ "$#" -ne 2 ]; then
    usage
    exit 1
fi

OEINIT=$(readlink -f "$1")
BUILDDIR=$(readlink -f "$2")
VSCODEDIR=$OEINIT/.vscode

if [ ! -d "$OEINIT" ] || [ ! -d "$BUILDDIR" ]; then
    echo "$OEINIT and/or $BUILDDIR directories are not present."
    exit 1
fi

VSCODE_SETTINGS=$VSCODEDIR/settings.json
ws_builddir="$(echo "$BUILDDIR" | sed -e "s|$OEINIT|\${workspaceFolder}|g")"

# If BUILDDIR is in scope of VSCode ensure VSCode does not try to index the build folder.
# This would lead to a busy CPU and finally to an OOM exception.
mkdir -p "$VSCODEDIR"
cat <<EOMsettings > "$VSCODE_SETTINGS"
{
    "bitbake.pathToBitbakeFolder": "\${workspaceFolder}/bitbake",
    "bitbake.pathToEnvScript": "\${workspaceFolder}/oe-init-build-env",
    "bitbake.pathToBuildFolder": "$ws_builddir",
    "bitbake.commandWrapper": "",
    "bitbake.workingDirectory": "\${workspaceFolder}",
    "files.exclude": {
        "**/.git/**": true,
        "**/_build/**": true,
        "**/buildhistory/**": true,
        "**/cache/**": true,
        "**/downloads/**": true,
        "**/node_modules/**": true,
        "**/oe-logs/**": true,
        "**/oe-workdir/**": true,
        "**/sstate-cache/**": true,
        "**/tmp*/**": true,
        "**/workspace/attic/**": true,
        "**/workspace/sources/**": true
    },
    "files.watcherExclude": {
        "**/.git/**": true,
        "**/_build/**": true,
        "**/buildhistory/**": true,
        "**/cache/**": true,
        "**/downloads/**": true,
        "**/node_modules/**": true,
        "**/oe-logs/**": true,
        "**/oe-workdir/**": true,
        "**/sstate-cache/**": true,
        "**/tmp*/**": true,
        "**/workspace/attic/**": true,
        "**/workspace/sources/**": true
    },
    "python.analysis.exclude": [
        "**/_build/**",
        "**/.git/**",
        "**/buildhistory/**",
        "**/cache/**",
        "**/downloads/**",
        "**/node_modules/**",
        "**/oe-logs/**",
        "**/oe-workdir/**",
        "**/sstate-cache/**",
        "**/tmp*/**",
        "**/workspace/attic/**",
        "**/workspace/sources/**"
    ]
}
EOMsettings


# Ask the user if the yocto-bitbake extension should be installed
VSCODE_EXTENSIONS=$VSCODEDIR/extensions.json
cat <<EOMextensions > "$VSCODE_EXTENSIONS"
{
    "recommendations": [
        "yocto-project.yocto-bitbake"
    ]
}
EOMextensions

echo "You had no $VSCODEDIR configuration."
echo "These configuration files have therefore been created for you."