# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: PR check on: workflow_call: inputs: is-fork: type: boolean description: Is the PR is opened from fork? default: false env: EMPTY_CONSTANTS: Y29uc3QgU3RyaW5nIGlhcFNlcnZlclVybCA9ICcnOwpjb25zdCBTdHJpbmcgaXNzdWVzUmVwb3J0VXJsID0gJyc7CmNvbnN0IFN0cmluZyBzb3VyY2VDb2RlVXJsID0gJyc7CmNvbnN0IFN0cmluZyBjb250YWN0RW1haWwgPSAnJzsK EMPTY_FIREBASE_OPTIONS: Ly8gaWdub3JlX2Zvcl9maWxlOiB0eXBlPWxpbnQKaW1wb3J0ICdwYWNrYWdlOmZpcmViYXNlX2NvcmUvZmlyZWJhc2VfY29yZS5kYXJ0JyBzaG93IEZpcmViYXNlT3B0aW9uczsKY2xhc3MgRGVmYXVsdEZpcmViYXNlT3B0aW9ucyB7c3RhdGljIGdldCBjdXJyZW50UGxhdGZvcm0gPT4gRmlyZWJhc2VPcHRpb25zKGFwaUtleTogJycsIGFwcElkOiAnJywgbWVzc2FnaW5nU2VuZGVySWQ6ICcnLCBwcm9qZWN0SWQ6ICcnKTt9Cg== jobs: analyze-and-test: name: Analyze & test runs-on: macos-14 timeout-minutes: 10 steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Connect private iap package uses: webfactory/ssh-agent@v0.8.0 id: fetch-iap if: ${{ inputs.is-fork != 'true' }} with: ssh-private-key: ${{ secrets.M3_LIGHTMETER_IAP_KEY }} - name: Override iap package with stub id: override-iap if: steps.fetch-iap.conclusion != 'success' run: bash ./.github/scripts/stub_iap.sh - name: Restore secrets env: CONSTANTS: ${{ inputs.is-fork && secrets.CONSTANTS || env.EMPTY_CONSTANTS }} FIREBASE_OPTIONS: ${{ inputs.is-fork && secrets.FIREBASE_OPTIONS || env.EMPTY_FIREBASE_OPTIONS }} run: | bash .github/scripts/restore_from_base64.sh "${{ env.CONSTANTS }}" "lib/constants.dart" bash .github/scripts/restore_from_base64.sh "${{ env.FIREBASE_OPTIONS }}" "lib/firebase_options.dart" - uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: "3.27.1" - name: Prepare flutter project run: | flutter --version flutter pub get flutter pub run intl_utils:generate - name: Analyze project source run: flutter analyze lib --fatal-infos - name: Run tests run: | defaults -currentHost write -g AppleFontSmoothing -int 0 flutter test --dart-define cameraStubImage=assets/camera_stub_image.jpg - name: Analyze project source with stub if: steps.override-iap.conclusion != 'success' run: | bash ./.github/scripts/stub_iap.sh flutter pub get flutter analyze lib --fatal-infos