ya-git-jira 1.6.0 → 2.0.0

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.
Files changed (86) hide show
  1. package/.opencode/skills/architecture/SKILL.md +45 -0
  2. package/.opencode/skills/code-style/SKILL.md +76 -0
  3. package/.opencode/skills/git-confluence/SKILL.md +82 -0
  4. package/.opencode/skills/git-jira/SKILL.md +63 -0
  5. package/.opencode/skills/git-lab/SKILL.md +102 -0
  6. package/AGENTS.md +50 -0
  7. package/README.md +106 -106
  8. package/bin/git-api.ts +70 -0
  9. package/bin/git-confluence-page-search.ts +58 -0
  10. package/bin/git-confluence-page-show.ts +61 -0
  11. package/bin/git-confluence-page-update.ts +77 -0
  12. package/bin/git-confluence-page.ts +28 -0
  13. package/bin/git-confluence-space-list.ts +34 -0
  14. package/bin/git-confluence-space.ts +24 -0
  15. package/bin/git-confluence-whoami.ts +33 -0
  16. package/bin/git-confluence.ts +27 -0
  17. package/bin/git-jira-start.ts +1 -1
  18. package/bin/git-jira-whoami.ts +32 -0
  19. package/bin/git-jira.ts +2 -0
  20. package/bin/git-lab-project-mr-list.ts +57 -0
  21. package/bin/git-lab-project-mr.ts +24 -0
  22. package/bin/git-lab-project-pipeline-jobs.ts +46 -0
  23. package/bin/git-lab-project-pipeline-latest.ts +47 -0
  24. package/bin/git-lab-project-pipeline-log.ts +49 -0
  25. package/bin/git-lab-project-pipeline.ts +6 -0
  26. package/bin/git-lab-project.ts +5 -1
  27. package/bin/gitj-install-skills.ts +126 -0
  28. package/bin/gitj.ts +12 -0
  29. package/dist/bin/git-api.js +2156 -0
  30. package/dist/bin/git-bump.js +132 -121
  31. package/dist/bin/git-confluence-page-search.js +2079 -0
  32. package/dist/bin/git-confluence-page-show.js +2082 -0
  33. package/dist/bin/git-confluence-page-update.js +2093 -0
  34. package/dist/bin/git-confluence-page.js +2186 -0
  35. package/dist/bin/git-confluence-space-list.js +2061 -0
  36. package/dist/bin/git-confluence-space.js +2073 -0
  37. package/dist/bin/git-confluence-whoami.js +2060 -0
  38. package/dist/bin/git-confluence.js +2251 -0
  39. package/dist/bin/git-jira-issue-list.js +136 -125
  40. package/dist/bin/git-jira-issue-show.js +136 -125
  41. package/dist/bin/git-jira-issue.js +140 -129
  42. package/dist/bin/git-jira-start.js +138 -127
  43. package/dist/bin/git-jira-whoami.js +1972 -0
  44. package/dist/bin/git-jira.js +170 -139
  45. package/dist/bin/git-lab-group-list.js +321 -279
  46. package/dist/bin/git-lab-group.js +323 -281
  47. package/dist/bin/git-lab-merge-active.js +321 -279
  48. package/dist/bin/git-lab-merge-todo.js +321 -279
  49. package/dist/bin/git-lab-merge-train-list.js +289 -273
  50. package/dist/bin/git-lab-merge-train.js +291 -275
  51. package/dist/bin/git-lab-merge.js +330 -288
  52. package/dist/bin/git-lab-namespace-list.js +138 -127
  53. package/dist/bin/git-lab-namespace.js +140 -129
  54. package/dist/bin/git-lab-project-list.js +288 -272
  55. package/dist/bin/git-lab-project-mr-list.js +2740 -0
  56. package/dist/bin/git-lab-project-mr.js +2752 -0
  57. package/dist/bin/git-lab-project-pipeline-jobs.js +2734 -0
  58. package/dist/bin/git-lab-project-pipeline-latest.js +2736 -0
  59. package/dist/bin/git-lab-project-pipeline-list.js +323 -281
  60. package/dist/bin/git-lab-project-pipeline-log.js +2739 -0
  61. package/dist/bin/git-lab-project-pipeline.js +437 -292
  62. package/dist/bin/git-lab-project-whereami.js +292 -276
  63. package/dist/bin/git-lab-project.js +563 -288
  64. package/dist/bin/git-lab-whoami.js +142 -131
  65. package/dist/bin/git-lab.js +575 -338
  66. package/dist/bin/gitj-install-skills.js +1954 -0
  67. package/dist/bin/gitj.js +1385 -473
  68. package/dist/index.js +371 -187
  69. package/index.ts +1 -0
  70. package/lib/api.ts +177 -0
  71. package/lib/confluence/api.ts +132 -0
  72. package/lib/confluence/config.ts +25 -0
  73. package/lib/confluence/index.ts +3 -0
  74. package/lib/confluence/types.ts +59 -0
  75. package/lib/gitlab/index.ts +1 -0
  76. package/lib/gitlab/job.ts +31 -0
  77. package/lib/gitlab/merge-request.ts +20 -0
  78. package/lib/gitlab/pipeline.ts +28 -1
  79. package/lib/gitlab/project.ts +14 -5
  80. package/lib/help.ts +40 -0
  81. package/lib/jira.ts +2 -2
  82. package/package.json +18 -2
  83. package/tests/all-help.test.ts +6 -1
  84. package/tests/gitj.test.ts +1 -1
  85. package/tests/help-all.test.ts +29 -0
  86. package/bun.lockb +0 -0
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
3
  var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
4
  var __getProtoOf = Object.getPrototypeOf;
5
+ var __defProp = Object.defineProperty;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __toESM = (mod, isNodeMode, target) => {
@@ -17,11 +17,9 @@ var __toESM = (mod, isNodeMode, target) => {
17
17
  return to;
18
18
  };
19
19
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
20
- var __require = (id) => {
21
- return import.meta.require(id);
22
- };
20
+ var __require = import.meta.require;
23
21
 
24
- // bine_modules/commander/lib/suggestS
22
+ // node_modules/commander/lib/error.js
25
23
  var require_error = __commonJS((exports) => {
26
24
  class CommanderError extends Error {
27
25
  constructor(exitCode, code, message) {
@@ -45,12 +43,8 @@ var require_error = __commonJS((exports) => {
45
43
  exports.InvalidArgumentError = InvalidArgumentError;
46
44
  });
47
45
 
48
- // bine_modules/commander/lib/suggestSimi
46
+ // node_modules/commander/lib/argument.js
49
47
  var require_argument = __commonJS((exports) => {
50
- var humanReadableArgName = function(arg) {
51
- const nameOutput = arg.name() + (arg.variadic === true ? "..." : "");
52
- return arg.required ? "<" + nameOutput + ">" : "[" + nameOutput + "]";
53
- };
54
48
  var { InvalidArgumentError } = require_error();
55
49
 
56
50
  class Argument {
@@ -120,11 +114,15 @@ var require_argument = __commonJS((exports) => {
120
114
  return this;
121
115
  }
122
116
  }
117
+ function humanReadableArgName(arg) {
118
+ const nameOutput = arg.name() + (arg.variadic === true ? "..." : "");
119
+ return arg.required ? "<" + nameOutput + ">" : "[" + nameOutput + "]";
120
+ }
123
121
  exports.Argument = Argument;
124
122
  exports.humanReadableArgName = humanReadableArgName;
125
123
  });
126
124
 
127
- // bine_modules/commander/lib/suggest
125
+ // node_modules/commander/lib/help.js
128
126
  var require_help = __commonJS((exports) => {
129
127
  var { humanReadableArgName } = require_argument();
130
128
 
@@ -301,7 +299,8 @@ var require_help = __commonJS((exports) => {
301
299
  return term;
302
300
  }
303
301
  function formatList(textArray) {
304
- return textArray.join("\n").replace(/^/gm, " ".repeat(itemIndentWidth));
302
+ return textArray.join(`
303
+ `).replace(/^/gm, " ".repeat(itemIndentWidth));
305
304
  }
306
305
  let output = [`Usage: ${helper.commandUsage(cmd)}`, ""];
307
306
  const commandDescription = helper.commandDescription(cmd);
@@ -334,7 +333,8 @@ var require_help = __commonJS((exports) => {
334
333
  if (commandList.length > 0) {
335
334
  output = output.concat(["Commands:", formatList(commandList), ""]);
336
335
  }
337
- return output.join("\n");
336
+ return output.join(`
337
+ `);
338
338
  }
339
339
  padWidth(cmd, helper) {
340
340
  return Math.max(helper.longestOptionTermLength(cmd, helper), helper.longestGlobalOptionTermLength(cmd, helper), helper.longestSubcommandTermLength(cmd, helper), helper.longestArgumentTermLength(cmd, helper));
@@ -348,42 +348,29 @@ var require_help = __commonJS((exports) => {
348
348
  if (columnWidth < minColumnWidth)
349
349
  return str;
350
350
  const leadingStr = str.slice(0, indent);
351
- const columnText = str.slice(indent).replace("\r\n", "\n");
351
+ const columnText = str.slice(indent).replace(`\r
352
+ `, `
353
+ `);
352
354
  const indentString = " ".repeat(indent);
353
355
  const zeroWidthSpace = "\u200B";
354
356
  const breaks = `\\s${zeroWidthSpace}`;
355
- const regex = new RegExp(`\n|.{1,${columnWidth - 1}}([${breaks}]|\$)|[^${breaks}]+?([${breaks}]|\$)`, "g");
357
+ const regex = new RegExp(`
358
+ |.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`, "g");
356
359
  const lines = columnText.match(regex) || [];
357
360
  return leadingStr + lines.map((line, i) => {
358
- if (line === "\n")
361
+ if (line === `
362
+ `)
359
363
  return "";
360
364
  return (i > 0 ? indentString : "") + line.trimEnd();
361
- }).join("\n");
365
+ }).join(`
366
+ `);
362
367
  }
363
368
  }
364
369
  exports.Help = Help;
365
370
  });
366
371
 
367
- // bine_modules/commander/lib/suggestSi
372
+ // node_modules/commander/lib/option.js
368
373
  var require_option = __commonJS((exports) => {
369
- var camelcase = function(str) {
370
- return str.split("-").reduce((str2, word) => {
371
- return str2 + word[0].toUpperCase() + word.slice(1);
372
- });
373
- };
374
- var splitOptionFlags = function(flags) {
375
- let shortFlag;
376
- let longFlag;
377
- const flagParts = flags.split(/[ |,]+/);
378
- if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))
379
- shortFlag = flagParts.shift();
380
- longFlag = flagParts.shift();
381
- if (!shortFlag && /^-[^-]$/.test(longFlag)) {
382
- shortFlag = longFlag;
383
- longFlag = undefined;
384
- }
385
- return { shortFlag, longFlag };
386
- };
387
374
  var { InvalidArgumentError } = require_error();
388
375
 
389
376
  class Option {
@@ -511,14 +498,33 @@ var require_option = __commonJS((exports) => {
511
498
  return option.negate === (negativeValue === value);
512
499
  }
513
500
  }
501
+ function camelcase(str) {
502
+ return str.split("-").reduce((str2, word) => {
503
+ return str2 + word[0].toUpperCase() + word.slice(1);
504
+ });
505
+ }
506
+ function splitOptionFlags(flags) {
507
+ let shortFlag;
508
+ let longFlag;
509
+ const flagParts = flags.split(/[ |,]+/);
510
+ if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))
511
+ shortFlag = flagParts.shift();
512
+ longFlag = flagParts.shift();
513
+ if (!shortFlag && /^-[^-]$/.test(longFlag)) {
514
+ shortFlag = longFlag;
515
+ longFlag = undefined;
516
+ }
517
+ return { shortFlag, longFlag };
518
+ }
514
519
  exports.Option = Option;
515
520
  exports.splitOptionFlags = splitOptionFlags;
516
521
  exports.DualOptions = DualOptions;
517
522
  });
518
523
 
519
- // bine_modules/commander/lib/suggestSimilar.js
524
+ // node_modules/commander/lib/suggestSimilar.js
520
525
  var require_suggestSimilar = __commonJS((exports) => {
521
- var editDistance = function(a, b) {
526
+ var maxDistance = 3;
527
+ function editDistance(a, b) {
522
528
  if (Math.abs(a.length - b.length) > maxDistance)
523
529
  return Math.max(a.length, b.length);
524
530
  const d = [];
@@ -543,8 +549,8 @@ var require_suggestSimilar = __commonJS((exports) => {
543
549
  }
544
550
  }
545
551
  return d[a.length][b.length];
546
- };
547
- var suggestSimilar = function(word, candidates) {
552
+ }
553
+ function suggestSimilar(word, candidates) {
548
554
  if (!candidates || candidates.length === 0)
549
555
  return "";
550
556
  candidates = Array.from(new Set(candidates));
@@ -576,67 +582,25 @@ var require_suggestSimilar = __commonJS((exports) => {
576
582
  similar = similar.map((candidate) => `--${candidate}`);
577
583
  }
578
584
  if (similar.length > 1) {
579
- return `\n(Did you mean one of ${similar.join(", ")}?)`;
585
+ return `
586
+ (Did you mean one of ${similar.join(", ")}?)`;
580
587
  }
581
588
  if (similar.length === 1) {
582
- return `\n(Did you mean ${similar[0]}?)`;
589
+ return `
590
+ (Did you mean ${similar[0]}?)`;
583
591
  }
584
592
  return "";
585
- };
586
- var maxDistance = 3;
593
+ }
587
594
  exports.suggestSimilar = suggestSimilar;
588
595
  });
589
596
 
590
- // bine_modules/commander/lib/suggestSim
597
+ // node_modules/commander/lib/command.js
591
598
  var require_command = __commonJS((exports) => {
592
- var outputHelpIfRequested = function(cmd, args) {
593
- const helpOption = cmd._hasHelpOption && args.find((arg) => arg === cmd._helpLongFlag || arg === cmd._helpShortFlag);
594
- if (helpOption) {
595
- cmd.outputHelp();
596
- cmd._exit(0, "commander.helpDisplayed", "(outputHelp)");
597
- }
598
- };
599
- var incrementNodeInspectorPort = function(args) {
600
- return args.map((arg) => {
601
- if (!arg.startsWith("--inspect")) {
602
- return arg;
603
- }
604
- let debugOption;
605
- let debugHost = "127.0.0.1";
606
- let debugPort = "9229";
607
- let match;
608
- if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {
609
- debugOption = match[1];
610
- } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) {
611
- debugOption = match[1];
612
- if (/^\d+$/.test(match[3])) {
613
- debugPort = match[3];
614
- } else {
615
- debugHost = match[3];
616
- }
617
- } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) {
618
- debugOption = match[1];
619
- debugHost = match[3];
620
- debugPort = match[4];
621
- }
622
- if (debugOption && debugPort !== "0") {
623
- return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;
624
- }
625
- return arg;
626
- });
627
- };
628
- var getCommandAndParents = function(startCommand) {
629
- const result = [];
630
- for (let command = startCommand;command; command = command.parent) {
631
- result.push(command);
632
- }
633
- return result;
634
- };
635
- var EventEmitter = import.meta.require("events").EventEmitter;
636
- var childProcess = import.meta.require("child_process");
637
- var path = import.meta.require("path");
638
- var fs = import.meta.require("fs");
639
- var process2 = import.meta.require("process");
599
+ var EventEmitter = __require("events").EventEmitter;
600
+ var childProcess = __require("child_process");
601
+ var path = __require("path");
602
+ var fs = __require("fs");
603
+ var process2 = __require("process");
640
604
  var { Argument, humanReadableArgName } = require_argument();
641
605
  var { CommanderError } = require_error();
642
606
  var { Help } = require_help();
@@ -853,8 +817,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
853
817
  this._exitCallback = (err) => {
854
818
  if (err.code !== "commander.executeSubCommandAsync") {
855
819
  throw err;
856
- } else {
857
- }
820
+ } else {}
858
821
  };
859
822
  }
860
823
  return this;
@@ -1491,11 +1454,14 @@ Expecting one of '${allowedValues.join("', '")}'`);
1491
1454
  return getCommandAndParents(this).reduce((combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()), {});
1492
1455
  }
1493
1456
  error(message, errorOptions) {
1494
- this._outputConfiguration.outputError(`${message}\n`, this._outputConfiguration.writeErr);
1457
+ this._outputConfiguration.outputError(`${message}
1458
+ `, this._outputConfiguration.writeErr);
1495
1459
  if (typeof this._showHelpAfterError === "string") {
1496
- this._outputConfiguration.writeErr(`${this._showHelpAfterError}\n`);
1460
+ this._outputConfiguration.writeErr(`${this._showHelpAfterError}
1461
+ `);
1497
1462
  } else if (this._showHelpAfterError) {
1498
- this._outputConfiguration.writeErr("\n");
1463
+ this._outputConfiguration.writeErr(`
1464
+ `);
1499
1465
  this.outputHelp({ error: true });
1500
1466
  }
1501
1467
  const config = errorOptions || {};
@@ -1505,7 +1471,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1505
1471
  }
1506
1472
  _parseOptionsEnv() {
1507
1473
  this.options.forEach((option) => {
1508
- if (option.envVar && (option.envVar in process2.env)) {
1474
+ if (option.envVar && option.envVar in process2.env) {
1509
1475
  const optionKey = option.attributeName();
1510
1476
  if (this.getOptionValue(optionKey) === undefined || ["default", "config", "env"].includes(this.getOptionValueSource(optionKey))) {
1511
1477
  if (option.required || option.optional) {
@@ -1614,7 +1580,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
1614
1580
  this._versionOptionName = versionOption.attributeName();
1615
1581
  this.options.push(versionOption);
1616
1582
  this.on("option:" + versionOption.name(), () => {
1617
- this._outputConfiguration.writeOut(`${str}\n`);
1583
+ this._outputConfiguration.writeOut(`${str}
1584
+ `);
1618
1585
  this._exit(0, "commander.version", str);
1619
1586
  });
1620
1587
  return this;
@@ -1642,7 +1609,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1642
1609
  command = this.commands[this.commands.length - 1];
1643
1610
  }
1644
1611
  if (alias === command._name)
1645
- throw new Error("Command alias can\'t be the same as its name");
1612
+ throw new Error("Command alias can't be the same as its name");
1646
1613
  command._aliases.push(alias);
1647
1614
  return this;
1648
1615
  }
@@ -1756,16 +1723,60 @@ Expecting one of '${allowedValues.join("', '")}'`);
1756
1723
  helpStr = text;
1757
1724
  }
1758
1725
  if (helpStr) {
1759
- context.write(`${helpStr}\n`);
1726
+ context.write(`${helpStr}
1727
+ `);
1760
1728
  }
1761
1729
  });
1762
1730
  return this;
1763
1731
  }
1764
1732
  }
1733
+ function outputHelpIfRequested(cmd, args) {
1734
+ const helpOption = cmd._hasHelpOption && args.find((arg) => arg === cmd._helpLongFlag || arg === cmd._helpShortFlag);
1735
+ if (helpOption) {
1736
+ cmd.outputHelp();
1737
+ cmd._exit(0, "commander.helpDisplayed", "(outputHelp)");
1738
+ }
1739
+ }
1740
+ function incrementNodeInspectorPort(args) {
1741
+ return args.map((arg) => {
1742
+ if (!arg.startsWith("--inspect")) {
1743
+ return arg;
1744
+ }
1745
+ let debugOption;
1746
+ let debugHost = "127.0.0.1";
1747
+ let debugPort = "9229";
1748
+ let match;
1749
+ if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {
1750
+ debugOption = match[1];
1751
+ } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) {
1752
+ debugOption = match[1];
1753
+ if (/^\d+$/.test(match[3])) {
1754
+ debugPort = match[3];
1755
+ } else {
1756
+ debugHost = match[3];
1757
+ }
1758
+ } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) {
1759
+ debugOption = match[1];
1760
+ debugHost = match[3];
1761
+ debugPort = match[4];
1762
+ }
1763
+ if (debugOption && debugPort !== "0") {
1764
+ return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;
1765
+ }
1766
+ return arg;
1767
+ });
1768
+ }
1769
+ function getCommandAndParents(startCommand) {
1770
+ const result = [];
1771
+ for (let command = startCommand;command; command = command.parent) {
1772
+ result.push(command);
1773
+ }
1774
+ return result;
1775
+ }
1765
1776
  exports.Command = Command;
1766
1777
  });
1767
1778
 
1768
- // bine_modules/commander/lib/sugg
1779
+ // node_modules/commander/index.js
1769
1780
  var require_commander = __commonJS((exports, module) => {
1770
1781
  var { Argument } = require_argument();
1771
1782
  var { Command } = require_command();
@@ -1783,9 +1794,25 @@ var require_commander = __commonJS((exports, module) => {
1783
1794
  exports.Option = Option;
1784
1795
  });
1785
1796
 
1786
- // bine_modules/commander/l
1797
+ // node_modules/ms/index.js
1787
1798
  var require_ms = __commonJS((exports, module) => {
1788
- var parse = function(str) {
1799
+ var s = 1000;
1800
+ var m = s * 60;
1801
+ var h = m * 60;
1802
+ var d = h * 24;
1803
+ var w = d * 7;
1804
+ var y = d * 365.25;
1805
+ module.exports = function(val, options) {
1806
+ options = options || {};
1807
+ var type = typeof val;
1808
+ if (type === "string" && val.length > 0) {
1809
+ return parse(val);
1810
+ } else if (type === "number" && isFinite(val)) {
1811
+ return options.long ? fmtLong(val) : fmtShort(val);
1812
+ }
1813
+ throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
1814
+ };
1815
+ function parse(str) {
1789
1816
  str = String(str);
1790
1817
  if (str.length > 100) {
1791
1818
  return;
@@ -1838,8 +1865,8 @@ var require_ms = __commonJS((exports, module) => {
1838
1865
  default:
1839
1866
  return;
1840
1867
  }
1841
- };
1842
- var fmtShort = function(ms) {
1868
+ }
1869
+ function fmtShort(ms) {
1843
1870
  var msAbs = Math.abs(ms);
1844
1871
  if (msAbs >= d) {
1845
1872
  return Math.round(ms / d) + "d";
@@ -1854,8 +1881,8 @@ var require_ms = __commonJS((exports, module) => {
1854
1881
  return Math.round(ms / s) + "s";
1855
1882
  }
1856
1883
  return ms + "ms";
1857
- };
1858
- var fmtLong = function(ms) {
1884
+ }
1885
+ function fmtLong(ms) {
1859
1886
  var msAbs = Math.abs(ms);
1860
1887
  if (msAbs >= d) {
1861
1888
  return plural(ms, msAbs, d, "day");
@@ -1870,32 +1897,16 @@ var require_ms = __commonJS((exports, module) => {
1870
1897
  return plural(ms, msAbs, s, "second");
1871
1898
  }
1872
1899
  return ms + " ms";
1873
- };
1874
- var plural = function(ms, msAbs, n, name) {
1900
+ }
1901
+ function plural(ms, msAbs, n, name) {
1875
1902
  var isPlural = msAbs >= n * 1.5;
1876
1903
  return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
1877
- };
1878
- var s = 1000;
1879
- var m = s * 60;
1880
- var h = m * 60;
1881
- var d = h * 24;
1882
- var w = d * 7;
1883
- var y = d * 365.25;
1884
- module.exports = function(val, options) {
1885
- options = options || {};
1886
- var type = typeof val;
1887
- if (type === "string" && val.length > 0) {
1888
- return parse(val);
1889
- } else if (type === "number" && isFinite(val)) {
1890
- return options.long ? fmtLong(val) : fmtShort(val);
1891
- }
1892
- throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
1893
- };
1904
+ }
1894
1905
  });
1895
1906
 
1896
- // bine_modules/commander/lib/sugge
1907
+ // node_modules/debug/src/common.js
1897
1908
  var require_common = __commonJS((exports, module) => {
1898
- var setup = function(env) {
1909
+ function setup(env) {
1899
1910
  createDebug.debug = createDebug;
1900
1911
  createDebug.default = createDebug;
1901
1912
  createDebug.coerce = coerce;
@@ -2050,68 +2061,12 @@ var require_common = __commonJS((exports, module) => {
2050
2061
  }
2051
2062
  createDebug.enable(createDebug.load());
2052
2063
  return createDebug;
2053
- };
2064
+ }
2054
2065
  module.exports = setup;
2055
2066
  });
2056
2067
 
2057
- // bine_modules/commander/lib/sugges
2068
+ // node_modules/debug/src/browser.js
2058
2069
  var require_browser = __commonJS((exports, module) => {
2059
- var useColors = function() {
2060
- if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
2061
- return true;
2062
- }
2063
- if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
2064
- return false;
2065
- }
2066
- return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
2067
- };
2068
- var formatArgs = function(args) {
2069
- args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + exports.humanize(this.diff);
2070
- if (!this.useColors) {
2071
- return;
2072
- }
2073
- const c = "color: " + this.color;
2074
- args.splice(1, 0, c, "color: inherit");
2075
- let index = 0;
2076
- let lastC = 0;
2077
- args[0].replace(/%[a-zA-Z%]/g, (match) => {
2078
- if (match === "%%") {
2079
- return;
2080
- }
2081
- index++;
2082
- if (match === "%c") {
2083
- lastC = index;
2084
- }
2085
- });
2086
- args.splice(lastC, 0, c);
2087
- };
2088
- var save = function(namespaces) {
2089
- try {
2090
- if (namespaces) {
2091
- exports.storage.setItem("debug", namespaces);
2092
- } else {
2093
- exports.storage.removeItem("debug");
2094
- }
2095
- } catch (error) {
2096
- }
2097
- };
2098
- var load = function() {
2099
- let r;
2100
- try {
2101
- r = exports.storage.getItem("debug");
2102
- } catch (error) {
2103
- }
2104
- if (!r && typeof process !== "undefined" && ("env" in process)) {
2105
- r = process.env.DEBUG;
2106
- }
2107
- return r;
2108
- };
2109
- var localstorage = function() {
2110
- try {
2111
- return localStorage;
2112
- } catch (error) {
2113
- }
2114
- };
2115
2070
  exports.formatArgs = formatArgs;
2116
2071
  exports.save = save;
2117
2072
  exports.load = load;
@@ -2204,8 +2159,60 @@ var require_browser = __commonJS((exports, module) => {
2204
2159
  "#FFCC00",
2205
2160
  "#FFCC33"
2206
2161
  ];
2207
- exports.log = console.debug || console.log || (() => {
2208
- });
2162
+ function useColors() {
2163
+ if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
2164
+ return true;
2165
+ }
2166
+ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
2167
+ return false;
2168
+ }
2169
+ return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
2170
+ }
2171
+ function formatArgs(args) {
2172
+ args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
2173
+ if (!this.useColors) {
2174
+ return;
2175
+ }
2176
+ const c = "color: " + this.color;
2177
+ args.splice(1, 0, c, "color: inherit");
2178
+ let index = 0;
2179
+ let lastC = 0;
2180
+ args[0].replace(/%[a-zA-Z%]/g, (match) => {
2181
+ if (match === "%%") {
2182
+ return;
2183
+ }
2184
+ index++;
2185
+ if (match === "%c") {
2186
+ lastC = index;
2187
+ }
2188
+ });
2189
+ args.splice(lastC, 0, c);
2190
+ }
2191
+ exports.log = console.debug || console.log || (() => {});
2192
+ function save(namespaces) {
2193
+ try {
2194
+ if (namespaces) {
2195
+ exports.storage.setItem("debug", namespaces);
2196
+ } else {
2197
+ exports.storage.removeItem("debug");
2198
+ }
2199
+ } catch (error) {}
2200
+ }
2201
+ function load() {
2202
+ let r;
2203
+ try {
2204
+ r = exports.storage.getItem("debug");
2205
+ } catch (error) {}
2206
+ if (!r && typeof process !== "undefined" && "env" in process) {
2207
+ r = process.env.DEBUG;
2208
+ }
2209
+ return r;
2210
+ }
2211
+ function localstorage() {
2212
+ try {
2213
+ return localStorage;
2214
+ } catch (error) {}
2215
+ }
2209
2216
  module.exports = require_common()(exports);
2210
2217
  var { formatters } = module.exports;
2211
2218
  formatters.j = function(v) {
@@ -2217,62 +2224,20 @@ var require_browser = __commonJS((exports, module) => {
2217
2224
  };
2218
2225
  });
2219
2226
 
2220
- // bine_modules/commander/lib/sug
2227
+ // node_modules/debug/src/node.js
2221
2228
  var require_node = __commonJS((exports, module) => {
2222
- var useColors = function() {
2223
- return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);
2224
- };
2225
- var formatArgs = function(args) {
2226
- const { namespace: name, useColors: useColors2 } = this;
2227
- if (useColors2) {
2228
- const c = this.color;
2229
- const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
2230
- const prefix = ` ${colorCode};1m${name} \x1B[0m`;
2231
- args[0] = prefix + args[0].split("\n").join("\n" + prefix);
2232
- args.push(colorCode + "m+" + exports.humanize(this.diff) + "\x1B[0m");
2233
- } else {
2234
- args[0] = getDate() + name + " " + args[0];
2235
- }
2236
- };
2237
- var getDate = function() {
2238
- if (exports.inspectOpts.hideDate) {
2239
- return "";
2240
- }
2241
- return new Date().toISOString() + " ";
2242
- };
2243
- var log = function(...args) {
2244
- return process.stderr.write(util.format(...args) + "\n");
2245
- };
2246
- var save = function(namespaces) {
2247
- if (namespaces) {
2248
- process.env.DEBUG = namespaces;
2249
- } else {
2250
- delete process.env.DEBUG;
2251
- }
2252
- };
2253
- var load = function() {
2254
- return process.env.DEBUG;
2255
- };
2256
- var init = function(debug) {
2257
- debug.inspectOpts = {};
2258
- const keys = Object.keys(exports.inspectOpts);
2259
- for (let i = 0;i < keys.length; i++) {
2260
- debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
2261
- }
2262
- };
2263
- var tty = import.meta.require("tty");
2264
- var util = import.meta.require("util");
2229
+ var tty = __require("tty");
2230
+ var util = __require("util");
2265
2231
  exports.init = init;
2266
2232
  exports.log = log;
2267
2233
  exports.formatArgs = formatArgs;
2268
2234
  exports.save = save;
2269
2235
  exports.load = load;
2270
2236
  exports.useColors = useColors;
2271
- exports.destroy = util.deprecate(() => {
2272
- }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
2237
+ exports.destroy = util.deprecate(() => {}, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
2273
2238
  exports.colors = [6, 2, 3, 4, 5, 1];
2274
2239
  try {
2275
- const supportsColor = (()=>{ throw new Error(`Cannot require module "supports-color"`);})();
2240
+ const supportsColor = (()=>{throw new Error("Cannot require module "+"supports-color");})();
2276
2241
  if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
2277
2242
  exports.colors = [
2278
2243
  20,
@@ -2353,8 +2318,7 @@ var require_node = __commonJS((exports, module) => {
2353
2318
  221
2354
2319
  ];
2355
2320
  }
2356
- } catch (error) {
2357
- }
2321
+ } catch (error) {}
2358
2322
  exports.inspectOpts = Object.keys(process.env).filter((key) => {
2359
2323
  return /^debug_/i.test(key);
2360
2324
  }).reduce((obj, key) => {
@@ -2374,11 +2338,56 @@ var require_node = __commonJS((exports, module) => {
2374
2338
  obj[prop] = val;
2375
2339
  return obj;
2376
2340
  }, {});
2341
+ function useColors() {
2342
+ return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);
2343
+ }
2344
+ function formatArgs(args) {
2345
+ const { namespace: name, useColors: useColors2 } = this;
2346
+ if (useColors2) {
2347
+ const c = this.color;
2348
+ const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
2349
+ const prefix = ` ${colorCode};1m${name} \x1B[0m`;
2350
+ args[0] = prefix + args[0].split(`
2351
+ `).join(`
2352
+ ` + prefix);
2353
+ args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m");
2354
+ } else {
2355
+ args[0] = getDate() + name + " " + args[0];
2356
+ }
2357
+ }
2358
+ function getDate() {
2359
+ if (exports.inspectOpts.hideDate) {
2360
+ return "";
2361
+ }
2362
+ return new Date().toISOString() + " ";
2363
+ }
2364
+ function log(...args) {
2365
+ return process.stderr.write(util.format(...args) + `
2366
+ `);
2367
+ }
2368
+ function save(namespaces) {
2369
+ if (namespaces) {
2370
+ process.env.DEBUG = namespaces;
2371
+ } else {
2372
+ delete process.env.DEBUG;
2373
+ }
2374
+ }
2375
+ function load() {
2376
+ return process.env.DEBUG;
2377
+ }
2378
+ function init(debug) {
2379
+ debug.inspectOpts = {};
2380
+ const keys = Object.keys(exports.inspectOpts);
2381
+ for (let i = 0;i < keys.length; i++) {
2382
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
2383
+ }
2384
+ }
2377
2385
  module.exports = require_common()(exports);
2378
2386
  var { formatters } = module.exports;
2379
2387
  formatters.o = function(v) {
2380
2388
  this.inspectOpts.colors = this.useColors;
2381
- return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
2389
+ return util.inspect(v, this.inspectOpts).split(`
2390
+ `).map((str) => str.trim()).join(" ");
2382
2391
  };
2383
2392
  formatters.O = function(v) {
2384
2393
  this.inspectOpts.colors = this.useColors;
@@ -2386,7 +2395,7 @@ var require_node = __commonJS((exports, module) => {
2386
2395
  };
2387
2396
  });
2388
2397
 
2389
- // bine_modules/commander/lib/sugg
2398
+ // node_modules/debug/src/index.js
2390
2399
  var require_src = __commonJS((exports, module) => {
2391
2400
  if (typeof process === "undefined" || process.type === "renderer" || false || process.__nwjs) {
2392
2401
  module.exports = require_browser();
@@ -2395,8 +2404,8 @@ var require_src = __commonJS((exports, module) => {
2395
2404
  }
2396
2405
  });
2397
2406
 
2398
- // bine_modules/commander/lib/sug
2399
- var import_ = __toESM(require_commander(), 1);
2407
+ // node_modules/commander/esm.mjs
2408
+ var import__ = __toESM(require_commander(), 1);
2400
2409
  var {
2401
2410
  program,
2402
2411
  createCommand,
@@ -2409,9 +2418,9 @@ var {
2409
2418
  Argument,
2410
2419
  Option,
2411
2420
  Help
2412
- } = import_.default;
2421
+ } = import__.default;
2413
2422
 
2414
- // bine_modules/c
2423
+ // lib/package.ts
2415
2424
  import path from "path";
2416
2425
  import fs from "fs";
2417
2426
  function findPackageJson() {
@@ -2434,13 +2443,16 @@ async function getPackageJson() {
2434
2443
  const packageJsonText = fs.readFileSync(packagePath, "utf8");
2435
2444
  return JSON.parse(packageJsonText);
2436
2445
  }
2446
+ var packageJsonPromise = getPackageJson();
2437
2447
  async function getPackageVersion() {
2438
2448
  const packageJson = await packageJsonPromise;
2439
2449
  return packageJson.version;
2440
2450
  }
2441
- var packageJsonPromise = getPackageJson();
2442
2451
 
2443
- // bine_modules
2452
+ // lib/spawn.ts
2453
+ var defaultOptions = {
2454
+ expectQuiet: false
2455
+ };
2444
2456
  async function spawn(args, options = defaultOptions) {
2445
2457
  const proc = Bun.spawn(args, { stdout: "pipe", stderr: "pipe" });
2446
2458
  const stdout = new Response(proc.stdout);
@@ -2461,11 +2473,8 @@ async function doCommand(args, options = defaultOptions) {
2461
2473
  console.error(err);
2462
2474
  return out;
2463
2475
  }
2464
- var defaultOptions = {
2465
- expectQuiet: false
2466
- };
2467
2476
 
2468
- // bine_modul
2477
+ // lib/git.ts
2469
2478
  async function getConfig(key, options = defaultOptions) {
2470
2479
  return doCommand(["git", "config", "--get", key], options);
2471
2480
  }
@@ -2479,7 +2488,11 @@ async function getRemote() {
2479
2488
  return doCommand(["git", "ls-remote", "--get-url", "origin"]);
2480
2489
  }
2481
2490
 
2482
- // bine_modules/command
2491
+ // lib/gitlab/config.ts
2492
+ var gitEmailP = getConfig("user.email");
2493
+ var gitlabEmailP = getConfig("gitlab.user", { expectQuiet: true });
2494
+ var hostP = getConfig("gitlab.host");
2495
+ var tokenP = getConfig("gitlab.token");
2483
2496
  async function getGitlabConfig() {
2484
2497
  const host = await hostP || "gitlab.com";
2485
2498
  const user = await gitEmailP || await gitlabEmailP;
@@ -2490,13 +2503,9 @@ async function getGitlabConfig() {
2490
2503
  throw new Error("gitlab.token not in git config");
2491
2504
  return { host, user, token };
2492
2505
  }
2493
- var gitEmailP = getConfig("user.email");
2494
- var gitlabEmailP = getConfig("gitlab.user", { expectQuiet: true });
2495
- var hostP = getConfig("gitlab.host");
2496
- var tokenP = getConfig("gitlab.token");
2497
2506
 
2498
- // bine_modules/comm
2499
- var getNextLink = function(link) {
2507
+ // lib/gitlab/api.ts
2508
+ function getNextLink(link) {
2500
2509
  if (!link) {
2501
2510
  return;
2502
2511
  }
@@ -2504,7 +2513,7 @@ var getNextLink = function(link) {
2504
2513
  const match = link.match(regex);
2505
2514
  const next = match ? match[1] : undefined;
2506
2515
  return next;
2507
- };
2516
+ }
2508
2517
  async function gitlabApi(endpoint) {
2509
2518
  if (endpoint.startsWith("/")) {
2510
2519
  console.warn(`gitlabApi: endpoint ${endpoint} starts with /, removing it`);
@@ -2537,18 +2546,16 @@ async function gitlabApi(endpoint) {
2537
2546
  }
2538
2547
  return result;
2539
2548
  }
2540
- // bine_modules/comman
2549
+ // lib/gitlab/group.ts
2541
2550
  async function getGroups() {
2542
2551
  return await gitlabApi(`groups`);
2543
2552
  }
2544
- // bine_modules/commande
2545
- import path2 from "path";
2546
-
2547
- // bine_modules/comma
2553
+ // lib/gitlab/dlog.ts
2548
2554
  var import_debug = __toESM(require_src(), 1);
2549
2555
  var dlog = import_debug.default("gitlab");
2550
2556
 
2551
- // bine_modules/commande
2557
+ // lib/gitlab/project.ts
2558
+ import path2 from "path";
2552
2559
  async function getProjects(match) {
2553
2560
  let search = "";
2554
2561
  if (match) {
@@ -2580,7 +2587,7 @@ async function findProject(ssh_url) {
2580
2587
  });
2581
2588
  return project;
2582
2589
  }
2583
- async function projectScopedGet(endpoint) {
2590
+ async function projectScopedRequest(endpoint) {
2584
2591
  if (endpoint.startsWith("/")) {
2585
2592
  console.warn(`gitlabApi: endpoint ${endpoint} starts with /, removing it`);
2586
2593
  endpoint = endpoint.slice(1);
@@ -2593,26 +2600,46 @@ async function projectScopedGet(endpoint) {
2593
2600
  throw new Error(`Could not find project for remote ${remote}`);
2594
2601
  }
2595
2602
  const base = `https://${host}/api/v4/projects/${project.id}`;
2596
- const uri = `${base}/${endpoint}`;
2597
- dlog(`projectScopedGet uri: ${uri}`);
2603
+ const sep = endpoint.includes("?") ? "&" : "?";
2604
+ const uri = `${base}/${endpoint}${sep}per_page=100`;
2605
+ dlog(`projectScopedRequest uri: ${uri}`);
2598
2606
  const headers = new Headers;
2599
- headers.append("Accept", "application/json");
2600
2607
  headers.append("Private-Token", token);
2601
2608
  const options = {
2602
2609
  method,
2603
2610
  headers
2604
2611
  };
2605
2612
  const request = new Request(uri, options);
2606
- const response = await fetch(request);
2613
+ return await fetch(request);
2614
+ }
2615
+ async function projectScopedGet(endpoint) {
2616
+ const response = await projectScopedRequest(endpoint);
2607
2617
  return await response.json();
2608
2618
  }
2619
+ async function projectScopedGetText(endpoint) {
2620
+ const response = await projectScopedRequest(endpoint);
2621
+ return await response.text();
2622
+ }
2609
2623
 
2610
- // bine_modules/comma
2624
+ // lib/gitlab/job.ts
2625
+ async function getPipelineJobs(pipelineId) {
2626
+ dlog(`getPipelineJobs pipelineId: ${pipelineId}`);
2627
+ return await projectScopedGet(`pipelines/${pipelineId}/jobs`);
2628
+ }
2629
+ async function getJob(jobId) {
2630
+ dlog(`getJob jobId: ${jobId}`);
2631
+ return await projectScopedGet(`jobs/${jobId}`);
2632
+ }
2633
+ async function getJobLog(jobId) {
2634
+ dlog(`getJobLog jobId: ${jobId}`);
2635
+ return await projectScopedGetText(`jobs/${jobId}/trace`);
2636
+ }
2637
+ // lib/gitlab/user.ts
2611
2638
  async function whoami() {
2612
2639
  return await gitlabApi("user");
2613
2640
  }
2614
2641
 
2615
- // bine_modules/commander/lib/
2642
+ // lib/gitlab/merge-request.ts
2616
2643
  async function getMergeRequest(id) {
2617
2644
  return await projectScopedGet(`merge_requests/${id}`);
2618
2645
  }
@@ -2624,11 +2651,16 @@ async function getMyMergeRequestsToReview() {
2624
2651
  const me = await whoami();
2625
2652
  return await gitlabApi(`merge_requests?state=opened&reviewer_id=${me.id}`);
2626
2653
  }
2627
- // bine_modules/commander/
2654
+ async function getMergeRequestsByBranch(projectPath, sourceBranch) {
2655
+ const project = encodeURIComponent(projectPath);
2656
+ const branch = encodeURIComponent(sourceBranch);
2657
+ return await gitlabApi(`projects/${project}/merge_requests?state=opened&source_branch=${branch}`);
2658
+ }
2659
+ // lib/gitlab/namespace.ts
2628
2660
  async function getNamespaces() {
2629
2661
  return await gitlabApi(`namespaces`);
2630
2662
  }
2631
- // bine_modules/commander
2663
+ // lib/gitlab/pipeline.ts
2632
2664
  async function getProjectPipelines(options) {
2633
2665
  const { days, status } = options;
2634
2666
  const me = await whoami();
@@ -2640,13 +2672,23 @@ async function getProjectPipelines(options) {
2640
2672
  dlog(`updated: ${updated}`);
2641
2673
  return await projectScopedGet(`pipelines?status=${status}&username=${username}&updated_after=${updated}`);
2642
2674
  }
2643
- // bine_modules/c
2675
+ async function getMergeRequestPipelines(projectPath, mrIid) {
2676
+ const project = encodeURIComponent(projectPath);
2677
+ return await gitlabApi(`projects/${project}/merge_requests/${mrIid}/pipelines`);
2678
+ }
2679
+ async function getLatestPipeline() {
2680
+ const ref = await getCurrentBranch();
2681
+ dlog(`getLatestPipeline ref: ${ref}`);
2682
+ const pipelines = await projectScopedGet(`pipelines?ref=${encodeURIComponent(ref)}&per_page=1&order_by=id&sort=desc`);
2683
+ return pipelines.length > 0 ? pipelines[0] : undefined;
2684
+ }
2685
+ // lib/is_main.ts
2644
2686
  import path3 from "path";
2645
- var justBase = function(filename) {
2687
+ function justBase(filename) {
2646
2688
  const ext = path3.extname(filename);
2647
2689
  const base = path3.basename(filename, ext);
2648
2690
  return base;
2649
- };
2691
+ }
2650
2692
  function isMain(self) {
2651
2693
  const arg1 = Bun.argv[1];
2652
2694
  const argv1Base = justBase(arg1);
@@ -2655,7 +2697,8 @@ function isMain(self) {
2655
2697
  return result;
2656
2698
  }
2657
2699
 
2658
- // bine_modules/commander/lib/
2700
+ // bin/git-lab-merge-active.ts
2701
+ var version = await getPackageVersion();
2659
2702
  function create() {
2660
2703
  const program2 = new Command;
2661
2704
  program2.version(version).name("active").description("List my MRs in progress").option("-v, --verbose", "Verbose output").action(async (options) => {
@@ -2677,13 +2720,13 @@ function create() {
2677
2720
  });
2678
2721
  return program2;
2679
2722
  }
2680
- var version = await getPackageVersion();
2681
2723
  var git_lab_merge_active_default = create;
2682
2724
  if (isMain("git-lab-merge-active")) {
2683
2725
  await create().parseAsync(Bun.argv);
2684
2726
  }
2685
2727
 
2686
- // bine_modules/commander/li
2728
+ // bin/git-lab-merge-todo.ts
2729
+ var version2 = await getPackageVersion();
2687
2730
  function create2() {
2688
2731
  const program2 = new Command;
2689
2732
  program2.version(version2).name("todo").description("MRs needing my review").option("-v, --verbose", "Verbose output").action(async (options) => {
@@ -2700,18 +2743,18 @@ function create2() {
2700
2743
  });
2701
2744
  return program2;
2702
2745
  }
2703
- var version2 = await getPackageVersion();
2704
2746
  var git_lab_merge_todo_default = create2;
2705
2747
  if (isMain("git-lab-merge-todo")) {
2706
2748
  await create2().parseAsync(Bun.argv);
2707
2749
  }
2708
2750
 
2709
- // bine_modules/commander/lib
2751
+ // lib/gitlab/merge-trains.ts
2710
2752
  async function getMergeTrains() {
2711
2753
  return await projectScopedGet(`merge_trains`);
2712
2754
  }
2713
2755
 
2714
- // bine_modules/commander/lib/sugg
2756
+ // bin/git-lab-merge-train-list.ts
2757
+ var version3 = await getPackageVersion();
2715
2758
  function create3() {
2716
2759
  const program2 = new Command;
2717
2760
  program2.version(version3).name("list").description("List merge trains for the current project").action(async () => {
@@ -2720,37 +2763,37 @@ function create3() {
2720
2763
  });
2721
2764
  return program2;
2722
2765
  }
2723
- var version3 = await getPackageVersion();
2724
2766
  var git_lab_merge_train_list_default = create3;
2725
2767
  if (isMain("git-lab-merge-train-list")) {
2726
2768
  await create3().parseAsync(Bun.argv);
2727
2769
  }
2728
2770
 
2729
- // bine_modules/commander/lib
2771
+ // bin/git-lab-merge-train.ts
2772
+ var version4 = await getPackageVersion();
2730
2773
  function create4() {
2731
2774
  const program2 = new Command;
2732
2775
  program2.version(version4).name("train").description("Commands for working with GitLab merge trains.").addCommand(git_lab_merge_train_list_default()).action(() => program2.help());
2733
2776
  return program2;
2734
2777
  }
2735
- var version4 = await getPackageVersion();
2736
2778
  var git_lab_merge_train_default = create4;
2737
2779
  if (isMain("git-lab-merge-train")) {
2738
2780
  await create4().parseAsync(Bun.argv);
2739
2781
  }
2740
2782
 
2741
- // bine_modules/command
2783
+ // bin/git-lab-merge.ts
2784
+ var version5 = await getPackageVersion();
2742
2785
  function create5() {
2743
2786
  const program2 = new Command;
2744
2787
  program2.version(version5).name("merge").description("Commands for working with GitLab merge requests").addCommand(git_lab_merge_active_default()).addCommand(git_lab_merge_todo_default()).addCommand(git_lab_merge_train_default()).action(() => program2.help());
2745
2788
  return program2;
2746
2789
  }
2747
- var version5 = await getPackageVersion();
2748
2790
  var git_lab_merge_default = create5;
2749
2791
  if (isMain("git-lab-merge")) {
2750
2792
  await create5().parseAsync(Bun.argv);
2751
2793
  }
2752
2794
 
2753
- // bine_modules/commander/lib/su
2795
+ // bin/git-lab-namespace-list.ts
2796
+ var version6 = await getPackageVersion();
2754
2797
  function create6() {
2755
2798
  const program2 = new Command;
2756
2799
  program2.version(version6).name("list").description("List namespaces for the current user").action(async () => {
@@ -2759,25 +2802,25 @@ function create6() {
2759
2802
  });
2760
2803
  return program2;
2761
2804
  }
2762
- var version6 = await getPackageVersion();
2763
2805
  var git_lab_namespace_list_default = create6;
2764
2806
  if (isMain("git-lab-namespace-list")) {
2765
2807
  await create6().parseAsync(Bun.argv);
2766
2808
  }
2767
2809
 
2768
- // bine_modules/commander/l
2810
+ // bin/git-lab-namespace.ts
2811
+ var version7 = await getPackageVersion();
2769
2812
  function create7() {
2770
2813
  const program2 = new Command;
2771
2814
  program2.version(version7).name("namespace").description("Commands for working with GitLab namespaces").addCommand(git_lab_namespace_list_default()).action(() => program2.help());
2772
2815
  return program2;
2773
2816
  }
2774
- var version7 = await getPackageVersion();
2775
2817
  var git_lab_namespace_default = create7;
2776
2818
  if (isMain("git-lab-namespace")) {
2777
2819
  await create7().parseAsync(Bun.argv);
2778
2820
  }
2779
2821
 
2780
- // bine_modules/commander/lib/
2822
+ // bin/git-lab-project-list.ts
2823
+ var version8 = await getPackageVersion();
2781
2824
  function create8() {
2782
2825
  const program2 = new Command;
2783
2826
  program2.version(version8).name("list").description("List projects for current user").option("-v, --verbose", "Verbose output").option("-m, --match <match>", "Match projects with paths containing <match>").action(async (options) => {
@@ -2798,60 +2841,255 @@ function create8() {
2798
2841
  });
2799
2842
  return program2;
2800
2843
  }
2801
- var version8 = await getPackageVersion();
2802
2844
  var git_lab_project_list_default = create8;
2803
2845
  if (isMain("git-lab-project-list")) {
2804
2846
  await create8().parseAsync(Bun.argv);
2805
2847
  }
2806
2848
 
2807
- // bine_modules/commander/lib/sugg
2849
+ // bin/git-lab-project-mr-list.ts
2850
+ var version9 = await getPackageVersion();
2808
2851
  function create9() {
2809
2852
  const program2 = new Command;
2810
- program2.version(version9).name("whereami").description("Show current project based on current directory").option("-v, --verbose", "Verbose output").action(async (options) => {
2853
+ program2.version(version9).name("list").description("List open merge requests for a project and branch").option("-v, --verbose", "Verbose output").option("-p, --project <path>", "Project path (e.g. etagen-internal/eta-lib/base). Defaults to current directory remote.").option("-b, --branch <branch>", "Source branch to filter on. Defaults to current branch.").action(async (options) => {
2854
+ let projectPath = options.project;
2855
+ if (!projectPath) {
2856
+ const remote = await getRemote();
2857
+ const project2 = await findProject(remote);
2858
+ if (!project2) {
2859
+ console.error(`Could not resolve project from remote: ${remote}`);
2860
+ process.exit(1);
2861
+ }
2862
+ projectPath = project2.path_with_namespace;
2863
+ }
2864
+ const branch = options.branch || await getCurrentBranch();
2865
+ const mrs = await getMergeRequestsByBranch(projectPath, branch);
2866
+ if (!mrs.length) {
2867
+ console.error(`No open MRs for branch '${branch}' in ${projectPath}`);
2868
+ process.exit(0);
2869
+ }
2870
+ if (options.verbose) {
2871
+ console.log(mrs);
2872
+ } else {
2873
+ const filtered = mrs.map((m) => {
2874
+ const { iid, title, web_url, source_branch, target_branch, state, draft } = m;
2875
+ return { iid, title, web_url, source_branch, target_branch, state, draft };
2876
+ });
2877
+ console.log(filtered);
2878
+ }
2879
+ });
2880
+ return program2;
2881
+ }
2882
+ var git_lab_project_mr_list_default = create9;
2883
+ if (isMain("git-lab-project-mr-list")) {
2884
+ await create9().parseAsync(Bun.argv);
2885
+ }
2886
+
2887
+ // bin/git-lab-project-mr.ts
2888
+ var version10 = await getPackageVersion();
2889
+ function create10() {
2890
+ const program2 = new Command;
2891
+ program2.version(version10).name("mr").description("Commands for working with merge requests").addCommand(git_lab_project_mr_list_default()).action(() => program2.help());
2892
+ return program2;
2893
+ }
2894
+ var git_lab_project_mr_default = create10;
2895
+ if (isMain("git-lab-project-mr")) {
2896
+ await create10().parseAsync(Bun.argv);
2897
+ }
2898
+
2899
+ // bin/git-lab-project-pipeline-jobs.ts
2900
+ var version11 = await getPackageVersion();
2901
+ function create11() {
2902
+ const program2 = new Command;
2903
+ program2.version(version11).name("jobs").description("List jobs for a pipeline").requiredOption("-p, --pipeline <id>", "Pipeline ID").option("-v, --verbose", "Verbose output").action(async (options) => {
2904
+ const pipelineId = parseInt(options.pipeline, 10);
2905
+ if (isNaN(pipelineId)) {
2906
+ console.error(`Invalid pipeline ID: ${options.pipeline}`);
2907
+ process.exit(1);
2908
+ }
2909
+ const jobs = await getPipelineJobs(pipelineId);
2910
+ if (!jobs || jobs.length === 0) {
2911
+ console.error(`No jobs found for pipeline ${pipelineId}`);
2912
+ process.exit(1);
2913
+ }
2914
+ if (options.verbose) {
2915
+ console.log(JSON.stringify(jobs, null, 2));
2916
+ } else {
2917
+ const filtered = jobs.map((j) => {
2918
+ const { id, name, stage, status, duration, failure_reason } = j;
2919
+ return { id, name, stage, status, duration, failure_reason };
2920
+ });
2921
+ console.log(JSON.stringify(filtered, null, 2));
2922
+ }
2923
+ });
2924
+ return program2;
2925
+ }
2926
+ var git_lab_project_pipeline_jobs_default = create11;
2927
+ if (isMain("git-lab-project-pipeline-jobs")) {
2928
+ await create11().parseAsync(Bun.argv);
2929
+ }
2930
+
2931
+ // bin/git-lab-project-pipeline-latest.ts
2932
+ var version12 = await getPackageVersion();
2933
+ function create12() {
2934
+ const program2 = new Command;
2935
+ program2.version(version12).name("latest").description("Show jobs for the latest pipeline on the current branch").option("-v, --verbose", "Verbose output").action(async (options) => {
2936
+ const pipeline2 = await getLatestPipeline();
2937
+ if (!pipeline2) {
2938
+ console.error("No pipeline found for the current branch");
2939
+ process.exit(1);
2940
+ }
2941
+ const { id, status, ref, web_url } = pipeline2;
2942
+ console.log(JSON.stringify({ id, status, ref, web_url }, null, 2));
2943
+ const jobs = await getPipelineJobs(pipeline2.id);
2944
+ if (!jobs || jobs.length === 0) {
2945
+ console.error(`No jobs found for pipeline ${pipeline2.id}`);
2946
+ process.exit(1);
2947
+ }
2948
+ if (options.verbose) {
2949
+ console.log(JSON.stringify(jobs, null, 2));
2950
+ } else {
2951
+ const filtered = jobs.map((j) => {
2952
+ const { id: id2, name, stage, status: status2, duration, failure_reason } = j;
2953
+ return { id: id2, name, stage, status: status2, duration, failure_reason };
2954
+ });
2955
+ console.log(JSON.stringify(filtered, null, 2));
2956
+ }
2957
+ });
2958
+ return program2;
2959
+ }
2960
+ var git_lab_project_pipeline_latest_default = create12;
2961
+ if (isMain("git-lab-project-pipeline-latest")) {
2962
+ await create12().parseAsync(Bun.argv);
2963
+ }
2964
+
2965
+ // bin/git-lab-project-pipeline-list.ts
2966
+ var import_debug2 = __toESM(require_src(), 1);
2967
+ var version13 = await getPackageVersion();
2968
+ var dlog2 = import_debug2.default("git-lab-project-pipeline-list");
2969
+ function create13() {
2970
+ const program2 = new Command;
2971
+ program2.version(version13).name("list").description("List recent successful pipelines").option("-v, --verbose", "Verbose output").option("-d, --days <days>", "Number of days to look back", "7").option("-s, --status <status>", "Status of pipelines to list: success | runnning | ", "success").action(async (options) => {
2972
+ const pipelines = await getProjectPipelines(options);
2973
+ dlog2(`pipelines:`, pipelines);
2974
+ if (!pipelines) {
2975
+ console.error(`No pipelines!`);
2976
+ process.exit(1);
2977
+ }
2978
+ if (options.verbose) {
2979
+ console.log(pipelines);
2980
+ } else {
2981
+ let filtered = pipelines.map((p) => {
2982
+ const { id, web_url, updated_at, ref, sha } = p;
2983
+ return { id, web_url, updated_at, ref, sha };
2984
+ });
2985
+ console.log(filtered);
2986
+ }
2987
+ });
2988
+ return program2;
2989
+ }
2990
+ var git_lab_project_pipeline_list_default = create13;
2991
+ if (isMain("git-lab-project-pipeline-list")) {
2992
+ await create13().parseAsync(Bun.argv);
2993
+ }
2994
+
2995
+ // bin/git-lab-project-pipeline-log.ts
2996
+ var version14 = await getPackageVersion();
2997
+ function create14() {
2998
+ const program2 = new Command;
2999
+ program2.version(version14).name("log").description("Download a job log").requiredOption("-j, --job <id>", "Job ID").option("-t, --tail <lines>", "Show only the last N lines").action(async (options) => {
3000
+ const jobId = parseInt(options.job, 10);
3001
+ if (isNaN(jobId)) {
3002
+ console.error(`Invalid job ID: ${options.job}`);
3003
+ process.exit(1);
3004
+ }
3005
+ const log = await getJobLog(jobId);
3006
+ if (!log) {
3007
+ console.error(`No log output for job ${jobId}`);
3008
+ process.exit(1);
3009
+ }
3010
+ if (options.tail) {
3011
+ const n = parseInt(options.tail, 10);
3012
+ if (isNaN(n)) {
3013
+ console.error(`Invalid --tail value: ${options.tail}`);
3014
+ process.exit(1);
3015
+ }
3016
+ const lines = log.split(`
3017
+ `);
3018
+ const tail = lines.slice(-n);
3019
+ process.stdout.write(tail.join(`
3020
+ `));
3021
+ } else {
3022
+ process.stdout.write(log);
3023
+ }
3024
+ });
3025
+ return program2;
3026
+ }
3027
+ var git_lab_project_pipeline_log_default = create14;
3028
+ if (isMain("git-lab-project-pipeline-log")) {
3029
+ await create14().parseAsync(Bun.argv);
3030
+ }
3031
+
3032
+ // bin/git-lab-project-pipeline.ts
3033
+ var version15 = await getPackageVersion();
3034
+ function create15() {
3035
+ const program2 = new Command;
3036
+ program2.version(version15).name("pipeline").description("Commands for working with GitLab pipelines").addCommand(git_lab_project_pipeline_jobs_default()).addCommand(git_lab_project_pipeline_latest_default()).addCommand(git_lab_project_pipeline_list_default()).addCommand(git_lab_project_pipeline_log_default()).action(() => program2.help());
3037
+ return program2;
3038
+ }
3039
+ var git_lab_project_pipeline_default = create15;
3040
+ if (isMain("git-lab-project-pipeline")) {
3041
+ await create15().parseAsync(Bun.argv);
3042
+ }
3043
+
3044
+ // bin/git-lab-project-whereami.ts
3045
+ var version16 = await getPackageVersion();
3046
+ function create16() {
3047
+ const program2 = new Command;
3048
+ program2.version(version16).name("whereami").description("Show current project based on current directory").option("-v, --verbose", "Verbose output").action(async (options) => {
2811
3049
  const ssh_url = await getRemote();
2812
3050
  if (!ssh_url) {
2813
3051
  console.error(`No remote!`);
2814
3052
  process.exit(1);
2815
3053
  }
2816
3054
  console.log(`Remote: ${ssh_url}`);
2817
- const project7 = await findProject(ssh_url);
2818
- if (!project7) {
3055
+ const project2 = await findProject(ssh_url);
3056
+ if (!project2) {
2819
3057
  console.error(`No project!`);
2820
3058
  process.exit(1);
2821
3059
  }
2822
3060
  if (options.verbose) {
2823
- console.log(project7);
3061
+ console.log(project2);
2824
3062
  } else {
2825
- const { id, name, path_with_namespace, ssh_url_to_repo } = project7;
3063
+ const { id, name, path_with_namespace, ssh_url_to_repo } = project2;
2826
3064
  console.log({ id, name, path_with_namespace, ssh_url_to_repo });
2827
3065
  }
2828
3066
  });
2829
3067
  return program2;
2830
3068
  }
2831
- var version9 = await getPackageVersion();
2832
- var git_lab_project_whereami_default = create9;
3069
+ var git_lab_project_whereami_default = create16;
2833
3070
  if (isMain("git-lab-project-whereami")) {
2834
- await create9().parseAsync(Bun.argv);
3071
+ await create16().parseAsync(Bun.argv);
2835
3072
  }
2836
3073
 
2837
- // bine_modules/commander
2838
- function create10() {
3074
+ // bin/git-lab-project.ts
3075
+ var version17 = await getPackageVersion();
3076
+ function create17() {
2839
3077
  const program2 = new Command;
2840
- program2.version(version10).name("projects").description("Commands for working with GitLab projects").addCommand(git_lab_project_list_default()).addCommand(git_lab_project_whereami_default()).action(() => {
3078
+ program2.version(version17).name("project").description("Commands for working with GitLab projects").addCommand(git_lab_project_list_default()).addCommand(git_lab_project_mr_default()).addCommand(git_lab_project_pipeline_default()).addCommand(git_lab_project_whereami_default()).action(() => {
2841
3079
  program2.help();
2842
3080
  });
2843
3081
  return program2;
2844
3082
  }
2845
- var version10 = await getPackageVersion();
2846
- var git_lab_project_default = create10;
3083
+ var git_lab_project_default = create17;
2847
3084
  if (isMain("git-lab-project")) {
2848
- await create10().parseAsync(Bun.argv);
3085
+ await create17().parseAsync(Bun.argv);
2849
3086
  }
2850
3087
 
2851
- // bine_modules/commander/li
2852
- function create11() {
3088
+ // bin/git-lab-group-list.ts
3089
+ var version18 = await getPackageVersion();
3090
+ function create18() {
2853
3091
  const program2 = new Command;
2854
- program2.version(version11).name("list").description("List groups for the current user").option("-v, --verbose", "Verbose output").action(async (options) => {
3092
+ program2.version(version18).name("list").description("List groups for the current user").option("-v, --verbose", "Verbose output").action(async (options) => {
2855
3093
  const groups = await getGroups();
2856
3094
  if (options.verbose)
2857
3095
  console.log(groups);
@@ -2865,60 +3103,59 @@ function create11() {
2865
3103
  });
2866
3104
  return program2;
2867
3105
  }
2868
- var version11 = await getPackageVersion();
2869
- var git_lab_group_list_default = create11;
3106
+ var git_lab_group_list_default = create18;
2870
3107
  if (isMain("git-lab-group-list")) {
2871
- await create11().parseAsync(Bun.argv);
3108
+ await create18().parseAsync(Bun.argv);
2872
3109
  }
2873
3110
 
2874
- // bine_modules/command
2875
- function create12() {
3111
+ // bin/git-lab-group.ts
3112
+ var version19 = await getPackageVersion();
3113
+ function create19() {
2876
3114
  const program2 = new Command;
2877
- program2.version(version12).name("group").description("Commands for working with GitLab groups").addCommand(git_lab_group_list_default()).action(() => program2.help());
3115
+ program2.version(version19).name("group").description("Commands for working with GitLab groups").addCommand(git_lab_group_list_default()).action(() => program2.help());
2878
3116
  return program2;
2879
3117
  }
2880
- var version12 = await getPackageVersion();
2881
- var git_lab_group_default = create12;
3118
+ var git_lab_group_default = create19;
2882
3119
  if (isMain("git-lab-group")) {
2883
- await create12().parseAsync(Bun.argv);
3120
+ await create19().parseAsync(Bun.argv);
2884
3121
  }
2885
3122
 
2886
- // bine_modules/commande
2887
- function create13() {
3123
+ // bin/git-lab-whoami.ts
3124
+ var version20 = await getPackageVersion();
3125
+ function create20() {
2888
3126
  const program2 = new Command;
2889
- program2.version(version13).name("whoami").description("get GitLab user information for current user").option("-v, --verbose", "Verbose output").action(async (options) => {
2890
- const user5 = await whoami();
2891
- if (!user5) {
3127
+ program2.version(version20).name("whoami").description("get GitLab user information for current user").option("-v, --verbose", "Verbose output").action(async (options) => {
3128
+ const user2 = await whoami();
3129
+ if (!user2) {
2892
3130
  console.error(`No user!`);
2893
3131
  process.exit(1);
2894
3132
  }
2895
3133
  if (options.verbose) {
2896
- console.log(user5);
3134
+ console.log(user2);
2897
3135
  process.exit(0);
2898
3136
  } else {
2899
- console.log(user5.username);
3137
+ console.log(user2.username);
2900
3138
  }
2901
3139
  });
2902
3140
  return program2;
2903
3141
  }
2904
- var version13 = await getPackageVersion();
2905
- var git_lab_whoami_default = create13;
3142
+ var git_lab_whoami_default = create20;
2906
3143
  if (isMain("git-lab-whoami")) {
2907
- await create13().parseAsync(Bun.argv);
3144
+ await create20().parseAsync(Bun.argv);
2908
3145
  }
2909
3146
 
2910
- // bine_modules/c
2911
- function create14() {
3147
+ // bin/git-lab.ts
3148
+ var version21 = await getPackageVersion();
3149
+ function create21() {
2912
3150
  const program2 = new Command;
2913
- program2.version(version14).name("lab").description("Commands for working with GitLab").addCommand(git_lab_group_default()).addCommand(git_lab_merge_default()).addCommand(git_lab_namespace_default()).addCommand(git_lab_project_default()).addCommand(git_lab_whoami_default()).action(() => program2.help());
3151
+ program2.version(version21).name("lab").description("Commands for working with GitLab").addCommand(git_lab_group_default()).addCommand(git_lab_merge_default()).addCommand(git_lab_namespace_default()).addCommand(git_lab_project_default()).addCommand(git_lab_whoami_default()).action(() => program2.help());
2914
3152
  return program2;
2915
3153
  }
2916
- var version14 = await getPackageVersion();
2917
- var git_lab_default = create14;
3154
+ var git_lab_default = create21;
2918
3155
  if (isMain("git-lab")) {
2919
- await create14().parseAsync(Bun.argv);
3156
+ await create21().parseAsync(Bun.argv);
2920
3157
  }
2921
3158
  export {
2922
3159
  git_lab_default as default,
2923
- create14 as create
3160
+ create21 as create
2924
3161
  };