adafruit / adabot

Adabot is our robot friend who helps Adafruit online
MIT License
14 stars 28 forks source link

Arduino adabot - check if release # matches library.properties #33

Closed ladyada closed 6 years ago

ladyada commented 6 years ago

adruino library manager is picky - the release number must match the library.properties file and the prop file must be updated before the release, otherwise stuff breaks. this happens often enough, we should add a check to adabot!

sommersoft commented 6 years ago

Should be simple enough. Should. :smile:

First thing to solidify is getting an accurate listing of Adafruit Arduino libs from GitHub. After that, bouncing the release tag against library.properties should be trivial.

@ladyada, question to ponder in the meantime: do you want Adabot to fix any discrepancies, or just report them?

Links scratchpad:

sommersoft commented 6 years ago

Warning: Long List Incoming

Got the repo list below, using these github search parameters: arduino in:name,description user:adafruit.

Not sure if there is an easy way to validate this list...

(.env) sommersoft@thespacebetween:~/Dev/adabot/adabot$ python3 -m adabot.arduino_libraries
Found 145 Adafruit Arduino repos:

['USB-Boarduino', 'Screwshield', 'Adafruit-Motor-Shield-for-Arduino', 'TFTshield', 'Custom-Magstripe-Swiper']
['SD-card-testing-jig', 'SDWebBrowse', 'IR-Commander', 'ArduinoISP', 'Flora-TV-B-Gone']
['USB-NeXT-Keyboard', 'Cryptosuite', 'Adafruit-Tweet-Receipt', 'piccolo', 'Adafruit-Music-Maker-MP3-Shield-PCB']
['toolchain-avr', 'pubsubclient', 'adafruit-arduino-proxy', 'ESP8266-Arduino', 'Arduino_Library_Github_Tools']
['ST7565-LCD', 'Flora_Demos', 'Feather_Holiday_Lights', 'Adafruit-Flora-Pixel-Library', 'Adafruit_TLC5947']
['Adafruit_SoftServo', 'Adafruit_TinyFlash', 'CC3000_MDNS', 'Adafruit-TPA2016-Library', 'MAX31850_DallasTemp']
['Adafruit_BMP183_Unified_Library', 'Adafruit-Si4713-Library', 'Pro_Trinket_USB_Keyboard_Library', 'Adafruit_HDC1000_Library', 'Adafruit_Pixie']
['Circuit-Playground-Arduino', 'Adafruit_RTD266X_I2CFlasher', 'ArduinoTap', 'SD', 'Data-Logger-shield']
['NeoPixel_Painter', 'Trinket_Arduino_Linux', 'Reference-Cards', 'Sous_Viduino', 'Talkie']
['Adafruit_TMP007_Library', 'Adafruit_Curie_Bot', 'arduino-esp32', 'HT1632', 'Hunt-The-Wumpus']
['Circuit_Walker_Sneakers', 'Adafruit-VCNL40X0-PCB', 'Adafruit-Trinket-USB', 'Adafruit_LSM9DS0_Library', 'Adafruit_STMPE610']
['ArduinoModule-CMSIS-Atmel', 'Adafruit_WICED_Arduino', 'Adafruit_SHARP_Memory_Display', 'STEMMA_LiquidCrystal', 'Adafruit_TiCoServo']
['Adafruit_Trellis_Library', 'MAX31850_OneWire', 'Adafruit_CAP1188_Library', 'Adafruit_Soundboard_library', 'Adafruit_VCNL4010']
['Adafruit_SI1145_Library', 'Adafruit_FT6206_Library', 'LPD8806', 'Adafruit-MCP23017-Arduino-Library', 'Adafruit_MCP9808_Library']
['Feedback-Servo-Record-and-Play', 'TSL2561-Arduino-Library', 'Adafruit_Microbit', 'Adafruit-MCP23008-library', 'Adafruit_IS31FL3731']
['Adafruit_DHT_Unified', 'Adafruit_RA8875', 'Adafruit_Lightship', 'Adafruit_MAX31865', 'Arduino-IRremote']
['Adafruit_AS726x', 'Adafruit_ZeroPDM', 'Adafruit_MMA8451_Library', 'Adafruit_TouchScreen', 'Standalone-Arduino-AVR-ISP-programmer']
['TinyWireM', 'RGB-matrix-Panel', 'Adafruit_SGP30', 'Adafruit-SSD1331-OLED-Driver-Library-for-Arduino', 'FifteenStep']
['Adafruit-MLX90614-Library', 'Adafruit-Motor-Shield-library', 'Adafruit_VEML6070', 'Adafruit_CCS811', 'Adafruit_MP3']
['Adafruit_Arduino_Boards', 'Adafruit_BME280_Library', 'WaveHC', 'Adafruit_EPD', 'Adafruit_nRF52_Arduino_Bootloader']
['Adafruit_TSL2591_Library', 'Adafruit_MQTT_Library', 'Adafruit_APDS9960', 'MAX6675-library', 'Adafruit_remoteFXTrigger']
['arduino-lmic', 'Adafruit_FONA', 'Adafruit-Proto-Shield-PCB', 'Adafruit_LIS3DH', 'Adafruit-WS2801-Library']
['Adafruit_BluefruitLE_nRF51', 'Adafruit_MPRLS', 'Adafruit_VEML6075', 'TFTLCD-Library', 'DHT-sensor-library']
['Adafruit-Thermal-Printer-Library', 'Adafruit_MPR121', 'Adafruit_VL53L0X', 'Adafruit_AM2320', 'Adafruit_HTU21DF_Library']
['RadioHead', 'Adafruit_MPL3115A2_Library', 'Adafruit-PCD8544-Nokia-5110-LCD-library', 'Adafruit_DRV2605_Library', 'Adafruit-PN532']
['travis-ci-arduino', 'Adafruit_ZeroDMA', 'Adafruit_NeoPixel_ZeroDMA', 'Adafruit_ZeroI2S', 'Raw-IR-decoder-for-Arduino']
['Adafruit_BMP280_Library', 'Adafruit_Si7021', 'Adafruit_SHT31', 'Adafruit_CircuitPython_FancyLED', 'Adafruit_IO_Arduino']
['Adafruit-Fingerprint-Sensor-Library', 'arduino-board-index', 'Adafruit_MAX31856', 'Adafruit_SleepyDog', 'Adafruit_Seesaw']
['Adafruit_VL6180X', 'Adafruit_Keypad', 'ArduinoCore-samd', 'Adafruit_nRF52_Arduino', 'Adafruit_SSD1306']

Adding in:readme to the search parameters gives more results (212 at the moment), but included things like the circuitpython repo.

Any "extras" can be filtered out later by processing only repos with the library.properties file, so its not a deal breaker either way.

ladyada commented 6 years ago

hmm yeah some are Arduino libraries but many arn't. i'd look for an 'examples' folder OR a library.properties file!

sommersoft commented 6 years ago

Bones are there:

(.env) sommersoft@thespacebetween:~/Dev/adabot/adabot$ python3 -m adabot.arduino_libraries
HL1606-LED-Strip-PWM Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
Adafruit-HX8340B Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
Adafruit-Flora-Pixel-Library Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
Adafruit_TLC5947 Results - library.properties version: 1.0.2 | repo release tag: 1.0.2
Adafruit_SoftServo Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
Adafruit_TinyFlash Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
CC3000_MDNS Results - library.properties version: 1.0.0 | repo release tag: 1.0.0
Adafruit-TPA2016-Library Results - library.properties version: 1.0.0 | repo release tag: 1.0.0

What sort of format do you want for an output? Just a list of "failures" like the circuitpython_libraries report, or more in-depth like above?

ladyada commented 6 years ago

in depth would be great! three differnet reports: one "repos with commits w/o release" (need to release) and "repos with release that doesn't match library.properties" and "repos without any releases"

sommersoft commented 6 years ago

"repos with release that doesn't match library.properties" and "repos without any releases"

This will flesh out in the same report. Well, if the repo has library.properties version= and no release, the release can be shown as None.

"repos with commits w/o release"

Adding this one as a separate report/validator is doable. I just need to re-factor when the library list is currently narrowed down.

ladyada commented 6 years ago

yep! its ok if not all of the reports exist at once, just giving you the Dream Report

sommersoft commented 6 years ago

@ladyada, Dream Report (v1) complete. also added it to the daily adabot run on Travis, which will dump the output into the AWS bucket.