name: Static Analysis on: pull_request: { } push: branches: [ develop, master ] repository_dispatch: types: [ element-web-notify ] env: # These must be set for fetchdep.sh to get the right branch REPOSITORY: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} jobs: ts_lint: name: "Typescript Syntax Check" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: cache: 'yarn' - name: Install Dependencies run: "./scripts/layered.sh" - name: Typecheck run: "yarn run lint:types" i18n_lint: name: "i18n Check" runs-on: ubuntu-latest permissions: pull-requests: read steps: - uses: actions/checkout@v2 - name: "Get modified files" id: changed_files if: github.event_name == 'pull_request' uses: tj-actions/changed-files@v19 with: files: | src/i18n/strings/* files_ignore: | src/i18n/strings/en_EN.json - name: "Assert only en_EN was modified" if: github.event_name == 'pull_request' && steps.changed_files.outputs.any_modified == 'true' run: | echo "You can only modify en_EN.json, do not touch any of the other i18n files as Weblate will be confused" exit 1 - uses: actions/setup-node@v3 with: cache: 'yarn' # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --pure-lockfile" - name: i18n Check run: "yarn run diff-i18n" js_lint: name: "ESLint" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: cache: 'yarn' # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --pure-lockfile" - name: Run Linter run: "yarn run lint:js" style_lint: name: "Style Lint" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: cache: 'yarn' # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --pure-lockfile" - name: Run Linter run: "yarn run lint:style"