diff --git a/.github/workflows/assign-pr.yml b/.github/workflows/assign-pr.yml deleted file mode 100644 index 4da9319..0000000 --- a/.github/workflows/assign-pr.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: 'Auto Assign PR' - -on: pull_request_target - -jobs: - assign-pr: - name: 'Auto Assign PR' - runs-on: ubuntu-latest - steps: - - uses: kentaro-m/auto-assign-action@v1.2.5 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/autograding.yml b/.github/workflows/autograding.yml deleted file mode 100644 index b3a0ca2..0000000 --- a/.github/workflows/autograding.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: 'Autograding PR' - -on: - pull_request: - -jobs: - build: - - runs-on: [ubuntu-latest] - name: Build, test and autograde on Ubuntu - - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: 21 - check-latest: true - cache: 'maven' - - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 - with: - maven-version: 3.9.5 - - name: Build with Maven - env: - BROWSER: chrome-container - run: mvn -V --color always -ntp clean verify --file pom.xml '-Djenkins.test.timeout=5000' '-Dgpg.skip' -Ppit | tee maven.log - - name: Extract pull request number - uses: jwalton/gh-find-current-pr@v1 - id: pr - - name: Run Autograding - uses: uhafner/autograding-github-action@v3 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - pr-number: ${{ steps.pr.outputs.number }} - checks-name: 'Quality Checks' - config: > - { - "tests": { - "tools": [ - { - "id": "test", - "name": "Unittests", - "pattern": "**/target/*-reports/TEST*.xml" - } - ], - "name": "JUnit", - "passedImpact": 0, - "skippedImpact": -1, - "failureImpact": -5, - "maxScore": 100 - }, - "analysis": { - "name": "Warnings", - "id": "warnings", - "tools": [ - { - "id": "checkstyle", - "name": "CheckStyle", - "pattern": "**/target/checkstyle-result.xml" - }, - { - "id": "pmd", - "name": "PMD", - "pattern": "**/target/pmd.xml" - }, - { - "id": "error-prone", - "name": "Error Prone", - "pattern": "**/maven.log" - }, - { - "id": "spotbugs", - "name": "SpotBugs", - "sourcePath": "src/main/java", - "pattern": "**/target/spotbugsXml.xml" - } - - ], - "errorImpact": -1, - "highImpact": -1, - "normalImpact": -1, - "lowImpact": -1, - "maxScore": 100 - }, - "coverage": [ - { - "tools": [ - { - "id": "jacoco", - "name": "Line Coverage", - "metric": "line", - "sourcePath": "src/main/java", - "pattern": "**/target/site/jacoco/jacoco.xml" - }, - { - "id": "jacoco", - "name": "Branch Coverage", - "metric": "branch", - "sourcePath": "src/main/java", - "pattern": "**/target/site/jacoco/jacoco.xml" - } - ], - "name": "JaCoCo", - "maxScore": 100, - "missedPercentageImpact": -1 - }, - { - "tools": [ - { - "id": "pit", - "name": "Mutation Coverage", - "metric": "mutation", - "sourcePath": "src/main/java", - "pattern": "**/target/pit-reports/mutations.xml" - } - ], - "name": "PIT", - "maxScore": 100, - "missedPercentageImpact": -1 - } - ] - } diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index 061beb8..0000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: CD - -on: - push: - branches: - - main - -jobs: - build: - name: Build and deploy to Docker hub - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '21' - check-latest: true - cache: 'maven' - - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 - with: - maven-version: 3.9.5 - - name: Build and deploy - env: - DOCKER_IO_USERNAME: ${{ secrets.DOCKER_IO_USERNAME }} - DOCKER_IO_PASSWORD: ${{ secrets.DOCKER_IO_PASSWORD }} - run: mvn -ntp clean install diff --git a/.github/workflows/charts.yml b/.github/workflows/charts.yml new file mode 100644 index 0000000..2a4f795 --- /dev/null +++ b/.github/workflows/charts.yml @@ -0,0 +1,696 @@ +name: Create percentages + +on: + push: + branches: + - '*' + +jobs: + create-percentages: + name: Create percentage SVG images + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Generate progress SVG + id: chart-050 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#D2222D","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"50%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/050.svg + ${{ steps.chart-050.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-051 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"51%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":1,"name":"Filled"},{"value":9,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/051.svg + ${{ steps.chart-051.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-052 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"52%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":2,"name":"Filled"},{"value":8,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/052.svg + ${{ steps.chart-052.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-053 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"53%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":3,"name":"Filled"},{"value":7,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/053.svg + ${{ steps.chart-053.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-054 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"54%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":4,"name":"Filled"},{"value":6,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/054.svg + ${{ steps.chart-054.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-055 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"55%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":5,"name":"Filled"},{"value":5,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/055.svg + ${{ steps.chart-055.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-056 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"56%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":6,"name":"Filled"},{"value":4,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/056.svg + ${{ steps.chart-056.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-057 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"57%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":7,"name":"Filled"},{"value":3,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/057.svg + ${{ steps.chart-057.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-058 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"58%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":8,"name":"Filled"},{"value":2,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/058.svg + ${{ steps.chart-058.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-059 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"59%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":9,"name":"Filled"},{"value":1,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/059.svg + ${{ steps.chart-059.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-060 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"60%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/060.svg + ${{ steps.chart-060.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-061 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"61%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":1,"name":"Filled"},{"value":9,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/061.svg + ${{ steps.chart-061.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-062 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"62%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":2,"name":"Filled"},{"value":8,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/062.svg + ${{ steps.chart-062.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-063 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"63%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":3,"name":"Filled"},{"value":7,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/063.svg + ${{ steps.chart-063.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-064 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"64%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":4,"name":"Filled"},{"value":6,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/064.svg + ${{ steps.chart-064.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-065 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"65%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":5,"name":"Filled"},{"value":5,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/065.svg + ${{ steps.chart-065.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-066 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"66%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":6,"name":"Filled"},{"value":4,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/066.svg + ${{ steps.chart-066.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-067 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"67%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":7,"name":"Filled"},{"value":3,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/067.svg + ${{ steps.chart-067.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-068 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"68%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":8,"name":"Filled"},{"value":2,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/068.svg + ${{ steps.chart-068.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-069 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"69%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":9,"name":"Filled"},{"value":1,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/069.svg + ${{ steps.chart-069.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-070 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"70%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/070.svg + ${{ steps.chart-070.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-071 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"71%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":1,"name":"Filled"},{"value":9,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/071.svg + ${{ steps.chart-071.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-072 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"72%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":2,"name":"Filled"},{"value":8,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/072.svg + ${{ steps.chart-072.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-073 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"73%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":3,"name":"Filled"},{"value":7,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/073.svg + ${{ steps.chart-073.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-074 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"74%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":4,"name":"Filled"},{"value":6,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/074.svg + ${{ steps.chart-074.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-075 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"75%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":5,"name":"Filled"},{"value":5,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/075.svg + ${{ steps.chart-075.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-076 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"76%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":6,"name":"Filled"},{"value":4,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/076.svg + ${{ steps.chart-076.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-077 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"77%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":7,"name":"Filled"},{"value":3,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/077.svg + ${{ steps.chart-077.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-078 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"78%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":8,"name":"Filled"},{"value":2,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/078.svg + ${{ steps.chart-078.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-079 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"79%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":9,"name":"Filled"},{"value":1,"name":"NotFilled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/079.svg + ${{ steps.chart-079.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-080 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#FFBF00","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"80%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"},{"value":10,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/080.svg + ${{ steps.chart-080.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-081 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"81%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":1,"name":"Filled"},{"value":9,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/081.svg + ${{ steps.chart-081.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-082 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"82%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":2,"name":"Filled"},{"value":8,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/082.svg + ${{ steps.chart-082.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-083 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"83%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":3,"name":"Filled"},{"value":7,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/083.svg + ${{ steps.chart-083.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-084 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"84%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":4,"name":"Filled"},{"value":6,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/084.svg + ${{ steps.chart-084.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-085 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"85%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":5,"name":"Filled"},{"value":5,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/085.svg + ${{ steps.chart-085.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-086 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"86%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":6,"name":"Filled"},{"value":4,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/086.svg + ${{ steps.chart-086.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-087 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"87%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":7,"name":"Filled"},{"value":3,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/087.svg + ${{ steps.chart-087.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-088 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"88%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":8,"name":"Filled"},{"value":2,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/088.svg + ${{ steps.chart-088.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-089 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"89%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":9,"name":"Filled"},{"value":1,"name":"NotFilled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/089.svg + ${{ steps.chart-089.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-090 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"90%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"},{"value":10,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/090.svg + ${{ steps.chart-090.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-091 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"91%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":1,"name":"Filled"},{"value":9,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/091.svg + ${{ steps.chart-091.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-092 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"92%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":2,"name":"Filled"},{"value":8,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/092.svg + ${{ steps.chart-092.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-093 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"93%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":3,"name":"Filled"},{"value":7,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/093.svg + ${{ steps.chart-093.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-094 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"94%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":4,"name":"Filled"},{"value":6,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/094.svg + ${{ steps.chart-094.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-095 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"95%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":5,"name":"Filled"},{"value":5,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/095.svg + ${{ steps.chart-095.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-096 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"96%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":6,"name":"Filled"},{"value":4,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/096.svg + ${{ steps.chart-096.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-097 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"97%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":7,"name":"Filled"},{"value":3,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/097.svg + ${{ steps.chart-097.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-098 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"98%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":8,"name":"Filled"},{"value":2,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/098.svg + ${{ steps.chart-098.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-099 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"99%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":9,"name":"Filled"},{"value":1,"name":"NotFilled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/099.svg + ${{ steps.chart-099.outputs.svg }} + EOF + - name: Generate progress SVG + id: chart-100 + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '{"series":[{"type":"pie","radius":["75%","100%"],"avoidLabelOverlap":false,"color":["#238823","#D0D0D0"],"hoverAnimation":false,"label":{"show":true,"position":"center","fontSize":55,"fontWeight":"bold","color":"#000","formatter":"100%"},"itemStyle":{"borderRadius":10,"borderColor":"#fff","borderWidth":3},"labelLine":{"normal":{"show":false}},"data":[{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":10,"name":"Filled"},{"value":0,"name":"Filled"}]}]}' + - name: Save generated SVG + run: | + cat < badges/100.svg + ${{ steps.chart-100.outputs.svg }} + EOF + + - name: Save generated SVG + run: | + cat < badges/100.svg + ${{ steps.chart-100.outputs.svg }} + EOF + - name: Commit updated badges + continue-on-error: true + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add badges/*.svg + git commit -m "Update badges with results from latest autograding" || true + - name: Push updated badges to GitHub repository + uses: ad-m/github-push-action@master + if: ${{ success() }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: percentages diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index bbd329c..0000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: - - master - - main - pull_request: - branches: - - master - - main - schedule: - - cron: "32 3 * * 0" - -jobs: - analyze: - name: Analyze with CodeQL - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ java ] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Java - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 21 - cache: maven - - - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 - with: - maven-version: 3.9.6 - - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - queries: +security-and-quality - - - name: Build with Maven - run: mvn -V --color always -ntp clean verify --file pom.xml -Pskip - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - upload: false - output: sarif-results - category: "/language:${{ matrix.language }}" - - - name: Filter SARIF results - uses: advanced-security/filter-sarif@v1 - with: - patterns: | - -**/*Assert* - input: sarif-results/${{ matrix.language }}.sarif - output: sarif-results/${{ matrix.language }}.sarif - - - name: Upload SARIF results - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: sarif-results/${{ matrix.language }}.sarif diff --git a/.github/workflows/dogfood.yml b/.github/workflows/dogfood.yml deleted file mode 100644 index e404d86..0000000 --- a/.github/workflows/dogfood.yml +++ /dev/null @@ -1,309 +0,0 @@ -name: Eat your own dog food - -on: - workflow_run: - workflows: ["CD"] - types: - - completed - -jobs: - grade-test-data: - name: Run autograding with test data - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '21' - check-latest: true - cache: 'maven' - - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 - with: - maven-version: 3.9.5 - - name: Run Autograding with test data - uses: uhafner/autograding-github-action@main - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - checks-name: "Autograding with Test Data" - config: > - { - "tests": { - "tools": [ - { - "id": "test", - "name": "Unittests", - "pattern": "**/src/test/resources/**/TEST*.xml" - } - ], - "name": "JUnit", - "passedImpact": 10, - "skippedImpact": -1, - "failureImpact": -5, - "maxScore": 100 - }, - "analysis": [ - { - "name": "Style", - "id": "style", - "tools": [ - { - "id": "checkstyle", - "name": "CheckStyle", - "pattern": "**/src/test/resources/**/checkstyle*.xml" - }, - { - "id": "pmd", - "name": "PMD", - "pattern": "**/src/test/resources/**/pmd*.xml" - } - ], - "errorImpact": 1, - "highImpact": 2, - "normalImpact": 3, - "lowImpact": 4, - "maxScore": 100 - }, - { - "name": "Bugs", - "id": "bugs", - "icon": "bug", - "tools": [ - { - "id": "spotbugs", - "name": "SpotBugs", - "pattern": "**/src/test/resources/**/spotbugs*.xml" - } - ], - "errorImpact": -11, - "highImpact": -12, - "normalImpact": -13, - "lowImpact": -14, - "maxScore": 100 - } - ], - "coverage": [ - { - "tools": [ - { - "id": "jacoco", - "name": "Line Coverage", - "metric": "line", - "pattern": "**/src/test/resources/**/jacoco.xml" - }, - { - "id": "jacoco", - "name": "Branch Coverage", - "metric": "branch", - "pattern": "**/src/test/resources/**/jacoco.xml" - } - ], - "name": "JaCoCo", - "maxScore": 100, - "coveredPercentageImpact": 1, - "missedPercentageImpact": -1 - }, - { - "tools": [ - { - "id": "pit", - "name": "Mutation Coverage", - "metric": "mutation", - "pattern": "**/src/test/resources/**/mutations.xml" - } - ], - "name": "PIT", - "maxScore": 100, - "coveredPercentageImpact": 1, - "missedPercentageImpact": -1 - } - ] - } - grade-github-action: - name: Run autograding for the GitHub Autograding Action - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '21' - check-latest: true - cache: 'maven' - - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 - with: - maven-version: 3.9.5 - - name: Build - run: mvn -ntp clean verify -Ppit - - name: Run Autograding - uses: uhafner/autograding-github-action@main - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - checks-name: "Autograding GitHub Action" - config: > - { - "tests": { - "tools": [ - { - "id": "test", - "name": "Unittests", - "pattern": "**/target/*-reports/TEST*.xml" - } - ], - "name": "JUnit", - "passedImpact": 0, - "skippedImpact": -1, - "failureImpact": -5, - "maxScore": 100 - }, - "analysis": [ - { - "name": "Style", - "id": "style", - "tools": [ - { - "id": "checkstyle", - "name": "CheckStyle", - "pattern": "**/target/checkstyle-result.xml" - }, - { - "id": "pmd", - "name": "PMD", - "pattern": "**/target/pmd.xml" - } - ], - "errorImpact": 1, - "highImpact": 2, - "normalImpact": 3, - "lowImpact": 4, - "maxScore": 100 - }, - { - "name": "Bugs", - "id": "bugs", - "icon": "bug", - "tools": [ - { - "id": "spotbugs", - "name": "SpotBugs", - "sourcePath": "src/main/java", - "pattern": "**/target/spotbugsXml.xml" - } - ], - "errorImpact": -11, - "highImpact": -12, - "normalImpact": -13, - "lowImpact": -14, - "maxScore": 100 - } - ], - "coverage": [ - { - "tools": [ - { - "id": "jacoco", - "sourcePath": "src/main/java", - "name": "Line Coverage", - "metric": "line", - "pattern": "**/target/site/jacoco/jacoco.xml" - }, - { - "id": "jacoco", - "sourcePath": "src/main/java", - "name": "Branch Coverage", - "metric": "branch", - "pattern": "**/target/site/jacoco/jacoco.xml" - } - ], - "name": "JaCoCo", - "maxScore": 100, - "coveredPercentageImpact": 1, - "missedPercentageImpact": -1 - }, - { - "tools": [ - { - "id": "pit", - "name": "Mutation Coverage", - "metric": "mutation", - "sourcePath": "src/main/java", - "pattern": "**/target/pit-reports/mutations.xml" - } - ], - "name": "PIT", - "maxScore": 100, - "coveredPercentageImpact": 1, - "missedPercentageImpact": -1 - } - ] - } - - name: Write metrics to GitHub output - id: metrics - run: | - cat metrics.env >> "${GITHUB_OUTPUT}" - mkdir -p badges - - name: Generate the badge SVG image for the line coverage - uses: emibcn/badge-action@v2.0.2 - with: - label: 'Lines' - status: ${{ steps.metrics.outputs.line }}% - color: 'green' - path: badges/line-coverage.svg - - name: Generate the badge SVG image for the branch coverage - uses: emibcn/badge-action@v2.0.2 - with: - label: 'Branches' - status: ${{ steps.metrics.outputs.branch }}% - color: 'green' - path: badges/branch-coverage.svg - - name: Generate the badge SVG image for the mutation coverage - uses: emibcn/badge-action@v2.0.2 - with: - label: 'Mutations' - status: ${{ steps.metrics.outputs.mutation }}% - color: 'green' - path: badges/mutation-coverage.svg - - name: Generate the badge SVG image for the style warnings - uses: emibcn/badge-action@v2.0.2 - with: - label: 'Warnings' - status: ${{ steps.metrics.outputs.style }} - color: 'orange' - path: badges/style-warnings.svg - - name: Generate the badge SVG image for the potential bugs - uses: emibcn/badge-action@v2.0.2 - with: - label: 'Bugs' - status: ${{ steps.metrics.outputs.bugs }} - color: 'red' - path: badges/bugs.svg - - name: Generate progress SVG - id: chart - uses: robiningelbrecht/apache-echarts-action@v1.1.0 - with: - width: 256 - height: 256 - pass-options-as: string - chart-option: '{ "tooltip": { "trigger": "item", "formatter": "null of null" }, "series": [ { "type": "pie", "radius": [ "70%", "100%" ], "avoidLabelOverlap": false, "color": [ "#1ea64b", "#D0D0D0 " ], "hoverAnimation": false, "label": { "show": true, "position": "center", "fontSize": "38", "fontWeight": "bold", "color": "#000", "formatter": "92%" }, "labelLine": { "normal": { "show": false } }, "data": [ { "value": 92, "name": "Filled" }, { "value": 8, "name": "NotFilled" } ] } ] }' - - name: Save generated SVG - run: | - cat < badges/progress.svg - ${{ steps.chart.outputs.svg }} - EOF - - name: Commit updated badges - continue-on-error: true - run: | - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - git add badges/*.svg - git commit -m "Update badges with results from latest autograding" || true - - name: Push updated badges to GitHub repository - uses: ad-m/github-push-action@master - if: ${{ success() }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: main diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml deleted file mode 100644 index 56b84cc..0000000 --- a/.github/workflows/enforce-labels.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Enforce PR labels -on: - pull_request: - types: [opened, labeled, unlabeled, synchronize] -jobs: - enforce-labels: - name: Enforce PR labels - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: mheap/github-action-required-labels@v5 - with: - mode: minimum - count: 1 - labels: "bug,feature,enhancement,breaking,tests,documentation,internal,dependencies" - message: "Maintainer needs to assign at least one label before merge" diff --git a/.github/workflows/run-release-drafter.yml b/.github/workflows/run-release-drafter.yml deleted file mode 100644 index f9403e7..0000000 --- a/.github/workflows/run-release-drafter.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: 'Invoke Release Drafter' - -on: - push: - branches: - - master - - main - -jobs: - update-release-draft: - name: 'Update Release Draft' - runs-on: ubuntu-latest - steps: - - uses: release-drafter/release-drafter@v5.25.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml deleted file mode 100644 index 786bb2e..0000000 --- a/.github/workflows/sync-labels.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Sync labels -on: - push: - branches: - - master - - main - paths: - - .github/labels.yml - - .github/workflows/sync-labels.yml - -jobs: - snyc-labels: - name: Sync labels - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: micnncim/action-label-syncer@v1.3.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - manifest: .github/labels.yml diff --git a/badges/000.svg b/badges/000.svg new file mode 100644 index 0000000..330756c --- /dev/null +++ b/badges/000.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +0% + + diff --git a/badges/001.svg b/badges/001.svg new file mode 100644 index 0000000..3f62d94 --- /dev/null +++ b/badges/001.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +1% + + diff --git a/badges/002.svg b/badges/002.svg new file mode 100644 index 0000000..5eecd6c --- /dev/null +++ b/badges/002.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +2% + + diff --git a/badges/003.svg b/badges/003.svg new file mode 100644 index 0000000..7a9464c --- /dev/null +++ b/badges/003.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +3% + + diff --git a/badges/004.svg b/badges/004.svg new file mode 100644 index 0000000..f63b6fc --- /dev/null +++ b/badges/004.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +4% + + diff --git a/badges/005.svg b/badges/005.svg new file mode 100644 index 0000000..b8646fe --- /dev/null +++ b/badges/005.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +5% + + diff --git a/badges/006.svg b/badges/006.svg new file mode 100644 index 0000000..aba3a47 --- /dev/null +++ b/badges/006.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +6% + + diff --git a/badges/007.svg b/badges/007.svg new file mode 100644 index 0000000..ede53de --- /dev/null +++ b/badges/007.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +7% + + diff --git a/badges/008.svg b/badges/008.svg new file mode 100644 index 0000000..0d98c42 --- /dev/null +++ b/badges/008.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +8% + + diff --git a/badges/009.svg b/badges/009.svg new file mode 100644 index 0000000..7adac06 --- /dev/null +++ b/badges/009.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +9% + + diff --git a/badges/010.svg b/badges/010.svg new file mode 100644 index 0000000..9e7dfda --- /dev/null +++ b/badges/010.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +10% + + diff --git a/badges/011.svg b/badges/011.svg new file mode 100644 index 0000000..17d0dc4 --- /dev/null +++ b/badges/011.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +11% + + diff --git a/badges/012.svg b/badges/012.svg new file mode 100644 index 0000000..0d3dea3 --- /dev/null +++ b/badges/012.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +12% + + diff --git a/badges/013.svg b/badges/013.svg new file mode 100644 index 0000000..bc54b36 --- /dev/null +++ b/badges/013.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +13% + + diff --git a/badges/014.svg b/badges/014.svg new file mode 100644 index 0000000..961d487 --- /dev/null +++ b/badges/014.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +14% + + diff --git a/badges/015.svg b/badges/015.svg new file mode 100644 index 0000000..ba57a7e --- /dev/null +++ b/badges/015.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +15% + + diff --git a/badges/016.svg b/badges/016.svg new file mode 100644 index 0000000..c40c5ff --- /dev/null +++ b/badges/016.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +16% + + diff --git a/badges/017.svg b/badges/017.svg new file mode 100644 index 0000000..fce297b --- /dev/null +++ b/badges/017.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +17% + + diff --git a/badges/018.svg b/badges/018.svg new file mode 100644 index 0000000..d435edd --- /dev/null +++ b/badges/018.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +18% + + diff --git a/badges/019.svg b/badges/019.svg new file mode 100644 index 0000000..ade3e22 --- /dev/null +++ b/badges/019.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +19% + + diff --git a/badges/020.svg b/badges/020.svg new file mode 100644 index 0000000..eefd7b3 --- /dev/null +++ b/badges/020.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +20% + + diff --git a/badges/021.svg b/badges/021.svg new file mode 100644 index 0000000..8636f84 --- /dev/null +++ b/badges/021.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +21% + + diff --git a/badges/022.svg b/badges/022.svg new file mode 100644 index 0000000..fe8447a --- /dev/null +++ b/badges/022.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +22% + + diff --git a/badges/023.svg b/badges/023.svg new file mode 100644 index 0000000..45cf943 --- /dev/null +++ b/badges/023.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +23% + + diff --git a/badges/024.svg b/badges/024.svg new file mode 100644 index 0000000..dab9a30 --- /dev/null +++ b/badges/024.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +24% + + diff --git a/badges/025.svg b/badges/025.svg new file mode 100644 index 0000000..0e5ff86 --- /dev/null +++ b/badges/025.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +25% + + diff --git a/badges/026.svg b/badges/026.svg new file mode 100644 index 0000000..a7c1918 --- /dev/null +++ b/badges/026.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +26% + + diff --git a/badges/027.svg b/badges/027.svg new file mode 100644 index 0000000..d0c7edb --- /dev/null +++ b/badges/027.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +27% + + diff --git a/badges/028.svg b/badges/028.svg new file mode 100644 index 0000000..559c646 --- /dev/null +++ b/badges/028.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +28% + + diff --git a/badges/029.svg b/badges/029.svg new file mode 100644 index 0000000..6410c02 --- /dev/null +++ b/badges/029.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +29% + + diff --git a/badges/030.svg b/badges/030.svg new file mode 100644 index 0000000..d98111e --- /dev/null +++ b/badges/030.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +30% + + diff --git a/badges/031.svg b/badges/031.svg new file mode 100644 index 0000000..651a065 --- /dev/null +++ b/badges/031.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +31% + + diff --git a/badges/032.svg b/badges/032.svg new file mode 100644 index 0000000..62a0efd --- /dev/null +++ b/badges/032.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +32% + + diff --git a/badges/033.svg b/badges/033.svg new file mode 100644 index 0000000..56d0c7c --- /dev/null +++ b/badges/033.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +33% + + diff --git a/badges/034.svg b/badges/034.svg new file mode 100644 index 0000000..e60a1c4 --- /dev/null +++ b/badges/034.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +34% + + diff --git a/badges/035.svg b/badges/035.svg new file mode 100644 index 0000000..dabdfdb --- /dev/null +++ b/badges/035.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +35% + + diff --git a/badges/036.svg b/badges/036.svg new file mode 100644 index 0000000..b585e95 --- /dev/null +++ b/badges/036.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +36% + + diff --git a/badges/037.svg b/badges/037.svg new file mode 100644 index 0000000..f9f447a --- /dev/null +++ b/badges/037.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +37% + + diff --git a/badges/038.svg b/badges/038.svg new file mode 100644 index 0000000..53cd696 --- /dev/null +++ b/badges/038.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +38% + + diff --git a/badges/039.svg b/badges/039.svg new file mode 100644 index 0000000..f769769 --- /dev/null +++ b/badges/039.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +39% + + diff --git a/badges/040.svg b/badges/040.svg new file mode 100644 index 0000000..c8b47ea --- /dev/null +++ b/badges/040.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +40% + + diff --git a/badges/041.svg b/badges/041.svg new file mode 100644 index 0000000..4cbf5de --- /dev/null +++ b/badges/041.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +41% + + diff --git a/badges/042.svg b/badges/042.svg new file mode 100644 index 0000000..f2d36d8 --- /dev/null +++ b/badges/042.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +42% + + diff --git a/badges/043.svg b/badges/043.svg new file mode 100644 index 0000000..e3e51e8 --- /dev/null +++ b/badges/043.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +43% + + diff --git a/badges/044.svg b/badges/044.svg new file mode 100644 index 0000000..3c836d3 --- /dev/null +++ b/badges/044.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +44% + + diff --git a/badges/045.svg b/badges/045.svg new file mode 100644 index 0000000..11c3e8f --- /dev/null +++ b/badges/045.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +45% + + diff --git a/badges/046.svg b/badges/046.svg new file mode 100644 index 0000000..9cce337 --- /dev/null +++ b/badges/046.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +46% + + diff --git a/badges/047.svg b/badges/047.svg new file mode 100644 index 0000000..dfb83be --- /dev/null +++ b/badges/047.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +47% + + diff --git a/badges/048.svg b/badges/048.svg new file mode 100644 index 0000000..3d69b77 --- /dev/null +++ b/badges/048.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +48% + + diff --git a/badges/049.svg b/badges/049.svg new file mode 100644 index 0000000..7b0e23d --- /dev/null +++ b/badges/049.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +49% + + diff --git a/badges/050.svg b/badges/050.svg new file mode 100644 index 0000000..bfcf9da --- /dev/null +++ b/badges/050.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +50% + + diff --git a/badges/051.svg b/badges/051.svg new file mode 100644 index 0000000..78fdd2c --- /dev/null +++ b/badges/051.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +51% + + diff --git a/badges/052.svg b/badges/052.svg new file mode 100644 index 0000000..00a3b93 --- /dev/null +++ b/badges/052.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +52% + + diff --git a/badges/053.svg b/badges/053.svg new file mode 100644 index 0000000..80b9a16 --- /dev/null +++ b/badges/053.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +53% + + diff --git a/badges/054.svg b/badges/054.svg new file mode 100644 index 0000000..c72abad --- /dev/null +++ b/badges/054.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +54% + + diff --git a/badges/055.svg b/badges/055.svg new file mode 100644 index 0000000..56014d0 --- /dev/null +++ b/badges/055.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +55% + + diff --git a/badges/056.svg b/badges/056.svg new file mode 100644 index 0000000..29fe8a2 --- /dev/null +++ b/badges/056.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +56% + + diff --git a/badges/057.svg b/badges/057.svg new file mode 100644 index 0000000..2e6e8c2 --- /dev/null +++ b/badges/057.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +57% + + diff --git a/badges/058.svg b/badges/058.svg new file mode 100644 index 0000000..ffb27ac --- /dev/null +++ b/badges/058.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +58% + + diff --git a/badges/059.svg b/badges/059.svg new file mode 100644 index 0000000..088dbc0 --- /dev/null +++ b/badges/059.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +59% + + diff --git a/badges/060.svg b/badges/060.svg new file mode 100644 index 0000000..f7fec4e --- /dev/null +++ b/badges/060.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +60% + + diff --git a/badges/061.svg b/badges/061.svg new file mode 100644 index 0000000..609e038 --- /dev/null +++ b/badges/061.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +61% + + diff --git a/badges/062.svg b/badges/062.svg new file mode 100644 index 0000000..e9cca6a --- /dev/null +++ b/badges/062.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +62% + + diff --git a/badges/063.svg b/badges/063.svg new file mode 100644 index 0000000..d244ac6 --- /dev/null +++ b/badges/063.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +63% + + diff --git a/badges/064.svg b/badges/064.svg new file mode 100644 index 0000000..ae7b504 --- /dev/null +++ b/badges/064.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +64% + + diff --git a/badges/065.svg b/badges/065.svg new file mode 100644 index 0000000..2e698e6 --- /dev/null +++ b/badges/065.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +65% + + diff --git a/badges/066.svg b/badges/066.svg new file mode 100644 index 0000000..ec3c681 --- /dev/null +++ b/badges/066.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +66% + + diff --git a/badges/067.svg b/badges/067.svg new file mode 100644 index 0000000..3c19aa8 --- /dev/null +++ b/badges/067.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +67% + + diff --git a/badges/068.svg b/badges/068.svg new file mode 100644 index 0000000..ab7aafd --- /dev/null +++ b/badges/068.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +68% + + diff --git a/badges/069.svg b/badges/069.svg new file mode 100644 index 0000000..ca7432e --- /dev/null +++ b/badges/069.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +69% + + diff --git a/badges/070.svg b/badges/070.svg new file mode 100644 index 0000000..fdf76c9 --- /dev/null +++ b/badges/070.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +70% + + diff --git a/badges/071.svg b/badges/071.svg new file mode 100644 index 0000000..2367104 --- /dev/null +++ b/badges/071.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +71% + + diff --git a/badges/072.svg b/badges/072.svg new file mode 100644 index 0000000..293e0e7 --- /dev/null +++ b/badges/072.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +72% + + diff --git a/badges/073.svg b/badges/073.svg new file mode 100644 index 0000000..51bcfd2 --- /dev/null +++ b/badges/073.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +73% + + diff --git a/badges/074.svg b/badges/074.svg new file mode 100644 index 0000000..3778b22 --- /dev/null +++ b/badges/074.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +74% + + diff --git a/badges/075.svg b/badges/075.svg new file mode 100644 index 0000000..18f2890 --- /dev/null +++ b/badges/075.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +75% + + diff --git a/badges/076.svg b/badges/076.svg new file mode 100644 index 0000000..bbd49ef --- /dev/null +++ b/badges/076.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +76% + + diff --git a/badges/077.svg b/badges/077.svg new file mode 100644 index 0000000..582d064 --- /dev/null +++ b/badges/077.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +77% + + diff --git a/badges/078.svg b/badges/078.svg new file mode 100644 index 0000000..023bd1e --- /dev/null +++ b/badges/078.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +78% + + diff --git a/badges/079.svg b/badges/079.svg new file mode 100644 index 0000000..91ddea8 --- /dev/null +++ b/badges/079.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +79% + + diff --git a/badges/080.svg b/badges/080.svg new file mode 100644 index 0000000..1337db0 --- /dev/null +++ b/badges/080.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +80% + + diff --git a/badges/081.svg b/badges/081.svg new file mode 100644 index 0000000..62521e1 --- /dev/null +++ b/badges/081.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +81% + + diff --git a/badges/082.svg b/badges/082.svg new file mode 100644 index 0000000..cbac1c6 --- /dev/null +++ b/badges/082.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +82% + + diff --git a/badges/083.svg b/badges/083.svg new file mode 100644 index 0000000..eaae1af --- /dev/null +++ b/badges/083.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +83% + + diff --git a/badges/084.svg b/badges/084.svg new file mode 100644 index 0000000..97359a2 --- /dev/null +++ b/badges/084.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +84% + + diff --git a/badges/085.svg b/badges/085.svg new file mode 100644 index 0000000..f216fdd --- /dev/null +++ b/badges/085.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +85% + + diff --git a/badges/086.svg b/badges/086.svg new file mode 100644 index 0000000..273af58 --- /dev/null +++ b/badges/086.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +86% + + diff --git a/badges/087.svg b/badges/087.svg new file mode 100644 index 0000000..a3bc141 --- /dev/null +++ b/badges/087.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +87% + + diff --git a/badges/088.svg b/badges/088.svg new file mode 100644 index 0000000..228dd0f --- /dev/null +++ b/badges/088.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +88% + + diff --git a/badges/089.svg b/badges/089.svg new file mode 100644 index 0000000..5071611 --- /dev/null +++ b/badges/089.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +89% + + diff --git a/badges/090.svg b/badges/090.svg new file mode 100644 index 0000000..c5b23ba --- /dev/null +++ b/badges/090.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +90% + + diff --git a/badges/091.svg b/badges/091.svg new file mode 100644 index 0000000..375de4a --- /dev/null +++ b/badges/091.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +91% + + diff --git a/badges/092.svg b/badges/092.svg new file mode 100644 index 0000000..a16df6a --- /dev/null +++ b/badges/092.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +92% + + diff --git a/badges/093.svg b/badges/093.svg new file mode 100644 index 0000000..03da074 --- /dev/null +++ b/badges/093.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +93% + + diff --git a/badges/094.svg b/badges/094.svg new file mode 100644 index 0000000..880b7d5 --- /dev/null +++ b/badges/094.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +94% + + diff --git a/badges/095.svg b/badges/095.svg new file mode 100644 index 0000000..b8f6077 --- /dev/null +++ b/badges/095.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +95% + + diff --git a/badges/096.svg b/badges/096.svg new file mode 100644 index 0000000..cae3278 --- /dev/null +++ b/badges/096.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +96% + + diff --git a/badges/097.svg b/badges/097.svg new file mode 100644 index 0000000..3c16c15 --- /dev/null +++ b/badges/097.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +97% + + diff --git a/badges/098.svg b/badges/098.svg new file mode 100644 index 0000000..e3f3ce3 --- /dev/null +++ b/badges/098.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +98% + + diff --git a/badges/099.svg b/badges/099.svg new file mode 100644 index 0000000..6ea6b15 --- /dev/null +++ b/badges/099.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +99% + + diff --git a/badges/100.svg b/badges/100.svg new file mode 100644 index 0000000..37127c0 --- /dev/null +++ b/badges/100.svg @@ -0,0 +1,140 @@ + + + + + + + + + + + + + +100% + + diff --git a/src/main/java/edu/hm/hafner/grading/github/ProgressGenerator.java b/src/main/java/edu/hm/hafner/grading/github/ProgressGenerator.java new file mode 100644 index 0000000..f18764a --- /dev/null +++ b/src/main/java/edu/hm/hafner/grading/github/ProgressGenerator.java @@ -0,0 +1,96 @@ +package edu.hm.hafner.grading.github; + +import java.util.StringJoiner; + +import org.apache.commons.lang3.StringUtils; + +/** + * FIXME: comment class. + * + * @author Ullrich Hafner + */ +public class ProgressGenerator { + private static final String RED = "#D2222D"; + private static final String YELLOW = "#FFBF00"; + private static final String GREEN = "#238823"; + + public static void main(final String[] args) { + String options = """ + { + "series": [ + { + "type": "pie", + "radius": ["75%", "100%"], + "avoidLabelOverlap": false, + "color": ["", "#D0D0D0"], + "hoverAnimation": false, + "label": { + "show": true, + "position": "center", + "fontSize": 55, + "fontWeight": "bold", + "color": "#000", + "formatter": "" + }, + "itemStyle": { + "borderRadius": 10, + "borderColor": "#fff", + "borderWidth": 3 + }, + "labelLine": { "normal": { "show": false } }, + "data": [ ] + } + ] + } + """; + final String script = """ + - name: Generate progress SVG + id: chart + uses: robiningelbrecht/apache-echarts-action@v1.1.0 + with: + width: 200 + height: 200 + pass-options-as: string + chart-option: '' + - name: Save generated SVG + run: | + cat < badges/progress.svg + ${{ steps.chart.outputs.svg }} + EOF + """; + + for (int percentage = 0; percentage <= 100; percentage++) { + var formatter = options.replace("\"formatter\": \"\"", String.format("\"formatter\": \"%d%%\"", percentage)) + .replace("\"color\": [\"\"", String.format("\"color\": [\"%s\"", + percentage <= 50 ? RED : percentage <= 80 ? YELLOW : GREEN)); + + var echarts = formatter.replace("\"data\": [ ]", createChart(percentage)); + var chart = StringUtils.deleteWhitespace(echarts); + + var stage = script.replace("chart-option: ''", String.format("chart-option: '%s'", chart)) + .replace("badges/progress.svg", String.format("badges/%03d.svg", percentage)) + .replace("id: chart", String.format("id: chart-%03d", percentage)) + .replace("steps.chart.outputs", String.format("steps.chart-%03d.outputs", percentage)); + + System.out.print(stage); + } + } + + private static String createChart(final int percentage) { + var dataValues = new StringJoiner(",\n ", "\"data\": [", "]"); + int i = 0; + for (; i < ((percentage / 10) * 10) && i < 100; i += 10) { + dataValues.add("{ \"value\": 10, \"name\": \"Filled\" }"); + } + dataValues.add(String.format("{ \"value\": %d, \"name\": \"Filled\" }", percentage % 10)); + if (percentage != 100) { + dataValues.add(String.format("{ \"value\": %d, \"name\": \"NotFilled\" }", (10 - percentage % 10))); + } + i += 10; + for (; i < 100; i += 10) { + dataValues.add("{ \"value\": 10, \"name\": \"NotFilled\" }"); + } + + return dataValues.toString(); + } +}