1 | type Bitbucket = { |
2 | username: string; |
3 | password: string; |
4 | }; |
5 | |
6 | * Update a repository |
7 | * Since this endpoint can be used to both update and to create a |
8 | repository, the request body depends on the intent. |
9 | */ |
10 | export async function main( |
11 | auth: Bitbucket, |
12 | repo_slug: string, |
13 | workspace: string, |
14 | body: { type: string; [k: string]: unknown } & { |
15 | links?: { |
16 | self?: { href?: string; name?: string }; |
17 | html?: { href?: string; name?: string }; |
18 | avatar?: { href?: string; name?: string }; |
19 | pullrequests?: { href?: string; name?: string }; |
20 | commits?: { href?: string; name?: string }; |
21 | forks?: { href?: string; name?: string }; |
22 | watchers?: { href?: string; name?: string }; |
23 | downloads?: { href?: string; name?: string }; |
24 | clone?: { href?: string; name?: string }[]; |
25 | hooks?: { href?: string; name?: string }; |
26 | }; |
27 | uuid?: string; |
28 | full_name?: string; |
29 | is_private?: boolean; |
30 | parent?: unknown; |
31 | scm?: "git"; |
32 | owner?: { type: string; [k: string]: unknown } & { |
33 | links?: { |
34 | avatar?: { href?: string; name?: string }; |
35 | [k: string]: unknown; |
36 | }; |
37 | created_on?: string; |
38 | display_name?: string; |
39 | username?: string; |
40 | uuid?: string; |
41 | [k: string]: unknown; |
42 | }; |
43 | name?: string; |
44 | description?: string; |
45 | created_on?: string; |
46 | updated_on?: string; |
47 | size?: number; |
48 | language?: string; |
49 | has_issues?: boolean; |
50 | has_wiki?: boolean; |
51 | fork_policy?: "allow_forks" | "no_public_forks" | "no_forks"; |
52 | project?: { type: string; [k: string]: unknown } & { |
53 | links?: { |
54 | html?: { href?: string; name?: string }; |
55 | avatar?: { href?: string; name?: string }; |
56 | }; |
57 | uuid?: string; |
58 | key?: string; |
59 | owner?: ({ type: string; [k: string]: unknown } & { |
60 | links?: { |
61 | avatar?: { href?: string; name?: string }; |
62 | [k: string]: unknown; |
63 | }; |
64 | created_on?: string; |
65 | display_name?: string; |
66 | username?: string; |
67 | uuid?: string; |
68 | [k: string]: unknown; |
69 | }) & { |
70 | links?: { |
71 | avatar?: { href?: string; name?: string }; |
72 | [k: string]: unknown; |
73 | } & { |
74 | self?: { href?: string; name?: string }; |
75 | html?: { href?: string; name?: string }; |
76 | members?: { href?: string; name?: string }; |
77 | projects?: { href?: string; name?: string }; |
78 | repositories?: { href?: string; name?: string }; |
79 | [k: string]: unknown; |
80 | }; |
81 | [k: string]: unknown; |
82 | }; |
83 | name?: string; |
84 | description?: string; |
85 | is_private?: boolean; |
86 | created_on?: string; |
87 | updated_on?: string; |
88 | has_publicly_visible_repos?: boolean; |
89 | [k: string]: unknown; |
90 | }; |
91 | mainbranch?: { |
92 | type: string; |
93 | links?: { |
94 | self?: { href?: string; name?: string }; |
95 | commits?: { href?: string; name?: string }; |
96 | html?: { href?: string; name?: string }; |
97 | }; |
98 | name?: string; |
99 | target?: ({ type: string; [k: string]: unknown } & { |
100 | hash?: string; |
101 | date?: string; |
102 | author?: { type: string; [k: string]: unknown } & { |
103 | raw?: string; |
104 | user?: { type: string; [k: string]: unknown } & { |
105 | links?: { |
106 | avatar?: { href?: string; name?: string }; |
107 | [k: string]: unknown; |
108 | }; |
109 | created_on?: string; |
110 | display_name?: string; |
111 | username?: string; |
112 | uuid?: string; |
113 | [k: string]: unknown; |
114 | }; |
115 | [k: string]: unknown; |
116 | }; |
117 | message?: string; |
118 | summary?: { |
119 | raw?: string; |
120 | markup?: "markdown" | "creole" | "plaintext"; |
121 | html?: string; |
122 | }; |
123 | parents?: unknown[]; |
124 | [k: string]: unknown; |
125 | }) & { |
126 | repository?: unknown; |
127 | participants?: ({ type: string; [k: string]: unknown } & { |
128 | user?: { type: string; [k: string]: unknown } & { |
129 | links?: { |
130 | avatar?: { href?: string; name?: string }; |
131 | [k: string]: unknown; |
132 | }; |
133 | created_on?: string; |
134 | display_name?: string; |
135 | username?: string; |
136 | uuid?: string; |
137 | [k: string]: unknown; |
138 | }; |
139 | role?: "PARTICIPANT" | "REVIEWER"; |
140 | approved?: boolean; |
141 | state?: "approved" | "changes_requested" | null; |
142 | participated_on?: string; |
143 | [k: string]: unknown; |
144 | })[]; |
145 | [k: string]: unknown; |
146 | }; |
147 | [k: string]: unknown; |
148 | } & { |
149 | merge_strategies?: ("merge_commit" | "squash" | "fast_forward")[]; |
150 | default_merge_strategy?: string; |
151 | [k: string]: unknown; |
152 | }; |
153 | [k: string]: unknown; |
154 | } |
155 | ) { |
156 | const url = new URL( |
157 | `https://api.bitbucket.org/2.0/repositories/${workspace}/${repo_slug}` |
158 | ); |
159 |
|
160 | const response = await fetch(url, { |
161 | method: "PUT", |
162 | headers: { |
163 | "Content-Type": "application/json", |
164 | Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`), |
165 | }, |
166 | body: JSON.stringify(body), |
167 | }); |
168 | if (!response.ok) { |
169 | const text = await response.text(); |
170 | throw new Error(`${response.status} ${text}`); |
171 | } |
172 | return await response.json(); |
173 | } |
174 |
|