Commit Graph

3567 Commits

Author SHA1 Message Date
Fabio Manganiello 98b51362e9
[#317] Added Drone step to sync the stable branch on tag.
continuous-integration/drone/push Build is passing Details
Closes: #317
2023-10-01 23:17:53 +02:00
Fabio Manganiello 3086dd86fc
LINT+Black+stability fixes for some plugins that hadn't been touched in a while.
continuous-integration/drone/push Build is passing Details
- media.mplayer
- media.omxplayer
- media.vlc
- music.mpd
- music.snapcast
2023-10-01 22:55:06 +02:00
Fabio Manganiello 2aefc4e5c8
Several improvements for the Google integrations.
1. Improved documentation. Every plugin now reports the exact steps to
   get the integration up and running with the right API scopes.

2. All Google plugins now have a standard process to get (and reuse) the
   client secret. Except for PubSub, Translate and Maps (which have
   their own flows), all the Google plugins now read the client secrets
   from `<WORKDIR>/credentials/google/client_secret.json` by default.

3. Black/LINT for some of those plugins, which hadn't been touched in a
   while.

4. The interface to pass API scopes is now leaner. It's now possible to
   pass a scope directly as e.g. `calendar.readonly` rather than
   `https://www.googleapis.com/auth/calendar.readonly`.

5. Improved the logic to retrieve the right scope tokens file. If e.g.
   an integration requires the role `A`, and a credentials file exists
   for the roles `A` and `B`, then this file will be used rather than
   prompting the user to authenticate again.
2023-10-01 15:37:20 +02:00
Fabio Manganiello 5ca3757834
A more readable configuration for the `calendar` plugin.
The old type configuration
(`platypush.plugins.calendar.name.CalendarNamePlugin`) is a bit clunky.

Instead, since the type will always be a plugin, we should encourage
the use of `calendar.name` directly to identify the type.
2023-10-01 01:09:15 +02:00
Fabio Manganiello 966a6ce29e
httplib2 should be an explicit dependency for Google integrations.
Plus, some misc LINT/Black chores.
2023-10-01 00:52:59 +02:00
Fabio Manganiello a7bb81553c
Regex fix.
continuous-integration/drone/push Build is passing Details
2023-09-30 15:11:09 +02:00
Fabio Manganiello 9e489bb5cf
Propagate the default/required properties of a parameter upon merge.
continuous-integration/drone/push Build is passing Details
2023-09-30 14:57:11 +02:00
Fabio Manganiello 1732bfa82c
Fixed _default_docstring regex. 2023-09-30 14:36:08 +02:00
Fabio Manganiello 532f5479b3
Added full YAML example for `chat.irc` configuration. 2023-09-30 14:34:54 +02:00
Fabio Manganiello ecffbf29bf
Skip vararg/varkw parameters from the config snippet.
continuous-integration/drone/push Build is passing Details
2023-09-30 13:53:33 +02:00
Fabio Manganiello acb40bd5fd
The `test` step should also install all dependencies via apk add.
continuous-integration/drone/push Build is failing Details
2023-09-30 13:36:28 +02:00
Fabio Manganiello 4f5ccda353
Better documentation for the `calendar` plugin. 2023-09-30 13:31:41 +02:00
Fabio Manganiello 7bd721e6a4
Added missing `pip install` parameter. 2023-09-30 13:31:04 +02:00
Fabio Manganiello c82f7bbfbe
Ignore the default docstring text for __init__.
If no docstring is specified for a constructor, Python usually pre-fills
a standard text - "Initialize self. See help(type(self))".

We don't need this default text in our plugins documentation.
2023-09-30 13:29:49 +02:00
Fabio Manganiello d030e2b8c7
Install all the deps via `apk add` on Alpine in the build-docs step. 2023-09-30 13:29:10 +02:00
Fabio Manganiello 15d06fa5c2
Improved docstring parser logic.
continuous-integration/drone/push Build is failing Details
2023-09-30 12:35:31 +02:00
Fabio Manganiello e6f05dfe07 Merge pull request '[#311] Logic to automatically generate the documentation for the dependencies of the integrations' (#330) from 311/auto-generate-deps-docs into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #330
2023-09-30 02:31:43 +02:00
Fabio Manganiello 343972b520
New `IntegrationMetadata` generic util class.
continuous-integration/drone/push Build is passing Details
This object is in charge of parsing all the metadata of a
plugin/backend.
2023-09-30 02:28:20 +02:00
Fabio Manganiello 905d6632e0
Misc documentation improvements. 2023-09-29 18:09:15 +02:00
Fabio Manganiello 0a3ec4b9f1
Merge branch 'master' into 311/auto-generate-deps-docs 2023-09-28 01:25:29 +02:00
Fabio Manganiello 5025d892be
Added install/ subfolders to package_data
continuous-integration/drone/push Build is passing Details
2023-09-28 01:25:01 +02:00
Fabio Manganiello b76f141b61
Catch response write errors in the MQTT callback.
continuous-integration/drone/push Build is passing Details
If the client that forwarded the request is no longer available (either
because an exception or a timeout was raised) then its I/O buffer and
event loop may be closed.

In this case, the response callback should handle and report the
exception, and still set the event, so that any other threads waiting
for the response can move on.
2023-09-27 11:23:55 +02:00
Fabio Manganiello ca7f042ccc
We shouldn't call dateutil.parser if t has already been deserialized to a datetime. 2023-09-27 11:20:10 +02:00
Fabio Manganiello c311987741
Removed `typing.Final` from some of the most commonly used modules.
continuous-integration/drone/push Build is passing Details
`typing.Final` is not defined on Python < 3.8.
2023-09-26 23:50:10 +02:00
Fabio Manganiello 9298f52443
Moved `BluetoothPlugin` to `__init__.py`.
continuous-integration/drone/push Build is passing Details
This is for consistency with other plugins, that all have their main
plugin class definition inside of `__init__.py`.
2023-09-24 19:21:53 +02:00
Fabio Manganiello c3337ccc6c
[#311] Docs deps autogen sphinx plugin.
continuous-integration/drone/push Build is passing Details
Added an `add_dependencies` plugin to the Sphinx build process that
parses the manifest files of the scanned backends and plugins and
automatically generates the documentation for the required dependencies
and triggered events.

This means that those dependencies are no longer required to be listed
in the docstring of the class itself.

Also in this commit:

- Black/LINT for some integrations that hadn't been touched in a long
  time.

- Deleted some leftovers from previous refactors (deprecated
  `backend.mqtt`, `backend.zwave.mqtt`, `backend.http.request.rss`).

- Deleted deprecated `inotify` backend - replaced by `file.monitor` (see
  #289).
2023-09-24 17:00:08 +02:00
Fabio Manganiello 27340f2889
Fixed a variable name in the Drone RPM step.
continuous-integration/drone/push Build is passing Details
2023-09-23 16:48:49 +02:00
Fabio Manganiello 33b26fa8dd
fuse doesn't like inter-device move operations.
continuous-integration/drone/push Build is failing Details
So the Drone pipeline has to resort to the cp+rm dance instead.
2023-09-23 16:42:15 +02:00
Fabio Manganiello b9e68d69a9
Merge branch '316/rpm-support'
continuous-integration/drone/push Build is failing Details
2023-09-23 16:38:20 +02:00
Fabio Manganiello bbd8e939e6
Fixed a multiline expression 2023-09-23 16:37:52 +02:00
Fabio Manganiello fe5158d0ca Merge pull request '[#316] RPM support' (#328) from 316/rpm-support into master
continuous-integration/drone/push Build is failing Details
Reviewed-on: #328
2023-09-23 16:25:34 +02:00
Fabio Manganiello ad2ee75c99
Updated docs
continuous-integration/drone/push Build is passing Details
2023-09-23 16:24:18 +02:00
Fabio Manganiello 059f7a4b11 Merge branch 'master' into 316/rpm-support
continuous-integration/drone/push Build is passing Details
2023-09-23 16:21:48 +02:00
Fabio Manganiello f6dea0b4d4
Added RPM update step to Drone CI pipeline.
continuous-integration/drone/push Build is passing Details
Closes: #316.
2023-09-23 16:21:00 +02:00
Fabio Manganiello 2b981f6b68
Added python-croniter dependency to Fedora.
Plus, some clean up of the variables on .drone.yaml.
2023-09-23 16:20:28 +02:00
Fabio Manganiello b797add90d
Modify shebang header for Mercury JS script.
The RPM build process wants an absolute path.
2023-09-23 16:16:13 +02:00
Fabio Manganiello a872d6f554
Added Fedora to the available Docker base images. 2023-09-22 19:02:13 +02:00
Fabio Manganiello 79e24461cb
Coalesce to empty list if `zigbee.mqtt.devices` returns null.
continuous-integration/drone/push Build is passing Details
2023-09-22 17:00:53 +02:00
Fabio Manganiello 55965e962c
Store the Philips Hue bridge configuration under our workdir.
By default, the `phue` library will store the file containing the token
and the bridge configuration under `~/.python_hue`.

That's outside of our application folder, and it can't easily be copied
around or added to Docker volumes.

We should instead have it under `<WORKDIR>/light.hue/config.json`, in
line with what the other plugins do, and if `~/.python_hue` is available
but `<WORKDIR>/light.hue/config.json` isn't then we should copy the
legacy file to the new one.
2023-09-22 16:58:44 +02:00
Fabio Manganiello 761f2768cb
[#316] Added RPM dependencies.
continuous-integration/drone/push Build is passing Details
2023-09-21 23:20:06 +02:00
Fabio Manganiello 453b6becae
FIX: We shouldn't expand `cfgfile` if it's empty.
continuous-integration/drone/push Build is passing Details
2023-09-21 01:18:15 +02:00
Fabio Manganiello bdbe263905
Added croniter to system dependencies.
The python-croniter package has now been added both to Arch's and
Debian's official repos, so we can install it via pacman or apt rather
than pip.
2023-09-21 01:07:49 +02:00
Fabio Manganiello dfc876c411 Merge pull request '[#285] Removed old covid19 backend' (#327) from 285/remove-old-covid19-backend into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #327
2023-09-21 00:28:20 +02:00
Fabio Manganiello 648b4224bb
[#285] Removed old covid19 backend.
continuous-integration/drone/push Build is passing Details
Those endpoints aren't even working anymore.

Closes: #285
2023-09-21 00:26:35 +02:00
Fabio Manganiello 4aa23d9309 Merge pull request '[#288] Removed legacy `http.poll` backend' (#326) from 288/remove-http-poll-backend into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #326
2023-09-20 23:55:39 +02:00
Fabio Manganiello 5d6d37785e
[#288] Removed legacy `http.poll` backend.
continuous-integration/drone/push Build is passing Details
Closes: #288
2023-09-20 23:53:12 +02:00
Fabio Manganiello 18375dde40 Merge pull request '[#291] Removed deprecated `light.hue` backend' (#325) from 291/remove-light-hue-backend into master
continuous-integration/drone/push Build is passing Details
Reviewed-on: #325
2023-09-20 23:49:02 +02:00
Fabio Manganiello 7ba9a8930a
[#291] Removed deprecated `light.hue` backend.
continuous-integration/drone/push Build is passing Details
Closes: #291
2023-09-20 23:46:40 +02:00
Fabio Manganiello 8925405788
Added `| head -1` to `git log` commands that fetch the current head.
continuous-integration/drone/push Build is passing Details
The reason is that `git log HEAD...HEAD~1` will return two or more
commits if we're dealing with merge commits, so we must be explicit that
we only need the latest one.
2023-09-20 23:42:34 +02:00
Fabio Manganiello 4fa3d7b311 Merge pull request '[#306] Removed Travis CI integration' (#324) from 306/remove-travisci into master
continuous-integration/drone/push Build is failing Details
Reviewed-on: #324
2023-09-20 23:35:38 +02:00