mirror of
https://github.com/onyx-dot-app/onyx.git
synced 2026-10-19 01:50:51 -05:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""Writes web/src/lib/connectors/credentialBoundFields.json.
|
|
|
|
The file maps each source whose connector config has a ``CredentialBinding``
|
|
model to the sorted names of the bound fields. The web create form reads it to
|
|
show those fields above the credential section. A backend test compares it
|
|
with the binding models.
|
|
|
|
Usage (from ``backend/``), then format the file with oxfmt:
|
|
python -m scripts.generate_credential_bound_fields
|
|
cd ../web && bun run format
|
|
"""
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from onyx.connectors.registry import CONNECTOR_CLASS_MAP
|
|
|
|
SNAPSHOT_PATH = (
|
|
Path(__file__).resolve().parents[2]
|
|
/ "web"
|
|
/ "src"
|
|
/ "lib"
|
|
/ "connectors"
|
|
/ "credentialBoundFields.json"
|
|
)
|
|
REGENERATE_COMMAND = (
|
|
"cd backend && python -m scripts.generate_credential_bound_fields"
|
|
" && cd ../web && bun run format"
|
|
)
|
|
|
|
|
|
def build_credential_bound_fields() -> dict[str, list[str]]:
|
|
"""Source value to the sorted bound field names, for every source with a
|
|
binding model."""
|
|
bound_fields: dict[str, list[str]] = {}
|
|
for source, mapping in CONNECTOR_CLASS_MAP.items():
|
|
binding_class = mapping.config_class.credential_binding_class()
|
|
if binding_class is None:
|
|
continue
|
|
bound_fields[source.value] = sorted(binding_class.model_fields)
|
|
return dict(sorted(bound_fields.items()))
|
|
|
|
|
|
def main() -> None:
|
|
SNAPSHOT_PATH.write_text(
|
|
json.dumps(build_credential_bound_fields(), indent=2) + "\n"
|
|
)
|
|
print(f"Wrote {SNAPSHOT_PATH}. Run `bun run format` in web/ to format it.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|