about summary refs log tree commit diff
path: root/nixpkgs/pkgs/build-support/php/builders/v1/hooks/composer-with-plugin-vendor-hook.sh
blob: 0d88d14094ad4e9a9ec0c8d8b78b0de913c408e2 (plain) (blame)
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
declare composerLock
declare version
declare composerNoDev
declare composerNoPlugins
declare composerNoScripts
declare composerStrictValidation

preConfigureHooks+=(composerWithPluginConfigureHook)
preBuildHooks+=(composerWithPluginBuildHook)
preCheckHooks+=(composerWithPluginCheckHook)
preInstallHooks+=(composerWithPluginInstallHook)
preInstallCheckHooks+=(composerWithPluginInstallCheckHook)

source @phpScriptUtils@

composerWithPluginConfigureHook() {
    echo "Executing composerWithPluginConfigureHook"

    mkdir -p $out

    export COMPOSER_HOME=$out

    if [[ -e "$composerLock" ]]; then
        cp $composerLock $out/composer.lock
    fi

    cp $composerJson $out/composer.json
    cp -ar $src $out/src

    if [[ ! -f "$out/composer.lock" ]]; then
        setComposeRootVersion

        composer \
            global \
            --no-install \
            --no-interaction \
            --no-progress \
            ${composerNoDev:+--no-dev} \
            ${composerNoPlugins:+--no-plugins} \
            ${composerNoScripts:+--no-scripts} \
            update

        echo
        echo -e "\e[31mERROR: No composer.lock found\e[0m"
        echo
        echo -e '\e[31mNo composer.lock file found, consider adding one to your repository to ensure reproducible builds.\e[0m'
        echo -e "\e[31mIn the meantime, a composer.lock file has been generated for you in $out/composer.lock\e[0m"
        echo
        echo -e '\e[31mTo fix the issue:\e[0m'
        echo -e "\e[31m1. Copy the composer.lock file from $out/composer.lock to the project's source:\e[0m"
        echo -e "\e[31m  cp $out/composer.lock <path>\e[0m"
        echo -e '\e[31m2. Add the composerLock attribute, pointing to the copied composer.lock file:\e[0m'
        echo -e '\e[31m  composerLock = ./composer.lock;\e[0m'
        echo

        exit 1
    fi

    echo "Finished composerWithPluginConfigureHook"
}

composerWithPluginBuildHook() {
    echo "Executing composerWithPluginBuildHook"

    echo "Finished composerWithPluginBuildHook"
}

composerWithPluginCheckHook() {
    echo "Executing composerWithPluginCheckHook"

    checkComposerValidate

    echo "Finished composerWithPluginCheckHook"
}

composerWithPluginInstallHook() {
    echo "Executing composerWithPluginInstallHook"

    composer \
        global \
        --no-interaction \
        --no-progress \
        ${composerNoDev:+--no-dev} \
        ${composerNoPlugins:+--no-plugins} \
        ${composerNoScripts:+--no-scripts} \
        install

    echo "Finished composerWithPluginInstallHook"
}

composerWithPluginInstallCheckHook() {
    composer global show $pluginName
}