Look up a project by owner and number, return the project node ID.
(owner: str, owner_type: str, number: int)
| 98 | |
| 99 | |
| 100 | def find_project(owner: str, owner_type: str, number: int) -> str: |
| 101 | """Look up a project by owner and number, return the project node ID.""" |
| 102 | if owner_type not in VALID_OWNER_TYPES: |
| 103 | raise SystemExit( |
| 104 | f"PROJECT_OWNER_TYPE must be 'organization' or 'user', got '{owner_type}'" |
| 105 | ) |
| 106 | |
| 107 | if owner_type == "organization": |
| 108 | query = """ |
| 109 | query($owner: String!, $number: Int!) { |
| 110 | organization(login: $owner) { |
| 111 | projectV2(number: $number) { |
| 112 | id |
| 113 | } |
| 114 | } |
| 115 | } |
| 116 | """ |
| 117 | data = graphql(query, {"owner": owner, "number": number}) |
| 118 | project = data["data"]["organization"]["projectV2"] |
| 119 | if not project: |
| 120 | raise SystemExit(f"Project #{number} not found for organization '{owner}'") |
| 121 | return project["id"] |
| 122 | else: |
| 123 | query = """ |
| 124 | query($owner: String!, $number: Int!) { |
| 125 | user(login: $owner) { |
| 126 | projectV2(number: $number) { |
| 127 | id |
| 128 | } |
| 129 | } |
| 130 | } |
| 131 | """ |
| 132 | data = graphql(query, {"owner": owner, "number": number}) |
| 133 | project = data["data"]["user"]["projectV2"] |
| 134 | if not project: |
| 135 | raise SystemExit(f"Project #{number} not found for user '{owner}'") |
| 136 | return project["id"] |
| 137 | |
| 138 | |
| 139 | def add_item_to_project(project_id: str, content_id: str) -> str: |