Compare commits

..

4 Commits

Author SHA1 Message Date
815ea5bb78
Run the main binary by default
All checks were successful
Build and deploy automation_rs / Build automation_rs (push) Successful in 6m27s
Build and deploy automation_rs / Build Docker image (push) Successful in 35s
Build and deploy automation_rs / Deploy Docker container (push) Has been skipped
2024-05-07 00:11:57 +02:00
105a58cbb8
Make sure the generated lua definitions are up to date 2024-05-07 00:11:57 +02:00
cebdac2fe0
Further work on automatically generating lua type definitions 2024-05-07 00:11:57 +02:00
5b96cca5c9
Started work on generating definitions 2024-05-07 00:11:57 +02:00
6 changed files with 59 additions and 110 deletions

16
.git-hooks/pre-commit Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
set -o nounset # Fail on use of unset variable.
set -o errexit # Exit on command failure.
set -o pipefail # Exit on failure of any command in a pipeline.
set -o errtrace # Trap errors in functions and subshells.
set -o noglob # Disable filename expansion (globbing),
# since it could otherwise happen during
# path splitting.
shopt -s inherit_errexit # Inherit the errexit option status in subshells.
set -x
cargo run --bin generate_definitions > ./definitions/generated.lua
git update-index --refresh
cargo clippy --all-targets --all -- -D warnings
cargo fmt -- --check

View File

@ -15,24 +15,17 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: "DEBUG"
run: |
sleep 10
echo "Hello"
echo "pre-commit-3|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}"
echo "Hello?"
- uses: pre-commit/action@v3.0.1
- name: Setup Rust - name: Setup Rust
uses: actions-rust-lang/setup-rust-toolchain@v1 uses: actions-rust-lang/setup-rust-toolchain@v1
with: with:
rustflags: "" rustflags: ""
- name: Formatting
uses: actions-rust-lang/rustfmt@v1
- name: Clippy
run: cargo clippy --all-targets --all -- -D warnings
- name: Build - name: Build
run: cargo build --release run: cargo build --release

View File

@ -1,42 +0,0 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-toml
- id: check-added-large-files
- id: check-merge-conflict
- repo: https://github.com/doublify/pre-commit-rust
rev: v1.0
hooks:
- id: clippy
- id: fmt
- repo: https://github.com/JohnnyMorganz/StyLua
rev: v0.20.0
hooks:
- id: stylua
- repo: https://github.com/crate-ci/typos
rev: v1.21.0
hooks:
- id: typos
args: ["--force-exclude"]
- repo: https://github.com/pryorda/dockerfilelint-precommit-hooks
rev: v0.1.0
hooks:
- id: dockerfilelint
- repo: local
hooks:
- id: lua-definitions
name: Generate lua definitions
description: This hook generates up to date lua definitions.
entry: cargo run --bin generate_definitions
language: system
types: [rust]
pass_filenames: false

View File

@ -1,12 +1,11 @@
# automation_rs # automation_rs
Custom home automation solution with Google Home integration and lua scripting. Custom home automation solution with google-home integration
## Development ## Development
This repository uses [pre-commit](https://pre-commit.com) to make sure everything is ready to go when committing. Make sure to setup git hooks by running
Install the pre-commit hooks by running the following command:
```bash ```sh
pre-commit install git config --local core.hooksPath .git-hooks/
``` ```

View File

@ -181,4 +181,3 @@ function Washer.new(config) end
--- @field event_channel EventChannel --- @field event_channel EventChannel
--- @field client WrappedAsyncClient --- @field client WrappedAsyncClient
-- End of generated file

View File

@ -1,6 +1,3 @@
use std::fs::File;
use std::io::{Result, Write};
use automation::config::MqttDeviceConfig; use automation::config::MqttDeviceConfig;
use automation::devices::{ use automation::devices::{
AirFilter, AirFilterConfig, AudioSetup, AudioSetupConfig, ContactSensor, ContactSensorConfig, AirFilter, AirFilterConfig, AudioSetup, AudioSetupConfig, ContactSensor, ContactSensorConfig,
@ -10,64 +7,51 @@ use automation::devices::{
WakeOnLANConfig, Washer, WasherConfig, WakeOnLANConfig, Washer, WasherConfig,
}; };
fn main() -> Result<()> { fn main() {
let mut d = File::create("./definitions/generated.lua")?; println!("-- WARN: This file is automatically generated, do not manually edit\n");
println!("---@meta");
writeln!( println!("{}", MqttDeviceConfig::generate_lua_definition());
&mut d,
"-- WARN: This file is automatically generated, do not manually edit\n"
)?;
writeln!(&mut d, "---@meta")?;
writeln!(&mut d, "{}", MqttDeviceConfig::generate_lua_definition())?; println!("{}", AirFilter::generate_lua_definition());
println!("{}", AirFilterConfig::generate_lua_definition());
writeln!(&mut d, "{}", AirFilter::generate_lua_definition())?; println!("{}", AudioSetup::generate_lua_definition());
writeln!(&mut d, "{}", AirFilterConfig::generate_lua_definition())?; println!("{}", AudioSetupConfig::generate_lua_definition());
writeln!(&mut d, "{}", AudioSetup::generate_lua_definition())?; println!("{}", ContactSensor::generate_lua_definition());
writeln!(&mut d, "{}", AudioSetupConfig::generate_lua_definition())?; println!("{}", ContactSensorConfig::generate_lua_definition());
println!("{}", PresenceDeviceConfig::generate_lua_definition());
println!("{}", TriggerConfig::generate_lua_definition());
writeln!(&mut d, "{}", ContactSensor::generate_lua_definition())?; println!("{}", DebugBridge::generate_lua_definition());
writeln!(&mut d, "{}", ContactSensorConfig::generate_lua_definition())?; println!("{}", DebugBridgeConfig::generate_lua_definition());
writeln!(
&mut d,
"{}",
PresenceDeviceConfig::generate_lua_definition()
)?;
writeln!(&mut d, "{}", TriggerConfig::generate_lua_definition())?;
writeln!(&mut d, "{}", DebugBridge::generate_lua_definition())?; println!("{}", HueBridge::generate_lua_definition());
writeln!(&mut d, "{}", DebugBridgeConfig::generate_lua_definition())?; println!("{}", HueBridgeConfig::generate_lua_definition());
println!("{}", FlagIDs::generate_lua_definition());
writeln!(&mut d, "{}", HueBridge::generate_lua_definition())?; println!("{}", HueGroup::generate_lua_definition());
writeln!(&mut d, "{}", HueBridgeConfig::generate_lua_definition())?; println!("{}", HueGroupConfig::generate_lua_definition());
writeln!(&mut d, "{}", FlagIDs::generate_lua_definition())?;
writeln!(&mut d, "{}", HueGroup::generate_lua_definition())?; println!("{}", IkeaOutlet::generate_lua_definition());
writeln!(&mut d, "{}", HueGroupConfig::generate_lua_definition())?; println!("{}", IkeaOutletConfig::generate_lua_definition());
writeln!(&mut d, "{}", IkeaOutlet::generate_lua_definition())?; println!("{}", KasaOutlet::generate_lua_definition());
writeln!(&mut d, "{}", IkeaOutletConfig::generate_lua_definition())?; println!("{}", KasaOutletConfig::generate_lua_definition());
writeln!(&mut d, "{}", KasaOutlet::generate_lua_definition())?; println!("{}", LightSensor::generate_lua_definition());
writeln!(&mut d, "{}", KasaOutletConfig::generate_lua_definition())?; println!("{}", LightSensorConfig::generate_lua_definition());
writeln!(&mut d, "{}", LightSensor::generate_lua_definition())?; println!("{}", Ntfy::generate_lua_definition());
writeln!(&mut d, "{}", LightSensorConfig::generate_lua_definition())?; println!("{}", NtfyConfig::generate_lua_definition());
writeln!(&mut d, "{}", Ntfy::generate_lua_definition())?; println!("{}", Presence::generate_lua_definition());
writeln!(&mut d, "{}", NtfyConfig::generate_lua_definition())?; println!("{}", PresenceConfig::generate_lua_definition());
writeln!(&mut d, "{}", Presence::generate_lua_definition())?; println!("{}", WakeOnLAN::generate_lua_definition());
writeln!(&mut d, "{}", PresenceConfig::generate_lua_definition())?; println!("{}", WakeOnLANConfig::generate_lua_definition());
writeln!(&mut d, "{}", WakeOnLAN::generate_lua_definition())?; println!("{}", Washer::generate_lua_definition());
writeln!(&mut d, "{}", WakeOnLANConfig::generate_lua_definition())?; println!("{}", WasherConfig::generate_lua_definition());
writeln!(&mut d, "{}", Washer::generate_lua_definition())?;
writeln!(&mut d, "{}", WasherConfig::generate_lua_definition())?;
writeln!(&mut d, "-- End of generated file")?;
Ok(())
} }