diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..28cc386c --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributor Guide + +Thanks for your interest in contributing to the **Arduino Library Manager Registry**! + +## Support and Discussion + +If you would like to request assistance or discuss the **Library Manager Registry**, please make a topic on **Arduino Forum**: + +https://forum.arduino.cc/c/17 + +## Registration and Maintenance + +--- + +⚠ If you behave irresponsibly in your interactions with this repository, your Library Manager Registry privileges will be revoked. + +Carefully read and follow the instructions in any comments the bot and human maintainers make on your pull requests. If you are having trouble following the instructions, add a comment that provides a detailed description of the problem you are having and a human maintainer will provide assistance. + +Although we have set up automation for the most basic tasks, this repository is maintained by humans. So behave in a manner appropriate for interacting with humans, including clearly communicating what you are hoping to accomplish. + +--- + +If you would like to submit a library, or request registry maintenance for a library already in the registry, please follow the instructions provided in the documentation: + +[**Click here to see the documentation**](../README.md#table-of-contents) + +Make sure to read the relevant sections of the FAQ: + +[**Click here to see the FAQ**](../FAQ.md#table-of-contents) diff --git a/.github/workflows/assets/accesslist.yml b/.github/workflows/assets/accesslist.yml new file mode 100644 index 00000000..6c012cf3 --- /dev/null +++ b/.github/workflows/assets/accesslist.yml @@ -0,0 +1,46 @@ +# Access control for the Arduino Library Manager registry. +# This file is used by https://github.com/arduino/library-registry-submission-parser, via the "Manage PRs" workflow. + +# Allowlist +- host: github.com + name: per1234 + access: allow + reference: + +# Denylist +- host: github.com + name: 7Semi + access: deny + reference: https://github.com/arduino/library-registry/pull/5734#pullrequestreview-2548818476 +- host: github.com + name: ajangrahmat + access: deny + reference: https://github.com/arduino/library-registry/pull/5706#issuecomment-2588923290 +- host: github.com + name: brincode + access: deny + reference: https://github.com/arduino/library-registry/pull/4460#issuecomment-2589062464 +- host: github.com + name: DefHam140 + access: deny + reference: https://github.com/arduino/library-registry/pull/5265#issuecomment-2589039572 +- host: github.com + name: ErlTechnologies + access: deny + reference: https://github.com/arduino/library-registry/pull/4873#issuecomment-2589138298 +- host: github.com + name: kelasrobot + access: deny + reference: https://github.com/arduino/library-registry/pull/5706#issuecomment-2588923290 +- host: github.com + name: Subodh-roy2 + access: deny + reference: https://github.com/arduino/library-registry/pull/4422#issuecomment-2589051618 +- host: github.com + name: vpbharath + access: deny + reference: https://github.com/arduino/library-registry/pull/4873#issuecomment-2589138298 +- host: github.com + name: YoavPaz + access: deny + reference: https://github.com/arduino/library-registry/pull/5741#issuecomment-2589016403 diff --git a/.github/workflows/manage-prs.yml b/.github/workflows/manage-prs.yml index 9282bb92..2ad77f03 100644 --- a/.github/workflows/manage-prs.yml +++ b/.github/workflows/manage-prs.yml @@ -1,7 +1,7 @@ name: Manage PRs env: - SUBMISSION_PARSER_VERSION: 1.1.1 # See: https://github.com/arduino/library-manager-submission-parser/releases + SUBMISSION_PARSER_VERSION: 2.0.0 # See: https://github.com/arduino/library-manager-submission-parser/releases MAINTAINERS: | # GitHub user names to request reviews from in cases where PRs can't be managed automatically. - per1234 @@ -125,6 +125,7 @@ jobs: runs-on: ubuntu-latest outputs: + conclusion: ${{ steps.parse-request.outputs.conclusion }} type: ${{ steps.parse-request.outputs.type }} error: ${{ steps.parse-request.outputs.error }} arduinoLintLibraryManagerSetting: ${{ steps.parse-request.outputs.arduinoLintLibraryManagerSetting }} @@ -133,6 +134,8 @@ jobs: indexer-logs-urls: ${{ steps.parse-request.outputs.indexer-logs-urls }} steps: + # Checkout the tip of the default branch (this is the action's default ref input value when workflow is triggered + # by an issue_comment or pull_request_target event). - name: Checkout local repository uses: actions/checkout@v4 @@ -160,12 +163,15 @@ jobs: chmod u+x "${{ steps.download-parser.outputs.file-path }}" REQUEST="$( \ "${{ steps.download-parser.outputs.file-path }}" \ + --accesslist=".github/workflows/assets/accesslist.yml" \ --diffpath="${{ needs.diff.outputs.path }}/${{ needs.diff.outputs.filename }}" \ --repopath="${{ github.workspace }}" \ --listname="repositories.txt" \ + --submitter="${{ github.actor }}" \ )" # Due to limitations of the GitHub Actions workflow system, dedicated outputs must be created for use in # certain workflow fields. + echo "::set-output name=conclusion::$(echo "$REQUEST" | jq -r -c '.conclusion')" echo "::set-output name=type::$(echo "$REQUEST" | jq -r -c '.type')" echo "::set-output name=error::$(echo "$REQUEST" | jq -r -c '.error')" echo "::set-output name=arduinoLintLibraryManagerSetting::$(echo "$REQUEST" | jq -r -c '.arduinoLintLibraryManagerSetting')" @@ -191,10 +197,13 @@ jobs: labels: | - "topic: ${{ needs.parse.outputs.type }}" + # Handle problem found by the parser that can potentially be resolved by requester. parse-fail: needs: - parse - if: needs.parse.outputs.error != '' + if: > + needs.parse.outputs.conclusion != 'declined' && + needs.parse.outputs.error != '' runs-on: ubuntu-latest steps: @@ -219,6 +228,56 @@ jobs: More information: https://github.com/${{ github.repository }}/blob/main/README.md#if-the-problem-is-with-the-pull-request + # Requester's registry privileges have been revoked. + decline-request: + needs: + - parse + if: > + needs.parse.outputs.conclusion == 'declined' && + needs.parse.outputs.error != '' + runs-on: ubuntu-latest + steps: + - name: Comment reason for declining request + uses: octokit/request-action@v2.x + if: needs.parse.outputs.error != '' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + route: POST /repos/{owner}/{repo}/issues/{issue_number}/comments + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} + body: | + | + Hi @${{ github.actor }} + Your request has been declined: + + ${{ env.ERROR_MESSAGE_PREFIX }}${{ needs.parse.outputs.error }} + + - name: Close PR + uses: octokit/request-action@v2.x + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + route: PATCH /repos/{owner}/{repo}/pulls/{pull_number} + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} + state: closed + + - name: Add conclusion label to PR + uses: octokit/request-action@v2.x + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # See: https://docs.github.com/rest/issues/labels#add-labels-to-an-issue + route: POST /repos/{owner}/{repo}/issues/{issue_number}/labels + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} + labels: | + - "conclusion: ${{ needs.parse.outputs.conclusion }}" + check-submissions: name: Check ${{ matrix.submission.submissionURL }} needs: @@ -226,6 +285,7 @@ jobs: if: > needs.parse.outputs.type == 'submission' || needs.parse.outputs.type == 'modification' + runs-on: ubuntu-latest strategy: fail-fast: false @@ -275,6 +335,15 @@ jobs: if: matrix.submission.error != '' run: echo "PASS=false" >> "$GITHUB_ENV" + # Parser checks are relevant in the case where request is declined due to registry access having been revoked for + # the library repository owners. However, the rest of the checks are irrelevant and may result in confusing + # comments from the bot, so should be skipped. + - name: Skip the rest of the checks if request is declined + if: > + needs.parse.outputs.conclusion == 'declined' && + env.PASS == 'true' + run: echo "PASS=false" >> "$GITHUB_ENV" + - name: Install Arduino Lint if: env.PASS == 'true' run: | @@ -418,12 +487,15 @@ jobs: run: | test -d "${{ env.CHECK_SUBMISSIONS_FAIL_FLAG_ARTIFACT_PATH }}" + # Handle problem found by the submission checks that can potentially be resolved by requester. check-submissions-fail: needs: + - parse - check-submissions-result - if: needs.check-submissions-result.outputs.pass == 'false' + if: > + needs.parse.outputs.conclusion != 'declined' && + needs.check-submissions-result.outputs.pass == 'false' runs-on: ubuntu-latest - steps: - name: Comment instructions to fix errors detected during submission checks uses: octokit/request-action@v2.x @@ -449,6 +521,37 @@ jobs: More information: https://github.com/${{ github.repository }}/blob/main/README.md#if-the-problem-is-with-the-pull-request + decline-submissions: + needs: + - parse + - check-submissions + if: needs.parse.outputs.conclusion == 'declined' + runs-on: ubuntu-latest + steps: + - name: Close PR + uses: octokit/request-action@v2.x + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + route: PATCH /repos/{owner}/{repo}/pulls/{pull_number} + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} + state: closed + + - name: Add conclusion label to PR + uses: octokit/request-action@v2.x + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # See: https://docs.github.com/rest/issues/labels#add-labels-to-an-issue + route: POST /repos/{owner}/{repo}/issues/{issue_number}/labels + owner: ${{ github.repository_owner }} + repo: ${{ github.event.repository.name }} + issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} + labels: | + - "conclusion: ${{ needs.parse.outputs.conclusion }}" + merge: needs: - diff @@ -601,6 +704,7 @@ jobs: - parse # These request types can't be automatically approved. if: > + needs.parse.outputs.conclusion != 'declined' && needs.parse.outputs.type != 'submission' && needs.parse.outputs.type != 'invalid' runs-on: ubuntu-latest @@ -627,8 +731,10 @@ jobs: needs: # Run after all other jobs - parse-fail + - decline-request - merge-fail - check-submissions-fail + - decline-submissions - label - not-submission # Run if any job failed. The workflow is configured so that jobs only fail when there is an unexpected error. diff --git a/FAQ.md b/FAQ.md index 01fd34f4..eba40611 100644 --- a/FAQ.md +++ b/FAQ.md @@ -72,6 +72,8 @@ Follow the instructions [here](README.md#adding-a-library-to-library-manager). ### What are the requirements for a library to be added to Library Manager? +- [ ] The library must be something of potential value to the Arduino community. +- [ ] The submitter must behave in a responsible manner in their interactions with the Library Manager Registry. - [ ] The library must be fully compliant with the [Arduino Library Specification](https://arduino.github.io/arduino-cli/latest/library-specification). - [ ] The library must have [a library.properties file](https://arduino.github.io/arduino-cli/latest/library-specification/#library-metadata), in compliance with the Arduino Library 1.5 format. - [ ] The library.properties file must be located in the root of the repository. diff --git a/README.md b/README.md index c25b8e1c..b0d325c6 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,16 @@ See the instructions below for detailed instructions on how to do this via the G ### Instructions +--- + +⚠ If you behave irresponsibly in your interactions with this repository, your Library Manager Registry privileges will be revoked. + +Carefully read and follow the instructions in any comments the bot and human maintainers make on your pull requests. If you are having trouble following the instructions, add a comment that provides a detailed description of the problem you are having and a human maintainer will provide assistance. + +Although we have set up automation for the most basic tasks, this repository is maintained by humans. So behave in a manner appropriate for interacting with humans, including clearly communicating what you are hoping to accomplish. + +--- + 1. You may want to first take a look at [the requirements for admission into the Arduino Library Manager index](FAQ.md#submission-requirements). Each submission will be checked for compliance before being accepted. diff --git a/repositories.txt b/repositories.txt index cd191bf0..d94053bd 100644 --- a/repositories.txt +++ b/repositories.txt @@ -1,11 +1,9 @@ https://github.com/rjsachse/ESP32-RTSPServer.git https://github.com/schreibfaul1/ESP32-audioI2S -https://github.com/7Semi/SevenSemiSHT4x_Lib https://github.com/hasenradball/MCP23008-I2C https://github.com/roncoa/KeySequence https://github.com/juanmercadin/ReceptorRF https://github.com/valerii-fr/menux -https://github.com/7Semi/7SemiSHT4x_Library https://github.com/Moarbue/incremental-rotary-encoder https://github.com/Moarbue/arduino-button https://github.com/Moarbue/FIR-Filter @@ -1238,7 +1236,7 @@ https://github.com/bblanchon/ArduinoJson https://github.com/bblanchon/ArduinoStreamUtils https://github.com/bblanchon/ArduinoTrace https://github.com/BCISOFT/OvhAPI -https://github.com/bdlow/IO22_IO_Board +https://github.com/af3556/IO22_IO_Board https://github.com/BeanieBob/GY26Compass https://github.com/BEAT-System/SerialCom https://github.com/beegee-tokyo/Blues-Minimal-I2C @@ -5347,6 +5345,7 @@ https://github.com/RobTillaart/ADS1X15 https://github.com/RobTillaart/ADT7470 https://github.com/RobTillaart/AGS02MA https://github.com/RobTillaart/AGS2616 +https://github.com/RobTillaart/AGS3870 https://github.com/RobTillaart/AGS3871 https://github.com/RobTillaart/AM2315 https://github.com/RobTillaart/AM2315C @@ -5540,6 +5539,7 @@ https://github.com/RobTillaart/relativity https://github.com/RobTillaart/rotaryDecoder https://github.com/RobTillaart/rotaryDecoder8 https://github.com/RobTillaart/rotaryDecoderSwitch +https://github.com/RobTillaart/rotaryDecoderSwitch5 https://github.com/RobTillaart/RS485 https://github.com/RobTillaart/RunAvgWeight https://github.com/RobTillaart/runningAngle @@ -5570,6 +5570,7 @@ https://github.com/RobTillaart/SWSPI https://github.com/RobTillaart/TCA9548 https://github.com/RobTillaart/TCA9554 https://github.com/RobTillaart/TCA9555 +https://github.com/RobTillaart/TCS3210 https://github.com/RobTillaart/Temperature https://github.com/RobTillaart/TEMT6000 https://github.com/RobTillaart/timing @@ -5748,7 +5749,6 @@ https://github.com/Seeed-Studio/Grove_LED_Matrix_Driver https://github.com/Seeed-Studio/Grove_LoRa_433MHz_and_915MHz_RF https://github.com/Seeed-Studio/Grove_Mini_Track_Ball https://github.com/Seeed-Studio/Grove_Motor_Driver_TB6612FNG -https://github.com/Seeed-Studio/Grove_Serial_MP3_Player_V2.0 https://github.com/Seeed-Studio/Grove_SHT31_Temp_Humi_Sensor https://github.com/Seeed-Studio/Grove_Sunlight_Sensor https://github.com/Seeed-Studio/Grove_Temper_Humidity_TH02 @@ -7491,11 +7491,7 @@ https://github.com/protheeuz/AsyncWebServerESP https://github.com/JoelJojoP/SimpleIMU https://github.com/vickash/RotaryEncoderPCNT https://github.com/kanitawa/RotEnc -https://github.com/vpBharath/RobotControl.git https://github.com/BlairBlaidd/Newhaven_CharacterOLED_SPI -https://github.com/ERLtech/ERLtech-RobotControl.git -https://github.com/ErlTechnologies/BTRobocontrol.git -https://github.com/ErlTechnologies/ERLtechRobotcontrol.git https://github.com/lhtran114/OnlyTimer https://github.com/sinricpro/arduino-renesas-sdk https://github.com/septentrio-gnss/Septentrio_Arduino_library @@ -7653,13 +7649,13 @@ https://github.com/humacompany/Huma_Buttons https://github.com/KriBielinski/PrecDueTimer https://github.com/KriBielinski/InterruptStepper https://github.com/ripred/CodeSizeProfiler -https://github.com/KDaniels-dev/Stepper595 +https://github.com/KDDaniels/Stepper595 https://github.com/Stutchbury/InputEvents https://github.com/QuickSpot/walter-arduino https://github.com/sagar-koirala/TelloESP32 https://github.com/AlessioSavelli/DMXasLED https://github.com/zimbora/EspMQTTClient -https://github.com/npuckett/AltController +https://github.com/DigitalFuturesOCADU/AltController https://github.com/digitalfen/ArtificialDateTime https://github.com/digitalfen/PseudoDateTime https://github.com/digitalfen/ArtificialRTC @@ -7667,25 +7663,19 @@ https://github.com/digitalfen/EmuRTC https://github.com/alfan459/RandomForestModel https://github.com/alfan459/ElasticNetModel https://github.com/alfan459/LinearRegressionModel -https://github.com/kelasrobot/KelasRobotTime -https://github.com/kelasrobot/MQTTESP https://github.com/bsrahmat/iotNetESP32 https://github.com/ajangrahmat/ArduMekaWiFi https://github.com/eis-interbot/EIS_INTERBOT https://github.com/lucaschoeneberg/lw09-dali https://github.com/moononournation/Dev_Device_Pins.git https://github.com/ELOWRO/ADS1119 -https://github.com/kelasrobot/KelasRobotIO https://github.com/rescenic/rescenicio -https://github.com/kelasrobot/FonnteArduino -https://github.com/JokoArdh/inIo https://github.com/robbywm/RobbyIO/ https://github.com/cakraawijaya/MQ2_LPG https://github.com/edwiyanto/CreatorKidsIO https://github.com/cakraawijaya/ESP_FC28 https://github.com/CMB27/ModbusSlaveLogic https://github.com/wwhai/MOTY-Mini-Temperature-Sensor.git -https://github.com/kelasrobot/FoonteDuino https://github.com/stacknix/stackmq-esp32 https://github.com/marekburiak/ESP32_MQTTClient https://github.com/levkovigor/PTZProtocolHandler @@ -7693,7 +7683,6 @@ https://github.com/Alex-Stone-Github/pepstep https://github.com/AirNgin/Airngin-esp32-mqtt-client https://github.com/samy101/edge-ai-arduino-library https://github.com/robertsonics/WAV_Trigger_Pro_Qwiic_Arduino_Library -https://github.com/YoavPaz/I2CR-CPP https://github.com/Alex-Stone-Github/CNCShield https://github.com/bitbank2/FastEPD https://github.com/jerry-magnin/Mem24CSM01