summaryrefslogtreecommitdiffstats
path: root/reviewpad.yaml
blob: dba44e70b30c56b5be5fce57c2282b314909e14a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
groups:
  - name: ignored-patterns
    spec: '["*.lock","*.csv","*.yaml","*.txt"]'

rules:
  - name: changes-requirements
    spec: $containsFileName("requirements.txt") && $containsFileName("requirements-full.txt")
  - name: should-run-reviewpad
    spec: '!$isElementOf("reviewpad-ignore", $getLabels())'

workflows:
  - name: label-pull-request-with-size
    description: Label pull request based on the number of lines changed
    run:
      - if: $rule("should-run-reviewpad")
        then:
          # Calculate size while ignoring patterns in the "ignored-patterns" group
          # For more details about size follow https://docs.reviewpad.com/guides/built-ins/#size
          - if: $getSize($group("ignored-patterns")) <= 100
            then:
              - $removeLabels(["feat S", "feat M", "feat L", "feat XL"])
              - $addLabel("feat XS")
          - if: $getSize($group("ignored-patterns")) > 100 && $getSize($group("ignored-patterns")) <= 300
            then:
                - $removeLabels(["feat XS", "feat M", "feat L", "feat XL"])
                - $addLabel("feat S")
          - if: $getSize($group("ignored-patterns")) > 300 && $getSize($group("ignored-patterns")) <= 900
            then:
                - $removeLabels(["feat XS", "feat S", "feat L", "feat XL"])
                - $addLabel("feat M")
          - if: $getSize($group("ignored-patterns")) > 900 && $getSize($group("ignored-patterns")) <= 1800
            then:
                - $removeLabels(["feat XS", "feat S", "feat M", "feat XL"])
                - $addLabel("feat L")
          - if: $getSize($group("ignored-patterns")) > 1800
            then:
                - $removeLabels(["feat XS", "feat S", "feat M", "feat L"])
                - $addLabel("feat XL")
  - name: sanity
    description: Verify pull request sanity
    run:
      - if: $rule("should-run-reviewpad")
        then:
          - if: $containsOnlyFileExtensions([".py"]) && $getSize() > 1000
            then:
              - $failCheckStatus("This PR is very large and hard to review. Please split PR into multiple")
          - if: $containsBinaryFiles()
            then:
              - $failCheckStatus("Images are not allowed in the repository, please remove images from the PR")
  - name: dependencies
    description: Verify pull request dependency changes
    run:
      - if: $rule("should-run-reviewpad")
        then:
          - if: '!$isDraft() && $containsFileName("poetry.lock") && !$rule("changes-requirements")'
            then:
              - $review("REQUEST_CHANGES", "The `poetry.lock` file has been changed. Please update both `requirements.txt` and `requirements-full.txt` files")
          - if: '!$isDraft() && $containsFileName("pyproject.toml") && !$rule("changes-requirements")'
            then:
              - $reportWarning("The `pyproject.toml` file has been changed. Please make sure that the files `requirements.txt` and `requirements-full.txt` do not need to be updated")
  - name: EOF
    description: Verify files EOF
    run:
      - if: $rule("should-run-reviewpad")
        then:
          # By default, Reviewpad splits each file in the patch using the line feed character (\n or LF). 
          # This means that if a file has a carriage return character (\r) at the end, it indicates that the file has CRLF line endings instead.
          - if: $containsCodePattern("\r$$")
            then:
              - $reportWarning("It looks like you have files with `CRLF` line endings. Please make sure that all files have `LF` line endings")