Skip to content

Commit

Permalink
Add continuous integration (#28)
Browse files Browse the repository at this point in the history
* Standardize code style

* Add continuous integration workflow
  • Loading branch information
TillFleisch authored Jan 30, 2024
1 parent 30ef3e5 commit 5ec5f6c
Show file tree
Hide file tree
Showing 21 changed files with 314 additions and 13 deletions.
10 changes: 10 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
UseTab: Never
IndentWidth: 4
NamespaceIndentation: All
AccessModifierOffset: -4
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
IndentCaseLabels: false
SortIncludes: false
ColumnLimit: 0
129 changes: 129 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: CI

# yamllint disable-line rule:truthy
on:
workflow_dispatch:
inputs:
esphome_version:
description: "ESPHome PyPi Package version to use"
required: false
type: string
push:
branches: [main, dev]

pull_request:
merge_group:

permissions:
contents: read

concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
ci:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 5
matrix:
include:
- id: test
file: tests/full.yaml
name: Test tests/full.yaml
pio_cache_key: full
- id: test
file: tests/base.yaml
name: Test tests/base.yaml
pio_cache_key: base
- id: clang-format
name: Run clang-format
- id: yamllint
name: Run yamllint
- id: black-format
name: Run black-format
- id: isort
name: Run isort

steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
id: python
with:
python-version: "3.9"

- name: Cache virtualenv
uses: actions/cache@v3
with:
path: .venv
# yamllint disable-line rule:line-length
key: venv-${{ steps.python.outputs.python-version }}
restore-keys: |
venv-${{ steps.python.outputs.python-version }}
- name: Set up virtualenv
# yamllint disable rule:line-length
run: |
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
if [ ${{ github.event.inputs.esphome_version != '' }} == true ]; then pip install ESPHome==${{ github.event.inputs.esphome_version }}; else pip install -U ESPHome; fi
echo "$GITHUB_WORKSPACE/.venv/bin" >> $GITHUB_PATH
echo "VIRTUAL_ENV=$GITHUB_WORKSPACE/.venv" >> $GITHUB_ENV
# yamllint enable rule:line-length

# Use per check platformio cache because checks use different parts
- name: Cache platformio
uses: actions/cache@v3
with:
path: ~/.platformio
# yamllint disable-line rule:line-length
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }}
if: matrix.id == 'test'

- run: esphome compile ${{ matrix.file }}
if: matrix.id == 'test'
env:
# Also cache libdeps, store them in a ~/.platformio subfolder
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps

- name: Run clang-format
uses: jidicula/[email protected]
with:
clang-format-version: "13"
check-path: "components"
if: matrix.id == 'clang-format'

- name: Run yamllint
if: matrix.id == 'yamllint'
uses: frenck/[email protected]

- name: Run black-format
if: matrix.id == 'black-format'
uses: psf/black@stable
with:
options: "--check --verbose"
version: "~= 24.1"

- name: Run isort
if: matrix.id == 'isort'
uses: isort/isort-action@master
with:
requirementsFiles: "requirements.txt"

ci-status:
name: CI Status
runs-on: ubuntu-latest
needs: [ci]
if: always()
steps:
- name: Successful deploy
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failing deploy
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
17 changes: 17 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
repos:
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.1.0
hooks:
- id: black
language_version: python3.11

- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
name: isort (python)

- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v17.0.6
hooks:
- id: clang-format
2 changes: 2 additions & 0 deletions .yamllint
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ignore: |
venv/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ESPHome Smart Coffee (Philips Series 2200)
# ESPHome Smart Coffee (Philips Series 2200) [![CI](https://github.com/TillFleisch/ESPHome-Philips-Smart-Coffee/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/TillFleisch/ESPHome-Philips-Smart-Coffee/actions/workflows/ci.yaml)

This project integrates a Philips Series 2200 Coffee Machine into into [Home Assistant](https://home-assistant.io) through [ESPHome](https://esphome.io).
This component has been developed on a Philips EP2220 and an ESP8266.
Expand Down
10 changes: 8 additions & 2 deletions components/philips_action_button/action_button.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,20 @@ namespace esphome
*
* @param action Action to use
*/
void set_action(Action action) { action_ = action; };
void set_action(Action action)
{
action_ = action;
};

/**
* @brief Reference to uart which is connected to the mainboard
*
* @param uart uart connected to mainboard
*/
void set_uart_device(uart::UARTDevice *uart) { mainboard_uart_ = uart; };
void set_uart_device(uart::UARTDevice *uart)
{
mainboard_uart_ = uart;
};

/**
* @brief Sets the long press parameter on this button component.
Expand Down
1 change: 1 addition & 0 deletions components/philips_action_button/button.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import esphome.config_validation as cv
from esphome.components import button
from esphome.const import CONF_ID

from ..philips_series_2200 import CONTROLLER_ID, PhilipsSeries2200

DEPENDENCIES = ["philips_series_2200"]
Expand Down
10 changes: 8 additions & 2 deletions components/philips_bean_settings/bean_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ namespace esphome
*
* @param source Source of the value
*/
void set_source(Source source) { source_ = source; };
void set_source(Source source)
{
source_ = source;
};

/**
* @brief Sets the status sensor reference
Expand All @@ -60,7 +63,10 @@ namespace esphome
*
* @param uart uart connected to mainboard
*/
void set_uart_device(uart::UARTDevice *uart) { mainboard_uart_ = uart; };
void set_uart_device(uart::UARTDevice *uart)
{
mainboard_uart_ = uart;
};

/**
* @brief Published the state if it's different form the currently published state.
Expand Down
1 change: 1 addition & 0 deletions components/philips_bean_settings/number.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import esphome.config_validation as cv
from esphome.components import number
from esphome.const import CONF_MODE

from ..philips_series_2200 import CONTROLLER_ID, PhilipsSeries2200
from ..philips_status_sensor.text_sensor import STATUS_SENSOR_ID, StatusSensor

Expand Down
2 changes: 1 addition & 1 deletion components/philips_power_switch/power.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,6 @@ namespace esphome
}
}

} // namespace power_switch
} // namespace philips_power_switch
} // namespace philips_series_2200
} // namespace esphome
2 changes: 1 addition & 1 deletion components/philips_power_switch/power.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,6 @@ namespace esphome
bool *initial_state_;
};

} // namespace power_switch
} // namespace philips_power_switch
} // namespace philips_series_2200
} // namespace esphome
1 change: 1 addition & 0 deletions components/philips_power_switch/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import esphome.config_validation as cv
from esphome.components import switch
from esphome.const import CONF_ID

from ..philips_series_2200 import CONTROLLER_ID, PhilipsSeries2200

DEPENDENCIES = ["philips_series_2200"]
Expand Down
1 change: 0 additions & 1 deletion components/philips_series_2200/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import esphome.config_validation as cv
from esphome import pins
from esphome.components.uart import UARTComponent

from esphome.const import CONF_ID

AUTO_LOAD = [
Expand Down
15 changes: 12 additions & 3 deletions components/philips_series_2200/philips_series_2200.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,30 @@ namespace esphome
*
* @param uart display uart reference
*/
void register_display_uart(uart::UARTComponent *uart) { display_uart_ = uart::UARTDevice(uart); };
void register_display_uart(uart::UARTComponent *uart)
{
display_uart_ = uart::UARTDevice(uart);
};

/**
* @brief Set the reference to the uart port connected to the Mainboard
*
* @param uart Mainboard uart reference
*/
void register_mainboard_uart(uart::UARTComponent *uart) { mainboard_uart_ = uart::UARTDevice(uart); };
void register_mainboard_uart(uart::UARTComponent *uart)
{
mainboard_uart_ = uart::UARTDevice(uart);
};

/**
* @brief Sets the pin used for power tripping the display unit
*
* @param pin GPIO pin
*/
void set_power_pin(GPIOPin *pin) { power_pin_ = pin; };
void set_power_pin(GPIOPin *pin)
{
power_pin_ = pin;
};

/**
* @brief Sets the invert status of the power pin
Expand Down
1 change: 1 addition & 0 deletions components/philips_size_settings/number.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import esphome.config_validation as cv
from esphome.components import number
from esphome.const import CONF_MODE

from ..philips_series_2200 import CONTROLLER_ID, PhilipsSeries2200
from ..philips_status_sensor.text_sensor import STATUS_SENSOR_ID, StatusSensor

Expand Down
10 changes: 8 additions & 2 deletions components/philips_size_settings/size_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ namespace esphome
*
* @param source Source of the value
*/
void set_source(Source source) { source_ = source; };
void set_source(Source source)
{
source_ = source;
};

/**
* @brief Sets the status sensor reference
Expand All @@ -61,7 +64,10 @@ namespace esphome
*
* @param uart uart connected to mainboard
*/
void set_uart_device(uart::UARTDevice *uart) { mainboard_uart_ = uart; };
void set_uart_device(uart::UARTDevice *uart)
{
mainboard_uart_ = uart;
};

/**
* @brief Published the state if it's different form the currently published state.
Expand Down
1 change: 1 addition & 0 deletions components/philips_status_sensor/text_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import esphome.config_validation as cv
from esphome.components import text_sensor
from esphome.const import CONF_ID

from ..philips_series_2200 import CONTROLLER_ID, PhilipsSeries2200

USE_CAPPUCCINO = "use_cappuccino"
Expand Down
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[tool.black]
target-version = ["py311"]
[tool.isort]
profile = "black"
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
esphome
29 changes: 29 additions & 0 deletions tests/base.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
esphome:
name: philip

esp8266:
board: d1_mini

external_components:
- source:
type: local
path: ../components

logger:
baud_rate: 0

uart:
- tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 115200
id: uart_mainboard
- tx_pin: GPIO15
rx_pin: GPIO13
baud_rate: 115200
id: uart_display

philips_series_2200:
display_uart: uart_display
mainboard_uart: uart_mainboard
power_pin: GPIO12
id: philip
Loading

0 comments on commit 5ec5f6c

Please sign in to comment.