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