Further work on automatically generating lua type definitions
All checks were successful
Build and deploy automation_rs / Build automation_rs (push) Successful in 6m25s
Build and deploy automation_rs / Build Docker image (push) Successful in 1m24s
Build and deploy automation_rs / Deploy Docker container (push) Has been skipped

This commit is contained in:
2024-04-30 02:08:29 +02:00
parent 2f494a7dd6
commit 11d5d5db4d
25 changed files with 510 additions and 101 deletions

View File

@@ -1,27 +1,40 @@
--- @meta
--- @class WrappedDevice
WrappedDevice = {}
--- @return string
function WrappedDevice:get_id() end
--- @class WrappedAsyncClient
--- @class EventChannel
--- @return EventChannel
function automation.device_manager:event_channel() end
automation = {}
--- @class Device
--- @class Config
--- @class DeviceManager
automation.device_manager = {}
--- @param device WrappedDevice
function automation.device_manager:add(device) end
--- @class MqttClient
automation.mqtt_client = {}
--- @param when string
--- @param func function
function automation.device_manager:schedule(when, func) end
--- @param identifier string
--- @param config Config
--- @return Device
function automation.device_manager:create(identifier, config) end
automation.util = {}
--- @param env string
--- @return string
function automation.util.get_env(env) end
--- @class DebugBridge
DebugBridge = {}
--- @class Fulfillment
--- @field openid_url string|nil
automation.fulfillment = {}
--- @class DebugBridgeConfig
--- @field topic string
--- @class MqttConfig
--- @param config MqttConfig
--- @return WrappedAsyncClient
function automation.new_mqtt_client(config) end
--- @param config DebugBridgeConfig
--- @return Config
function DebugBridge.new(config) end
--- TODO: Generate this automatically
--- @alias OutletType "Outlet"|"Kettle"|"Charger"|"Light"
--- @alias TriggerDevicesHelper WrappedDevice[]

183
definitions/generated.lua Normal file
View File

@@ -0,0 +1,183 @@
-- WARN: This file is automatically generated, do not manually edit
---@meta
--- @class MqttDeviceConfig
--- @field topic String
--- @class AirFilter
AirFilter = {}
--- @param config AirFilterConfig
--- @return WrappedDevice
function AirFilter.new(config) end
--- @class AirFilterConfig
--- @field name String
--- @field room String|nil
--- @field topic String
--- @field client WrappedAsyncClient
--- @class AudioSetup
AudioSetup = {}
--- @param config AudioSetupConfig
--- @return WrappedDevice
function AudioSetup.new(config) end
--- @class AudioSetupConfig
--- @field identifier String
--- @field topic String
--- @field mixer WrappedDevice
--- @field speakers WrappedDevice
--- @field client WrappedAsyncClient
--- @class ContactSensor
ContactSensor = {}
--- @param config ContactSensorConfig
--- @return WrappedDevice
function ContactSensor.new(config) end
--- @class ContactSensorConfig
--- @field identifier String
--- @field topic String
--- @field presence PresenceDeviceConfig|nil
--- @field trigger TriggerConfig|nil
--- @field client WrappedAsyncClient
--- @class PresenceDeviceConfig
--- @field topic String
--- @field timeout u64
--- @class TriggerConfig
--- @field devices TriggerDevicesHelper
--- @field timeout u64|nil
--- @class DebugBridge
DebugBridge = {}
--- @param config DebugBridgeConfig
--- @return WrappedDevice
function DebugBridge.new(config) end
--- @class DebugBridgeConfig
--- @field identifier String
--- @field topic String
--- @field client WrappedAsyncClient
--- @class HueBridge
HueBridge = {}
--- @param config HueBridgeConfig
--- @return WrappedDevice
function HueBridge.new(config) end
--- @class HueBridgeConfig
--- @field identifier String
--- @field ip Ipv4Addr
--- @field login String
--- @field flags FlagIDs
--- @class FlagIDs
--- @field presence isize
--- @field darkness isize
--- @class HueGroup
HueGroup = {}
--- @param config HueGroupConfig
--- @return WrappedDevice
function HueGroup.new(config) end
--- @class HueGroupConfig
--- @field identifier String
--- @field ip Ipv4Addr
--- @field login String
--- @field group_id isize
--- @field timer_id isize
--- @field scene_id String
--- @field remotes MqttDeviceConfig []|nil
--- @field client WrappedAsyncClient
--- @class IkeaOutlet
IkeaOutlet = {}
--- @param config IkeaOutletConfig
--- @return WrappedDevice
function IkeaOutlet.new(config) end
--- @class IkeaOutletConfig
--- @field name String
--- @field room String|nil
--- @field topic String
--- @field outlet_type OutletType|nil
--- @field timeout u64|nil
--- @field remotes MqttDeviceConfig []|nil
--- @field client WrappedAsyncClient
--- @class KasaOutlet
KasaOutlet = {}
--- @param config KasaOutletConfig
--- @return WrappedDevice
function KasaOutlet.new(config) end
--- @class KasaOutletConfig
--- @field identifier String
--- @field ip Ipv4Addr
--- @class LightSensor
LightSensor = {}
--- @param config LightSensorConfig
--- @return WrappedDevice
function LightSensor.new(config) end
--- @class LightSensorConfig
--- @field identifier String
--- @field topic String
--- @field min isize
--- @field max isize
--- @field event_channel EventChannel
--- @field client WrappedAsyncClient
--- @class Ntfy
Ntfy = {}
--- @param config NtfyConfig
--- @return WrappedDevice
function Ntfy.new(config) end
--- @class NtfyConfig
--- @field url String|nil
--- @field topic String
--- @field event_channel EventChannel
--- @class Presence
Presence = {}
--- @param config PresenceConfig
--- @return WrappedDevice
function Presence.new(config) end
--- @class PresenceConfig
--- @field topic String
--- @field event_channel EventChannel
--- @field client WrappedAsyncClient
--- @class WakeOnLAN
WakeOnLAN = {}
--- @param config WakeOnLANConfig
--- @return WrappedDevice
function WakeOnLAN.new(config) end
--- @class WakeOnLANConfig
--- @field name String
--- @field room String|nil
--- @field topic String
--- @field mac_address MacAddress
--- @field broadcast_ip Ipv4Addr|nil
--- @field client WrappedAsyncClient
--- @class Washer
Washer = {}
--- @param config WasherConfig
--- @return WrappedDevice
function Washer.new(config) end
--- @class WasherConfig
--- @field identifier String
--- @field topic String
--- @field threshold f32
--- @field event_channel EventChannel
--- @field client WrappedAsyncClient

10
definitions/rust.lua Normal file
View File

@@ -0,0 +1,10 @@
--- @meta
--- @alias String string
--- @alias u64 number
--- @alias isize number
--- @alias f32 number
--- @alias Ipv4Addr string
--- @alias MacAddress string