diff --git a/README.rst b/README.rst
index 27e77f3..41f13e6 100644
--- a/README.rst
+++ b/README.rst
@@ -89,13 +89,14 @@ recommended setup ``HASS_SERVER`` and ``HASS_TOKEN`` environment variables.
$ export HASS_SERVER=https://homeassistant.local:8123
$ export HASS_TOKEN=<secret>
-Once that is enabled and you are using either ``zsh`` or ``bash`` run
-the following to enable autocompletion for ``hass-cli`` commands.
+Once that is enabled, run one of the following commands to enable
+autocompletion for ``hass-cli`` commands.
.. code:: bash
- $ source <(hass-cli completion zsh)
-
+ $ source <(_HASS_CLI_COMPLETE=bash_source hass-cli) # for bash
+ $ source <(_HASS_CLI_COMPLETE=zsh_source hass-cli) # for zsh
+ $ eval (_HASS_CLI_COMPLETE=fish_source hass-cli) # for fish
Usage
=======
@@ -493,7 +494,6 @@ Help
Commands:
area Get info and operate on areas from Home Assistant...
- completion Output shell completion code for the specified shell (bash or...
config Get configuration from a Home Assistant instance.
device Get info and operate on devices from Home Assistant...
discover Discovery for the local network.
diff --git a/homeassistant_cli/cli.py b/homeassistant_cli/cli.py
index 9b2013a..db349dd 100644
--- a/homeassistant_cli/cli.py
+++ b/homeassistant_cli/cli.py
@@ -198,7 +198,7 @@ def _default_token() -> Optional[str]:
'--table-format',
default='plain',
help="Which table format to use.",
- autocompletion=autocompletion.table_formats,
+ shell_complete=autocompletion.table_formats,
)
@click.option(
'--sort-by',
diff --git a/homeassistant_cli/plugins/area.py b/homeassistant_cli/plugins/area.py
index 881a5c9..30ea0a4 100644
--- a/homeassistant_cli/plugins/area.py
+++ b/homeassistant_cli/plugins/area.py
@@ -77,7 +77,7 @@ def create(ctx, names):
'names',
nargs=-1,
required=True,
- autocompletion=autocompletion.areas, # type: ignore
+ shell_complete=autocompletion.areas, # type: ignore
)
@pass_context
def delete(ctx, names):
@@ -114,7 +114,7 @@ def delete(ctx, names):
@click.argument(
'oldname',
required=True,
- autocompletion=autocompletion.areas, # type: ignore
+ shell_complete=autocompletion.areas, # type: ignore
)
@click.argument('newname', required=True)
@pass_context
diff --git a/homeassistant_cli/plugins/device.py b/homeassistant_cli/plugins/device.py
index 5c03dea..eadfd78 100644
--- a/homeassistant_cli/plugins/device.py
+++ b/homeassistant_cli/plugins/device.py
@@ -68,7 +68,7 @@ def listcmd(ctx: Configuration, devicefilter: str):
@click.argument(
'area_id_or_name',
required=True,
- autocompletion=autocompletion.areas, # type: ignore
+ shell_complete=autocompletion.areas, # type: ignore
)
@click.argument('names', nargs=-1, required=False)
@click.option(
diff --git a/homeassistant_cli/plugins/entity.py b/homeassistant_cli/plugins/entity.py
index b5be2a5..52ebda4 100644
--- a/homeassistant_cli/plugins/entity.py
+++ b/homeassistant_cli/plugins/entity.py
@@ -61,13 +61,13 @@ def listcmd(ctx: Configuration, entityfilter: str):
@click.argument(
'oldid',
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@click.option('--name', required=False)
@click.argument(
'newid',
required=False,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def rename(ctx, oldid, newid, name):
diff --git a/homeassistant_cli/plugins/event.py b/homeassistant_cli/plugins/event.py
index 1577a0a..15a81df 100644
--- a/homeassistant_cli/plugins/event.py
+++ b/homeassistant_cli/plugins/event.py
@@ -25,7 +25,7 @@ def cli(ctx):
@click.argument(
'event',
required=True,
- autocompletion=autocompletion.events, # type: ignore
+ shell_complete=autocompletion.events, # type: ignore
)
@click.option(
'--json',
diff --git a/homeassistant_cli/plugins/map.py b/homeassistant_cli/plugins/map.py
index e0045d6..f1b6778 100644
--- a/homeassistant_cli/plugins/map.py
+++ b/homeassistant_cli/plugins/map.py
@@ -23,7 +23,7 @@ SERVICE = {
@click.argument(
'entity',
required=False,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@click.option(
'--service', default='openstreetmap', type=click.Choice(SERVICE.keys())
diff --git a/homeassistant_cli/plugins/raw.py b/homeassistant_cli/plugins/raw.py
index 5d6fc34..46c544e 100644
--- a/homeassistant_cli/plugins/raw.py
+++ b/homeassistant_cli/plugins/raw.py
@@ -42,7 +42,7 @@ def _report(ctx, cmd, method, response) -> None:
@cli.command()
@click.argument(
- 'method', autocompletion=autocompletion.api_methods # type: ignore
+ 'method', shell_complete=autocompletion.api_methods # type: ignore
)
@pass_context
def get(ctx: Configuration, method):
@@ -54,7 +54,7 @@ def get(ctx: Configuration, method):
@cli.command()
@click.argument(
- 'method', autocompletion=autocompletion.api_methods # type: ignore
+ 'method', shell_complete=autocompletion.api_methods # type: ignore
)
@click.option('--json')
@pass_context
@@ -72,7 +72,7 @@ def post(ctx: Configuration, method, json):
@cli.command("ws")
@click.argument(
- 'wstype', autocompletion=autocompletion.wsapi_methods # type: ignore
+ 'wstype', shell_complete=autocompletion.wsapi_methods # type: ignore
)
@click.option('--json')
@pass_context
diff --git a/homeassistant_cli/plugins/service.py b/homeassistant_cli/plugins/service.py
index e762829..e1c840f 100644
--- a/homeassistant_cli/plugins/service.py
+++ b/homeassistant_cli/plugins/service.py
@@ -80,7 +80,7 @@ def list_cmd(ctx: Configuration, servicefilter):
@click.argument(
'service',
required=True,
- autocompletion=autocompletion.services, # type: ignore
+ shell_complete=autocompletion.services, # type: ignore
)
@click.option(
'--arguments', help="Comma separated key/value pairs to use as arguments."
diff --git a/homeassistant_cli/plugins/state.py b/homeassistant_cli/plugins/state.py
index 2ea1dff..05bbb1e 100644
--- a/homeassistant_cli/plugins/state.py
+++ b/homeassistant_cli/plugins/state.py
@@ -26,7 +26,7 @@ def cli(ctx):
@click.argument(
'entity',
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def get(ctx: Configuration, entity):
@@ -50,7 +50,7 @@ def get(ctx: Configuration, entity):
@click.argument(
'entity',
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def delete(ctx: Configuration, entity):
@@ -95,7 +95,7 @@ def list(ctx, entityfilter):
@click.argument(
'entity',
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@click.argument('newstate', required=False)
@click.option(
@@ -207,7 +207,7 @@ def _homeassistant_cmd(ctx: Configuration, entities, cmd, action):
'entities',
nargs=-1,
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def toggle(ctx: Configuration, entities):
@@ -221,7 +221,7 @@ def toggle(ctx: Configuration, entities):
'entities',
nargs=-1,
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def off_cmd(ctx: Configuration, entities):
@@ -235,7 +235,7 @@ def off_cmd(ctx: Configuration, entities):
'entities',
nargs=-1,
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@pass_context
def on_cmd(ctx: Configuration, entities):
@@ -249,7 +249,7 @@ def on_cmd(ctx: Configuration, entities):
'entities',
nargs=-1,
required=True,
- autocompletion=autocompletion.entities, # type: ignore
+ shell_complete=autocompletion.entities, # type: ignore
)
@click.option(
'--since',