For now we terminate the process, but in the future we may tell the
server to stop, which may possibly include some teardown logic.
Handling these signals also make it easier to put Homebridge inside
a docker container, as docker uses SIGTERM to tell a container process
to stop, and passes SIGINT when attached to the container and receiving
a Ctrl+C.
Like a MAC address, a valid username can only contain 6 pairs of
hexadecimal characters, and for homebridge purposes must be
colon-separated. This adds a simple regex test for a proper username,
since I just spent nearly 24h trying to debug an issue that all came
down to not realizing that a MAC address could only have letters A-F
(see https://github.com/nfarina/homebridge/issues/385).
If the found plugin / package does not fulfill some specs (i.e. does not contain the keyword `homebridge-plugin`), it will be rejected with an error. Without that change nobody will be notified WHY the plugin has been rejected/skipped.
- Homebridge calls single exported initializer function and passes an
API object
- No more require() for HAP classes (doesn't play well with plugin
structure)
- Homebridge is now designed to be `npm install`d globally and
executed via "homebridge" script
- Remove all specific accessories/platforms except for an example
- New internal structure and "cli"
It seemed to be easier all around to use NPM to manage the dependancy on HAP-NodeJS.
This PR removes the submodule, and adjusts the paths of all checked in shims to reference the NPM module instead.
I also updated the documentation to reflect the simpler install ;)