asana-api-cli 1.3.0__tar.gz → 1.4.0__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.
- {asana_api_cli-1.3.0/src/asana_api_cli.egg-info → asana_api_cli-1.4.0}/PKG-INFO +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/pyproject.toml +2 -1
- asana_api_cli-1.4.0/src/asana_api_cli/cli/__init__.py +96 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/access_requests.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/allocations.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/attachments.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/audit_log_api.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/batch_api.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/budgets.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/custom_field_settings.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/custom_fields.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/custom_types.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/events.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/exports.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/goal_relationships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/goals.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/jobs.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/memberships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/organization_exports.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/portfolio_memberships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/portfolios.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_briefs.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_memberships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_portfolio_settings.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_statuses.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_templates.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/projects.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/rates.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/reactions.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/roles.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/rules.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/sections.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/status_updates.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/stories.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/tags.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/task_templates.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/tasks.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/team_memberships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/teams.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/time_periods.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/time_tracking_categories.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/time_tracking_entries.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/timesheet_approval_statuses.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/typeahead.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/user_task_lists.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/users.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/webhooks.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/workspace_memberships.py +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/workspaces.py +2 -1
- asana_api_cli-1.4.0/src/asana_api_cli/click_ext.py +109 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/session.py +10 -8
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/version.py +1 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0/src/asana_api_cli.egg-info}/PKG-INFO +2 -1
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli.egg-info/SOURCES.txt +1 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/tests/test_codegen.py +21 -8
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/tests/test_formatter.py +6 -13
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/tests/test_session.py +2 -0
- asana_api_cli-1.3.0/src/asana_api_cli/cli/__init__.py +0 -140
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/LICENSE +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/README.md +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/setup.cfg +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/__init__.py +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/formatter.py +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli.egg-info/dependency_links.txt +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli.egg-info/entry_points.txt +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli.egg-info/requires.txt +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli.egg-info/top_level.txt +0 -0
- {asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/tests/test_version.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: asana-api-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Command-line wrapper around the official Asana Python SDK
|
|
5
5
|
Author-email: Masanao Izumo <asana@masanao.site>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/izumo-m/asana-api-cli
|
|
8
8
|
Project-URL: Repository, https://github.com/izumo-m/asana-api-cli
|
|
9
9
|
Project-URL: Issues, https://github.com/izumo-m/asana-api-cli/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/izumo-m/asana-api-cli/blob/main/CHANGELOG.md
|
|
10
11
|
Requires-Python: >=3.10
|
|
11
12
|
Description-Content-Type: text/markdown
|
|
12
13
|
License-File: LICENSE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "asana-api-cli"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.4.0"
|
|
4
4
|
description = "Command-line wrapper around the official Asana Python SDK"
|
|
5
5
|
authors = [{name = "Masanao Izumo", email = "asana@masanao.site"}]
|
|
6
6
|
readme = "README.md"
|
|
@@ -17,6 +17,7 @@ dependencies = [
|
|
|
17
17
|
Homepage = "https://github.com/izumo-m/asana-api-cli"
|
|
18
18
|
Repository = "https://github.com/izumo-m/asana-api-cli"
|
|
19
19
|
Issues = "https://github.com/izumo-m/asana-api-cli/issues"
|
|
20
|
+
Changelog = "https://github.com/izumo-m/asana-api-cli/blob/main/CHANGELOG.md"
|
|
20
21
|
|
|
21
22
|
[project.scripts]
|
|
22
23
|
asana-api = "asana_api_cli.cli:main"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# This file is auto-generated by tools/codegen.py — do not edit manually.
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import click
|
|
5
|
+
|
|
6
|
+
from asana_api_cli.click_ext import LazyGroup
|
|
7
|
+
from asana_api_cli.session import runtime
|
|
8
|
+
from asana_api_cli.version import version_string
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
LAZY_SUBCOMMANDS: dict[str, tuple[str, str]] = {
|
|
12
|
+
"access-requests": ("asana_api_cli.cli.access_requests:access_requests_group", "AccessRequests commands."),
|
|
13
|
+
"allocations": ("asana_api_cli.cli.allocations:allocations_group", "Allocations commands."),
|
|
14
|
+
"attachments": ("asana_api_cli.cli.attachments:attachments_group", "Attachments commands."),
|
|
15
|
+
"audit-log-api": ("asana_api_cli.cli.audit_log_api:audit_log_api_group", "AuditLogAPI commands."),
|
|
16
|
+
"batch-api": ("asana_api_cli.cli.batch_api:batch_api_group", "BatchAPI commands."),
|
|
17
|
+
"budgets": ("asana_api_cli.cli.budgets:budgets_group", "Budgets commands."),
|
|
18
|
+
"custom-field-settings": ("asana_api_cli.cli.custom_field_settings:custom_field_settings_group", "CustomFieldSettings commands."),
|
|
19
|
+
"custom-fields": ("asana_api_cli.cli.custom_fields:custom_fields_group", "CustomFields commands."),
|
|
20
|
+
"custom-types": ("asana_api_cli.cli.custom_types:custom_types_group", "CustomTypes commands."),
|
|
21
|
+
"events": ("asana_api_cli.cli.events:events_group", "Events commands."),
|
|
22
|
+
"exports": ("asana_api_cli.cli.exports:exports_group", "Exports commands."),
|
|
23
|
+
"goal-relationships": ("asana_api_cli.cli.goal_relationships:goal_relationships_group", "GoalRelationships commands."),
|
|
24
|
+
"goals": ("asana_api_cli.cli.goals:goals_group", "Goals commands."),
|
|
25
|
+
"jobs": ("asana_api_cli.cli.jobs:jobs_group", "Jobs commands."),
|
|
26
|
+
"memberships": ("asana_api_cli.cli.memberships:memberships_group", "Memberships commands."),
|
|
27
|
+
"organization-exports": ("asana_api_cli.cli.organization_exports:organization_exports_group", "OrganizationExports commands."),
|
|
28
|
+
"portfolio-memberships": ("asana_api_cli.cli.portfolio_memberships:portfolio_memberships_group", "PortfolioMemberships commands."),
|
|
29
|
+
"portfolios": ("asana_api_cli.cli.portfolios:portfolios_group", "Portfolios commands."),
|
|
30
|
+
"project-briefs": ("asana_api_cli.cli.project_briefs:project_briefs_group", "ProjectBriefs commands."),
|
|
31
|
+
"project-memberships": ("asana_api_cli.cli.project_memberships:project_memberships_group", "ProjectMemberships commands."),
|
|
32
|
+
"project-portfolio-settings": ("asana_api_cli.cli.project_portfolio_settings:project_portfolio_settings_group", "ProjectPortfolioSettings commands."),
|
|
33
|
+
"project-statuses": ("asana_api_cli.cli.project_statuses:project_statuses_group", "ProjectStatuses commands."),
|
|
34
|
+
"project-templates": ("asana_api_cli.cli.project_templates:project_templates_group", "ProjectTemplates commands."),
|
|
35
|
+
"projects": ("asana_api_cli.cli.projects:projects_group", "Projects commands."),
|
|
36
|
+
"rates": ("asana_api_cli.cli.rates:rates_group", "Rates commands."),
|
|
37
|
+
"reactions": ("asana_api_cli.cli.reactions:reactions_group", "Reactions commands."),
|
|
38
|
+
"roles": ("asana_api_cli.cli.roles:roles_group", "Roles commands."),
|
|
39
|
+
"rules": ("asana_api_cli.cli.rules:rules_group", "Rules commands."),
|
|
40
|
+
"sections": ("asana_api_cli.cli.sections:sections_group", "Sections commands."),
|
|
41
|
+
"status-updates": ("asana_api_cli.cli.status_updates:status_updates_group", "StatusUpdates commands."),
|
|
42
|
+
"stories": ("asana_api_cli.cli.stories:stories_group", "Stories commands."),
|
|
43
|
+
"tags": ("asana_api_cli.cli.tags:tags_group", "Tags commands."),
|
|
44
|
+
"task-templates": ("asana_api_cli.cli.task_templates:task_templates_group", "TaskTemplates commands."),
|
|
45
|
+
"tasks": ("asana_api_cli.cli.tasks:tasks_group", "Tasks commands."),
|
|
46
|
+
"team-memberships": ("asana_api_cli.cli.team_memberships:team_memberships_group", "TeamMemberships commands."),
|
|
47
|
+
"teams": ("asana_api_cli.cli.teams:teams_group", "Teams commands."),
|
|
48
|
+
"time-periods": ("asana_api_cli.cli.time_periods:time_periods_group", "TimePeriods commands."),
|
|
49
|
+
"time-tracking-categories": ("asana_api_cli.cli.time_tracking_categories:time_tracking_categories_group", "TimeTrackingCategories commands."),
|
|
50
|
+
"time-tracking-entries": ("asana_api_cli.cli.time_tracking_entries:time_tracking_entries_group", "TimeTrackingEntries commands."),
|
|
51
|
+
"timesheet-approval-statuses": ("asana_api_cli.cli.timesheet_approval_statuses:timesheet_approval_statuses_group", "TimesheetApprovalStatuses commands."),
|
|
52
|
+
"typeahead": ("asana_api_cli.cli.typeahead:typeahead_group", "Typeahead commands."),
|
|
53
|
+
"user-task-lists": ("asana_api_cli.cli.user_task_lists:user_task_lists_group", "UserTaskLists commands."),
|
|
54
|
+
"users": ("asana_api_cli.cli.users:users_group", "Users commands."),
|
|
55
|
+
"webhooks": ("asana_api_cli.cli.webhooks:webhooks_group", "Webhooks commands."),
|
|
56
|
+
"workspace-memberships": ("asana_api_cli.cli.workspace_memberships:workspace_memberships_group", "WorkspaceMemberships commands."),
|
|
57
|
+
"workspaces": ("asana_api_cli.cli.workspaces:workspaces_group", "Workspaces commands."),
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@click.group(cls=LazyGroup, lazy_subcommands=LAZY_SUBCOMMANDS)
|
|
62
|
+
@click.version_option(version_string(), prog_name="asana-api")
|
|
63
|
+
@click.option("--host", default=None, help="Override API base URL (default: https://app.asana.com/api/1.0)")
|
|
64
|
+
@click.option("--proxy", default=None, help="HTTP/HTTPS proxy URL")
|
|
65
|
+
@click.option("--no-verify-ssl", is_flag=True, default=False, help="Disable TLS certificate verification (insecure)")
|
|
66
|
+
@click.option("--ca-cert", "ca_cert", default=None, type=click.Path(exists=True, dir_okay=False), help="Path to a PEM bundle of trusted CA certificates")
|
|
67
|
+
@click.option("--page-limit", "page_limit", type=int, default=None, help="Default per-page size for paginated endpoints")
|
|
68
|
+
@click.option("--retries", type=int, default=None, help="Number of retries on 429/5xx responses (default: 5)")
|
|
69
|
+
@click.option("--timeout", type=float, default=None, help="Per-request timeout in seconds")
|
|
70
|
+
@click.option("--access-token", "access_token", default=None, help="Asana personal access token (default: $ASANA_ACCESS_TOKEN)")
|
|
71
|
+
@click.option("--temp-dir", "temp_dir", default=None, type=click.Path(file_okay=False), help="Directory for temporary downloads")
|
|
72
|
+
@click.option("--debug", is_flag=True, default=False, help="Print HTTP request/response to stderr for troubleshooting")
|
|
73
|
+
def main(
|
|
74
|
+
host: str | None,
|
|
75
|
+
proxy: str | None,
|
|
76
|
+
no_verify_ssl: bool,
|
|
77
|
+
ca_cert: str | None,
|
|
78
|
+
page_limit: int | None,
|
|
79
|
+
retries: int | None,
|
|
80
|
+
timeout: float | None,
|
|
81
|
+
access_token: str | None,
|
|
82
|
+
temp_dir: str | None,
|
|
83
|
+
debug: bool,
|
|
84
|
+
) -> None:
|
|
85
|
+
"""Asana API CLI (SDK-backed wrapper)."""
|
|
86
|
+
runtime.host = host
|
|
87
|
+
runtime.proxy = proxy
|
|
88
|
+
runtime.verify_ssl = not no_verify_ssl
|
|
89
|
+
runtime.ssl_ca_cert = ca_cert
|
|
90
|
+
runtime.page_limit = page_limit
|
|
91
|
+
runtime.retries = retries
|
|
92
|
+
runtime.timeout = timeout
|
|
93
|
+
if access_token:
|
|
94
|
+
runtime.access_token = access_token
|
|
95
|
+
runtime.temp_dir = temp_dir
|
|
96
|
+
runtime.debug = debug
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import AccessRequestsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("access-requests")
|
|
14
|
+
@click.group("access-requests", cls=GroupWithGlobalOptions)
|
|
14
15
|
def access_requests_group() -> None:
|
|
15
16
|
"""AccessRequests commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import AllocationsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("allocations")
|
|
14
|
+
@click.group("allocations", cls=GroupWithGlobalOptions)
|
|
14
15
|
def allocations_group() -> None:
|
|
15
16
|
"""Allocations commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import AttachmentsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("attachments")
|
|
14
|
+
@click.group("attachments", cls=GroupWithGlobalOptions)
|
|
14
15
|
def attachments_group() -> None:
|
|
15
16
|
"""Attachments commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import AuditLogAPIApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("audit-log-api")
|
|
14
|
+
@click.group("audit-log-api", cls=GroupWithGlobalOptions)
|
|
14
15
|
def audit_log_api_group() -> None:
|
|
15
16
|
"""AuditLogAPI commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import BatchAPIApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("batch-api")
|
|
14
|
+
@click.group("batch-api", cls=GroupWithGlobalOptions)
|
|
14
15
|
def batch_api_group() -> None:
|
|
15
16
|
"""BatchAPI commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import BudgetsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("budgets")
|
|
14
|
+
@click.group("budgets", cls=GroupWithGlobalOptions)
|
|
14
15
|
def budgets_group() -> None:
|
|
15
16
|
"""Budgets commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import CustomFieldSettingsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("custom-field-settings")
|
|
14
|
+
@click.group("custom-field-settings", cls=GroupWithGlobalOptions)
|
|
14
15
|
def custom_field_settings_group() -> None:
|
|
15
16
|
"""CustomFieldSettings commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import CustomFieldsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("custom-fields")
|
|
14
|
+
@click.group("custom-fields", cls=GroupWithGlobalOptions)
|
|
14
15
|
def custom_fields_group() -> None:
|
|
15
16
|
"""CustomFields commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import CustomTypesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("custom-types")
|
|
14
|
+
@click.group("custom-types", cls=GroupWithGlobalOptions)
|
|
14
15
|
def custom_types_group() -> None:
|
|
15
16
|
"""CustomTypes commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import EventsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("events")
|
|
14
|
+
@click.group("events", cls=GroupWithGlobalOptions)
|
|
14
15
|
def events_group() -> None:
|
|
15
16
|
"""Events commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ExportsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("exports")
|
|
14
|
+
@click.group("exports", cls=GroupWithGlobalOptions)
|
|
14
15
|
def exports_group() -> None:
|
|
15
16
|
"""Exports commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import GoalRelationshipsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("goal-relationships")
|
|
14
|
+
@click.group("goal-relationships", cls=GroupWithGlobalOptions)
|
|
14
15
|
def goal_relationships_group() -> None:
|
|
15
16
|
"""GoalRelationships commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import GoalsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("goals")
|
|
14
|
+
@click.group("goals", cls=GroupWithGlobalOptions)
|
|
14
15
|
def goals_group() -> None:
|
|
15
16
|
"""Goals commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import JobsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("jobs")
|
|
14
|
+
@click.group("jobs", cls=GroupWithGlobalOptions)
|
|
14
15
|
def jobs_group() -> None:
|
|
15
16
|
"""Jobs commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import MembershipsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("memberships")
|
|
14
|
+
@click.group("memberships", cls=GroupWithGlobalOptions)
|
|
14
15
|
def memberships_group() -> None:
|
|
15
16
|
"""Memberships commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import OrganizationExportsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("organization-exports")
|
|
14
|
+
@click.group("organization-exports", cls=GroupWithGlobalOptions)
|
|
14
15
|
def organization_exports_group() -> None:
|
|
15
16
|
"""OrganizationExports commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import PortfolioMembershipsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("portfolio-memberships")
|
|
14
|
+
@click.group("portfolio-memberships", cls=GroupWithGlobalOptions)
|
|
14
15
|
def portfolio_memberships_group() -> None:
|
|
15
16
|
"""PortfolioMemberships commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import PortfoliosApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("portfolios")
|
|
14
|
+
@click.group("portfolios", cls=GroupWithGlobalOptions)
|
|
14
15
|
def portfolios_group() -> None:
|
|
15
16
|
"""Portfolios commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectBriefsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("project-briefs")
|
|
14
|
+
@click.group("project-briefs", cls=GroupWithGlobalOptions)
|
|
14
15
|
def project_briefs_group() -> None:
|
|
15
16
|
"""ProjectBriefs commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectMembershipsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("project-memberships")
|
|
14
|
+
@click.group("project-memberships", cls=GroupWithGlobalOptions)
|
|
14
15
|
def project_memberships_group() -> None:
|
|
15
16
|
"""ProjectMemberships commands."""
|
|
16
17
|
|
{asana_api_cli-1.3.0 → asana_api_cli-1.4.0}/src/asana_api_cli/cli/project_portfolio_settings.py
RENAMED
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectPortfolioSettingsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("project-portfolio-settings")
|
|
14
|
+
@click.group("project-portfolio-settings", cls=GroupWithGlobalOptions)
|
|
14
15
|
def project_portfolio_settings_group() -> None:
|
|
15
16
|
"""ProjectPortfolioSettings commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectStatusesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("project-statuses")
|
|
14
|
+
@click.group("project-statuses", cls=GroupWithGlobalOptions)
|
|
14
15
|
def project_statuses_group() -> None:
|
|
15
16
|
"""ProjectStatuses commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectTemplatesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("project-templates")
|
|
14
|
+
@click.group("project-templates", cls=GroupWithGlobalOptions)
|
|
14
15
|
def project_templates_group() -> None:
|
|
15
16
|
"""ProjectTemplates commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ProjectsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("projects")
|
|
14
|
+
@click.group("projects", cls=GroupWithGlobalOptions)
|
|
14
15
|
def projects_group() -> None:
|
|
15
16
|
"""Projects commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import RatesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("rates")
|
|
14
|
+
@click.group("rates", cls=GroupWithGlobalOptions)
|
|
14
15
|
def rates_group() -> None:
|
|
15
16
|
"""Rates commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import ReactionsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("reactions")
|
|
14
|
+
@click.group("reactions", cls=GroupWithGlobalOptions)
|
|
14
15
|
def reactions_group() -> None:
|
|
15
16
|
"""Reactions commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import RolesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("roles")
|
|
14
|
+
@click.group("roles", cls=GroupWithGlobalOptions)
|
|
14
15
|
def roles_group() -> None:
|
|
15
16
|
"""Roles commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import RulesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("rules")
|
|
14
|
+
@click.group("rules", cls=GroupWithGlobalOptions)
|
|
14
15
|
def rules_group() -> None:
|
|
15
16
|
"""Rules commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import SectionsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("sections")
|
|
14
|
+
@click.group("sections", cls=GroupWithGlobalOptions)
|
|
14
15
|
def sections_group() -> None:
|
|
15
16
|
"""Sections commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import StatusUpdatesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("status-updates")
|
|
14
|
+
@click.group("status-updates", cls=GroupWithGlobalOptions)
|
|
14
15
|
def status_updates_group() -> None:
|
|
15
16
|
"""StatusUpdates commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import StoriesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("stories")
|
|
14
|
+
@click.group("stories", cls=GroupWithGlobalOptions)
|
|
14
15
|
def stories_group() -> None:
|
|
15
16
|
"""Stories commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import TagsApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("tags")
|
|
14
|
+
@click.group("tags", cls=GroupWithGlobalOptions)
|
|
14
15
|
def tags_group() -> None:
|
|
15
16
|
"""Tags commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import TaskTemplatesApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("task-templates")
|
|
14
|
+
@click.group("task-templates", cls=GroupWithGlobalOptions)
|
|
14
15
|
def task_templates_group() -> None:
|
|
15
16
|
"""TaskTemplates commands."""
|
|
16
17
|
|
|
@@ -6,11 +6,12 @@ from typing import Any
|
|
|
6
6
|
import click
|
|
7
7
|
from asana import TasksApi
|
|
8
8
|
|
|
9
|
+
from asana_api_cli.click_ext import GroupWithGlobalOptions
|
|
9
10
|
from asana_api_cli.formatter import formatted
|
|
10
11
|
from asana_api_cli.session import AsanaSession, resolve_body, resolve_workspace
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
@click.group("tasks")
|
|
14
|
+
@click.group("tasks", cls=GroupWithGlobalOptions)
|
|
14
15
|
def tasks_group() -> None:
|
|
15
16
|
"""Tasks commands."""
|
|
16
17
|
|