/
/
/
1"""Setup flow for the local filesystem provider."""
2
3from __future__ import annotations
4
5from dataclasses import replace
6from typing import TYPE_CHECKING
7
8from music_assistant.models.setup_flow import SetupFlowError
9from music_assistant.providers.filesystem_local.constants import (
10 CONF_ENTRY_CONTENT_TYPE,
11 CONF_ENTRY_PATH,
12)
13
14if TYPE_CHECKING:
15 from music_assistant.models.setup_flow import SetupSession
16
17_ENTRIES = (CONF_ENTRY_CONTENT_TYPE, CONF_ENTRY_PATH)
18
19
20async def run_setup(session: SetupSession) -> None:
21 """Run the setup flow: collect the content type and path, then create the provider."""
22 errors: dict[str, str] | None = None
23 setup_data = dict(session.context.setup_data)
24 while True:
25 entries = [
26 replace(entry, value=setup_data.get(entry.key, entry.value)) for entry in _ENTRIES
27 ]
28 submitted = await session.form(entries, step_id="user", errors=errors, last_step=True)
29 setup_data.update(submitted)
30 try:
31 await session.finish(setup_data)
32 return
33 except SetupFlowError as err:
34 errors = {"base": err.translation_key or str(err)}
35