datex-studio-cli 0.4.9__tar.gz → 0.4.11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/PKG-INFO +1 -1
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/pyproject.toml +1 -1
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/__init__.py +1 -1
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/cli.py +54 -7
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/auth.py +393 -198
- datex_studio_cli-0.4.11/src/dxs/commands/init.py +310 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/studio.py +85 -19
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/context.py +1 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/auth/decorators.py +40 -12
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/auth/msal_client.py +34 -6
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/auth/token_cache.py +365 -64
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/devops/client.py +9 -4
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/dynamics/client.py +10 -7
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/footprint/client.py +5 -0
- datex_studio_cli-0.4.11/src/dxs/core/onboarding.py +151 -0
- datex_studio_cli-0.4.11/src/dxs/report/templates/__init__.py +0 -0
- datex_studio_cli-0.4.11/src/dxs/utils/clipboard.py +50 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/config.py +33 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/paths.py +33 -11
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/app.py +3 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/.gitignore +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/README.md +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/report-creator.skill +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/scripts/analyze_corpus.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/scripts/generate_rdlx_schema.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/__main__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/api.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/branch.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/config.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/configuration.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/crm.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/datasource.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/devops.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/document.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/endpoint.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/env.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/explore.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/function.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/marketplace.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/odata.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/organization.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/proxy.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/release_notes.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/repo.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/add_cmds.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/api.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/batch.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/create.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/data.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/dataset.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/edit.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/folder.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/preview.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/report/schema_cmds.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/schema.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/servicepack.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/source.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/telemetry.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/commands/user.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/app_config.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/client.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/endpoints.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/metadata_models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/api/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/auth/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/cache.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/flow_generator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/flow_models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/generator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/parsers.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/resolver.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/type_def_parser.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/datasource/validator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/designer/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/designer/flow_models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/designer/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/designer/parsers.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/devops/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/devops/helpers.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/devops/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/dynamics/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/dynamics/metadata_cache.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/footprint/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/footprint/edmx_parser.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/footprint/metadata.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/function/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/function/generator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/function/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/function/validator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/graph.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/csv_fmt.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/formatter.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/json_fmt.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/redaction.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/output/yaml_fmt.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/release_notes.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/responses.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/config.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/identity.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/recorder.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/scrubber.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/core/telemetry/sender.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/models/__init__.py +0 -0
- /datex_studio_cli-0.4.9/src/dxs/report/templates/__init__.py → /datex_studio_cli-0.4.11/src/dxs/py.typed +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/datasource_binding.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/engine.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/field_parser.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/folder.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/manifest.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/models.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/preview.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/preview_arjs.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/schema.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/svg_renderer.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/templates/bill_of_lading.rdlx-json +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/templates/shipping_label.rdlx-json +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/validate_arjs.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/validator.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/report/wrapper.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/click_options.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/errors.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/filtering.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/image.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/resolvers.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/responses.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/restricted.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/sorting.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/utils/update_check.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/__init__.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/design.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/proxy_app.py +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/404/index.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/404.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_buildManifest.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/UgyAMtPjH-Pt0RYWOHzIT/_ssgManifest.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/0b24cca5-c1e1c8810348f107.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/255-102f2e5b2e3dc2ef.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/4bd1b696-c023c6e3521b1417.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/538-84e2e111415f1fda.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/697-0e000ab410d9f470.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/871-1acacdb7b4022abf.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/8b8f67fc-6295949a4b5485a4.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/909-c88abba3cf0caec3.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/app/_not-found/page-ea1be7001c230704.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/app/design/capture/page-a5e129c2d223432c.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/app/design/page-21ba66a3dd3b03f0.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/app/layout-2cc6eac09e476c91.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/app/page-20c358395882cdac.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/framework-de98b93a850cfc71.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/main-0f18f91200dac003.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/main-app-b69998d8941231d8.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/pages/_app-7d307437aca18ad4.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/chunks/webpack-2b297ada5306c17f.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/_next/static/css/360c657de5e04df8.css +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/design/capture/index.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/design/capture/index.txt +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/design/index.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/design/index.txt +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/index.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/index.txt +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/render-cli.js +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/report-preview.html +0 -0
- {datex_studio_cli-0.4.9 → datex_studio_cli-0.4.11}/src/dxs/web/static/report-validate.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datex-studio-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.11
|
|
4
4
|
Summary: CLI for Datex Studio low-code platform, designed for LLM-based AI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/datex/datex-studio-cli
|
|
6
6
|
Project-URL: Documentation, https://github.com/datex/datex-studio-cli
|
|
@@ -16,7 +16,7 @@ from dxs.core.output.redaction import (
|
|
|
16
16
|
_redact_secrets, # noqa: F401 — re-exported
|
|
17
17
|
_strip_concise, # noqa: F401 — re-exported
|
|
18
18
|
)
|
|
19
|
-
from dxs.utils.config import get_settings
|
|
19
|
+
from dxs.utils.config import get_settings, resolve_target_url
|
|
20
20
|
from dxs.utils.errors import DxsError
|
|
21
21
|
|
|
22
22
|
# Re-export so that existing `from dxs.cli import DxsContext, pass_context` still works
|
|
@@ -104,6 +104,33 @@ class DxsGroup(click.Group):
|
|
|
104
104
|
formatter.write_dl(global_opts)
|
|
105
105
|
|
|
106
106
|
|
|
107
|
+
def _apply_tenant_override(tenant: str) -> None:
|
|
108
|
+
"""Resolve a --tenant selector and pin identity resolution to it.
|
|
109
|
+
|
|
110
|
+
Raises:
|
|
111
|
+
AuthenticationError: If DXS_ACCESS_TOKEN is set (that token bypasses
|
|
112
|
+
identity resolution, so --tenant could not take effect), or if the
|
|
113
|
+
selector does not resolve to exactly one stored identity.
|
|
114
|
+
"""
|
|
115
|
+
import os
|
|
116
|
+
|
|
117
|
+
from dxs.core.auth.token_cache import MultiIdentityTokenCache, set_identity_override
|
|
118
|
+
from dxs.utils.errors import AuthenticationError
|
|
119
|
+
|
|
120
|
+
if os.environ.get("DXS_ACCESS_TOKEN"):
|
|
121
|
+
raise AuthenticationError(
|
|
122
|
+
message="--tenant cannot be used while DXS_ACCESS_TOKEN is set.",
|
|
123
|
+
code="DXS-AUTH-012",
|
|
124
|
+
suggestions=[
|
|
125
|
+
"DXS_ACCESS_TOKEN is used verbatim and already fixes the identity",
|
|
126
|
+
"Unset DXS_ACCESS_TOKEN to select a stored identity with --tenant",
|
|
127
|
+
],
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
cache = MultiIdentityTokenCache()
|
|
131
|
+
set_identity_override(cache.resolve_selector(tenant))
|
|
132
|
+
|
|
133
|
+
|
|
107
134
|
@click.group(cls=DxsGroup, context_settings=CONTEXT_SETTINGS)
|
|
108
135
|
@click.version_option(version=__version__, prog_name=__app_name__)
|
|
109
136
|
@click.option(
|
|
@@ -142,6 +169,14 @@ class DxsGroup(click.Group):
|
|
|
142
169
|
default=None,
|
|
143
170
|
help="API target environment (dev, qa, or prod; default: prod)",
|
|
144
171
|
)
|
|
172
|
+
@click.option(
|
|
173
|
+
"--tenant",
|
|
174
|
+
type=str,
|
|
175
|
+
envvar="DXS_TENANT",
|
|
176
|
+
default=None,
|
|
177
|
+
help="Run as a specific logged-in identity for this command only "
|
|
178
|
+
"(org name, Entra domain, tenant ID, or username). See 'dxs auth list'.",
|
|
179
|
+
)
|
|
145
180
|
@click.option(
|
|
146
181
|
"-O",
|
|
147
182
|
"--output",
|
|
@@ -215,6 +250,7 @@ def cli(
|
|
|
215
250
|
branch: int | None,
|
|
216
251
|
repo: int | None,
|
|
217
252
|
target: str | None,
|
|
253
|
+
tenant: str | None,
|
|
218
254
|
output_format: str | None,
|
|
219
255
|
verbose: bool,
|
|
220
256
|
quiet: bool,
|
|
@@ -232,10 +268,12 @@ def cli(
|
|
|
232
268
|
|
|
233
269
|
\b
|
|
234
270
|
Examples:
|
|
271
|
+
dxs init
|
|
235
272
|
dxs auth login
|
|
236
273
|
dxs source log --repo 10
|
|
237
274
|
dxs source history userGrid --branch 100
|
|
238
275
|
dxs config list
|
|
276
|
+
dxs --tenant MGD schema entities # run one command as another identity
|
|
239
277
|
|
|
240
278
|
\b
|
|
241
279
|
Environment Variables:
|
|
@@ -244,6 +282,7 @@ def cli(
|
|
|
244
282
|
DXS_BRANCH Default branch ID
|
|
245
283
|
DXS_REPO Default repository ID
|
|
246
284
|
DXS_TARGET API target environment (dev, qa, prod)
|
|
285
|
+
DXS_TENANT Identity to run as (see --tenant)
|
|
247
286
|
|
|
248
287
|
\b
|
|
249
288
|
Configuration:
|
|
@@ -258,12 +297,7 @@ def cli(
|
|
|
258
297
|
|
|
259
298
|
# Set API base URL based on target environment
|
|
260
299
|
if target:
|
|
261
|
-
|
|
262
|
-
"dev": "https://dev.wavelength.host/api",
|
|
263
|
-
"qa": "https://qa.wavelength.host/api",
|
|
264
|
-
"prod": "https://wavelength.host/api",
|
|
265
|
-
}
|
|
266
|
-
os.environ["DXS_API_BASE_URL"] = target_urls[target.lower()]
|
|
300
|
+
os.environ["DXS_API_BASE_URL"] = resolve_target_url(target)
|
|
267
301
|
|
|
268
302
|
# Load settings
|
|
269
303
|
settings = get_settings()
|
|
@@ -288,6 +322,17 @@ def cli(
|
|
|
288
322
|
dxs_ctx.output_format = OutputFormat(settings.default_output_format.lower())
|
|
289
323
|
set_last_output_format(dxs_ctx.output_format)
|
|
290
324
|
|
|
325
|
+
# Pin identity resolution for this invocation only (never persisted).
|
|
326
|
+
# Deliberately after output-format resolution so a bad selector renders as
|
|
327
|
+
# a normal error envelope rather than a bare traceback.
|
|
328
|
+
if tenant:
|
|
329
|
+
try:
|
|
330
|
+
_apply_tenant_override(tenant)
|
|
331
|
+
except DxsError as e:
|
|
332
|
+
dxs_ctx.output_error(e)
|
|
333
|
+
ctx.exit(1)
|
|
334
|
+
dxs_ctx.tenant = tenant
|
|
335
|
+
|
|
291
336
|
# Set verbosity (--verbose enables debug output, --quiet suppresses progress)
|
|
292
337
|
dxs_ctx.verbose = verbose
|
|
293
338
|
if quiet_src == click.core.ParameterSource.COMMANDLINE:
|
|
@@ -428,6 +473,7 @@ def register_commands() -> None:
|
|
|
428
473
|
endpoint,
|
|
429
474
|
env,
|
|
430
475
|
function,
|
|
476
|
+
init,
|
|
431
477
|
marketplace,
|
|
432
478
|
odata,
|
|
433
479
|
organization,
|
|
@@ -440,6 +486,7 @@ def register_commands() -> None:
|
|
|
440
486
|
|
|
441
487
|
cli.add_command(api.api)
|
|
442
488
|
cli.add_command(auth.auth)
|
|
489
|
+
cli.add_command(init.init)
|
|
443
490
|
cli.add_command(config.config)
|
|
444
491
|
cli.add_command(config.config, name="settings")
|
|
445
492
|
cli.add_command(configuration.configuration)
|