tower 0.3.7__tar.gz → 0.3.9__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.
- {tower-0.3.7 → tower-0.3.9}/Cargo.lock +25 -19
- {tower-0.3.7 → tower-0.3.9}/Cargo.toml +2 -1
- {tower-0.3.7 → tower-0.3.9}/PKG-INFO +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/config/Cargo.toml +3 -0
- {tower-0.3.7 → tower-0.3.9}/crates/config/src/error.rs +5 -0
- {tower-0.3.7 → tower-0.3.9}/crates/config/src/lib.rs +5 -0
- {tower-0.3.7 → tower-0.3.9}/crates/config/src/session.rs +101 -0
- {tower-0.3.7 → tower-0.3.9}/crates/config/src/towerfile.rs +32 -3
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/Cargo.toml +0 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/README.md +36 -33
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/apis/configuration.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/apis/default_api.rs +156 -102
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/apis/mod.rs +21 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/accept_invitation_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/accept_invitation_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/account.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/api_key.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/app.rs +6 -2
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/app_statistics.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/app_summary.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/app_version.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/cancel_run_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/catalog.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/catalog_property.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/claim_device_login_ticket_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/claim_device_login_ticket_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_account_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_account_params_flags_struct.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_account_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_api_key_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_api_key_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_app_params.rs +5 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_app_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_catalog_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_catalog_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_device_login_ticket_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_secret_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_secret_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_session_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_session_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_team_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/create_team_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_api_key_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_api_key_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_app_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_catalog_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_team_invitation_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_team_invitation_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_team_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/delete_team_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/deploy_app_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_app_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_app_version_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_device_login_session_response.rs +1 -1
- tower-0.3.7/crates/tower-api/src/models/get_run_logs_output_body.rs → tower-0.3.9/crates/tower-api/src/models/describe_run_logs_response.rs +6 -6
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_run_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_secrets_key_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/describe_session_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/encrypted_catalog_property.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/error_detail.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/error_model.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/export_secrets_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/export_user_secrets_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/exported_secret.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/generate_app_statistics_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/generate_run_statistics_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/invite_team_member_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/invite_team_member_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/leave_team_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_api_keys_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_app_environments_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_app_versions_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_apps_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_catalogs_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_my_team_invitations_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_runs_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_secret_environments_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_secrets_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_team_invitations_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_team_members_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/list_teams_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/log_line.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/log_line_error.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/mod.rs +10 -6
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/pagination.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/parameter.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/refresh_session_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/refresh_session_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/remove_team_member_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/remove_team_member_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/resend_team_invitation_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/resend_team_invitation_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/run.rs +7 -5
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/run_app_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/run_app_response.rs +1 -1
- tower-0.3.7/crates/tower-api/src/models/get_run_log_line.rs → tower-0.3.9/crates/tower-api/src/models/run_log_line.rs +5 -5
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/run_results.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/run_statistics.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/secret.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/series_point.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/session.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/statistics_settings.rs +1 -1
- tower-0.3.7/crates/tower-api/src/models/stream_app_run_logs_200_response_inner.rs → tower-0.3.9/crates/tower-api/src/models/stream_run_logs_200_response_inner.rs +3 -3
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/team.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/team_invitation.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/token.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_account_slug_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_account_slug_response.rs +1 -1
- tower-0.3.9/crates/tower-api/src/models/update_app_params.rs +36 -0
- tower-0.3.9/crates/tower-api/src/models/update_app_response.rs +31 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_catalog_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_catalog_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_my_team_invitation_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_my_team_invitation_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_secret_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_secret_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_team_params.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_team_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_user_params.rs +4 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/update_user_response.rs +1 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/models/user.rs +5 -2
- tower-0.3.9/crates/tower-cmd/src/api.rs +389 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/apps.rs +43 -81
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/lib.rs +16 -3
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/output.rs +8 -2
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/run.rs +38 -55
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/secrets.rs +53 -109
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/session.rs +15 -33
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/teams.rs +20 -21
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/util/apps.rs +11 -10
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/util/deploy.rs +1 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-package/src/error.rs +4 -2
- {tower-0.3.7 → tower-0.3.9}/crates/tower-package/src/lib.rs +13 -21
- {tower-0.3.7 → tower-0.3.9}/crates/tower-package/tests/package_test.rs +39 -3
- {tower-0.3.7 → tower-0.3.9}/crates/tower-version/Cargo.toml +3 -1
- {tower-0.3.7 → tower-0.3.9}/crates/tower-version/src/lib.rs +12 -0
- {tower-0.3.7 → tower-0.3.9}/pyproject.toml +1 -1
- tower-0.3.7/crates/tower-cmd/src/api.rs +0 -254
- {tower-0.3.7 → tower-0.3.9}/LICENSE +0 -0
- {tower-0.3.7 → tower-0.3.9}/README.md +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/crypto/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/crypto/src/lib.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/testutils/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/testutils/src/crypto.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/testutils/src/fs.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/testutils/src/lib.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower/src/main.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower/wix/main.wxs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-api/src/lib.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/banner.txt +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/deploy.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/error.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/util/mod.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/util/progress.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-cmd/src/version.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-package/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-runtime/Cargo.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-runtime/src/errors.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-runtime/src/lib.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/crates/tower-runtime/src/local.rs +0 -0
- {tower-0.3.7 → tower-0.3.9}/rust-toolchain.toml +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/__init__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/__main__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/_client.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/_context.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/_features.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/_llms.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/_tables.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/__init__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/__init__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/__init__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/accept_invitation.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/cancel_run.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/claim_device_login_ticket.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_account.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_api_key.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_apps.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_device_login_ticket.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_secret.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_session.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/create_team.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/delete_api_key.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/delete_app.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/delete_secret.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/delete_team.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/delete_team_invitation.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/deploy_app.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_app.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_app_version.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_device_login_session.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_run.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_secrets_key.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/describe_session.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/export_secrets.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/generate_app_statistics.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/generate_run_statistics.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/get_app_run_logs.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/invite_team_member.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/leave_team.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_api_keys.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_app_environments.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_app_versions.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_apps.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_my_team_invitations.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_runs.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_secret_environments.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_secrets.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_team_invitations.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_team_members.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/list_teams.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/refresh_session.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/remove_team_member.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/resend_team_invitation.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/run_app.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/stream_app_run_logs.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/update_account_slug.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/update_my_team_invitation.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/update_team.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/api/default/update_user.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/client.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/__init__.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/accept_invitation_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/accept_invitation_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/account.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/api_key.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/app.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/app_statistics.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/app_summary.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/app_version.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/cancel_run_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/claim_device_login_ticket_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/claim_device_login_ticket_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_account_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_account_params_flags_struct.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_account_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_api_key_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_api_key_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_app_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_app_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_device_login_ticket_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_secret_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_secret_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_session_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_session_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_team_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/create_team_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_api_key_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_api_key_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_app_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_team_invitation_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_team_invitation_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_team_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/delete_team_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/deploy_app_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_app_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_app_version_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_device_login_session_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_run_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_secrets_key_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/describe_session_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/error_detail.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/error_model.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/export_secrets_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/export_user_secrets_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/exported_secret.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/generate_app_statistics_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/generate_run_statistics_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/get_run_log_line.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/get_run_logs_output_body.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/invite_team_member_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/invite_team_member_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/leave_team_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_api_keys_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_app_environments_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_app_versions_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_apps_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_apps_status_item.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_my_team_invitations_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_runs_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_secret_environments_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_secrets_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_team_invitations_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_team_members_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/list_teams_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/log_line.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/log_line_error.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/pagination.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/parameter.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/refresh_session_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/remove_team_member_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/remove_team_member_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/resend_team_invitation_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/resend_team_invitation_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run_app_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run_app_params_parameters.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run_app_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run_results.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/run_statistics.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/secret.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/series_point.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/session.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/statistics_settings.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/team.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/team_invitation.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/token.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_account_slug_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_account_slug_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_my_team_invitation_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_my_team_invitation_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_team_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_team_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_user_params.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/update_user_response.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/models/user.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/tower_api_client/types.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/utils/pyarrow.py +0 -0
- {tower-0.3.7 → tower-0.3.9}/src/tower/utils/tables.py +0 -0
|
@@ -310,15 +310,18 @@ dependencies = [
|
|
|
310
310
|
|
|
311
311
|
[[package]]
|
|
312
312
|
name = "config"
|
|
313
|
-
version = "0.3.
|
|
313
|
+
version = "0.3.9"
|
|
314
314
|
dependencies = [
|
|
315
|
+
"chrono",
|
|
315
316
|
"clap",
|
|
316
317
|
"dirs",
|
|
318
|
+
"futures",
|
|
317
319
|
"log",
|
|
318
320
|
"serde",
|
|
319
321
|
"serde_json",
|
|
320
322
|
"snafu",
|
|
321
323
|
"testutils",
|
|
324
|
+
"tokio",
|
|
322
325
|
"toml",
|
|
323
326
|
"tower-api",
|
|
324
327
|
"url",
|
|
@@ -379,7 +382,7 @@ dependencies = [
|
|
|
379
382
|
|
|
380
383
|
[[package]]
|
|
381
384
|
name = "crypto"
|
|
382
|
-
version = "0.3.
|
|
385
|
+
version = "0.3.9"
|
|
383
386
|
dependencies = [
|
|
384
387
|
"base64",
|
|
385
388
|
"pem",
|
|
@@ -693,6 +696,7 @@ checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
|
|
693
696
|
dependencies = [
|
|
694
697
|
"futures-channel",
|
|
695
698
|
"futures-core",
|
|
699
|
+
"futures-executor",
|
|
696
700
|
"futures-io",
|
|
697
701
|
"futures-sink",
|
|
698
702
|
"futures-task",
|
|
@@ -715,6 +719,17 @@ version = "0.3.31"
|
|
|
715
719
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
716
720
|
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
|
717
721
|
|
|
722
|
+
[[package]]
|
|
723
|
+
name = "futures-executor"
|
|
724
|
+
version = "0.3.31"
|
|
725
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
726
|
+
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
|
|
727
|
+
dependencies = [
|
|
728
|
+
"futures-core",
|
|
729
|
+
"futures-task",
|
|
730
|
+
"futures-util",
|
|
731
|
+
]
|
|
732
|
+
|
|
718
733
|
[[package]]
|
|
719
734
|
name = "futures-io"
|
|
720
735
|
version = "0.3.31"
|
|
@@ -2410,7 +2425,7 @@ dependencies = [
|
|
|
2410
2425
|
|
|
2411
2426
|
[[package]]
|
|
2412
2427
|
name = "testutils"
|
|
2413
|
-
version = "0.3.
|
|
2428
|
+
version = "0.3.9"
|
|
2414
2429
|
dependencies = [
|
|
2415
2430
|
"pem",
|
|
2416
2431
|
"rsa",
|
|
@@ -2614,7 +2629,7 @@ dependencies = [
|
|
|
2614
2629
|
|
|
2615
2630
|
[[package]]
|
|
2616
2631
|
name = "tower"
|
|
2617
|
-
version = "0.3.
|
|
2632
|
+
version = "0.3.9"
|
|
2618
2633
|
dependencies = [
|
|
2619
2634
|
"tokio",
|
|
2620
2635
|
"tower-api",
|
|
@@ -2646,12 +2661,11 @@ dependencies = [
|
|
|
2646
2661
|
"serde_repr",
|
|
2647
2662
|
"serde_with",
|
|
2648
2663
|
"url",
|
|
2649
|
-
"uuid",
|
|
2650
2664
|
]
|
|
2651
2665
|
|
|
2652
2666
|
[[package]]
|
|
2653
2667
|
name = "tower-cmd"
|
|
2654
|
-
version = "0.3.
|
|
2668
|
+
version = "0.3.9"
|
|
2655
2669
|
dependencies = [
|
|
2656
2670
|
"anyhow",
|
|
2657
2671
|
"bytes",
|
|
@@ -2690,7 +2704,7 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
|
|
2690
2704
|
|
|
2691
2705
|
[[package]]
|
|
2692
2706
|
name = "tower-package"
|
|
2693
|
-
version = "0.3.
|
|
2707
|
+
version = "0.3.9"
|
|
2694
2708
|
dependencies = [
|
|
2695
2709
|
"async-compression",
|
|
2696
2710
|
"config",
|
|
@@ -2708,7 +2722,7 @@ dependencies = [
|
|
|
2708
2722
|
|
|
2709
2723
|
[[package]]
|
|
2710
2724
|
name = "tower-runtime"
|
|
2711
|
-
version = "0.3.
|
|
2725
|
+
version = "0.3.9"
|
|
2712
2726
|
dependencies = [
|
|
2713
2727
|
"chrono",
|
|
2714
2728
|
"log",
|
|
@@ -2725,9 +2739,11 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
|
|
|
2725
2739
|
|
|
2726
2740
|
[[package]]
|
|
2727
2741
|
name = "tower-version"
|
|
2728
|
-
version = "0.3.
|
|
2742
|
+
version = "0.3.9"
|
|
2729
2743
|
dependencies = [
|
|
2730
2744
|
"anyhow",
|
|
2745
|
+
"chrono",
|
|
2746
|
+
"config",
|
|
2731
2747
|
"log",
|
|
2732
2748
|
"reqwest",
|
|
2733
2749
|
"serde_json",
|
|
@@ -2830,16 +2846,6 @@ version = "0.2.2"
|
|
|
2830
2846
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2831
2847
|
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
2832
2848
|
|
|
2833
|
-
[[package]]
|
|
2834
|
-
name = "uuid"
|
|
2835
|
-
version = "1.16.0"
|
|
2836
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2837
|
-
checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
|
|
2838
|
-
dependencies = [
|
|
2839
|
-
"getrandom 0.3.2",
|
|
2840
|
-
"serde",
|
|
2841
|
-
]
|
|
2842
|
-
|
|
2843
2849
|
[[package]]
|
|
2844
2850
|
name = "vcpkg"
|
|
2845
2851
|
version = "0.2.15"
|
|
@@ -4,7 +4,7 @@ resolver = "2"
|
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
6
|
edition = "2021"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.9"
|
|
8
8
|
description = "Tower is the best way to host Python data apps in production"
|
|
9
9
|
rust-version = "1.77"
|
|
10
10
|
authors = ["Brad Heller <brad@tower.dev>"]
|
|
@@ -24,6 +24,7 @@ config = { path = "crates/config" }
|
|
|
24
24
|
crypto = { path = "crates/crypto" }
|
|
25
25
|
dirs = "5"
|
|
26
26
|
env_logger = "*"
|
|
27
|
+
futures = "0.3"
|
|
27
28
|
futures-util = "0.3"
|
|
28
29
|
glob = "0.3"
|
|
29
30
|
http = "1.1"
|
|
@@ -7,12 +7,15 @@ rust-version = { workspace = true }
|
|
|
7
7
|
license = { workspace = true }
|
|
8
8
|
|
|
9
9
|
[dependencies]
|
|
10
|
+
chrono = { workspace = true }
|
|
10
11
|
clap = { workspace = true }
|
|
11
12
|
dirs = { workspace = true }
|
|
13
|
+
futures = { workspace = true }
|
|
12
14
|
log = { workspace = true }
|
|
13
15
|
serde = { workspace = true }
|
|
14
16
|
serde_json = { workspace = true }
|
|
15
17
|
snafu = { workspace = true }
|
|
18
|
+
tokio = { workspace = true }
|
|
16
19
|
toml = { workspace = true }
|
|
17
20
|
testutils = { workspace = true }
|
|
18
21
|
url = { workspace = true }
|
|
@@ -22,6 +22,11 @@ pub enum Error {
|
|
|
22
22
|
|
|
23
23
|
#[snafu(display("Team with slug {} not found!", team_slug))]
|
|
24
24
|
TeamNotFound { team_slug: String },
|
|
25
|
+
|
|
26
|
+
#[snafu(display("Unknown describe session value: {}", value))]
|
|
27
|
+
UnknownDescribeSessionValue { value: serde_json::Value },
|
|
28
|
+
|
|
29
|
+
DescribeSessionError { err: tower_api::apis::Error<tower_api::apis::default_api::DescribeSessionError> },
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
impl From<std::io::Error> for Error {
|
|
@@ -10,6 +10,11 @@ pub use error::Error;
|
|
|
10
10
|
pub use session::{default_tower_url, Session, Team, Token, User};
|
|
11
11
|
pub use towerfile::Towerfile;
|
|
12
12
|
|
|
13
|
+
pub use session::{
|
|
14
|
+
get_last_version_check_timestamp,
|
|
15
|
+
set_last_version_check_timestamp,
|
|
16
|
+
};
|
|
17
|
+
|
|
13
18
|
#[derive(Clone, Serialize, Deserialize)]
|
|
14
19
|
pub struct Config {
|
|
15
20
|
pub debug: bool,
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
use std::future::Future;
|
|
1
2
|
use serde::{Deserialize, Serialize};
|
|
3
|
+
use chrono::{DateTime, Utc, TimeZone};
|
|
2
4
|
use std::fs;
|
|
3
5
|
use std::path::PathBuf;
|
|
4
6
|
use url::Url;
|
|
5
7
|
|
|
6
8
|
use crate::error::Error;
|
|
9
|
+
use tower_api::apis::default_api::describe_session;
|
|
7
10
|
|
|
8
11
|
const DEFAULT_TOWER_URL: &str = "https://api.tower.dev";
|
|
9
12
|
|
|
@@ -67,6 +70,47 @@ fn find_or_create_config_dir() -> Result<PathBuf, Error> {
|
|
|
67
70
|
Ok(config_dir)
|
|
68
71
|
}
|
|
69
72
|
|
|
73
|
+
pub fn get_last_version_check_timestamp() -> DateTime<Utc> {
|
|
74
|
+
let default: DateTime<Utc> = Utc.timestamp_opt(0, 0).unwrap();
|
|
75
|
+
|
|
76
|
+
// Look up (in the config dir) when the last version check was done. It's stored in a file
|
|
77
|
+
// called last_version_check.txt and contains a chrono::DateTime timestamp in ISO 8601 format.
|
|
78
|
+
match find_or_create_config_dir() {
|
|
79
|
+
Ok(path) => {
|
|
80
|
+
if let Ok(last_version_check) = fs::read_to_string(path.join("last_version_check.txt")) {
|
|
81
|
+
if let Ok(dt) = DateTime::parse_from_rfc3339(&last_version_check) {
|
|
82
|
+
dt.into()
|
|
83
|
+
} else {
|
|
84
|
+
log::debug!("Error parsing last version check timestamp: {}", last_version_check);
|
|
85
|
+
default
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
log::debug!("Error reading last version check timestamp");
|
|
89
|
+
default
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
Err(err) => {
|
|
93
|
+
log::debug!("Error finding config dir: {}", err);
|
|
94
|
+
default
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pub fn set_last_version_check_timestamp(dt: DateTime<Utc>) {
|
|
100
|
+
match find_or_create_config_dir() {
|
|
101
|
+
Ok(path) => {
|
|
102
|
+
let dt_str = dt.to_rfc3339();
|
|
103
|
+
|
|
104
|
+
if let Err(err) = fs::write(path.join("last_version_check.txt"), dt_str) {
|
|
105
|
+
log::debug!("Error writing last version check timestamp: {}", err);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
Err(err) => {
|
|
109
|
+
log::debug!("Error finding config dir: {}", err);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
70
114
|
impl Session {
|
|
71
115
|
pub fn new(user: User, token: Token, teams: Vec<Team>) -> Self {
|
|
72
116
|
Self {
|
|
@@ -215,4 +259,61 @@ impl Session {
|
|
|
215
259
|
|
|
216
260
|
return next_session;
|
|
217
261
|
}
|
|
262
|
+
|
|
263
|
+
pub fn from_jwt(jwt: &str) -> Result<Self, Error> {
|
|
264
|
+
// We need to instantiate our own configuration object here, instead of the typical thing
|
|
265
|
+
// that we do which is turn a Config into a Configuration.
|
|
266
|
+
let mut config = tower_api::apis::configuration::Configuration::new();
|
|
267
|
+
config.bearer_access_token = Some(jwt.to_string());
|
|
268
|
+
|
|
269
|
+
// We only pull TOWER_URL out of the environment here because we only ever use the JWT and
|
|
270
|
+
// all that in programmatic contexts (when TOWER_URL is set).
|
|
271
|
+
let tower_url = if let Ok(val) = std::env::var("TOWER_URL") {
|
|
272
|
+
val
|
|
273
|
+
} else {
|
|
274
|
+
DEFAULT_TOWER_URL.to_string()
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
// Setup the base path to point to the /v1 API endpoint as expected.
|
|
278
|
+
let mut base_path = Url::parse(&tower_url).unwrap();
|
|
279
|
+
base_path.set_path("/v1");
|
|
280
|
+
|
|
281
|
+
config.base_path = base_path.to_string();
|
|
282
|
+
|
|
283
|
+
// This is a bit of a hairy thing: I didn't want to pull in too much from the Tower API
|
|
284
|
+
// client, so we're using the raw bindings here.
|
|
285
|
+
match run_future_sync(describe_session(&config)) {
|
|
286
|
+
Ok(resp) => {
|
|
287
|
+
// Now we need to extract the session from the response.
|
|
288
|
+
let entity = resp.entity.unwrap();
|
|
289
|
+
|
|
290
|
+
match entity {
|
|
291
|
+
tower_api::apis::default_api::DescribeSessionSuccess::Status200(resp) => {
|
|
292
|
+
let mut session = Session::from_api_session(&resp.session);
|
|
293
|
+
session.tower_url = base_path;
|
|
294
|
+
Ok(session)
|
|
295
|
+
}
|
|
296
|
+
tower_api::apis::default_api::DescribeSessionSuccess::UnknownValue(val) => {
|
|
297
|
+
log::error!("Unknown value while describing session: {}", val);
|
|
298
|
+
Err(Error::UnknownDescribeSessionValue { value: val })
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
Err(err) => {
|
|
303
|
+
log::error!("Error describing session: {}", err);
|
|
304
|
+
Err(Error::DescribeSessionError { err })
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// This hairy little function is a workaround for the fact that we can't use async/await in the
|
|
311
|
+
// context of some of the functions in this file.
|
|
312
|
+
fn run_future_sync<F, T>(future: F) -> T
|
|
313
|
+
where
|
|
314
|
+
F: Future<Output = T>,
|
|
315
|
+
{
|
|
316
|
+
tokio::task::block_in_place(|| {
|
|
317
|
+
tokio::runtime::Handle::current().block_on(future)
|
|
318
|
+
})
|
|
218
319
|
}
|
|
@@ -2,7 +2,7 @@ use crate::Error;
|
|
|
2
2
|
use serde::Deserialize;
|
|
3
3
|
use std::path::PathBuf;
|
|
4
4
|
|
|
5
|
-
#[derive(Deserialize)]
|
|
5
|
+
#[derive(Deserialize, Debug)]
|
|
6
6
|
pub struct Parameter{
|
|
7
7
|
#[serde(default)]
|
|
8
8
|
pub name: String,
|
|
@@ -14,7 +14,7 @@ pub struct Parameter{
|
|
|
14
14
|
pub default: String,
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
#[derive(Deserialize)]
|
|
17
|
+
#[derive(Deserialize, Debug)]
|
|
18
18
|
pub struct App {
|
|
19
19
|
#[serde(default)]
|
|
20
20
|
pub name: String,
|
|
@@ -30,9 +30,12 @@ pub struct App {
|
|
|
30
30
|
|
|
31
31
|
#[serde(default)]
|
|
32
32
|
pub description: String,
|
|
33
|
+
|
|
34
|
+
#[serde(default)]
|
|
35
|
+
pub workspace: PathBuf,
|
|
33
36
|
}
|
|
34
37
|
|
|
35
|
-
#[derive(Deserialize)]
|
|
38
|
+
#[derive(Deserialize, Debug)]
|
|
36
39
|
pub struct Towerfile {
|
|
37
40
|
/// file_path is the path to where this file was read on disk. It's always populated by the
|
|
38
41
|
/// parser/application, never by the data.
|
|
@@ -56,6 +59,7 @@ impl Towerfile {
|
|
|
56
59
|
source: vec![],
|
|
57
60
|
schedule: String::from("0 0 * * *"),
|
|
58
61
|
description: String::from(""),
|
|
62
|
+
workspace: PathBuf::new(),
|
|
59
63
|
},
|
|
60
64
|
}
|
|
61
65
|
}
|
|
@@ -81,6 +85,16 @@ impl Towerfile {
|
|
|
81
85
|
let mut towerfile = Self::from_toml(&std::fs::read_to_string(path.to_path_buf())?)?;
|
|
82
86
|
towerfile.file_path = path;
|
|
83
87
|
|
|
88
|
+
// We set the workspace to the directory of the Towerfile if it's not set because that's
|
|
89
|
+
// the implicit behavior overall for legacy Towerfiles.
|
|
90
|
+
if towerfile.app.workspace.as_os_str().is_empty() {
|
|
91
|
+
log::debug!("Setting workspace to the directory of the Towerfile");
|
|
92
|
+
towerfile.app.workspace = towerfile.file_path
|
|
93
|
+
.parent()
|
|
94
|
+
.map(|p| p.to_path_buf())
|
|
95
|
+
.unwrap();
|
|
96
|
+
}
|
|
97
|
+
|
|
84
98
|
Ok(towerfile)
|
|
85
99
|
}
|
|
86
100
|
|
|
@@ -246,4 +260,19 @@ mod test {
|
|
|
246
260
|
assert_eq!(towerfile.parameters[0].name, "my_first_param");
|
|
247
261
|
assert_eq!(towerfile.parameters[1].name, "my_second_param");
|
|
248
262
|
}
|
|
263
|
+
|
|
264
|
+
#[test]
|
|
265
|
+
fn test_parsing_workspaces() {
|
|
266
|
+
let toml = r#"
|
|
267
|
+
[app]
|
|
268
|
+
name = "my-app"
|
|
269
|
+
script = "my-app/script.py"
|
|
270
|
+
source = ["*.py"]
|
|
271
|
+
workspace = "../"
|
|
272
|
+
"#;
|
|
273
|
+
|
|
274
|
+
// All we want need to do is to ensure that the workspace is set accordingly.
|
|
275
|
+
let towerfile = crate::Towerfile::from_toml(toml).unwrap();
|
|
276
|
+
assert_eq!(towerfile.app.workspace, PathBuf::from("../"));
|
|
277
|
+
}
|
|
249
278
|
}
|
|
@@ -14,5 +14,4 @@ serde_with = { version = "^3.8", default-features = false, features = ["base64",
|
|
|
14
14
|
serde_json = "^1.0"
|
|
15
15
|
serde_repr = "^0.1"
|
|
16
16
|
url = "^2.5"
|
|
17
|
-
uuid = { version = "^1.8", features = ["serde", "v4"] }
|
|
18
17
|
reqwest = { version = "^0.12", features = ["json", "multipart"] }
|
|
@@ -8,9 +8,9 @@ For more information, please visit [https://tower.dev](https://tower.dev)
|
|
|
8
8
|
|
|
9
9
|
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client.
|
|
10
10
|
|
|
11
|
-
- API version: v0.
|
|
11
|
+
- API version: v0.5.1
|
|
12
12
|
- Package version: 1.0.0
|
|
13
|
-
- Generator version: 7.
|
|
13
|
+
- Generator version: 7.13.0-SNAPSHOT
|
|
14
14
|
- Build package: `org.openapitools.codegen.languages.RustClientCodegen`
|
|
15
15
|
|
|
16
16
|
## Installation
|
|
@@ -28,57 +28,58 @@ All URIs are relative to *https://api.tower.dev/v1*
|
|
|
28
28
|
Class | Method | HTTP request | Description
|
|
29
29
|
------------ | ------------- | ------------- | -------------
|
|
30
30
|
*DefaultApi* | [**accept_invitation**](docs/DefaultApi.md#accept_invitation) | **POST** /accounts/invite | Accept an invitation code
|
|
31
|
-
*DefaultApi* | [**cancel_run**](docs/DefaultApi.md#cancel_run) | **POST** /apps/{
|
|
31
|
+
*DefaultApi* | [**cancel_run**](docs/DefaultApi.md#cancel_run) | **POST** /apps/{slug}/runs/{seq} | Cancel run
|
|
32
32
|
*DefaultApi* | [**claim_device_login_ticket**](docs/DefaultApi.md#claim_device_login_ticket) | **POST** /login/device/claim | Claim a device login ticket
|
|
33
33
|
*DefaultApi* | [**create_account**](docs/DefaultApi.md#create_account) | **POST** /accounts | Create account
|
|
34
34
|
*DefaultApi* | [**create_api_key**](docs/DefaultApi.md#create_api_key) | **POST** /api-keys | Create API Key
|
|
35
|
-
*DefaultApi* | [**
|
|
35
|
+
*DefaultApi* | [**create_app**](docs/DefaultApi.md#create_app) | **POST** /apps | Create app
|
|
36
36
|
*DefaultApi* | [**create_catalog**](docs/DefaultApi.md#create_catalog) | **POST** /catalogs | Create catalog
|
|
37
|
-
*DefaultApi* | [**create_device_login_ticket**](docs/DefaultApi.md#create_device_login_ticket) | **GET** /login/device | Create
|
|
37
|
+
*DefaultApi* | [**create_device_login_ticket**](docs/DefaultApi.md#create_device_login_ticket) | **GET** /login/device | Create device login ticket
|
|
38
38
|
*DefaultApi* | [**create_secret**](docs/DefaultApi.md#create_secret) | **POST** /secrets | Create secret
|
|
39
39
|
*DefaultApi* | [**create_session**](docs/DefaultApi.md#create_session) | **POST** /session | Create session
|
|
40
|
-
*DefaultApi* | [**create_team**](docs/DefaultApi.md#create_team) | **POST** /teams | Create
|
|
41
|
-
*DefaultApi* | [**delete_api_key**](docs/DefaultApi.md#delete_api_key) | **DELETE** /api-keys | Delete API
|
|
42
|
-
*DefaultApi* | [**delete_app**](docs/DefaultApi.md#delete_app) | **DELETE** /apps/{
|
|
40
|
+
*DefaultApi* | [**create_team**](docs/DefaultApi.md#create_team) | **POST** /teams | Create team
|
|
41
|
+
*DefaultApi* | [**delete_api_key**](docs/DefaultApi.md#delete_api_key) | **DELETE** /api-keys | Delete API key
|
|
42
|
+
*DefaultApi* | [**delete_app**](docs/DefaultApi.md#delete_app) | **DELETE** /apps/{slug} | Delete app
|
|
43
43
|
*DefaultApi* | [**delete_catalog**](docs/DefaultApi.md#delete_catalog) | **DELETE** /catalogs/{slug} | Delete catalog
|
|
44
|
-
*DefaultApi* | [**delete_secret**](docs/DefaultApi.md#delete_secret) | **DELETE** /secrets/{name} | Delete
|
|
45
|
-
*DefaultApi* | [**delete_team**](docs/DefaultApi.md#delete_team) | **DELETE** /teams | Delete
|
|
46
|
-
*DefaultApi* | [**delete_team_invitation**](docs/DefaultApi.md#delete_team_invitation) | **DELETE** /teams/{slug}/invites | Delete
|
|
47
|
-
*DefaultApi* | [**deploy_app**](docs/DefaultApi.md#deploy_app) | **POST** /apps/{
|
|
48
|
-
*DefaultApi* | [**describe_app**](docs/DefaultApi.md#describe_app) | **GET** /apps/{
|
|
44
|
+
*DefaultApi* | [**delete_secret**](docs/DefaultApi.md#delete_secret) | **DELETE** /secrets/{name} | Delete secret
|
|
45
|
+
*DefaultApi* | [**delete_team**](docs/DefaultApi.md#delete_team) | **DELETE** /teams | Delete team
|
|
46
|
+
*DefaultApi* | [**delete_team_invitation**](docs/DefaultApi.md#delete_team_invitation) | **DELETE** /teams/{slug}/invites | Delete team invitation
|
|
47
|
+
*DefaultApi* | [**deploy_app**](docs/DefaultApi.md#deploy_app) | **POST** /apps/{slug}/deploy | Deploy app
|
|
48
|
+
*DefaultApi* | [**describe_app**](docs/DefaultApi.md#describe_app) | **GET** /apps/{slug} | Describe app
|
|
49
49
|
*DefaultApi* | [**describe_app_version**](docs/DefaultApi.md#describe_app_version) | **GET** /apps/{name}/versions/{num} | Describe app version
|
|
50
50
|
*DefaultApi* | [**describe_device_login_session**](docs/DefaultApi.md#describe_device_login_session) | **GET** /login/device/{device_code} | Describe device login session
|
|
51
|
-
*DefaultApi* | [**describe_run**](docs/DefaultApi.md#describe_run) | **GET** /apps/{
|
|
51
|
+
*DefaultApi* | [**describe_run**](docs/DefaultApi.md#describe_run) | **GET** /apps/{slug}/runs/{seq} | Describe run
|
|
52
|
+
*DefaultApi* | [**describe_run_logs**](docs/DefaultApi.md#describe_run_logs) | **GET** /apps/{slug}/runs/{seq}/logs | Describe run logs
|
|
52
53
|
*DefaultApi* | [**describe_secrets_key**](docs/DefaultApi.md#describe_secrets_key) | **GET** /secrets/key | Describe encryption key
|
|
53
54
|
*DefaultApi* | [**describe_session**](docs/DefaultApi.md#describe_session) | **GET** /session | Describe session
|
|
54
55
|
*DefaultApi* | [**export_secrets**](docs/DefaultApi.md#export_secrets) | **GET** /secrets/export | Export secrets
|
|
55
56
|
*DefaultApi* | [**generate_app_statistics**](docs/DefaultApi.md#generate_app_statistics) | **GET** /stats/apps | Generate app statistics
|
|
56
57
|
*DefaultApi* | [**generate_run_statistics**](docs/DefaultApi.md#generate_run_statistics) | **GET** /stats/runs | Generate run statistics
|
|
57
|
-
*DefaultApi* | [**
|
|
58
|
-
*DefaultApi* | [**
|
|
59
|
-
*DefaultApi* | [**
|
|
60
|
-
*DefaultApi* | [**
|
|
61
|
-
*DefaultApi* | [**list_app_environments**](docs/DefaultApi.md#list_app_environments) | **GET** /apps/{name}/environments | List app environments
|
|
58
|
+
*DefaultApi* | [**invite_team_member**](docs/DefaultApi.md#invite_team_member) | **POST** /teams/{slug}/invites | Invite team member
|
|
59
|
+
*DefaultApi* | [**leave_team**](docs/DefaultApi.md#leave_team) | **POST** /teams/{slug}/leave | Leave team
|
|
60
|
+
*DefaultApi* | [**list_api_keys**](docs/DefaultApi.md#list_api_keys) | **GET** /api-keys | List API keys
|
|
61
|
+
*DefaultApi* | [**list_app_environments**](docs/DefaultApi.md#list_app_environments) | **GET** /apps/{slug}/environments | List app environments
|
|
62
62
|
*DefaultApi* | [**list_app_versions**](docs/DefaultApi.md#list_app_versions) | **GET** /apps/{name}/versions | List app versions
|
|
63
63
|
*DefaultApi* | [**list_apps**](docs/DefaultApi.md#list_apps) | **GET** /apps | List apps
|
|
64
64
|
*DefaultApi* | [**list_catalogs**](docs/DefaultApi.md#list_catalogs) | **GET** /catalogs | List catalogs
|
|
65
|
-
*DefaultApi* | [**list_my_team_invitations**](docs/DefaultApi.md#list_my_team_invitations) | **GET** /team-invites | List
|
|
66
|
-
*DefaultApi* | [**list_runs**](docs/DefaultApi.md#list_runs) | **GET** /apps/{
|
|
65
|
+
*DefaultApi* | [**list_my_team_invitations**](docs/DefaultApi.md#list_my_team_invitations) | **GET** /team-invites | List my team invitations
|
|
66
|
+
*DefaultApi* | [**list_runs**](docs/DefaultApi.md#list_runs) | **GET** /apps/{slug}/runs | List runs
|
|
67
67
|
*DefaultApi* | [**list_secret_environments**](docs/DefaultApi.md#list_secret_environments) | **GET** /secrets/environments | List secret environments
|
|
68
68
|
*DefaultApi* | [**list_secrets**](docs/DefaultApi.md#list_secrets) | **GET** /secrets | List secrets
|
|
69
|
-
*DefaultApi* | [**list_team_invitations**](docs/DefaultApi.md#list_team_invitations) | **GET** /teams/{slug}/invites | List
|
|
70
|
-
*DefaultApi* | [**list_team_members**](docs/DefaultApi.md#list_team_members) | **GET** /teams/{slug}/members | List
|
|
71
|
-
*DefaultApi* | [**list_teams**](docs/DefaultApi.md#list_teams) | **GET** /teams | List
|
|
69
|
+
*DefaultApi* | [**list_team_invitations**](docs/DefaultApi.md#list_team_invitations) | **GET** /teams/{slug}/invites | List team invitations
|
|
70
|
+
*DefaultApi* | [**list_team_members**](docs/DefaultApi.md#list_team_members) | **GET** /teams/{slug}/members | List team members
|
|
71
|
+
*DefaultApi* | [**list_teams**](docs/DefaultApi.md#list_teams) | **GET** /teams | List teams
|
|
72
72
|
*DefaultApi* | [**refresh_session**](docs/DefaultApi.md#refresh_session) | **POST** /session/refresh | Refresh session
|
|
73
|
-
*DefaultApi* | [**remove_team_member**](docs/DefaultApi.md#remove_team_member) | **DELETE** /teams/{slug}/members | Remove
|
|
74
|
-
*DefaultApi* | [**resend_team_invitation**](docs/DefaultApi.md#resend_team_invitation) | **POST** /teams/{slug}/invites/resend | Resend
|
|
75
|
-
*DefaultApi* | [**run_app**](docs/DefaultApi.md#run_app) | **POST** /apps/{
|
|
76
|
-
*DefaultApi* | [**
|
|
73
|
+
*DefaultApi* | [**remove_team_member**](docs/DefaultApi.md#remove_team_member) | **DELETE** /teams/{slug}/members | Remove team member
|
|
74
|
+
*DefaultApi* | [**resend_team_invitation**](docs/DefaultApi.md#resend_team_invitation) | **POST** /teams/{slug}/invites/resend | Resend team invitation
|
|
75
|
+
*DefaultApi* | [**run_app**](docs/DefaultApi.md#run_app) | **POST** /apps/{slug}/runs | Run app
|
|
76
|
+
*DefaultApi* | [**stream_run_logs**](docs/DefaultApi.md#stream_run_logs) | **GET** /apps/{slug}/runs/{seq}/logs/stream | Stream run logs
|
|
77
77
|
*DefaultApi* | [**update_account_slug**](docs/DefaultApi.md#update_account_slug) | **PUT** /accounts/{slug} | Update account slug
|
|
78
|
+
*DefaultApi* | [**update_app**](docs/DefaultApi.md#update_app) | **PUT** /apps/{name} | Update app
|
|
78
79
|
*DefaultApi* | [**update_catalog**](docs/DefaultApi.md#update_catalog) | **PUT** /catalogs/{slug} | Update catalog
|
|
79
|
-
*DefaultApi* | [**update_my_team_invitation**](docs/DefaultApi.md#update_my_team_invitation) | **PUT** /team-invites | Update
|
|
80
|
+
*DefaultApi* | [**update_my_team_invitation**](docs/DefaultApi.md#update_my_team_invitation) | **PUT** /team-invites | Update my team invitation
|
|
80
81
|
*DefaultApi* | [**update_secret**](docs/DefaultApi.md#update_secret) | **PUT** /secrets/{name} | Update secret
|
|
81
|
-
*DefaultApi* | [**update_team**](docs/DefaultApi.md#update_team) | **PUT** /teams/{slug} | Update
|
|
82
|
+
*DefaultApi* | [**update_team**](docs/DefaultApi.md#update_team) | **PUT** /teams/{slug} | Update team
|
|
82
83
|
*DefaultApi* | [**update_user**](docs/DefaultApi.md#update_user) | **PUT** /user | Update user profile
|
|
83
84
|
|
|
84
85
|
|
|
@@ -125,6 +126,7 @@ Class | Method | HTTP request | Description
|
|
|
125
126
|
- [DescribeAppResponse](docs/DescribeAppResponse.md)
|
|
126
127
|
- [DescribeAppVersionResponse](docs/DescribeAppVersionResponse.md)
|
|
127
128
|
- [DescribeDeviceLoginSessionResponse](docs/DescribeDeviceLoginSessionResponse.md)
|
|
129
|
+
- [DescribeRunLogsResponse](docs/DescribeRunLogsResponse.md)
|
|
128
130
|
- [DescribeRunResponse](docs/DescribeRunResponse.md)
|
|
129
131
|
- [DescribeSecretsKeyResponse](docs/DescribeSecretsKeyResponse.md)
|
|
130
132
|
- [DescribeSessionResponse](docs/DescribeSessionResponse.md)
|
|
@@ -136,8 +138,6 @@ Class | Method | HTTP request | Description
|
|
|
136
138
|
- [ExportedSecret](docs/ExportedSecret.md)
|
|
137
139
|
- [GenerateAppStatisticsResponse](docs/GenerateAppStatisticsResponse.md)
|
|
138
140
|
- [GenerateRunStatisticsResponse](docs/GenerateRunStatisticsResponse.md)
|
|
139
|
-
- [GetRunLogLine](docs/GetRunLogLine.md)
|
|
140
|
-
- [GetRunLogsOutputBody](docs/GetRunLogsOutputBody.md)
|
|
141
141
|
- [InviteTeamMemberParams](docs/InviteTeamMemberParams.md)
|
|
142
142
|
- [InviteTeamMemberResponse](docs/InviteTeamMemberResponse.md)
|
|
143
143
|
- [LeaveTeamResponse](docs/LeaveTeamResponse.md)
|
|
@@ -166,18 +166,21 @@ Class | Method | HTTP request | Description
|
|
|
166
166
|
- [Run](docs/Run.md)
|
|
167
167
|
- [RunAppParams](docs/RunAppParams.md)
|
|
168
168
|
- [RunAppResponse](docs/RunAppResponse.md)
|
|
169
|
+
- [RunLogLine](docs/RunLogLine.md)
|
|
169
170
|
- [RunResults](docs/RunResults.md)
|
|
170
171
|
- [RunStatistics](docs/RunStatistics.md)
|
|
171
172
|
- [Secret](docs/Secret.md)
|
|
172
173
|
- [SeriesPoint](docs/SeriesPoint.md)
|
|
173
174
|
- [Session](docs/Session.md)
|
|
174
175
|
- [StatisticsSettings](docs/StatisticsSettings.md)
|
|
175
|
-
- [
|
|
176
|
+
- [StreamRunLogs200ResponseInner](docs/StreamRunLogs200ResponseInner.md)
|
|
176
177
|
- [Team](docs/Team.md)
|
|
177
178
|
- [TeamInvitation](docs/TeamInvitation.md)
|
|
178
179
|
- [Token](docs/Token.md)
|
|
179
180
|
- [UpdateAccountSlugParams](docs/UpdateAccountSlugParams.md)
|
|
180
181
|
- [UpdateAccountSlugResponse](docs/UpdateAccountSlugResponse.md)
|
|
182
|
+
- [UpdateAppParams](docs/UpdateAppParams.md)
|
|
183
|
+
- [UpdateAppResponse](docs/UpdateAppResponse.md)
|
|
181
184
|
- [UpdateCatalogParams](docs/UpdateCatalogParams.md)
|
|
182
185
|
- [UpdateCatalogResponse](docs/UpdateCatalogResponse.md)
|
|
183
186
|
- [UpdateMyTeamInvitationParams](docs/UpdateMyTeamInvitationParams.md)
|