include:
    - gitlab/npm.yml

.panda:
    script:
    - npm run panda:sdk:install --prefix ./external/ui2abc/libarkts
    - npm ls @panda/sdk --prefix ./external/incremental/tools/panda

build idlize:
    stage: build
    tags:
    - idlize-ci
    - koala-ci
    script:
    - !reference [.npm, script]
    - !reference [.panda, script]
    - node tools/compile-parallel.mjs
    cache:
    -   key: $CI_PIPELINE_ID
        policy: pull-push
        paths:
        - .npm/
    artifacts:
        paths:
        - arkgen/build
        - arkgen/lib
        - arktscgen/lib
        - core/build
        - dtsgen/build
        - dtsgen/lib
        - etsgen/build
        - etsgen/lib
        - idlinter/build
        - idlinter/dist
        - interfaces/dist
        - libohos/build
        - linter/lib
        - ohosgen/lib
        - runner/lib


build external:
    stage: build
    tags:
    - idlize-ci
    - koala-ci
    before_script:
    - !reference [.npm, script]
    - !reference [.panda, script]
    - npm i --prefix external/ui2abc/annotate --prefer-offline --no-audit --no-fund
    - npm i --prefix external/incremental --prefer-offline --no-audit --no-fund
    - npm i --prefix external/interop --prefer-offline --no-audit --no-fund
    script:
    - cd external/ui2abc/libarkts
    - npm run regenerate
    - npm run compile
    - npm run compile:plugins
    - cd -
    - npm run compile --prefix external/interop
    - npm run compile --prefix external/incremental/common
    - npm run compile --prefix external/incremental/compat
    - npm run compile --prefix external/incremental/runtime
    - npm run compile --prefix external/ui2abc/fast-arktsc
    - npm run compile --prefix external/ui2abc/memo-plugin
    - npm run build --prefix external/interop
    - npm run build --prefix external/incremental
    artifacts:
        paths:
        - external/ui2abc/libarkts/lib
        - external/ui2abc/libarkts/build
        - external/ui2abc/annotate/lib
        - external/ui2abc/fast-arktsc/lib
        - external/ui2abc/memo-plugin/lib
        - external/ui2abc/ui-plugins/lib
        - external/incremental/common/build/lib
        - external/incremental/compat/build
        - external/incremental/runtime/build/lib
        - external/incremental/runtime/build/incremental.abc
        - external/incremental/runtime/ets
        - external/incremental/runtime/ets-test
        - external/interop/build/lib
        - external/interop/build/interop.abc
        # need these symlinks for require in es2panda.js to work
        - external/ui2abc/node_modules/@koalaui/memo-plugin
        - external/ui2abc/node_modules/@koalaui/ui-plugins
        expire_in: 1 day

download sdk:
    stage: build
    tags:
    - idlize-ci
    - koala-ci
    script:
    - !reference [.npm, script]
    - !reference [.panda, script]
    - npm run download:sdk
    needs:
    - build idlize
    - build external
    artifacts:
        paths:
        - sdk-patched
        - sdk-patched-arkts
        expire_in: 1 day