workato-platform-cli 1.0.0rc5.dev5__py3-none-any.whl
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.
- workato_platform_cli/__init__.py +135 -0
- workato_platform_cli/_version.py +34 -0
- workato_platform_cli/cli/__init__.py +126 -0
- workato_platform_cli/cli/commands/__init__.py +0 -0
- workato_platform_cli/cli/commands/api_clients.py +627 -0
- workato_platform_cli/cli/commands/api_collections.py +497 -0
- workato_platform_cli/cli/commands/assets.py +82 -0
- workato_platform_cli/cli/commands/connections.py +1205 -0
- workato_platform_cli/cli/commands/connectors/__init__.py +0 -0
- workato_platform_cli/cli/commands/connectors/command.py +178 -0
- workato_platform_cli/cli/commands/connectors/connector_manager.py +351 -0
- workato_platform_cli/cli/commands/data_tables.py +345 -0
- workato_platform_cli/cli/commands/guide.py +315 -0
- workato_platform_cli/cli/commands/init.py +229 -0
- workato_platform_cli/cli/commands/profiles.py +364 -0
- workato_platform_cli/cli/commands/projects/__init__.py +0 -0
- workato_platform_cli/cli/commands/projects/command.py +513 -0
- workato_platform_cli/cli/commands/projects/project_manager.py +338 -0
- workato_platform_cli/cli/commands/properties.py +174 -0
- workato_platform_cli/cli/commands/pull.py +327 -0
- workato_platform_cli/cli/commands/push/__init__.py +0 -0
- workato_platform_cli/cli/commands/push/command.py +320 -0
- workato_platform_cli/cli/commands/recipes/__init__.py +0 -0
- workato_platform_cli/cli/commands/recipes/command.py +847 -0
- workato_platform_cli/cli/commands/recipes/validator.py +1740 -0
- workato_platform_cli/cli/commands/workspace.py +73 -0
- workato_platform_cli/cli/containers.py +80 -0
- workato_platform_cli/cli/resources/data/connection-data.json +7364 -0
- workato_platform_cli/cli/resources/data/picklist-data.json +3706 -0
- workato_platform_cli/cli/resources/docs/README.md +178 -0
- workato_platform_cli/cli/resources/docs/actions.md +452 -0
- workato_platform_cli/cli/resources/docs/block-structure.md +424 -0
- workato_platform_cli/cli/resources/docs/connections-parameters.md +11946 -0
- workato_platform_cli/cli/resources/docs/data-mapping.md +779 -0
- workato_platform_cli/cli/resources/docs/formulas/array-list-formulas.md +1276 -0
- workato_platform_cli/cli/resources/docs/formulas/conditions.md +102 -0
- workato_platform_cli/cli/resources/docs/formulas/date-formulas.md +798 -0
- workato_platform_cli/cli/resources/docs/formulas/number-formulas.md +507 -0
- workato_platform_cli/cli/resources/docs/formulas/other-formulas.md +419 -0
- workato_platform_cli/cli/resources/docs/formulas/string-formulas.md +1353 -0
- workato_platform_cli/cli/resources/docs/formulas.md +214 -0
- workato_platform_cli/cli/resources/docs/naming-conventions.md +163 -0
- workato_platform_cli/cli/resources/docs/recipe-deployment-workflow.md +352 -0
- workato_platform_cli/cli/resources/docs/recipe-fundamentals.md +179 -0
- workato_platform_cli/cli/resources/docs/triggers.md +360 -0
- workato_platform_cli/cli/utils/__init__.py +10 -0
- workato_platform_cli/cli/utils/config/__init__.py +33 -0
- workato_platform_cli/cli/utils/config/manager.py +1001 -0
- workato_platform_cli/cli/utils/config/models.py +89 -0
- workato_platform_cli/cli/utils/config/profiles.py +491 -0
- workato_platform_cli/cli/utils/config/workspace.py +113 -0
- workato_platform_cli/cli/utils/exception_handler.py +531 -0
- workato_platform_cli/cli/utils/gitignore.py +32 -0
- workato_platform_cli/cli/utils/ignore_patterns.py +44 -0
- workato_platform_cli/cli/utils/spinner.py +63 -0
- workato_platform_cli/cli/utils/version_checker.py +237 -0
- workato_platform_cli/client/__init__.py +0 -0
- workato_platform_cli/client/workato_api/__init__.py +202 -0
- workato_platform_cli/client/workato_api/api/__init__.py +15 -0
- workato_platform_cli/client/workato_api/api/api_platform_api.py +2875 -0
- workato_platform_cli/client/workato_api/api/connections_api.py +1807 -0
- workato_platform_cli/client/workato_api/api/connectors_api.py +840 -0
- workato_platform_cli/client/workato_api/api/data_tables_api.py +604 -0
- workato_platform_cli/client/workato_api/api/export_api.py +621 -0
- workato_platform_cli/client/workato_api/api/folders_api.py +621 -0
- workato_platform_cli/client/workato_api/api/packages_api.py +1197 -0
- workato_platform_cli/client/workato_api/api/projects_api.py +590 -0
- workato_platform_cli/client/workato_api/api/properties_api.py +620 -0
- workato_platform_cli/client/workato_api/api/recipes_api.py +1379 -0
- workato_platform_cli/client/workato_api/api/users_api.py +285 -0
- workato_platform_cli/client/workato_api/api_client.py +807 -0
- workato_platform_cli/client/workato_api/api_response.py +21 -0
- workato_platform_cli/client/workato_api/configuration.py +601 -0
- workato_platform_cli/client/workato_api/docs/APIPlatformApi.md +844 -0
- workato_platform_cli/client/workato_api/docs/ApiClient.md +46 -0
- workato_platform_cli/client/workato_api/docs/ApiClientApiCollectionsInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/ApiClientApiPoliciesInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/ApiClientCreateRequest.md +46 -0
- workato_platform_cli/client/workato_api/docs/ApiClientListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiClientResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/ApiCollection.md +38 -0
- workato_platform_cli/client/workato_api/docs/ApiCollectionCreateRequest.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiEndpoint.md +41 -0
- workato_platform_cli/client/workato_api/docs/ApiKey.md +36 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyCreateRequest.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/Asset.md +39 -0
- workato_platform_cli/client/workato_api/docs/AssetReference.md +37 -0
- workato_platform_cli/client/workato_api/docs/Connection.md +44 -0
- workato_platform_cli/client/workato_api/docs/ConnectionCreateRequest.md +35 -0
- workato_platform_cli/client/workato_api/docs/ConnectionUpdateRequest.md +34 -0
- workato_platform_cli/client/workato_api/docs/ConnectionsApi.md +526 -0
- workato_platform_cli/client/workato_api/docs/ConnectorAction.md +33 -0
- workato_platform_cli/client/workato_api/docs/ConnectorVersion.md +32 -0
- workato_platform_cli/client/workato_api/docs/ConnectorsApi.md +249 -0
- workato_platform_cli/client/workato_api/docs/CreateExportManifestRequest.md +29 -0
- workato_platform_cli/client/workato_api/docs/CreateFolderRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/CustomConnector.md +35 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponseData.md +29 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTable.md +34 -0
- workato_platform_cli/client/workato_api/docs/DataTableColumn.md +37 -0
- workato_platform_cli/client/workato_api/docs/DataTableColumnRequest.md +37 -0
- workato_platform_cli/client/workato_api/docs/DataTableCreateRequest.md +31 -0
- workato_platform_cli/client/workato_api/docs/DataTableCreateResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTableListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTableRelation.md +30 -0
- workato_platform_cli/client/workato_api/docs/DataTablesApi.md +172 -0
- workato_platform_cli/client/workato_api/docs/DeleteProject403Response.md +29 -0
- workato_platform_cli/client/workato_api/docs/Error.md +29 -0
- workato_platform_cli/client/workato_api/docs/ExportApi.md +175 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestRequest.md +35 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestResponseResult.md +36 -0
- workato_platform_cli/client/workato_api/docs/Folder.md +35 -0
- workato_platform_cli/client/workato_api/docs/FolderAssetsResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/FolderAssetsResponseResult.md +29 -0
- workato_platform_cli/client/workato_api/docs/FolderCreationResponse.md +35 -0
- workato_platform_cli/client/workato_api/docs/FoldersApi.md +176 -0
- workato_platform_cli/client/workato_api/docs/ImportResults.md +32 -0
- workato_platform_cli/client/workato_api/docs/OAuthUrlResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/OAuthUrlResponseData.md +29 -0
- workato_platform_cli/client/workato_api/docs/OpenApiSpec.md +30 -0
- workato_platform_cli/client/workato_api/docs/PackageDetailsResponse.md +35 -0
- workato_platform_cli/client/workato_api/docs/PackageDetailsResponseRecipeStatusInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/PackageResponse.md +33 -0
- workato_platform_cli/client/workato_api/docs/PackagesApi.md +364 -0
- workato_platform_cli/client/workato_api/docs/PicklistRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/PicklistResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/PlatformConnector.md +36 -0
- workato_platform_cli/client/workato_api/docs/PlatformConnectorListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/Project.md +32 -0
- workato_platform_cli/client/workato_api/docs/ProjectsApi.md +173 -0
- workato_platform_cli/client/workato_api/docs/PropertiesApi.md +186 -0
- workato_platform_cli/client/workato_api/docs/Recipe.md +58 -0
- workato_platform_cli/client/workato_api/docs/RecipeConfigInner.md +33 -0
- workato_platform_cli/client/workato_api/docs/RecipeConnectionUpdateRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/RecipeListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/RecipeStartResponse.md +31 -0
- workato_platform_cli/client/workato_api/docs/RecipesApi.md +367 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionCreateRequest.md +34 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponseData.md +30 -0
- workato_platform_cli/client/workato_api/docs/SuccessResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/UpsertProjectPropertiesRequest.md +29 -0
- workato_platform_cli/client/workato_api/docs/User.md +48 -0
- workato_platform_cli/client/workato_api/docs/UsersApi.md +84 -0
- workato_platform_cli/client/workato_api/docs/ValidationError.md +30 -0
- workato_platform_cli/client/workato_api/docs/ValidationErrorErrorsValue.md +28 -0
- workato_platform_cli/client/workato_api/exceptions.py +216 -0
- workato_platform_cli/client/workato_api/models/__init__.py +83 -0
- workato_platform_cli/client/workato_api/models/api_client.py +185 -0
- workato_platform_cli/client/workato_api/models/api_client_api_collections_inner.py +89 -0
- workato_platform_cli/client/workato_api/models/api_client_api_policies_inner.py +89 -0
- workato_platform_cli/client/workato_api/models/api_client_create_request.py +138 -0
- workato_platform_cli/client/workato_api/models/api_client_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/api_client_response.py +91 -0
- workato_platform_cli/client/workato_api/models/api_collection.py +110 -0
- workato_platform_cli/client/workato_api/models/api_collection_create_request.py +97 -0
- workato_platform_cli/client/workato_api/models/api_endpoint.py +117 -0
- workato_platform_cli/client/workato_api/models/api_key.py +102 -0
- workato_platform_cli/client/workato_api/models/api_key_create_request.py +93 -0
- workato_platform_cli/client/workato_api/models/api_key_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/api_key_response.py +91 -0
- workato_platform_cli/client/workato_api/models/asset.py +124 -0
- workato_platform_cli/client/workato_api/models/asset_reference.py +110 -0
- workato_platform_cli/client/workato_api/models/connection.py +173 -0
- workato_platform_cli/client/workato_api/models/connection_create_request.py +99 -0
- workato_platform_cli/client/workato_api/models/connection_update_request.py +97 -0
- workato_platform_cli/client/workato_api/models/connector_action.py +100 -0
- workato_platform_cli/client/workato_api/models/connector_version.py +99 -0
- workato_platform_cli/client/workato_api/models/create_export_manifest_request.py +91 -0
- workato_platform_cli/client/workato_api/models/create_folder_request.py +89 -0
- workato_platform_cli/client/workato_api/models/custom_connector.py +117 -0
- workato_platform_cli/client/workato_api/models/custom_connector_code_response.py +91 -0
- workato_platform_cli/client/workato_api/models/custom_connector_code_response_data.py +87 -0
- workato_platform_cli/client/workato_api/models/custom_connector_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/data_table.py +107 -0
- workato_platform_cli/client/workato_api/models/data_table_column.py +125 -0
- workato_platform_cli/client/workato_api/models/data_table_column_request.py +130 -0
- workato_platform_cli/client/workato_api/models/data_table_create_request.py +99 -0
- workato_platform_cli/client/workato_api/models/data_table_create_response.py +91 -0
- workato_platform_cli/client/workato_api/models/data_table_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/data_table_relation.py +90 -0
- workato_platform_cli/client/workato_api/models/delete_project403_response.py +87 -0
- workato_platform_cli/client/workato_api/models/error.py +87 -0
- workato_platform_cli/client/workato_api/models/export_manifest_request.py +107 -0
- workato_platform_cli/client/workato_api/models/export_manifest_response.py +91 -0
- workato_platform_cli/client/workato_api/models/export_manifest_response_result.py +112 -0
- workato_platform_cli/client/workato_api/models/folder.py +110 -0
- workato_platform_cli/client/workato_api/models/folder_assets_response.py +91 -0
- workato_platform_cli/client/workato_api/models/folder_assets_response_result.py +95 -0
- workato_platform_cli/client/workato_api/models/folder_creation_response.py +110 -0
- workato_platform_cli/client/workato_api/models/import_results.py +93 -0
- workato_platform_cli/client/workato_api/models/o_auth_url_response.py +91 -0
- workato_platform_cli/client/workato_api/models/o_auth_url_response_data.py +87 -0
- workato_platform_cli/client/workato_api/models/open_api_spec.py +96 -0
- workato_platform_cli/client/workato_api/models/package_details_response.py +126 -0
- workato_platform_cli/client/workato_api/models/package_details_response_recipe_status_inner.py +99 -0
- workato_platform_cli/client/workato_api/models/package_response.py +109 -0
- workato_platform_cli/client/workato_api/models/picklist_request.py +89 -0
- workato_platform_cli/client/workato_api/models/picklist_response.py +88 -0
- workato_platform_cli/client/workato_api/models/platform_connector.py +116 -0
- workato_platform_cli/client/workato_api/models/platform_connector_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/project.py +93 -0
- workato_platform_cli/client/workato_api/models/recipe.py +174 -0
- workato_platform_cli/client/workato_api/models/recipe_config_inner.py +100 -0
- workato_platform_cli/client/workato_api/models/recipe_connection_update_request.py +89 -0
- workato_platform_cli/client/workato_api/models/recipe_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/recipe_start_response.py +91 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_create_request.py +97 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_response.py +91 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_response_data.py +89 -0
- workato_platform_cli/client/workato_api/models/success_response.py +87 -0
- workato_platform_cli/client/workato_api/models/upsert_project_properties_request.py +88 -0
- workato_platform_cli/client/workato_api/models/user.py +151 -0
- workato_platform_cli/client/workato_api/models/validation_error.py +102 -0
- workato_platform_cli/client/workato_api/models/validation_error_errors_value.py +143 -0
- workato_platform_cli/client/workato_api/rest.py +213 -0
- workato_platform_cli/client/workato_api/test/__init__.py +0 -0
- workato_platform_cli/client/workato_api/test/test_api_client.py +94 -0
- workato_platform_cli/client/workato_api/test/test_api_client_api_collections_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_api_client_api_policies_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_api_client_create_request.py +75 -0
- workato_platform_cli/client/workato_api/test/test_api_client_list_response.py +114 -0
- workato_platform_cli/client/workato_api/test/test_api_client_response.py +104 -0
- workato_platform_cli/client/workato_api/test/test_api_collection.py +72 -0
- workato_platform_cli/client/workato_api/test/test_api_collection_create_request.py +57 -0
- workato_platform_cli/client/workato_api/test/test_api_endpoint.py +75 -0
- workato_platform_cli/client/workato_api/test/test_api_key.py +64 -0
- workato_platform_cli/client/workato_api/test/test_api_key_create_request.py +56 -0
- workato_platform_cli/client/workato_api/test/test_api_key_list_response.py +78 -0
- workato_platform_cli/client/workato_api/test/test_api_key_response.py +68 -0
- workato_platform_cli/client/workato_api/test/test_api_platform_api.py +101 -0
- workato_platform_cli/client/workato_api/test/test_asset.py +67 -0
- workato_platform_cli/client/workato_api/test/test_asset_reference.py +62 -0
- workato_platform_cli/client/workato_api/test/test_connection.py +81 -0
- workato_platform_cli/client/workato_api/test/test_connection_create_request.py +59 -0
- workato_platform_cli/client/workato_api/test/test_connection_update_request.py +56 -0
- workato_platform_cli/client/workato_api/test/test_connections_api.py +73 -0
- workato_platform_cli/client/workato_api/test/test_connector_action.py +59 -0
- workato_platform_cli/client/workato_api/test/test_connector_version.py +58 -0
- workato_platform_cli/client/workato_api/test/test_connectors_api.py +52 -0
- workato_platform_cli/client/workato_api/test/test_create_export_manifest_request.py +88 -0
- workato_platform_cli/client/workato_api/test/test_create_folder_request.py +53 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector.py +76 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_code_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_code_response_data.py +52 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_list_response.py +82 -0
- workato_platform_cli/client/workato_api/test/test_data_table.py +88 -0
- workato_platform_cli/client/workato_api/test/test_data_table_column.py +72 -0
- workato_platform_cli/client/workato_api/test/test_data_table_column_request.py +64 -0
- workato_platform_cli/client/workato_api/test/test_data_table_create_request.py +82 -0
- workato_platform_cli/client/workato_api/test/test_data_table_create_response.py +90 -0
- workato_platform_cli/client/workato_api/test/test_data_table_list_response.py +94 -0
- workato_platform_cli/client/workato_api/test/test_data_table_relation.py +54 -0
- workato_platform_cli/client/workato_api/test/test_data_tables_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_delete_project403_response.py +51 -0
- workato_platform_cli/client/workato_api/test/test_error.py +52 -0
- workato_platform_cli/client/workato_api/test/test_export_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_request.py +69 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_response.py +68 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_response_result.py +66 -0
- workato_platform_cli/client/workato_api/test/test_folder.py +64 -0
- workato_platform_cli/client/workato_api/test/test_folder_assets_response.py +80 -0
- workato_platform_cli/client/workato_api/test/test_folder_assets_response_result.py +78 -0
- workato_platform_cli/client/workato_api/test/test_folder_creation_response.py +64 -0
- workato_platform_cli/client/workato_api/test/test_folders_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_import_results.py +58 -0
- workato_platform_cli/client/workato_api/test/test_o_auth_url_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_o_auth_url_response_data.py +52 -0
- workato_platform_cli/client/workato_api/test/test_open_api_spec.py +54 -0
- workato_platform_cli/client/workato_api/test/test_package_details_response.py +64 -0
- workato_platform_cli/client/workato_api/test/test_package_details_response_recipe_status_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_package_response.py +58 -0
- workato_platform_cli/client/workato_api/test/test_packages_api.py +59 -0
- workato_platform_cli/client/workato_api/test/test_picklist_request.py +53 -0
- workato_platform_cli/client/workato_api/test/test_picklist_response.py +52 -0
- workato_platform_cli/client/workato_api/test/test_platform_connector.py +94 -0
- workato_platform_cli/client/workato_api/test/test_platform_connector_list_response.py +106 -0
- workato_platform_cli/client/workato_api/test/test_project.py +57 -0
- workato_platform_cli/client/workato_api/test/test_projects_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_properties_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_recipe.py +124 -0
- workato_platform_cli/client/workato_api/test/test_recipe_config_inner.py +55 -0
- workato_platform_cli/client/workato_api/test/test_recipe_connection_update_request.py +54 -0
- workato_platform_cli/client/workato_api/test/test_recipe_list_response.py +134 -0
- workato_platform_cli/client/workato_api/test/test_recipe_start_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_recipes_api.py +59 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_create_request.py +59 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response.py +56 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response_data.py +54 -0
- workato_platform_cli/client/workato_api/test/test_success_response.py +52 -0
- workato_platform_cli/client/workato_api/test/test_upsert_project_properties_request.py +52 -0
- workato_platform_cli/client/workato_api/test/test_user.py +85 -0
- workato_platform_cli/client/workato_api/test/test_users_api.py +38 -0
- workato_platform_cli/client/workato_api/test/test_validation_error.py +52 -0
- workato_platform_cli/client/workato_api/test/test_validation_error_errors_value.py +50 -0
- workato_platform_cli/client/workato_api_README.md +205 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/METADATA +185 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/RECORD +306 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/WHEEL +4 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/entry_points.txt +2 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/licenses/LICENSE +7 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"""Initialize Workato CLI for a new project"""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
import asyncclick as click
|
|
8
|
+
import certifi
|
|
9
|
+
|
|
10
|
+
from workato_platform_cli import Workato
|
|
11
|
+
from workato_platform_cli.cli.commands.projects.project_manager import ProjectManager
|
|
12
|
+
from workato_platform_cli.cli.commands.pull import _pull_project
|
|
13
|
+
from workato_platform_cli.cli.utils.config import ConfigManager
|
|
14
|
+
from workato_platform_cli.cli.utils.exception_handler import (
|
|
15
|
+
handle_api_exceptions,
|
|
16
|
+
handle_cli_exceptions,
|
|
17
|
+
)
|
|
18
|
+
from workato_platform_cli.client.workato_api.configuration import Configuration
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@click.command()
|
|
22
|
+
@click.option("--profile", help="Profile name to use (creates new if doesn't exist)")
|
|
23
|
+
@click.option(
|
|
24
|
+
"--region",
|
|
25
|
+
type=click.Choice(["us", "eu", "jp", "au", "sg", "custom"]),
|
|
26
|
+
help="Workato region",
|
|
27
|
+
)
|
|
28
|
+
@click.option("--api-token", help="Workato API token")
|
|
29
|
+
@click.option("--api-url", help="Custom API URL (required when region=custom)")
|
|
30
|
+
@click.option(
|
|
31
|
+
"--project-name", help="Project name (creates new project with this name)"
|
|
32
|
+
)
|
|
33
|
+
@click.option("--project-id", type=int, help="Existing project ID to use")
|
|
34
|
+
@click.option(
|
|
35
|
+
"--non-interactive",
|
|
36
|
+
is_flag=True,
|
|
37
|
+
help="Run in non-interactive mode (requires all necessary options)",
|
|
38
|
+
)
|
|
39
|
+
@click.option(
|
|
40
|
+
"--output-mode",
|
|
41
|
+
type=click.Choice(["table", "json"]),
|
|
42
|
+
default="table",
|
|
43
|
+
help="Output format: table (default) or json (only with --non-interactive)",
|
|
44
|
+
)
|
|
45
|
+
@handle_cli_exceptions
|
|
46
|
+
@handle_api_exceptions
|
|
47
|
+
async def init(
|
|
48
|
+
profile: str | None = None,
|
|
49
|
+
region: str | None = None,
|
|
50
|
+
api_token: str | None = None,
|
|
51
|
+
api_url: str | None = None,
|
|
52
|
+
project_name: str | None = None,
|
|
53
|
+
project_id: int | None = None,
|
|
54
|
+
non_interactive: bool = False,
|
|
55
|
+
output_mode: str = "table",
|
|
56
|
+
) -> None:
|
|
57
|
+
"""Initialize Workato CLI for a new project"""
|
|
58
|
+
|
|
59
|
+
# Validate that --output-mode json requires --non-interactive
|
|
60
|
+
if output_mode == "json" and not non_interactive:
|
|
61
|
+
# Return JSON error for consistency
|
|
62
|
+
error_data: dict[str, Any] = {
|
|
63
|
+
"status": "error",
|
|
64
|
+
"error": "--output-mode json can only be used with --non-interactive flag",
|
|
65
|
+
"error_code": "INVALID_OPTIONS",
|
|
66
|
+
}
|
|
67
|
+
click.echo(json.dumps(error_data))
|
|
68
|
+
return
|
|
69
|
+
|
|
70
|
+
if non_interactive:
|
|
71
|
+
# Validate required parameters for non-interactive mode
|
|
72
|
+
error_msg = None
|
|
73
|
+
error_code = None
|
|
74
|
+
|
|
75
|
+
# Either profile OR individual attributes (region, api_token) are required
|
|
76
|
+
if not profile and not (region and api_token):
|
|
77
|
+
error_msg = (
|
|
78
|
+
"Either --profile or both --region and --api-token are required "
|
|
79
|
+
"in non-interactive mode"
|
|
80
|
+
)
|
|
81
|
+
error_code = "MISSING_REQUIRED_OPTIONS"
|
|
82
|
+
elif region == "custom" and not api_url:
|
|
83
|
+
error_msg = (
|
|
84
|
+
"--api-url is required when region=custom in non-interactive mode"
|
|
85
|
+
)
|
|
86
|
+
error_code = "MISSING_REQUIRED_OPTIONS"
|
|
87
|
+
elif not project_name and not project_id:
|
|
88
|
+
error_msg = (
|
|
89
|
+
"Either --project-name or --project-id is required in "
|
|
90
|
+
"non-interactive mode"
|
|
91
|
+
)
|
|
92
|
+
error_code = "MISSING_REQUIRED_OPTIONS"
|
|
93
|
+
elif project_name and project_id:
|
|
94
|
+
error_msg = "Cannot specify both --project-name and --project-id"
|
|
95
|
+
error_code = "CONFLICTING_OPTIONS"
|
|
96
|
+
|
|
97
|
+
if error_msg:
|
|
98
|
+
if output_mode == "json":
|
|
99
|
+
error_data = {
|
|
100
|
+
"status": "error",
|
|
101
|
+
"error": error_msg,
|
|
102
|
+
"error_code": error_code,
|
|
103
|
+
}
|
|
104
|
+
click.echo(json.dumps(error_data))
|
|
105
|
+
return
|
|
106
|
+
else:
|
|
107
|
+
click.echo(f"❌ {error_msg}")
|
|
108
|
+
raise click.Abort() # For non-JSON mode, keep the normal abort behavior
|
|
109
|
+
|
|
110
|
+
# Initialize JSON output data structure if in JSON mode
|
|
111
|
+
# Since we've already validated that json mode requires non-interactive,
|
|
112
|
+
# we can use output_data existence as our flag throughout the code
|
|
113
|
+
output_data = None
|
|
114
|
+
if output_mode == "json":
|
|
115
|
+
output_data = {
|
|
116
|
+
"status": "success",
|
|
117
|
+
"profile": {},
|
|
118
|
+
"project": {},
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
config_manager = await ConfigManager.initialize(
|
|
122
|
+
profile_name=profile,
|
|
123
|
+
region=region,
|
|
124
|
+
api_token=api_token,
|
|
125
|
+
api_url=api_url,
|
|
126
|
+
project_name=project_name,
|
|
127
|
+
project_id=project_id,
|
|
128
|
+
output_mode=output_mode,
|
|
129
|
+
non_interactive=non_interactive,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# Check if project directory exists and is non-empty
|
|
133
|
+
# Exclude CLI-managed files from the check
|
|
134
|
+
cli_managed_files = {".workatoenv", ".gitignore", ".workato-ignore"}
|
|
135
|
+
project_dir = config_manager.get_project_directory()
|
|
136
|
+
has_user_files = False
|
|
137
|
+
if project_dir and project_dir.exists():
|
|
138
|
+
# Check for files that are not CLI-managed
|
|
139
|
+
has_user_files = any(
|
|
140
|
+
item.name not in cli_managed_files for item in project_dir.iterdir()
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
if has_user_files:
|
|
144
|
+
# Directory is non-empty
|
|
145
|
+
if non_interactive:
|
|
146
|
+
# In non-interactive mode, fail with error
|
|
147
|
+
error_msg = (
|
|
148
|
+
f"Directory '{project_dir}' is not empty. "
|
|
149
|
+
"Please use an empty directory or remove existing files."
|
|
150
|
+
)
|
|
151
|
+
if output_mode == "json":
|
|
152
|
+
error_data = {
|
|
153
|
+
"status": "error",
|
|
154
|
+
"error": error_msg,
|
|
155
|
+
"error_code": "DIRECTORY_NOT_EMPTY",
|
|
156
|
+
}
|
|
157
|
+
click.echo(json.dumps(error_data))
|
|
158
|
+
return
|
|
159
|
+
else:
|
|
160
|
+
click.echo(f"❌ {error_msg}")
|
|
161
|
+
raise click.Abort()
|
|
162
|
+
else:
|
|
163
|
+
# Interactive mode - ask for confirmation
|
|
164
|
+
click.echo(f"⚠️ Directory '{project_dir}' is not empty.")
|
|
165
|
+
if not click.confirm(
|
|
166
|
+
"Proceed with initialization? This may overwrite or delete files.",
|
|
167
|
+
default=False,
|
|
168
|
+
):
|
|
169
|
+
click.echo("❌ Initialization cancelled")
|
|
170
|
+
return
|
|
171
|
+
|
|
172
|
+
# Automatically run pull to set up project structure
|
|
173
|
+
if not output_data:
|
|
174
|
+
click.echo()
|
|
175
|
+
|
|
176
|
+
# Get API credentials from the newly configured profile
|
|
177
|
+
config_data = config_manager.load_config()
|
|
178
|
+
project_profile_override = config_data.profile
|
|
179
|
+
api_token, api_host = config_manager.profile_manager.resolve_environment_variables(
|
|
180
|
+
project_profile_override
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
# Populate profile data for JSON output
|
|
184
|
+
if output_data:
|
|
185
|
+
profile_data = config_manager.profile_manager.get_profile(
|
|
186
|
+
project_profile_override
|
|
187
|
+
or config_manager.profile_manager.get_current_profile_name()
|
|
188
|
+
or "",
|
|
189
|
+
)
|
|
190
|
+
if profile_data:
|
|
191
|
+
output_data["profile"] = {
|
|
192
|
+
"name": project_profile_override
|
|
193
|
+
or config_manager.profile_manager.get_current_profile_name(),
|
|
194
|
+
"region": profile_data.region,
|
|
195
|
+
"region_name": profile_data.region_name,
|
|
196
|
+
"api_url": profile_data.region_url,
|
|
197
|
+
"workspace_id": profile_data.workspace_id,
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# Create API client configuration
|
|
201
|
+
api_config = Configuration(
|
|
202
|
+
access_token=api_token, host=api_host, ssl_ca_cert=certifi.where()
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
# Create project manager and run pull
|
|
206
|
+
async with Workato(configuration=api_config) as workato_api_client:
|
|
207
|
+
project_manager = ProjectManager(workato_api_client=workato_api_client)
|
|
208
|
+
await _pull_project(
|
|
209
|
+
config_manager=config_manager,
|
|
210
|
+
project_manager=project_manager,
|
|
211
|
+
non_interactive=non_interactive,
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
# Populate project data for JSON output
|
|
215
|
+
if output_data:
|
|
216
|
+
meta_data = config_manager.load_config()
|
|
217
|
+
project_path = config_manager.get_project_directory()
|
|
218
|
+
output_data["project"] = {
|
|
219
|
+
"name": meta_data.project_name or "project",
|
|
220
|
+
"id": meta_data.project_id,
|
|
221
|
+
"folder_id": meta_data.folder_id,
|
|
222
|
+
"path": str(project_path) if project_path else None,
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
# Output final result
|
|
226
|
+
if output_data:
|
|
227
|
+
click.echo(json.dumps(output_data))
|
|
228
|
+
else:
|
|
229
|
+
click.echo("🎉 Project setup complete!")
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
"""Manage Workato profiles for multi-environment configurations"""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import asyncclick as click
|
|
9
|
+
|
|
10
|
+
from dependency_injector.wiring import Provide, inject
|
|
11
|
+
|
|
12
|
+
from workato_platform_cli.cli.containers import Container
|
|
13
|
+
from workato_platform_cli.cli.utils.config import ConfigData, ConfigManager
|
|
14
|
+
from workato_platform_cli.cli.utils.exception_handler import handle_cli_exceptions
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@click.group()
|
|
18
|
+
def profiles() -> None:
|
|
19
|
+
"""Manage Workato profiles for multi-environment configurations"""
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@profiles.command(name="list")
|
|
24
|
+
@click.option(
|
|
25
|
+
"--output-mode",
|
|
26
|
+
type=click.Choice(["table", "json"]),
|
|
27
|
+
default="table",
|
|
28
|
+
help="Output format: table (default) or json",
|
|
29
|
+
)
|
|
30
|
+
@handle_cli_exceptions
|
|
31
|
+
@inject
|
|
32
|
+
async def list_profiles(
|
|
33
|
+
output_mode: str = "table",
|
|
34
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
35
|
+
) -> None:
|
|
36
|
+
"""List all available profiles"""
|
|
37
|
+
profiles_dict = config_manager.profile_manager.list_profiles()
|
|
38
|
+
current_profile_name = config_manager.profile_manager.get_current_profile_name()
|
|
39
|
+
|
|
40
|
+
if output_mode == "json":
|
|
41
|
+
# JSON output mode - return structured data
|
|
42
|
+
output_data: dict[str, Any] = {
|
|
43
|
+
"current_profile": current_profile_name,
|
|
44
|
+
"profiles": {},
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
for name, profile_data in profiles_dict.items():
|
|
48
|
+
output_data["profiles"][name] = profile_data.model_dump()
|
|
49
|
+
output_data["profiles"][name]["is_current"] = name == current_profile_name
|
|
50
|
+
|
|
51
|
+
click.echo(json.dumps(output_data))
|
|
52
|
+
return
|
|
53
|
+
|
|
54
|
+
# Table output mode (default)
|
|
55
|
+
if not profiles_dict:
|
|
56
|
+
click.echo("📋 No profiles configured")
|
|
57
|
+
click.echo("💡 Run 'workato init' to create your first profile")
|
|
58
|
+
return
|
|
59
|
+
|
|
60
|
+
click.echo("📋 Available profiles:")
|
|
61
|
+
for name, profile_data in profiles_dict.items():
|
|
62
|
+
current_indicator = " (current)" if name == current_profile_name else ""
|
|
63
|
+
click.echo(f" • {name}{current_indicator}")
|
|
64
|
+
click.echo(f" Region: {profile_data.region_name} ({profile_data.region})")
|
|
65
|
+
click.echo(f" URL: {profile_data.region_url}")
|
|
66
|
+
click.echo(f" Workspace ID: {profile_data.workspace_id}")
|
|
67
|
+
click.echo()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@profiles.command()
|
|
71
|
+
@handle_cli_exceptions
|
|
72
|
+
@inject
|
|
73
|
+
async def show(
|
|
74
|
+
profile_name: str,
|
|
75
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
76
|
+
) -> None:
|
|
77
|
+
"""Show details of a specific profile"""
|
|
78
|
+
profile_data = config_manager.profile_manager.get_profile(profile_name)
|
|
79
|
+
|
|
80
|
+
if not profile_data:
|
|
81
|
+
click.echo(f"❌ Profile '{profile_name}' not found")
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
current_profile_name = config_manager.profile_manager.get_current_profile_name()
|
|
85
|
+
is_current = profile_name == current_profile_name
|
|
86
|
+
|
|
87
|
+
click.echo(f"📋 Profile: {profile_name}")
|
|
88
|
+
if is_current:
|
|
89
|
+
click.echo("✅ This is the current active profile")
|
|
90
|
+
click.echo()
|
|
91
|
+
click.echo("🌍 Region Information:")
|
|
92
|
+
click.echo(f" Code: {profile_data.region}")
|
|
93
|
+
click.echo(f" Name: {profile_data.region_name}")
|
|
94
|
+
click.echo(f" URL: {profile_data.region_url}")
|
|
95
|
+
click.echo()
|
|
96
|
+
click.echo("🏢 Workspace:")
|
|
97
|
+
click.echo(f" ID: {profile_data.workspace_id}")
|
|
98
|
+
click.echo()
|
|
99
|
+
click.echo("🔑 Authentication:")
|
|
100
|
+
|
|
101
|
+
# Check if token is available using profile manager resolution
|
|
102
|
+
api_token, _ = config_manager.profile_manager.resolve_environment_variables(
|
|
103
|
+
profile_name
|
|
104
|
+
if profile_name != config_manager.profile_manager.get_current_profile_name()
|
|
105
|
+
else None
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
if api_token:
|
|
109
|
+
click.echo(" Status: ✅ Token configured")
|
|
110
|
+
# Show where the token is coming from
|
|
111
|
+
if os.environ.get("WORKATO_API_TOKEN"):
|
|
112
|
+
click.echo(" Source: WORKATO_API_TOKEN environment variable")
|
|
113
|
+
else:
|
|
114
|
+
click.echo(" Source: ~/.workato/profiles")
|
|
115
|
+
else:
|
|
116
|
+
click.echo(" Status: ❌ Token not found")
|
|
117
|
+
click.echo(" 💡 Token should be stored in keyring")
|
|
118
|
+
click.echo(" 💡 Or set WORKATO_API_TOKEN environment variable")
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@profiles.command()
|
|
122
|
+
@click.argument("profile_name")
|
|
123
|
+
@handle_cli_exceptions
|
|
124
|
+
@inject
|
|
125
|
+
async def use(
|
|
126
|
+
profile_name: str,
|
|
127
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
128
|
+
) -> None:
|
|
129
|
+
"""Set the current active profile (context-aware: workspace or global)"""
|
|
130
|
+
profile_data = config_manager.profile_manager.get_profile(profile_name)
|
|
131
|
+
|
|
132
|
+
if not profile_data:
|
|
133
|
+
click.echo(f"❌ Profile '{profile_name}' not found")
|
|
134
|
+
click.echo("💡 Use 'workato profiles list' to see available profiles")
|
|
135
|
+
return
|
|
136
|
+
|
|
137
|
+
# Check if we're in a workspace context
|
|
138
|
+
try:
|
|
139
|
+
workspace_root = config_manager.get_workspace_root()
|
|
140
|
+
config_data = config_manager.load_config()
|
|
141
|
+
except Exception:
|
|
142
|
+
workspace_root = None
|
|
143
|
+
config_data = ConfigData.model_construct()
|
|
144
|
+
|
|
145
|
+
# If we have a workspace config (project_id exists), update workspace profile
|
|
146
|
+
if config_data.project_id and workspace_root:
|
|
147
|
+
config_data.profile = profile_name
|
|
148
|
+
config_manager.save_config(config_data)
|
|
149
|
+
click.echo(f"✅ Set '{profile_name}' as profile for current workspace")
|
|
150
|
+
click.echo(f" Workspace: {workspace_root}")
|
|
151
|
+
|
|
152
|
+
# Also update project config if it exists
|
|
153
|
+
project_dir = config_manager.get_project_directory()
|
|
154
|
+
if project_dir and project_dir != workspace_root:
|
|
155
|
+
project_config_manager = ConfigManager(project_dir, skip_validation=True)
|
|
156
|
+
project_config = project_config_manager.load_config()
|
|
157
|
+
if project_config.project_id:
|
|
158
|
+
project_config.profile = profile_name
|
|
159
|
+
project_config_manager.save_config(project_config)
|
|
160
|
+
project_dir = project_dir.relative_to(workspace_root)
|
|
161
|
+
click.echo(f" Project config also updated: {project_dir}")
|
|
162
|
+
else:
|
|
163
|
+
# No workspace context, set global profile
|
|
164
|
+
config_manager.profile_manager.set_current_profile(profile_name)
|
|
165
|
+
click.echo(f"✅ Set '{profile_name}' as global default profile")
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
@profiles.command()
|
|
169
|
+
@click.option(
|
|
170
|
+
"--output-mode",
|
|
171
|
+
type=click.Choice(["table", "json"]),
|
|
172
|
+
default="table",
|
|
173
|
+
help="Output format: table (default) or json",
|
|
174
|
+
)
|
|
175
|
+
@handle_cli_exceptions
|
|
176
|
+
@inject
|
|
177
|
+
async def status(
|
|
178
|
+
output_mode: str = "table",
|
|
179
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
180
|
+
) -> None:
|
|
181
|
+
"""Show current profile status and configuration"""
|
|
182
|
+
# Get project config to check for profile override
|
|
183
|
+
config_data = config_manager.load_config()
|
|
184
|
+
project_profile_override = config_data.profile
|
|
185
|
+
|
|
186
|
+
# Get effective profile name
|
|
187
|
+
current_profile_name = config_manager.profile_manager.get_current_profile_name(
|
|
188
|
+
project_profile_override
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
output_data: dict[str, Any] = {}
|
|
192
|
+
|
|
193
|
+
if not current_profile_name:
|
|
194
|
+
if output_mode == "json":
|
|
195
|
+
output_data = {"profile": None, "error": "No active profile configured"}
|
|
196
|
+
click.echo(json.dumps(output_data, indent=2))
|
|
197
|
+
else:
|
|
198
|
+
click.echo("❌ No active profile configured")
|
|
199
|
+
click.echo("💡 Run 'workato init' to create and set a profile")
|
|
200
|
+
return
|
|
201
|
+
|
|
202
|
+
# JSON output mode
|
|
203
|
+
if output_mode == "json":
|
|
204
|
+
# Profile information
|
|
205
|
+
profile_source_type = None
|
|
206
|
+
profile_source_location = None
|
|
207
|
+
if project_profile_override:
|
|
208
|
+
profile_source_type = "project_override"
|
|
209
|
+
profile_source_location = ".workatoenv"
|
|
210
|
+
elif os.environ.get("WORKATO_PROFILE"):
|
|
211
|
+
profile_source_type = "environment_variable"
|
|
212
|
+
profile_source_location = "WORKATO_PROFILE"
|
|
213
|
+
else:
|
|
214
|
+
profile_source_type = "global_default"
|
|
215
|
+
profile_source_location = "~/.workato/profiles"
|
|
216
|
+
|
|
217
|
+
profile_data = config_manager.profile_manager.get_current_profile_data(
|
|
218
|
+
project_profile_override
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
output_data["profile"] = {
|
|
222
|
+
"name": current_profile_name,
|
|
223
|
+
"source": {
|
|
224
|
+
"type": profile_source_type,
|
|
225
|
+
"location": profile_source_location,
|
|
226
|
+
},
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if profile_data:
|
|
230
|
+
output_data["profile"]["configuration"] = {
|
|
231
|
+
"region": {
|
|
232
|
+
"code": profile_data.region,
|
|
233
|
+
"name": profile_data.region_name,
|
|
234
|
+
"url": profile_data.region_url,
|
|
235
|
+
},
|
|
236
|
+
"workspace_id": profile_data.workspace_id,
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
# Authentication information
|
|
240
|
+
api_token, _ = config_manager.profile_manager.resolve_environment_variables(
|
|
241
|
+
project_profile_override
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
if api_token:
|
|
245
|
+
auth_source_type = None
|
|
246
|
+
auth_source_location = None
|
|
247
|
+
if os.environ.get("WORKATO_API_TOKEN"):
|
|
248
|
+
auth_source_type = "environment_variable"
|
|
249
|
+
auth_source_location = "WORKATO_API_TOKEN"
|
|
250
|
+
else:
|
|
251
|
+
auth_source_type = "keyring"
|
|
252
|
+
auth_source_location = "~/.workato/profiles"
|
|
253
|
+
|
|
254
|
+
output_data["authentication"] = {
|
|
255
|
+
"configured": True,
|
|
256
|
+
"source": {"type": auth_source_type, "location": auth_source_location},
|
|
257
|
+
}
|
|
258
|
+
else:
|
|
259
|
+
output_data["authentication"] = {"configured": False}
|
|
260
|
+
|
|
261
|
+
# Project information
|
|
262
|
+
try:
|
|
263
|
+
workspace_root = config_manager.get_workspace_root()
|
|
264
|
+
if workspace_root and (config_data.project_id or config_data.project_name):
|
|
265
|
+
project_metadata: dict[str, Any] = {}
|
|
266
|
+
if config_data.project_name:
|
|
267
|
+
project_metadata["name"] = config_data.project_name
|
|
268
|
+
if config_data.project_id:
|
|
269
|
+
project_metadata["id"] = config_data.project_id
|
|
270
|
+
if config_data.folder_id:
|
|
271
|
+
project_metadata["folder_id"] = config_data.folder_id
|
|
272
|
+
|
|
273
|
+
project_path = config_manager.get_project_directory()
|
|
274
|
+
|
|
275
|
+
if project_path:
|
|
276
|
+
output_data["project"] = {
|
|
277
|
+
"configured": True,
|
|
278
|
+
"path": str(project_path),
|
|
279
|
+
"metadata": project_metadata,
|
|
280
|
+
}
|
|
281
|
+
else:
|
|
282
|
+
output_data["project"] = {"configured": False}
|
|
283
|
+
else:
|
|
284
|
+
output_data["project"] = {"configured": False}
|
|
285
|
+
except Exception:
|
|
286
|
+
output_data["project"] = {"configured": False}
|
|
287
|
+
|
|
288
|
+
click.echo(json.dumps(output_data))
|
|
289
|
+
return
|
|
290
|
+
|
|
291
|
+
# Table output (existing code)
|
|
292
|
+
click.echo("📊 Profile Status:")
|
|
293
|
+
click.echo(f" Current Profile: {current_profile_name}")
|
|
294
|
+
|
|
295
|
+
# Show source of profile selection
|
|
296
|
+
if project_profile_override:
|
|
297
|
+
click.echo(" Source: Project override (from .workatoenv)")
|
|
298
|
+
else:
|
|
299
|
+
env_profile = os.environ.get("WORKATO_PROFILE")
|
|
300
|
+
if env_profile:
|
|
301
|
+
click.echo(" Source: Environment variable (WORKATO_PROFILE)")
|
|
302
|
+
else:
|
|
303
|
+
click.echo(" Source: Global setting (~/.workato/profiles)")
|
|
304
|
+
|
|
305
|
+
click.echo()
|
|
306
|
+
|
|
307
|
+
# Show profile details
|
|
308
|
+
profile_data = config_manager.profile_manager.get_current_profile_data(
|
|
309
|
+
project_profile_override
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
if profile_data:
|
|
313
|
+
click.echo("🌍 Active Profile Details:")
|
|
314
|
+
click.echo(f" Region: {profile_data.region_name} ({profile_data.region})")
|
|
315
|
+
click.echo(f" URL: {profile_data.region_url}")
|
|
316
|
+
click.echo(f" Workspace ID: {profile_data.workspace_id}")
|
|
317
|
+
click.echo()
|
|
318
|
+
|
|
319
|
+
# Check authentication status
|
|
320
|
+
click.echo("🔑 Authentication:")
|
|
321
|
+
|
|
322
|
+
# Check if token is available using profile manager resolution
|
|
323
|
+
api_token, _ = config_manager.profile_manager.resolve_environment_variables(
|
|
324
|
+
project_profile_override
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
if api_token:
|
|
328
|
+
click.echo(" Status: ✅ Token configured")
|
|
329
|
+
# Show where the token is coming from
|
|
330
|
+
if os.environ.get("WORKATO_API_TOKEN"):
|
|
331
|
+
click.echo(" Source: WORKATO_API_TOKEN environment variable")
|
|
332
|
+
else:
|
|
333
|
+
click.echo(" Source: ~/.workato/profiles")
|
|
334
|
+
else:
|
|
335
|
+
click.echo(" Status: ❌ Token not found")
|
|
336
|
+
click.echo(" 💡 Token should be stored in keyring")
|
|
337
|
+
click.echo(" 💡 Or set WORKATO_API_TOKEN environment variable")
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
@profiles.command()
|
|
341
|
+
@click.argument("profile_name")
|
|
342
|
+
@click.confirmation_option(prompt="Are you sure you want to delete this profile?")
|
|
343
|
+
@handle_cli_exceptions
|
|
344
|
+
@inject
|
|
345
|
+
async def delete(
|
|
346
|
+
profile_name: str,
|
|
347
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
348
|
+
) -> None:
|
|
349
|
+
"""Delete a profile"""
|
|
350
|
+
if not config_manager.profile_manager.get_profile(profile_name):
|
|
351
|
+
click.echo(f"❌ Profile '{profile_name}' not found")
|
|
352
|
+
return
|
|
353
|
+
|
|
354
|
+
success = config_manager.profile_manager.delete_profile(profile_name)
|
|
355
|
+
|
|
356
|
+
if success:
|
|
357
|
+
click.echo(f"✅ Profile '{profile_name}' deleted successfully")
|
|
358
|
+
click.echo("💡 Profile removed from ~/.workato/profiles")
|
|
359
|
+
else:
|
|
360
|
+
click.echo(f"❌ Failed to delete profile '{profile_name}'")
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
# Add show as click argument command
|
|
364
|
+
show = click.argument("profile_name")(show)
|
|
File without changes
|