Skip to content

Commit fc504ac

Browse files
committed
feat: expands entry point to install dependencies from extra_dependencies config
1 parent 98f92fc commit fc504ac

File tree

6 files changed

+36
-7
lines changed

6 files changed

+36
-7
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.venv
2+
__pycache__
3+
*.egg-info

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ RUN pip install wheel && \
4343
COPY docker_overlay/ /
4444
RUN chmod ugo+x /root/run.sh
4545

46-
RUN neon-audio install-plugin -f
46+
RUN neon-audio install-dependencies
4747

4848
CMD ["/root/run.sh"]
4949

docker_overlay/root/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@
2828
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2929

3030
# Plugin installation must occur in a separate thread, before module load, for the entry point to be loaded.
31-
neon-audio install-plugin -f
31+
neon-audio install-dependencies
3232
neon-audio run

neon_audio/cli.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,14 @@
2727
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2828

2929
import click
30+
import sys
31+
from typing import List
3032

3133
from click_default_group import DefaultGroup
3234
from neon_utils.packaging_utils import get_package_version_spec
3335
from neon_utils.configuration_utils import init_config_dir
3436
from ovos_config.config import Configuration
37+
from ovos_utils.log import LOG, log_deprecation
3538

3639

3740
@click.group("neon-audio", cls=DefaultGroup,
@@ -45,7 +48,6 @@ def neon_audio_cli(version: bool = False):
4548
click.echo(f"neon_audio version "
4649
f"{get_package_version_spec('neon_audio')}")
4750

48-
4951
@neon_audio_cli.command(help="Start Neon Audio module")
5052
@click.option("--module", "-m", default=None,
5153
help="TTS Plugin to configure")
@@ -70,7 +72,6 @@ def run(module, package, force_install):
7072
main()
7173
click.echo("Audio Client Shutdown")
7274

73-
7475
@neon_audio_cli.command(help="Install a TTS Plugin")
7576
@click.option("--module", "-m", default=None,
7677
help="TTS Plugin to configure")
@@ -80,6 +81,7 @@ def run(module, package, force_install):
8081
help="Force pip installation of configured module")
8182
def install_plugin(module, package, force_install):
8283
from neon_audio.utils import install_tts_plugin
84+
log_deprecation("`install-plugin` replaced by `install-dependencies`", "2.0.0")
8385
audio_config = Configuration()
8486

8587
if force_install and not (package or module):
@@ -93,10 +95,22 @@ def install_plugin(module, package, force_install):
9395
click.echo("Plugin specified without module")
9496

9597

98+
@neon_audio_cli.command(help="Install neon-audio module dependencies from config & cli")
99+
@click.option("--package", "-p", default=[], multiple=True,
100+
help="Additional package to install (can be repeated)")
101+
def install_dependencies(package: List[str]):
102+
from neon_utils.packaging_utils import install_packages_from_pip
103+
from neon_audio.utils import build_extra_dependency_list
104+
config = Configuration()
105+
dependencies = build_extra_dependency_list(config, "neon-audio", list(package))
106+
result = install_packages_from_pip("neon-audio", dependencies)
107+
LOG.info(f"pip exit code: {result}")
108+
sys.exit(result)
109+
96110
@neon_audio_cli.command(help="Install a TTS Plugin")
97111
@click.option("--plugin", "-p", default=None,
98112
help="TTS module to init")
99113
def init_plugin(plugin):
100114
from neon_audio.utils import init_tts_plugin
101115
plugin = plugin or Configuration()["tts"]["module"]
102-
init_tts_plugin(plugin)
116+
init_tts_plugin(plugin)

neon_audio/utils.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2727
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2828

29+
from typing import List
2930
from tempfile import mkstemp
3031
from ovos_utils.log import LOG
3132
from neon_utils.packaging_utils import get_package_dependencies
33+
from ovos_config.config import Configuration
3234

3335

3436
def patch_config(config: dict = None):
@@ -44,7 +46,6 @@ def patch_config(config: dict = None):
4446
local_config.update(config)
4547
local_config.store()
4648

47-
4849
def _plugin_to_package(plugin: str) -> str:
4950
"""
5051
Get a PyPI spec for a known plugin entrypoint
@@ -62,7 +63,18 @@ def _plugin_to_package(plugin: str) -> str:
6263
}
6364
return known_plugins.get(plugin) or plugin
6465

66+
def build_extra_dependency_list(config: dict|Configuration, module: str, additional: List[str] = []) -> str:
67+
extra_dependencies = config.get("extra_dependencies", [])
68+
dependencies = additional + extra_dependencies.get("global", []) + extra_dependencies.get(module, [])
69+
70+
if config["tts"].get("package_spec"):
71+
dependencies.append(config["tts"].get("package_spec"))
72+
elif config["tts"].get("module"):
73+
dependencies.append(config["tts"]["module"])
74+
75+
return dependencies
6576

77+
@deprecated("Replaced by `neon_utils.packaging_utils.install_packages_from_pip`, "2.0.0")
6678
def install_tts_plugin(plugin: str) -> bool:
6779
"""
6880
Install a tts plugin using pip

requirements/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ovos-audio~=0.0.2a28
2-
ovos-utils~=0.0.35
2+
ovos-utils~=1.8.3a5
33
ovos-config~=0.0.10
44
phoneme-guesser~=0.1
55
ovos-plugin-manager~=0.0.24

0 commit comments

Comments
 (0)