name: Setup WooCommerce Monorepo description: Handles the installation, building, and caching of the projects within the monorepo. permissions: {} inputs: install-filters: description: The PNPM filter used to decide what projects to install. Supports multiline strings for multiple filters. default: '' build: description: Indicates whether or not the action should build any projects. default: 'true' build-filters: description: The PNPM filter used to decide what projects to build. Supports multiline strings for multiple filters. default: '' php-version: description: The version of PHP that the action should set up. default: '7.4' runs: using: composite steps: - name: Parse Action Input id: parse-input shell: bash run: | echo "INSTALL_FILTERS=$(node ./.github/actions/setup-woocommerce-monorepo/scripts/parse-input-filter.js '${{ inputs.install-filters }}')" >> $GITHUB_OUTPUT echo "BUILD_FILTERS=$(node ./.github/actions/setup-woocommerce-monorepo/scripts/parse-input-filter.js '${{ inputs.build-filters }}')" >> $GITHUB_OUTPUT - name: Setup PNPM uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd with: version: '^7.22.0' - name: Setup Node uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c with: node-version-file: .nvmrc cache: pnpm registry-url: 'https://registry.npmjs.org' - name: Setup PHP uses: shivammathur/setup-php@8e2ac35f639d3e794c1da1f28999385ab6fdf0fc with: php-version: ${{ inputs.php-version }} coverage: none tools: phpcs, sirbrillig/phpcs-changed - name: Cache Composer Dependencies uses: actions/cache@58c146cc91c5b9e778e71775dfe9bf1442ad9a12 with: path: ~/.cache/composer/files key: ${{ runner.os }}-php-${{ inputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-php-${{ inputs.php-version }}-composer- - name: Install Node and PHP Dependencies shell: bash run: | pnpm -w install turbo pnpm install ${{ steps.parse-input.outputs.INSTALL_FILTERS }} - name: Cache Build Output uses: actions/cache@58c146cc91c5b9e778e71775dfe9bf1442ad9a12 with: path: node_modules/.cache/turbo key: ${{ runner.os }}-build-output-${{ hashFiles('node_modules/.cache/turbo/*-meta.json') }} restore-keys: ${{ runner.os }}-build-output- - name: Build if: ${{ inputs.build == 'true' }} shell: bash run: pnpm -w exec turbo run turbo:build ${{ steps.parse-input.outputs.BUILD_FILTERS }}