Skip to content

Commit

Permalink
Add continuous integration (#2)
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 426cf9c commit d419a7e
Show file tree
Hide file tree
Showing 25 changed files with 377 additions and 32 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 Hi-Link HKL-LD2450
# ESPHome Hi-Link HKL-LD2450 [![CI](https://github.com/TillFleisch/ESPHome-HLK-LD2450/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/TillFleisch/ESPHome-HLK-LD2450/actions/workflows/ci.yaml)

This external [ESPHome](https://esphome.io) component adds support for the [Hi-Link HKL-LD2450](https://www.hlktech.net/index.php?id=1157) Human presence sensor to ESPHome.
In addition to a basic binary presence sensor, this component adds various different sensors for each detected target and supports custom presence detection Zones.
Expand Down
2 changes: 1 addition & 1 deletion components/LD2450/LD2450.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -406,4 +406,4 @@ namespace esphome::ld2450

flush();
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/LD2450.h
Original file line number Diff line number Diff line change
Expand Up @@ -348,4 +348,4 @@ namespace esphome::ld2450
/// @brief Select options used for setting the sensors baud rate
BaudRateSelect *baud_rate_select_ = nullptr;
};
}
} // namespace esphome::ld2450
28 changes: 14 additions & 14 deletions components/LD2450/__init__.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import (
uart,
binary_sensor,
button,
number,
select,
sensor,
button,
switch,
select,
uart,
)
from esphome.components.uart import UARTComponent
from esphome.const import (
CONF_ID,
CONF_INITIAL_VALUE,
CONF_NAME,
CONF_STEP,
CONF_RESTORE_VALUE,
CONF_INITIAL_VALUE,
CONF_STEP,
CONF_UNIT_OF_MEASUREMENT,
UNIT_METER,
UNIT_CENTIMETER,
UNIT_DEGREES,
DEVICE_CLASS_OCCUPANCY,
DEVICE_CLASS_DISTANCE,
DEVICE_CLASS_SPEED,
DEVICE_CLASS_OCCUPANCY,
DEVICE_CLASS_RESTART,
STATE_CLASS_MEASUREMENT,
ICON_RESTART_ALERT,
ICON_BLUETOOTH,
ENTITY_CATEGORY_DIAGNOSTIC,
DEVICE_CLASS_SPEED,
ENTITY_CATEGORY_CONFIG,
ENTITY_CATEGORY_DIAGNOSTIC,
ICON_BLUETOOTH,
ICON_RESTART_ALERT,
STATE_CLASS_MEASUREMENT,
UNIT_CENTIMETER,
UNIT_DEGREES,
UNIT_METER,
)

AUTO_LOAD = ["binary_sensor", "number", "sensor", "button", "switch", "select"]
Expand Down
2 changes: 1 addition & 1 deletion components/LD2450/baud_rate_select.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_baud_rate(BAUD_STRING_TO_ENUM.at(value));
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/baud_rate_select.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void control(const std::string &value);
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/bluetooth_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_bluetooth_state(state);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/bluetooth_switch.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void write_state(bool state) override;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/max_detection_number.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ namespace esphome::ld2450
if (this->restore_value_)
this->pref_.save(&value);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/max_detection_number.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ namespace esphome::ld2450
ESPPreferenceObject pref_;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/polling_sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ namespace esphome::ld2450
/// @brief Value of this sensor (un-published)
float value_ = 0;
};
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/target.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ namespace esphome::ld2450
return resolution_ != 0 && (!fast_off_detection_ || millis() - last_change_ <= FAST_OFF_THRESHOLD);
}

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/target.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,4 +229,4 @@ namespace esphome::ld2450
/// @brief sensor reference of the distance sensor
PollingSensor *distance_sensor_ = nullptr;
};
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/tracking_mode_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_tracking_mode(state);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/tracking_mode_switch.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void write_state(bool state) override;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/zone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,4 @@ namespace esphome::ld2450
}
return true;
}
}
} // namespace esphome::ld2450
12 changes: 9 additions & 3 deletions components/LD2450/zone.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,14 @@ namespace esphome::ld2450
class Point
{
public:
Point() : x(0), y(0) {}
Point(int x, int y) : x(x), y(y) {}
Point()
: x(0), y(0)
{
}
Point(int x, int y)
: x(x), y(y)
{
}
int x, y;
};

Expand Down Expand Up @@ -138,4 +144,4 @@ namespace esphome::ld2450
/// @brief Map of targets which are currently tracked inside of this polygon with their last seen timestamp
std::map<Target *, long> tracked_targets_{};
};
}
} // namespace esphome::ld2450
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
33 changes: 33 additions & 0 deletions tests/base.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
esphome:
name: ld2450

esp32:
board: esp32dev

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

logger:
baud_rate: 0

uart:
id: uart_bus
rx_pin:
number: GPIO16
mode:
input: true
pullup: true
tx_pin:
number: GPIO17
mode:
input: true
pullup: true
baud_rate: 256000
parity: NONE
stop_bits: 1
data_bits: 8

LD2450:
uart_id: uart_bus
Loading

0 comments on commit d419a7e

Please sign in to comment.