# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
generate:
    description: Generate the Sphinx documentation
    index:
        # Searchfox needs a fixed URL for the artifacts to download the latest
        # trees.json file.
        product: source
        job-name: doc-generate
    use-python: "3.11"
    platform: doc/opt
    treeherder:
        symbol: doc(generate)
        kind: test
        tier: 1
    run-on-repo-type: [hg]
    run-on-projects: ['trunk']
    worker-type: b-linux-medium
    worker:
        docker-image: {in-tree: "lint"}
        max-run-time: 1800
        env:
            LC_ALL: C
            # Define various variables to make the generation happy and not
            # output `KeyError`s.
            #
            # This occurs when sphinx is processing some of the python, and
            # there is processing going on at the top level. It shows up in
            # automation because there's no build environment setup, and so
            # the python code can't work out what these variables should be.
            # Hence in defining them here we can work around the issue.
            OS_TARGET: Linux
            BIN_SUFFIX: ""
            DLL_PREFIX: ""
            DLL_SUFFIX: ""
        artifacts:
            - type: file
              name: public/docs.tar.gz
              path: /builds/worker/checkouts/gecko/docs-out/main.tar.gz
            - type: file
              name: public/trees.json
              path: /builds/worker/artifacts/trees.json
    run:
        using: run-task
        cwd: '{checkout}'
        command: >
            cp -r $MOZ_FETCHES_DIR/node_modules node_modules &&
            ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
            ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
            ./mach doc --outdir docs-out --no-open --no-serve --archive --dump-trees=/builds/worker/artifacts/trees.json
        sparse-profile: sphinx-docs
    optimization:
        docs: null
    fetches:
        toolchain:
            - linux64-node
            - node-modules


upload:
    description: Generate and upload the Sphinx documentation
    use-python: "3.11"
    platform: doc/opt
    attributes:
        code-review: true
    treeherder:
        symbol: doc(upload)
        kind: test
        tier: 2
    run-on-projects: [mozilla-central-only]
    worker-type: b-linux-medium
    worker:
        docker-image: {in-tree: "lint"}
        max-run-time: 2400
        env:
            LC_ALL: C
            MOZ_SOURCE_DOCS_USE_GOOGLE: "1"
            # Define various variables to make the generation happy and not
            # output `KeyError`s.
            #
            # This occurs when sphinx is processing some of the python, and
            # there is processing going on at the top level. It shows up in
            # automation because there's no build environment setup, and so
            # the python code can't work out what these variables should be.
            # Hence in defining them here we can work around the issue.
            OS_TARGET: Linux
            BIN_SUFFIX: ""
            DLL_PREFIX: ""
            DLL_SUFFIX: ""
        taskcluster-proxy: true
        artifacts:
            - type: file
              name: public/firefox-source-docs-url.txt
              path: /builds/worker/firefox-source-docs-url.txt
            - type: file
              name: public/trees.json
              path: /builds/worker/artifacts/trees.json
    run:
        using: run-task
        cwd: '{checkout}'
        command: >
            cp -r $MOZ_FETCHES_DIR/node_modules node_modules &&
            ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
            ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
            ./mach doc --upload --no-open --no-serve --write-url /builds/worker/firefox-source-docs-url.txt --dump-trees=/builds/worker/artifacts/trees.json
        sparse-profile: sphinx-docs
    scopes:
        - secrets:get:project/releng/gecko/build/level-{level}/gecko-docs-upload
    optimization:
        docs: null
    fetches:
        toolchain:
            - linux64-node
            - node-modules
