gitgrip 0.2.4 → 0.3.1
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.
- package/README.md +98 -1
- package/dist/commands/pr/create.d.ts.map +1 -1
- package/dist/commands/pr/create.js +29 -8
- package/dist/commands/pr/create.js.map +1 -1
- package/dist/commands/pr/merge.d.ts.map +1 -1
- package/dist/commands/pr/merge.js +40 -33
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/pr/status.d.ts.map +1 -1
- package/dist/commands/pr/status.js +15 -11
- package/dist/commands/pr/status.js.map +1 -1
- package/dist/commands/repo.d.ts +14 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +106 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/git.d.ts +4 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +28 -2
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/github.d.ts +28 -4
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +65 -126
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/linker.d.ts +19 -4
- package/dist/lib/linker.d.ts.map +1 -1
- package/dist/lib/linker.js +107 -16
- package/dist/lib/linker.js.map +1 -1
- package/dist/lib/manifest.d.ts +25 -1
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +73 -5
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/platform/azure-devops.d.ts +83 -0
- package/dist/lib/platform/azure-devops.d.ts.map +1 -0
- package/dist/lib/platform/azure-devops.js +378 -0
- package/dist/lib/platform/azure-devops.js.map +1 -0
- package/dist/lib/platform/github.d.ts +82 -0
- package/dist/lib/platform/github.d.ts.map +1 -0
- package/dist/lib/platform/github.js +285 -0
- package/dist/lib/platform/github.js.map +1 -0
- package/dist/lib/platform/gitlab.d.ts +82 -0
- package/dist/lib/platform/gitlab.d.ts.map +1 -0
- package/dist/lib/platform/gitlab.js +331 -0
- package/dist/lib/platform/gitlab.js.map +1 -0
- package/dist/lib/platform/index.d.ts +60 -0
- package/dist/lib/platform/index.d.ts.map +1 -0
- package/dist/lib/platform/index.js +132 -0
- package/dist/lib/platform/index.js.map +1 -0
- package/dist/lib/platform/types.d.ts +162 -0
- package/dist/lib/platform/types.d.ts.map +1 -0
- package/dist/lib/platform/types.js +5 -0
- package/dist/lib/platform/types.js.map +1 -0
- package/dist/types.d.ts +39 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAmD,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAmD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA0EhK;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAc/F;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA+H1G;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAc1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAcxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG,YAAY,CAalG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAatG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAE9E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CA0BxF;AASD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAShF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,QAAQ,CAoBjD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
package/dist/lib/manifest.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFile, writeFile, access } from 'fs/promises';
|
|
2
2
|
import { resolve, dirname, join, normalize } from 'path';
|
|
3
3
|
import YAML from 'yaml';
|
|
4
|
+
import { parseRepoUrl as platformParseRepoUrl, detectPlatform } from './platform/index.js';
|
|
4
5
|
// AOSP-style: manifest lives in .gitgrip/manifests/manifest.yaml
|
|
5
6
|
const GITGRIP_DIR = '.gitgrip';
|
|
6
7
|
const MANIFESTS_DIR = 'manifests';
|
|
@@ -233,6 +234,7 @@ export async function createManifest(manifestsDir, manifest) {
|
|
|
233
234
|
}
|
|
234
235
|
/**
|
|
235
236
|
* Parse GitHub owner/repo from a git URL
|
|
237
|
+
* @deprecated Use parseRepoUrl for multi-platform support
|
|
236
238
|
*/
|
|
237
239
|
export function parseGitHubUrl(url) {
|
|
238
240
|
// SSH format: git@github.com:owner/repo.git
|
|
@@ -247,17 +249,52 @@ export function parseGitHubUrl(url) {
|
|
|
247
249
|
}
|
|
248
250
|
throw new Error(`Unable to parse GitHub URL: ${url}`);
|
|
249
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Parse repository info from a git URL (supports GitHub, GitLab, Azure DevOps)
|
|
254
|
+
*/
|
|
255
|
+
export function parseRepoUrl(url) {
|
|
256
|
+
const parsed = platformParseRepoUrl(url);
|
|
257
|
+
if (!parsed) {
|
|
258
|
+
throw new Error(`Unable to parse git URL: ${url}. ` +
|
|
259
|
+
`Supported platforms: GitHub, GitLab, Azure DevOps`);
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
owner: parsed.owner,
|
|
263
|
+
repo: parsed.repo,
|
|
264
|
+
project: parsed.project,
|
|
265
|
+
platform: parsed.platform,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Detect platform type from URL or config
|
|
270
|
+
*/
|
|
271
|
+
export function getPlatformType(url, configPlatform) {
|
|
272
|
+
// Use explicit config if provided
|
|
273
|
+
if (configPlatform?.type) {
|
|
274
|
+
return configPlatform.type;
|
|
275
|
+
}
|
|
276
|
+
// Auto-detect from URL
|
|
277
|
+
const detected = detectPlatform(url);
|
|
278
|
+
if (!detected) {
|
|
279
|
+
// Default to github for backward compatibility
|
|
280
|
+
return 'github';
|
|
281
|
+
}
|
|
282
|
+
return detected;
|
|
283
|
+
}
|
|
250
284
|
/**
|
|
251
285
|
* Get full repo info with computed fields
|
|
252
286
|
*/
|
|
253
287
|
export function getRepoInfo(name, config, rootDir) {
|
|
254
|
-
const
|
|
288
|
+
const parsed = parseRepoUrl(config.url);
|
|
289
|
+
const platformType = getPlatformType(config.url, config.platform);
|
|
255
290
|
return {
|
|
256
291
|
...config,
|
|
257
292
|
name,
|
|
258
293
|
absolutePath: resolve(rootDir, config.path),
|
|
259
|
-
owner,
|
|
260
|
-
repo,
|
|
294
|
+
owner: parsed.owner,
|
|
295
|
+
repo: parsed.repo,
|
|
296
|
+
platformType,
|
|
297
|
+
project: parsed.project,
|
|
261
298
|
};
|
|
262
299
|
}
|
|
263
300
|
/**
|
|
@@ -276,7 +313,8 @@ export function getManifestRepoInfo(manifest, rootDir) {
|
|
|
276
313
|
}
|
|
277
314
|
const manifestsDir = getManifestsDir(rootDir);
|
|
278
315
|
try {
|
|
279
|
-
const parsed =
|
|
316
|
+
const parsed = parseRepoUrl(manifest.manifest.url);
|
|
317
|
+
const platformType = getPlatformType(manifest.manifest.url, manifest.manifest.platform);
|
|
280
318
|
return {
|
|
281
319
|
name: 'manifest',
|
|
282
320
|
url: manifest.manifest.url,
|
|
@@ -285,10 +323,12 @@ export function getManifestRepoInfo(manifest, rootDir) {
|
|
|
285
323
|
default_branch: manifest.manifest.default_branch ?? 'main',
|
|
286
324
|
owner: parsed.owner,
|
|
287
325
|
repo: parsed.repo,
|
|
326
|
+
platformType,
|
|
327
|
+
project: parsed.project,
|
|
288
328
|
};
|
|
289
329
|
}
|
|
290
330
|
catch {
|
|
291
|
-
// Invalid
|
|
331
|
+
// Invalid URL format
|
|
292
332
|
return null;
|
|
293
333
|
}
|
|
294
334
|
}
|
|
@@ -349,4 +389,32 @@ export function generateSampleManifest() {
|
|
|
349
389
|
},
|
|
350
390
|
};
|
|
351
391
|
}
|
|
392
|
+
/**
|
|
393
|
+
* Add a repository to the manifest file
|
|
394
|
+
* Preserves existing YAML comments and formatting
|
|
395
|
+
*/
|
|
396
|
+
export async function addRepoToManifest(manifestPath, name, config) {
|
|
397
|
+
const content = await readFile(manifestPath, 'utf-8');
|
|
398
|
+
// Use parseDocument to preserve comments and formatting
|
|
399
|
+
const doc = YAML.parseDocument(content);
|
|
400
|
+
// Get the repos node
|
|
401
|
+
const reposNode = doc.get('repos', true);
|
|
402
|
+
if (!reposNode || !(reposNode instanceof YAML.YAMLMap)) {
|
|
403
|
+
throw new Error('Invalid manifest: missing repos section');
|
|
404
|
+
}
|
|
405
|
+
// Check if repo already exists
|
|
406
|
+
if (reposNode.has(name)) {
|
|
407
|
+
throw new Error(`Repository '${name}' already exists in manifest`);
|
|
408
|
+
}
|
|
409
|
+
// Create the new repo entry as a YAMLMap to preserve structure
|
|
410
|
+
const newRepo = doc.createNode({
|
|
411
|
+
url: config.url,
|
|
412
|
+
path: config.path,
|
|
413
|
+
default_branch: config.default_branch,
|
|
414
|
+
});
|
|
415
|
+
// Add the new repo to the repos map
|
|
416
|
+
reposNode.set(name, newRepo);
|
|
417
|
+
// Write back preserving comments
|
|
418
|
+
await writeFile(manifestPath, doc.toString(), 'utf-8');
|
|
419
|
+
}
|
|
352
420
|
//# sourceMappingURL=manifest.js.map
|
package/dist/lib/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,iEAAiE;AACjE,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC;;GAEG;AACH,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAE,cAAc;IACzB,cAAc,EAAE,gBAAyB;CAC1C,CAAC;AAEF;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,oCAAoC;IACpC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAAuC,EACvC,IAA6B,EAC7B,QAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,QAAQ,oBAAoB,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,QAAQ,qBAAqB,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,QAAQ,gBAAgB,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,QAAQ,iBAAiB,MAAM,CAAC,IAAI,8BAA8B,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAuB,EAAE,UAAkB;IACjE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,yCAAyC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,0CAA0C,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,WAAW,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,aAAqB;IACjD,OAAO,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IACrE,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,OAAO,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3B,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAqB;IACtD,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAExD,8BAA8B;IAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,oBAAoB,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,qBAAqB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,8BAA8B,CAAC,CAAC;YACrE,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,8BAA8B,CAAC,CAAC;YACrE,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,oCAAoC;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC9C,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC9C,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,eAAe;QACf,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5E,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,mBAAmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvF,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAA+C,CAAC,CAAC;gBACtF,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,mBAAmB,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,OAAO;QACL,QAAQ,EAAE,MAAkB;QAC5B,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,YAAoB,EAAE,QAAkB;IAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;KACb,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAiC,EAAE,OAAe;IAC1F,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO;QACL,GAAG,MAAM;QACT,IAAI;QACJ,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;QAC3C,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,OAAe;IAChE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB,EAAE,OAAe;IACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAErD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG;YAC1B,IAAI,EAAE,GAAG,WAAW,YAAY;YAChC,YAAY,EAAE,YAAY;YAC1B,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,IAAI,MAAM;YAC1D,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,KAAgB;IAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,gCAAgC;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,GAAG,EAAE,uCAAuC;gBAC5C,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,MAAM;aACvB;YACD,OAAO,EAAE;gBACP,GAAG,EAAE,+CAA+C;gBACpD,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,MAAM;aACvB;SACF;QACD,QAAQ,EAAE;YACR,SAAS,EAAE,cAAc;YACzB,cAAc,EAAE,gBAAgB;SACjC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { HostingPlatform, PlatformType, PlatformConfig, ParsedRepoInfo, PullRequest, PRCreateResult, PRMergeOptions, PRReview, StatusCheckResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Azure DevOps platform adapter implementing the HostingPlatform interface
|
|
4
|
+
*/
|
|
5
|
+
export declare class AzureDevOpsPlatform implements HostingPlatform {
|
|
6
|
+
readonly type: PlatformType;
|
|
7
|
+
private token;
|
|
8
|
+
private config;
|
|
9
|
+
private baseUrl;
|
|
10
|
+
constructor(config?: PlatformConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Get Azure DevOps token from environment or az CLI
|
|
13
|
+
*/
|
|
14
|
+
getToken(): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Make authenticated API request to Azure DevOps
|
|
17
|
+
*/
|
|
18
|
+
private apiRequest;
|
|
19
|
+
/**
|
|
20
|
+
* Parse Azure DevOps context from owner string
|
|
21
|
+
* Format: "org/project" where owner is org and repo is separate
|
|
22
|
+
*/
|
|
23
|
+
private parseContext;
|
|
24
|
+
/**
|
|
25
|
+
* Create a pull request
|
|
26
|
+
*/
|
|
27
|
+
createPullRequest(owner: string, repo: string, head: string, base: string, title: string, body?: string, draft?: boolean): Promise<PRCreateResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Get pull request details
|
|
30
|
+
*/
|
|
31
|
+
getPullRequest(owner: string, repo: string, pullNumber: number): Promise<PullRequest>;
|
|
32
|
+
/**
|
|
33
|
+
* Update pull request description
|
|
34
|
+
*/
|
|
35
|
+
updatePullRequestBody(owner: string, repo: string, pullNumber: number, body: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Merge (complete) a pull request
|
|
38
|
+
*/
|
|
39
|
+
mergePullRequest(owner: string, repo: string, pullNumber: number, options?: PRMergeOptions): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Find PR by branch name
|
|
42
|
+
*/
|
|
43
|
+
findPRByBranch(owner: string, repo: string, branch: string): Promise<PRCreateResult | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if PR is approved
|
|
46
|
+
*/
|
|
47
|
+
isPullRequestApproved(owner: string, repo: string, pullNumber: number): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Get PR reviewers/votes
|
|
50
|
+
*/
|
|
51
|
+
getPullRequestReviews(owner: string, repo: string, pullNumber: number): Promise<PRReview[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Get build status for a commit/PR
|
|
54
|
+
*/
|
|
55
|
+
getStatusChecks(owner: string, repo: string, ref: string): Promise<StatusCheckResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Parse Azure DevOps URL to extract org/project/repo
|
|
58
|
+
*/
|
|
59
|
+
parseRepoUrl(url: string): ParsedRepoInfo | null;
|
|
60
|
+
/**
|
|
61
|
+
* Check if URL matches Azure DevOps
|
|
62
|
+
*/
|
|
63
|
+
matchesUrl(url: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Generate HTML comment for linked PR tracking
|
|
66
|
+
*/
|
|
67
|
+
generateLinkedPRComment(links: {
|
|
68
|
+
repoName: string;
|
|
69
|
+
number: number;
|
|
70
|
+
}[]): string;
|
|
71
|
+
/**
|
|
72
|
+
* Parse linked PRs from PR description
|
|
73
|
+
*/
|
|
74
|
+
parseLinkedPRComment(body: string): {
|
|
75
|
+
repoName: string;
|
|
76
|
+
number: number;
|
|
77
|
+
}[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Create a new Azure DevOps platform instance
|
|
81
|
+
*/
|
|
82
|
+
export declare function createAzureDevOpsPlatform(config?: PlatformConfig): AzureDevOpsPlatform;
|
|
83
|
+
//# sourceMappingURL=azure-devops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-devops.d.ts","sourceRoot":"","sources":["../../../src/lib/platform/azure-devops.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,QAAQ,EACR,iBAAiB,EAElB,MAAM,YAAY,CAAC;AA0BpB;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAkB;IAE7C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,CAAC,EAAE,cAAc;IAKnC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAmCjC;;OAEG;YACW,UAAU;IAoCxB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,SAAK,EACT,KAAK,UAAQ,GACZ,OAAO,CAAC,cAAc,CAAC;IAyB1B;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC;IA8CvB;;OAEG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IA+CnB;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAqBjC;;OAEG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAQnB;;OAEG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoCtB;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,iBAAiB,CAAC;IA+C7B;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAiDhD;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAchC;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,MAAM;IAK9E;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE;CAY3E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,mBAAmB,CAEtF"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure DevOps hosting platform adapter
|
|
3
|
+
*/
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
/**
|
|
6
|
+
* Azure DevOps platform adapter implementing the HostingPlatform interface
|
|
7
|
+
*/
|
|
8
|
+
export class AzureDevOpsPlatform {
|
|
9
|
+
type = 'azure-devops';
|
|
10
|
+
token = null;
|
|
11
|
+
config;
|
|
12
|
+
baseUrl;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = config ?? { type: 'azure-devops' };
|
|
15
|
+
this.baseUrl = this.config.baseUrl ?? 'https://dev.azure.com';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get Azure DevOps token from environment or az CLI
|
|
19
|
+
*/
|
|
20
|
+
async getToken() {
|
|
21
|
+
if (this.token) {
|
|
22
|
+
return this.token;
|
|
23
|
+
}
|
|
24
|
+
// Try environment variable first
|
|
25
|
+
if (process.env.AZURE_DEVOPS_TOKEN) {
|
|
26
|
+
this.token = process.env.AZURE_DEVOPS_TOKEN;
|
|
27
|
+
return this.token;
|
|
28
|
+
}
|
|
29
|
+
// Alternative env var name
|
|
30
|
+
if (process.env.AZURE_DEVOPS_EXT_PAT) {
|
|
31
|
+
this.token = process.env.AZURE_DEVOPS_EXT_PAT;
|
|
32
|
+
return this.token;
|
|
33
|
+
}
|
|
34
|
+
// Try az CLI to get PAT
|
|
35
|
+
try {
|
|
36
|
+
// Note: az devops configure --use-git-aliases doesn't provide token directly
|
|
37
|
+
// Users typically need to use a PAT stored in env var
|
|
38
|
+
const output = execSync('az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv 2>/dev/null', { encoding: 'utf-8' });
|
|
39
|
+
if (output.trim()) {
|
|
40
|
+
this.token = output.trim();
|
|
41
|
+
return this.token;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// az CLI not available or not authenticated
|
|
46
|
+
}
|
|
47
|
+
throw new Error('Azure DevOps token not found. Set AZURE_DEVOPS_TOKEN environment variable or use az login');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Make authenticated API request to Azure DevOps
|
|
51
|
+
*/
|
|
52
|
+
async apiRequest(method, org, project, endpoint, body, apiVersion = '7.0') {
|
|
53
|
+
const token = await this.getToken();
|
|
54
|
+
const url = `${this.baseUrl}/${org}/${project}/_apis${endpoint}?api-version=${apiVersion}`;
|
|
55
|
+
// Azure DevOps uses Basic auth with PAT (user can be empty)
|
|
56
|
+
const authHeader = Buffer.from(`:${token}`).toString('base64');
|
|
57
|
+
const options = {
|
|
58
|
+
method,
|
|
59
|
+
headers: {
|
|
60
|
+
'Authorization': `Basic ${authHeader}`,
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
if (body) {
|
|
65
|
+
options.body = JSON.stringify(body);
|
|
66
|
+
}
|
|
67
|
+
const response = await fetch(url, options);
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
const errorText = await response.text();
|
|
70
|
+
throw new Error(`Azure DevOps API error (${response.status}): ${errorText}`);
|
|
71
|
+
}
|
|
72
|
+
return response.json();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse Azure DevOps context from owner string
|
|
76
|
+
* Format: "org/project" where owner is org and repo is separate
|
|
77
|
+
*/
|
|
78
|
+
parseContext(owner, repo) {
|
|
79
|
+
// In Azure DevOps, the "owner" from our URL parsing is actually "org/project"
|
|
80
|
+
const parts = owner.split('/');
|
|
81
|
+
if (parts.length >= 2) {
|
|
82
|
+
return {
|
|
83
|
+
organization: parts[0],
|
|
84
|
+
project: parts.slice(1).join('/'),
|
|
85
|
+
repository: repo,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Fallback: owner is org, and we use repo as both project and repo
|
|
89
|
+
return {
|
|
90
|
+
organization: owner,
|
|
91
|
+
project: repo,
|
|
92
|
+
repository: repo,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a pull request
|
|
97
|
+
*/
|
|
98
|
+
async createPullRequest(owner, repo, head, base, title, body = '', draft = false) {
|
|
99
|
+
const ctx = this.parseContext(owner, repo);
|
|
100
|
+
const pr = await this.apiRequest('POST', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests`, {
|
|
101
|
+
sourceRefName: `refs/heads/${head}`,
|
|
102
|
+
targetRefName: `refs/heads/${base}`,
|
|
103
|
+
title,
|
|
104
|
+
description: body,
|
|
105
|
+
isDraft: draft,
|
|
106
|
+
});
|
|
107
|
+
const webUrl = `${this.baseUrl}/${ctx.organization}/${ctx.project}/_git/${ctx.repository}/pullrequest/${pr.pullRequestId}`;
|
|
108
|
+
return {
|
|
109
|
+
number: pr.pullRequestId,
|
|
110
|
+
url: webUrl,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get pull request details
|
|
115
|
+
*/
|
|
116
|
+
async getPullRequest(owner, repo, pullNumber) {
|
|
117
|
+
const ctx = this.parseContext(owner, repo);
|
|
118
|
+
const pr = await this.apiRequest('GET', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests/${pullNumber}`);
|
|
119
|
+
// Map Azure DevOps status to our unified state
|
|
120
|
+
let state = 'open';
|
|
121
|
+
let merged = false;
|
|
122
|
+
if (pr.status === 'completed') {
|
|
123
|
+
state = 'closed';
|
|
124
|
+
// Azure DevOps merges on completion (or could be closed without merge)
|
|
125
|
+
// Check merge status to determine
|
|
126
|
+
merged = pr.mergeStatus === 'succeeded';
|
|
127
|
+
}
|
|
128
|
+
else if (pr.status === 'abandoned') {
|
|
129
|
+
state = 'closed';
|
|
130
|
+
}
|
|
131
|
+
// Azure DevOps mergeability
|
|
132
|
+
const mergeable = pr.mergeStatus === 'succeeded' || pr.mergeStatus === 'queued';
|
|
133
|
+
const webUrl = `${this.baseUrl}/${ctx.organization}/${ctx.project}/_git/${ctx.repository}/pullrequest/${pr.pullRequestId}`;
|
|
134
|
+
return {
|
|
135
|
+
number: pr.pullRequestId,
|
|
136
|
+
url: webUrl,
|
|
137
|
+
title: pr.title,
|
|
138
|
+
body: pr.description ?? '',
|
|
139
|
+
state,
|
|
140
|
+
merged,
|
|
141
|
+
mergeable,
|
|
142
|
+
head: {
|
|
143
|
+
ref: pr.sourceRefName.replace('refs/heads/', ''),
|
|
144
|
+
sha: pr.lastMergeSourceCommit?.commitId ?? '',
|
|
145
|
+
},
|
|
146
|
+
base: {
|
|
147
|
+
ref: pr.targetRefName.replace('refs/heads/', ''),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Update pull request description
|
|
153
|
+
*/
|
|
154
|
+
async updatePullRequestBody(owner, repo, pullNumber, body) {
|
|
155
|
+
const ctx = this.parseContext(owner, repo);
|
|
156
|
+
await this.apiRequest('PATCH', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests/${pullNumber}`, { description: body });
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Merge (complete) a pull request
|
|
160
|
+
*/
|
|
161
|
+
async mergePullRequest(owner, repo, pullNumber, options = {}) {
|
|
162
|
+
const ctx = this.parseContext(owner, repo);
|
|
163
|
+
try {
|
|
164
|
+
// Get current PR to get the last merge source commit
|
|
165
|
+
const pr = await this.getPullRequest(owner, repo, pullNumber);
|
|
166
|
+
// Azure DevOps "complete" action
|
|
167
|
+
const completeOptions = {
|
|
168
|
+
status: 'completed',
|
|
169
|
+
lastMergeSourceCommit: { commitId: pr.head.sha },
|
|
170
|
+
completionOptions: {},
|
|
171
|
+
};
|
|
172
|
+
if (options.deleteBranch) {
|
|
173
|
+
completeOptions.completionOptions.deleteSourceBranch = true;
|
|
174
|
+
}
|
|
175
|
+
// Map merge method
|
|
176
|
+
if (options.method === 'squash') {
|
|
177
|
+
completeOptions.completionOptions.squashMerge = true;
|
|
178
|
+
}
|
|
179
|
+
else if (options.method === 'rebase') {
|
|
180
|
+
completeOptions.completionOptions.mergeStrategy = 'rebase';
|
|
181
|
+
}
|
|
182
|
+
await this.apiRequest('PATCH', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests/${pullNumber}`, completeOptions);
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Find PR by branch name
|
|
191
|
+
*/
|
|
192
|
+
async findPRByBranch(owner, repo, branch) {
|
|
193
|
+
const ctx = this.parseContext(owner, repo);
|
|
194
|
+
const response = await this.apiRequest('GET', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests?searchCriteria.sourceRefName=refs/heads/${encodeURIComponent(branch)}&searchCriteria.status=active`);
|
|
195
|
+
if (response.value && response.value.length > 0) {
|
|
196
|
+
const pr = response.value[0];
|
|
197
|
+
const webUrl = `${this.baseUrl}/${ctx.organization}/${ctx.project}/_git/${ctx.repository}/pullrequest/${pr.pullRequestId}`;
|
|
198
|
+
return {
|
|
199
|
+
number: pr.pullRequestId,
|
|
200
|
+
url: webUrl,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check if PR is approved
|
|
207
|
+
*/
|
|
208
|
+
async isPullRequestApproved(owner, repo, pullNumber) {
|
|
209
|
+
const reviews = await this.getPullRequestReviews(owner, repo, pullNumber);
|
|
210
|
+
// Azure DevOps: vote 10 = approved, 5 = approved with suggestions
|
|
211
|
+
const hasApproval = reviews.some((r) => r.state === 'APPROVED' || r.state === 'APPROVED_WITH_SUGGESTIONS');
|
|
212
|
+
const hasRejection = reviews.some((r) => r.state === 'REJECTED' || r.state === 'WAITING_FOR_AUTHOR');
|
|
213
|
+
return hasApproval && !hasRejection;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get PR reviewers/votes
|
|
217
|
+
*/
|
|
218
|
+
async getPullRequestReviews(owner, repo, pullNumber) {
|
|
219
|
+
const ctx = this.parseContext(owner, repo);
|
|
220
|
+
const pr = await this.apiRequest('GET', ctx.organization, ctx.project, `/git/repositories/${ctx.repository}/pullrequests/${pullNumber}`);
|
|
221
|
+
return (pr.reviewers ?? []).map((reviewer) => {
|
|
222
|
+
// Map Azure DevOps vote to state
|
|
223
|
+
let state;
|
|
224
|
+
switch (reviewer.vote) {
|
|
225
|
+
case 10:
|
|
226
|
+
state = 'APPROVED';
|
|
227
|
+
break;
|
|
228
|
+
case 5:
|
|
229
|
+
state = 'APPROVED_WITH_SUGGESTIONS';
|
|
230
|
+
break;
|
|
231
|
+
case -10:
|
|
232
|
+
state = 'REJECTED';
|
|
233
|
+
break;
|
|
234
|
+
case -5:
|
|
235
|
+
state = 'WAITING_FOR_AUTHOR';
|
|
236
|
+
break;
|
|
237
|
+
default:
|
|
238
|
+
state = 'PENDING';
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
state,
|
|
242
|
+
user: reviewer.displayName || reviewer.uniqueName,
|
|
243
|
+
};
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get build status for a commit/PR
|
|
248
|
+
*/
|
|
249
|
+
async getStatusChecks(owner, repo, ref) {
|
|
250
|
+
const ctx = this.parseContext(owner, repo);
|
|
251
|
+
try {
|
|
252
|
+
// Get builds for this commit
|
|
253
|
+
const response = await this.apiRequest('GET', ctx.organization, ctx.project, `/build/builds?repositoryId=${ctx.repository}&repositoryType=TfsGit&$top=5`, undefined, '7.0');
|
|
254
|
+
if (!response.value || response.value.length === 0) {
|
|
255
|
+
return { state: 'success', statuses: [] };
|
|
256
|
+
}
|
|
257
|
+
// Find builds for this ref/commit
|
|
258
|
+
const builds = response.value;
|
|
259
|
+
// Aggregate status
|
|
260
|
+
const hasFailure = builds.some((b) => b.result === 'failed' || b.result === 'canceled');
|
|
261
|
+
const hasInProgress = builds.some((b) => b.status !== 'completed');
|
|
262
|
+
let state;
|
|
263
|
+
if (hasFailure) {
|
|
264
|
+
state = 'failure';
|
|
265
|
+
}
|
|
266
|
+
else if (hasInProgress) {
|
|
267
|
+
state = 'pending';
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
state = 'success';
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
state,
|
|
274
|
+
statuses: builds.map((b) => ({
|
|
275
|
+
context: 'azure-pipeline',
|
|
276
|
+
state: b.result ?? b.status,
|
|
277
|
+
})),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// No builds or API error
|
|
282
|
+
return { state: 'success', statuses: [] };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Parse Azure DevOps URL to extract org/project/repo
|
|
287
|
+
*/
|
|
288
|
+
parseRepoUrl(url) {
|
|
289
|
+
// SSH format: git@ssh.dev.azure.com:v3/org/project/repo
|
|
290
|
+
const sshMatch = url.match(/git@ssh\.dev\.azure\.com:v3\/([^/]+)\/([^/]+)\/(.+?)(?:\.git)?$/);
|
|
291
|
+
if (sshMatch) {
|
|
292
|
+
return {
|
|
293
|
+
owner: `${sshMatch[1]}/${sshMatch[2]}`, // org/project
|
|
294
|
+
repo: sshMatch[3],
|
|
295
|
+
project: sshMatch[2],
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
// HTTPS format: https://dev.azure.com/org/project/_git/repo
|
|
299
|
+
const httpsMatch = url.match(/https?:\/\/dev\.azure\.com\/([^/]+)\/([^/]+)\/_git\/(.+?)(?:\.git)?$/);
|
|
300
|
+
if (httpsMatch) {
|
|
301
|
+
return {
|
|
302
|
+
owner: `${httpsMatch[1]}/${httpsMatch[2]}`, // org/project
|
|
303
|
+
repo: httpsMatch[3],
|
|
304
|
+
project: httpsMatch[2],
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
// Legacy visualstudio.com format: https://org.visualstudio.com/project/_git/repo
|
|
308
|
+
const legacyMatch = url.match(/https?:\/\/([^.]+)\.visualstudio\.com\/([^/]+)\/_git\/(.+?)(?:\.git)?$/);
|
|
309
|
+
if (legacyMatch) {
|
|
310
|
+
return {
|
|
311
|
+
owner: `${legacyMatch[1]}/${legacyMatch[2]}`, // org/project
|
|
312
|
+
repo: legacyMatch[3],
|
|
313
|
+
project: legacyMatch[2],
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
// Check custom base URL
|
|
317
|
+
if (this.config.baseUrl && this.config.baseUrl !== 'https://dev.azure.com') {
|
|
318
|
+
const host = new URL(this.config.baseUrl).host;
|
|
319
|
+
const escapedHost = host.replace(/\./g, '\\.');
|
|
320
|
+
const customRegex = new RegExp(`https?://${escapedHost}/([^/]+)/([^/]+)/_git/(.+?)(?:\\.git)?$`);
|
|
321
|
+
const customMatch = url.match(customRegex);
|
|
322
|
+
if (customMatch) {
|
|
323
|
+
return {
|
|
324
|
+
owner: `${customMatch[1]}/${customMatch[2]}`,
|
|
325
|
+
repo: customMatch[3],
|
|
326
|
+
project: customMatch[2],
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Check if URL matches Azure DevOps
|
|
334
|
+
*/
|
|
335
|
+
matchesUrl(url) {
|
|
336
|
+
if (url.includes('dev.azure.com'))
|
|
337
|
+
return true;
|
|
338
|
+
if (url.includes('visualstudio.com'))
|
|
339
|
+
return true;
|
|
340
|
+
if (url.includes('ssh.dev.azure.com'))
|
|
341
|
+
return true;
|
|
342
|
+
// Check against configured base URL (for Azure DevOps Server)
|
|
343
|
+
if (this.config.baseUrl && this.config.baseUrl !== 'https://dev.azure.com') {
|
|
344
|
+
const host = new URL(this.config.baseUrl).host;
|
|
345
|
+
if (url.includes(host))
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Generate HTML comment for linked PR tracking
|
|
352
|
+
*/
|
|
353
|
+
generateLinkedPRComment(links) {
|
|
354
|
+
const prLinks = links.map((pr) => `${pr.repoName}!${pr.number}`).join(',');
|
|
355
|
+
return `<!-- codi-repo:links:${prLinks} -->`;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Parse linked PRs from PR description
|
|
359
|
+
*/
|
|
360
|
+
parseLinkedPRComment(body) {
|
|
361
|
+
const match = body.match(/<!-- codi-repo:links:(.+?) -->/);
|
|
362
|
+
if (!match) {
|
|
363
|
+
return [];
|
|
364
|
+
}
|
|
365
|
+
const links = match[1].split(',');
|
|
366
|
+
return links.map((link) => {
|
|
367
|
+
const [repoName, numStr] = link.split(/[#!]/);
|
|
368
|
+
return { repoName, number: parseInt(numStr, 10) };
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Create a new Azure DevOps platform instance
|
|
374
|
+
*/
|
|
375
|
+
export function createAzureDevOpsPlatform(config) {
|
|
376
|
+
return new AzureDevOpsPlatform(config);
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=azure-devops.js.map
|