@bluewombat/manager-github 0.8.0 → 0.10.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 (96) hide show
  1. package/README.md +188 -33
  2. package/SPECS.md +60 -24
  3. package/dist/adapter/normalize/intent.d.ts +3 -3
  4. package/dist/adapter/normalize/intent.d.ts.map +1 -1
  5. package/dist/adapter/normalize/intent.js +4 -4
  6. package/dist/adapter/normalize/intent.js.map +1 -1
  7. package/dist/adapter/normalize/normalize.d.ts +5 -1
  8. package/dist/adapter/normalize/normalize.d.ts.map +1 -1
  9. package/dist/adapter/normalize/normalize.js +5 -1
  10. package/dist/adapter/normalize/normalize.js.map +1 -1
  11. package/dist/adapter/run/run-adapter.d.ts +1 -1
  12. package/dist/adapter/run/run-adapter.d.ts.map +1 -1
  13. package/dist/adapter/run/run-adapter.js +29 -2
  14. package/dist/adapter/run/run-adapter.js.map +1 -1
  15. package/dist/adapter/types.d.ts +13 -3
  16. package/dist/adapter/types.d.ts.map +1 -1
  17. package/dist/adapter/types.js +1 -1
  18. package/dist/adapter/types.js.map +1 -1
  19. package/dist/emitter/event/field-matrix.d.ts +1 -1
  20. package/dist/emitter/event/field-matrix.d.ts.map +1 -1
  21. package/dist/emitter/event/field-matrix.js +5 -9
  22. package/dist/emitter/event/field-matrix.js.map +1 -1
  23. package/dist/emitter/github/labels.d.ts +3 -4
  24. package/dist/emitter/github/labels.d.ts.map +1 -1
  25. package/dist/emitter/github/labels.js +9 -9
  26. package/dist/emitter/github/labels.js.map +1 -1
  27. package/dist/emitter/render/render-event.d.ts.map +1 -1
  28. package/dist/emitter/render/render-event.js +13 -42
  29. package/dist/emitter/render/render-event.js.map +1 -1
  30. package/dist/emitter/run/run-emitter.d.ts +1 -1
  31. package/dist/emitter/run/run-emitter.js +3 -3
  32. package/dist/emitter/thread/marker.d.ts +1 -1
  33. package/dist/emitter/thread/marker.d.ts.map +1 -1
  34. package/dist/emitter/thread/marker.js +1 -1
  35. package/dist/emitter/thread/marker.js.map +1 -1
  36. package/dist/emitter/types.d.ts +8 -10
  37. package/dist/emitter/types.d.ts.map +1 -1
  38. package/dist/emitter/types.js +1 -1
  39. package/dist/emitter/types.js.map +1 -1
  40. package/dist/github/blockers.d.ts +24 -0
  41. package/dist/github/blockers.d.ts.map +1 -0
  42. package/dist/github/blockers.js +50 -0
  43. package/dist/github/blockers.js.map +1 -0
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +164 -45
  47. package/dist/index.js.map +1 -1
  48. package/dist/label-colors.d.ts +26 -0
  49. package/dist/label-colors.d.ts.map +1 -0
  50. package/dist/label-colors.js +51 -0
  51. package/dist/label-colors.js.map +1 -0
  52. package/dist/listener/delivery/process-tree.d.ts +1 -1
  53. package/dist/listener/delivery/process-tree.js +1 -1
  54. package/dist/listener/run/run-listener.d.ts +1 -1
  55. package/dist/listener/run/run-listener.js +1 -1
  56. package/dist/listener/source/select-events.d.ts +6 -1
  57. package/dist/listener/source/select-events.d.ts.map +1 -1
  58. package/dist/listener/source/select-events.js +9 -2
  59. package/dist/listener/source/select-events.js.map +1 -1
  60. package/dist/listener/types.d.ts +1 -1
  61. package/dist/listener/types.d.ts.map +1 -1
  62. package/dist/listener/types.js +1 -1
  63. package/dist/listener/types.js.map +1 -1
  64. package/dist/manager.d.ts +28 -8
  65. package/dist/manager.d.ts.map +1 -1
  66. package/dist/manager.js +152 -95
  67. package/dist/manager.js.map +1 -1
  68. package/dist/settled.d.ts +5 -4
  69. package/dist/settled.d.ts.map +1 -1
  70. package/dist/settled.js +7 -7
  71. package/dist/settled.js.map +1 -1
  72. package/dist/setup.d.ts +33 -8
  73. package/dist/setup.d.ts.map +1 -1
  74. package/dist/setup.js +117 -19
  75. package/dist/setup.js.map +1 -1
  76. package/dist/state-labels.d.ts +23 -0
  77. package/dist/state-labels.d.ts.map +1 -0
  78. package/dist/state-labels.js +55 -0
  79. package/dist/state-labels.js.map +1 -0
  80. package/dist/submission/lines.d.ts +19 -0
  81. package/dist/submission/lines.d.ts.map +1 -0
  82. package/dist/submission/lines.js +91 -0
  83. package/dist/submission/lines.js.map +1 -0
  84. package/dist/submission/submission.d.ts +16 -6
  85. package/dist/submission/submission.d.ts.map +1 -1
  86. package/dist/submission/submission.js +53 -7
  87. package/dist/submission/submission.js.map +1 -1
  88. package/dist/tickets/list-tickets.d.ts +29 -0
  89. package/dist/tickets/list-tickets.d.ts.map +1 -0
  90. package/dist/tickets/list-tickets.js +98 -0
  91. package/dist/tickets/list-tickets.js.map +1 -0
  92. package/dist/written-fingerprint.d.ts +2 -1
  93. package/dist/written-fingerprint.d.ts.map +1 -1
  94. package/dist/written-fingerprint.js +3 -3
  95. package/dist/written-fingerprint.js.map +1 -1
  96. package/package.json +3 -3
package/dist/settled.d.ts CHANGED
@@ -1,10 +1,11 @@
1
+ import type { StateLabels } from "./state-labels.js";
1
2
  /**
2
- * Whether the tracker already says this issue reached an end — `done` or
3
- * `cancelled` under the state-label prefix — and nobody asked to resume it.
3
+ * Whether the tracker already says this issue reached an end — the state
4
+ * labels of `done` or `cancelled` — and nobody asked to resume it.
4
5
  *
5
6
  * The WorkLedger is the truth; this is the tracker's own memory read as a
6
7
  * guard for when the ledger is gone, so a fresh one neither rebuilds merged
7
- * work nor takes up an abandoned issue again. The ready label still resumes.
8
+ * work nor takes up an abandoned issue again. The resume label still resumes.
8
9
  */
9
- export declare function settledAlready(payload: Record<string, unknown>, prefix: string, ready: string): boolean;
10
+ export declare function settledAlready(payload: Record<string, unknown>, labels: StateLabels, resume: string): boolean;
10
11
  //# sourceMappingURL=settled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settled.d.ts","sourceRoot":"","sources":["../src/settled.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAKT"}
1
+ {"version":3,"file":"settled.d.ts","sourceRoot":"","sources":["../src/settled.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT"}
package/dist/settled.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import { payloadHasLabel } from "./labels.js";
2
- /** The states that end a Feature: nothing more is done for it unless resumed. */
2
+ /** The states that end a Ticket: nothing more is done for it unless resumed. */
3
3
  const SETTLED_STATES = ["done", "cancelled"];
4
4
  /**
5
- * Whether the tracker already says this issue reached an end — `done` or
6
- * `cancelled` under the state-label prefix — and nobody asked to resume it.
5
+ * Whether the tracker already says this issue reached an end — the state
6
+ * labels of `done` or `cancelled` — and nobody asked to resume it.
7
7
  *
8
8
  * The WorkLedger is the truth; this is the tracker's own memory read as a
9
9
  * guard for when the ledger is gone, so a fresh one neither rebuilds merged
10
- * work nor takes up an abandoned issue again. The ready label still resumes.
10
+ * work nor takes up an abandoned issue again. The resume label still resumes.
11
11
  */
12
- export function settledAlready(payload, prefix, ready) {
13
- return (SETTLED_STATES.some((state) => payloadHasLabel(payload, `${prefix}${state}`)) &&
14
- !payloadHasLabel(payload, ready));
12
+ export function settledAlready(payload, labels, resume) {
13
+ return (SETTLED_STATES.some((state) => payloadHasLabel(payload, labels[state])) &&
14
+ !payloadHasLabel(payload, resume));
15
15
  }
16
16
  //# sourceMappingURL=settled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settled.js","sourceRoot":"","sources":["../src/settled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,iFAAiF;AACjF,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,WAAW,CAAU,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgC,EAChC,MAAc,EACd,KAAa;IAEb,OAAO,CACL,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"settled.js","sourceRoot":"","sources":["../src/settled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,gFAAgF;AAChF,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,WAAW,CAAU,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgC,EAChC,MAAmB,EACnB,MAAc;IAEd,OAAO,CACL,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAClC,CAAC;AACJ,CAAC"}
package/dist/setup.d.ts CHANGED
@@ -1,13 +1,24 @@
1
- import { type SetupResult } from "@bluewombat/manager-kit";
1
+ import { type ManagerSide, type SetupResult } from "@bluewombat/manager-kit";
2
+ import type { LabelColors } from "./label-colors.js";
2
3
  import type { Repository } from "./repo.js";
4
+ import type { StateLabels } from "./state-labels.js";
3
5
  export type SetupSettings = {
4
6
  repo: Repository;
5
7
  token: string;
6
8
  apiBase: string;
7
- readyLabel: string;
8
- labels: string[] | undefined;
9
+ resumeLabel: string;
10
+ featureReadyLabel: string;
11
+ ticketReadyLabel: string;
12
+ noTestsLabel: string;
13
+ e2eLabel: string;
14
+ skipTestE2eLabel: string;
15
+ mergeWhenReadyLabel: string;
16
+ /** The sides this manager is built for: only their labels are wanted. */
17
+ sides: readonly ManagerSide[];
9
18
  defaultProject: string | undefined;
10
- stateLabelPrefix: string | undefined;
19
+ stateLabels: StateLabels | undefined;
20
+ /** The colours the config chose; absent, the defaults, and an existing label is left alone. */
21
+ labelColors?: LabelColors | undefined;
11
22
  /** The branch pull requests are opened onto, and whether the config named it. */
12
23
  branch: string;
13
24
  branchConfigured: boolean;
@@ -21,6 +32,8 @@ type WantedLabel = {
21
32
  name: string;
22
33
  colour: string;
23
34
  description: string;
35
+ /** The config chose this colour: a label that exists with another one is recoloured. */
36
+ chosen: boolean;
24
37
  };
25
38
  /**
26
39
  * Bring one repository to the shape a run expects: reachable, issues on, a
@@ -32,12 +45,24 @@ type WantedLabel = {
32
45
  export declare function runSetup(settings: SetupSettings, input: {
33
46
  apply: boolean;
34
47
  }): Promise<SetupResult>;
35
- /** Every label this configuration will look for or write, and why it exists. */
48
+ /**
49
+ * Every label this configuration will look for or write, and why it exists.
50
+ * Only the labels of the sides this manager is built for: a manager that holds
51
+ * only the Tickets does not create the Feature label, and the reverse. No
52
+ * `sides` means both.
53
+ */
36
54
  export declare function wantedLabels(settings: {
37
- readyLabel: string;
38
- labels: string[] | undefined;
55
+ resumeLabel: string;
56
+ featureReadyLabel: string;
57
+ ticketReadyLabel: string;
58
+ noTestsLabel: string;
59
+ e2eLabel: string;
60
+ skipTestE2eLabel: string;
61
+ mergeWhenReadyLabel: string;
62
+ sides?: readonly ManagerSide[];
39
63
  defaultProject: string | undefined;
40
- stateLabelPrefix: string | undefined;
64
+ stateLabels: StateLabels | undefined;
65
+ labelColors?: LabelColors | undefined;
41
66
  }): WantedLabel[];
42
67
  export {};
43
68
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAEjG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAU5C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,WAAW,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACxB,OAAO,CAAC,WAAW,CAAC,CAyDtB;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,GAAG,WAAW,EAAE,CAwChB"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAarD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,WAAW,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GACxB,OAAO,CAAC,WAAW,CAAC,CAuEtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC,GAAG,WAAW,EAAE,CA4FhB"}
package/dist/setup.js CHANGED
@@ -1,11 +1,14 @@
1
- import { EVENT_NAMES, PRODUCT } from "@bluewombat/manager-kit";
1
+ import { EVENT_NAMES, PRODUCT, } from "@bluewombat/manager-kit";
2
2
  import { callSignal, createClient, readFailure } from "./github/client.js";
3
3
  const PER_PAGE = 100;
4
4
  /** Colours are only there so a human can tell the families apart at a glance. */
5
- const READY_COLOUR = "0e8a16";
5
+ const RESUME_COLOUR = "0e8a16";
6
6
  const ADMISSION_COLOUR = "1d76db";
7
7
  const STATE_COLOUR = "5319e7";
8
8
  const PROJECT_COLOUR = "c5def5";
9
+ const NO_TESTS_COLOUR = "fbca04";
10
+ const E2E_COLOUR = "0e8a16";
11
+ const SKIP_E2E_COLOUR = "fbca04";
9
12
  /**
10
13
  * Bring one repository to the shape a run expects: reachable, issues on, a
11
14
  * token that can write, and every label the config names.
@@ -43,9 +46,23 @@ export async function runSetup(settings, input) {
43
46
  steps.push(present.step);
44
47
  return { ok: false, steps };
45
48
  }
46
- const known = new Set(present.names.map((name) => name.toLowerCase()));
49
+ const known = new Map(present.labels.map((label) => [label.name.toLowerCase(), label.colour]));
47
50
  for (const wanted of wantedLabels(settings)) {
48
- if (known.has(wanted.name.toLowerCase())) {
51
+ const has = known.get(wanted.name.toLowerCase());
52
+ if (has !== undefined) {
53
+ if (wanted.chosen && has.toLowerCase() !== wanted.colour) {
54
+ if (!input.apply) {
55
+ steps.push({
56
+ id: `label:${wanted.name}`,
57
+ summary: `recolour label ${wanted.name}`,
58
+ state: "missing",
59
+ detail: `it is ${has}, the config says ${wanted.colour}`,
60
+ });
61
+ continue;
62
+ }
63
+ steps.push(await recolourLabel(github, settings.repo, wanted, context));
64
+ continue;
65
+ }
49
66
  steps.push({
50
67
  id: `label:${wanted.name}`,
51
68
  summary: `label ${wanted.name}`,
@@ -67,33 +84,86 @@ export async function runSetup(settings, input) {
67
84
  }
68
85
  return { ok: steps.every((step) => step.state !== "blocked"), steps };
69
86
  }
70
- /** Every label this configuration will look for or write, and why it exists. */
87
+ /**
88
+ * Every label this configuration will look for or write, and why it exists.
89
+ * Only the labels of the sides this manager is built for: a manager that holds
90
+ * only the Tickets does not create the Feature label, and the reverse. No
91
+ * `sides` means both.
92
+ */
71
93
  export function wantedLabels(settings) {
94
+ const sides = settings.sides ?? ["featureTracker", "ticketTracker"];
95
+ const forFeatures = sides.includes("featureTracker");
96
+ const forTickets = sides.includes("ticketTracker");
97
+ // One name for both roles is allowed: a sub-issue is a Ticket and a top-level
98
+ // issue is a Feature, so the label is created once and says both.
99
+ const shared = forFeatures &&
100
+ forTickets &&
101
+ settings.featureReadyLabel.toLowerCase() === settings.ticketReadyLabel.toLowerCase();
102
+ // The colour of a label: the one the config chose for what it is for, else the default.
103
+ const colourOf = (key, fallback) => {
104
+ const colour = settings.labelColors?.[key];
105
+ return { colour: colour ?? fallback, chosen: colour !== undefined };
106
+ };
72
107
  const wanted = [];
73
- for (const name of settings.labels ?? []) {
108
+ if (forFeatures) {
109
+ wanted.push(shared
110
+ ? {
111
+ name: settings.featureReadyLabel,
112
+ ...colourOf("feature-ready", ADMISSION_COLOUR),
113
+ description: "on a Feature: its content is final; on a Ticket: its specification is final",
114
+ }
115
+ : {
116
+ name: settings.featureReadyLabel,
117
+ ...colourOf("feature-ready", ADMISSION_COLOUR),
118
+ description: `on a Feature: its content is final, ${PRODUCT} may build it once its Tickets are ready`,
119
+ });
120
+ }
121
+ if (forTickets) {
74
122
  wanted.push({
75
- name,
76
- colour: ADMISSION_COLOUR,
77
- description: `${PRODUCT} admits an issue only when it carries this label`,
123
+ name: settings.ticketReadyLabel,
124
+ ...colourOf("ticket-ready", ADMISSION_COLOUR),
125
+ description: "on a Ticket: its specification is final",
126
+ });
127
+ wanted.push({
128
+ name: settings.noTestsLabel,
129
+ ...colourOf("no-tests", NO_TESTS_COLOUR),
130
+ description: `on a Ticket: ${PRODUCT} writes no tests before its code`,
131
+ });
132
+ wanted.push({
133
+ name: settings.e2eLabel,
134
+ ...colourOf("e2e", E2E_COLOUR),
135
+ description: `on a Ticket: it holds the e2e acceptance suite of its Feature, run once on the whole Feature`,
136
+ });
137
+ }
138
+ if (forFeatures) {
139
+ wanted.push({
140
+ name: settings.mergeWhenReadyLabel,
141
+ ...colourOf("merge-when-ready", ADMISSION_COLOUR),
142
+ description: `on a Feature: ${PRODUCT} folds its line without a human`,
143
+ });
144
+ wanted.push({
145
+ name: settings.skipTestE2eLabel,
146
+ ...colourOf("skip-test-e2e", SKIP_E2E_COLOUR),
147
+ description: `on a Feature: ${PRODUCT} does not run its e2e acceptance suite`,
78
148
  });
79
149
  }
80
150
  wanted.push({
81
- name: settings.readyLabel,
82
- colour: READY_COLOUR,
83
- description: `on an escalated feature, ${PRODUCT} resumes it`,
151
+ name: settings.resumeLabel,
152
+ ...colourOf("resume", RESUME_COLOUR),
153
+ description: `on an escalated Feature or Ticket, ${PRODUCT} resumes it`,
84
154
  });
85
155
  if (settings.defaultProject !== undefined) {
86
156
  wanted.push({
87
157
  name: `project:${settings.defaultProject}`,
88
- colour: PROJECT_COLOUR,
158
+ ...colourOf("project", PROJECT_COLOUR),
89
159
  description: `routes the issue to this ${PRODUCT} Project`,
90
160
  });
91
161
  }
92
- if (settings.stateLabelPrefix !== undefined) {
162
+ if (settings.stateLabels !== undefined) {
93
163
  for (const event of EVENT_NAMES) {
94
164
  wanted.push({
95
- name: `${settings.stateLabelPrefix}${event}`,
96
- colour: STATE_COLOUR,
165
+ name: settings.stateLabels[event],
166
+ ...colourOf(`state-${event}`, STATE_COLOUR),
97
167
  description: `${PRODUCT} state: ${event}`,
98
168
  });
99
169
  }
@@ -213,7 +283,7 @@ async function readBranch(github, repo, settings, repository, context) {
213
283
  return { id: "branch", summary, state: "satisfied", detail };
214
284
  }
215
285
  async function readLabels(github, repo, context) {
216
- const names = [];
286
+ const labels = [];
217
287
  let page = 1;
218
288
  for (;;) {
219
289
  const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
@@ -226,10 +296,10 @@ async function readLabels(github, repo, context) {
226
296
  request: { signal: call.signal },
227
297
  });
228
298
  for (const label of response.data) {
229
- names.push(label.name);
299
+ labels.push({ name: label.name, colour: String(label.color ?? "") });
230
300
  }
231
301
  if (response.data.length < PER_PAGE) {
232
- return { ok: true, names };
302
+ return { ok: true, labels };
233
303
  }
234
304
  page += 1;
235
305
  }
@@ -249,6 +319,34 @@ async function readLabels(github, repo, context) {
249
319
  }
250
320
  }
251
321
  }
322
+ async function recolourLabel(github, repo, wanted, context) {
323
+ const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
324
+ try {
325
+ await github.request("PATCH /repos/{owner}/{repo}/labels/{name}", {
326
+ owner: repo.owner,
327
+ repo: repo.name,
328
+ name: wanted.name,
329
+ color: wanted.colour,
330
+ request: { signal: call.signal },
331
+ });
332
+ return {
333
+ id: `label:${wanted.name}`,
334
+ summary: `recolour label ${wanted.name}`,
335
+ state: "applied",
336
+ };
337
+ }
338
+ catch (error) {
339
+ return {
340
+ id: `label:${wanted.name}`,
341
+ summary: `recolour label ${wanted.name}`,
342
+ state: "blocked",
343
+ detail: readFailure(error).detail,
344
+ };
345
+ }
346
+ finally {
347
+ call.release();
348
+ }
349
+ }
252
350
  async function createLabel(github, repo, wanted, context) {
253
351
  const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
254
352
  try {
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type EventName } from "@bluewombat/manager-kit";
2
+ /** The label each Event lands as on an issue. */
3
+ export type StateLabels = Readonly<Record<EventName, string>>;
4
+ export type StateLabelsResult = {
5
+ ok: true;
6
+ labels: StateLabels | undefined;
7
+ } | {
8
+ ok: false;
9
+ reason: string;
10
+ };
11
+ /**
12
+ * The label of every Event, from the `stateLabels` option.
13
+ *
14
+ * Absent, the Events leave no label. Present, it names every Event: an Event
15
+ * with no label would leave the previous one on the issue, and two Events
16
+ * cannot share one, or the issue could not tell them apart.
17
+ */
18
+ export declare function resolveStateLabels(named: Record<string, string> | undefined): StateLabelsResult;
19
+ /** The label of this Event, if it is one the state labels cover. */
20
+ export declare function stateLabelOf(labels: StateLabels, event: string): string | undefined;
21
+ /** Whether this label is one of the state labels, whatever the case. */
22
+ export declare function isStateLabel(labels: StateLabels, name: string): boolean;
23
+ //# sourceMappingURL=state-labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-labels.d.ts","sourceRoot":"","sources":["../src/state-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEtE,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,iBAAiB,CAoC/F;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAInF;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGvE"}
@@ -0,0 +1,55 @@
1
+ import { EVENT_NAMES } from "@bluewombat/manager-kit";
2
+ /**
3
+ * The label of every Event, from the `stateLabels` option.
4
+ *
5
+ * Absent, the Events leave no label. Present, it names every Event: an Event
6
+ * with no label would leave the previous one on the issue, and two Events
7
+ * cannot share one, or the issue could not tell them apart.
8
+ */
9
+ export function resolveStateLabels(named) {
10
+ if (named === undefined) {
11
+ return { ok: true, labels: undefined };
12
+ }
13
+ const known = new Set(EVENT_NAMES);
14
+ for (const key of Object.keys(named)) {
15
+ if (!known.has(key)) {
16
+ return {
17
+ ok: false,
18
+ reason: `"stateLabels" names "${key}", which is not an event (${EVENT_NAMES.join(", ")}).`,
19
+ };
20
+ }
21
+ }
22
+ const missing = EVENT_NAMES.filter((event) => named[event] === undefined);
23
+ if (missing.length > 0) {
24
+ return {
25
+ ok: false,
26
+ reason: `"stateLabels" must name every event; missing: ${missing.join(", ")}.`,
27
+ };
28
+ }
29
+ const labels = Object.fromEntries(EVENT_NAMES.map((event) => [event, named[event]]));
30
+ const owners = new Map();
31
+ for (const event of EVENT_NAMES) {
32
+ const key = labels[event].toLowerCase();
33
+ const other = owners.get(key);
34
+ if (other !== undefined) {
35
+ return {
36
+ ok: false,
37
+ reason: `"stateLabels" gives "${labels[event]}" to both ${other} and ${event}.`,
38
+ };
39
+ }
40
+ owners.set(key, event);
41
+ }
42
+ return { ok: true, labels };
43
+ }
44
+ /** The label of this Event, if it is one the state labels cover. */
45
+ export function stateLabelOf(labels, event) {
46
+ return EVENT_NAMES.includes(event)
47
+ ? labels[event]
48
+ : undefined;
49
+ }
50
+ /** Whether this label is one of the state labels, whatever the case. */
51
+ export function isStateLabel(labels, name) {
52
+ const wanted = name.toLowerCase();
53
+ return EVENT_NAMES.some((event) => labels[event].toLowerCase() === wanted);
54
+ }
55
+ //# sourceMappingURL=state-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-labels.js","sourceRoot":"","sources":["../src/state-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAStE;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyC;IAC1E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,WAAW,CAAC,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,wBAAwB,GAAG,6BAA6B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;aAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,iDAAiD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAC/E,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAW,CAAC,CAAC,CAC/B,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,wBAAwB,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ,KAAK,GAAG;aAChF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,KAAa;IAC7D,OAAQ,WAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvD,CAAC,CAAC,MAAM,CAAC,KAAkB,CAAC;QAC5B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,IAAY;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { LineResult, SettledResult } from "@bluewombat/manager-kit";
2
+ import { type SubmissionContext } from "./submission.js";
3
+ /**
4
+ * Cut a branch from another: the line a Feature's Tickets land on.
5
+ *
6
+ * A line that is already there is a success, so asking again after a restart
7
+ * does nothing. A refusal that will not change on a retry (the branch to cut
8
+ * from does not exist, the token cannot write) is a `refused`; anything else
9
+ * is `unavailable` and is tried again.
10
+ */
11
+ export declare function openLine(input: {
12
+ line: string;
13
+ from: string;
14
+ }, context: SubmissionContext): Promise<LineResult>;
15
+ /** Delete a line nobody will fold. Already gone, protected or unreachable: nothing more to do. */
16
+ export declare function dropLine(line: string, context: SubmissionContext): Promise<void>;
17
+ /** Where a pull request stands: merged by whoever merged it, closed without, or still open. */
18
+ export declare function settledPullRequest(reference: string, context: SubmissionContext): Promise<SettledResult>;
19
+ //# sourceMappingURL=lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/submission/lines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED,kGAAkG;AAClG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CActF;AAED,+FAA+F;AAC/F,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAsBxB"}
@@ -0,0 +1,91 @@
1
+ import { callSignal, readFailure } from "../github/client.js";
2
+ import { numberFromReference } from "./submission.js";
3
+ /**
4
+ * Cut a branch from another: the line a Feature's Tickets land on.
5
+ *
6
+ * A line that is already there is a success, so asking again after a restart
7
+ * does nothing. A refusal that will not change on a retry (the branch to cut
8
+ * from does not exist, the token cannot write) is a `refused`; anything else
9
+ * is `unavailable` and is tried again.
10
+ */
11
+ export async function openLine(input, context) {
12
+ const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
13
+ try {
14
+ const base = await context.github.request("GET /repos/{owner}/{repo}/git/ref/{ref}", {
15
+ owner: context.repo.owner,
16
+ repo: context.repo.name,
17
+ ref: `heads/${input.from}`,
18
+ request: { signal: call.signal },
19
+ });
20
+ try {
21
+ await context.github.request("POST /repos/{owner}/{repo}/git/refs", {
22
+ owner: context.repo.owner,
23
+ repo: context.repo.name,
24
+ ref: `refs/heads/${input.line}`,
25
+ sha: base.data.object.sha,
26
+ request: { signal: call.signal },
27
+ });
28
+ }
29
+ catch (error) {
30
+ // "Reference already exists": the line was cut by an earlier pass.
31
+ if (readFailure(error).status !== 422) {
32
+ throw error;
33
+ }
34
+ }
35
+ return { outcome: "opened" };
36
+ }
37
+ catch (error) {
38
+ const failure = readFailure(error);
39
+ return failure.permanent
40
+ ? { outcome: "refused", reason: failure.detail }
41
+ : { outcome: "unavailable" };
42
+ }
43
+ finally {
44
+ call.release();
45
+ }
46
+ }
47
+ /** Delete a line nobody will fold. Already gone, protected or unreachable: nothing more to do. */
48
+ export async function dropLine(line, context) {
49
+ const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
50
+ try {
51
+ await context.github.request("DELETE /repos/{owner}/{repo}/git/refs/{ref}", {
52
+ owner: context.repo.owner,
53
+ repo: context.repo.name,
54
+ ref: `heads/${line}`,
55
+ request: { signal: call.signal },
56
+ });
57
+ }
58
+ catch {
59
+ // The line is not worth a failure.
60
+ }
61
+ finally {
62
+ call.release();
63
+ }
64
+ }
65
+ /** Where a pull request stands: merged by whoever merged it, closed without, or still open. */
66
+ export async function settledPullRequest(reference, context) {
67
+ const number = numberFromReference(reference);
68
+ if (number === undefined) {
69
+ return "unavailable";
70
+ }
71
+ const call = callSignal(context.deadlineMs, context.now, context.shouldInterrupt);
72
+ try {
73
+ const pull = await context.github.request("GET /repos/{owner}/{repo}/pulls/{pull_number}", {
74
+ owner: context.repo.owner,
75
+ repo: context.repo.name,
76
+ pull_number: number,
77
+ request: { signal: call.signal },
78
+ });
79
+ if (pull.data.merged === true) {
80
+ return "folded";
81
+ }
82
+ return pull.data.state === "closed" ? "closed" : "open";
83
+ }
84
+ catch {
85
+ return "unavailable";
86
+ }
87
+ finally {
88
+ call.release();
89
+ }
90
+ }
91
+ //# sourceMappingURL=lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lines.js","sourceRoot":"","sources":["../../src/submission/lines.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { FoldResult, SubmissionRequest, SubmissionResult } from "@bluewombat/manager-kit";
1
+ import type { BehindResult, FoldResult, SubmissionRequest, SubmissionResult } from "@bluewombat/manager-kit";
2
2
  import { type GithubClient } from "../github/client.js";
3
3
  import type { Repository } from "../repo.js";
4
4
  /**
@@ -18,12 +18,22 @@ export type SubmissionContext = {
18
18
  deadlineMs: number;
19
19
  now: () => number;
20
20
  shouldInterrupt: () => boolean;
21
- /** Leave the feature branch on the remote after the fold. Default: delete it. */
21
+ /** Leave the ticket branch on the remote after the fold. Default: delete it. */
22
22
  keepBranch?: boolean | undefined;
23
23
  };
24
24
  export declare function referenceOf(repo: Repository, number: number): string;
25
25
  export declare function numberFromReference(reference: string): number | undefined;
26
26
  export declare function submitPullRequest(input: SubmissionRequest, context: SubmissionContext): Promise<SubmissionResult>;
27
+ /**
28
+ * Whether the line the pull request is offered to holds commits the pull
29
+ * request does not: it moved on since the work was last brought up to date with
30
+ * it. Asked right before a fold, because what the Gates judged is then not what
31
+ * a squash would put on the line.
32
+ *
33
+ * The line's tip is read as a commit, and the two are compared by commit: a
34
+ * branch name with a slash does not travel well in a compare address.
35
+ */
36
+ export declare function behindPullRequest(reference: string, context: SubmissionContext): Promise<BehindResult>;
27
37
  export declare function foldPullRequest(reference: string, context: SubmissionContext): Promise<FoldResult>;
28
38
  /** `commit_title` and `commit_message` for the squash, from what the pull request carries. */
29
39
  export declare function commitOf(pullTitle: string, pullBody: string): {
@@ -36,9 +46,9 @@ export declare function commitOf(pullTitle: string, pullBody: string): {
36
46
  */
37
47
  export declare function titleOf(input: Pick<SubmissionRequest, "key" | "title">): string;
38
48
  /**
39
- * What the pull request delivers, from what was asked and what was planned.
40
- * Nothing here is generated: the intention is the human's words, the steps are
41
- * the Plan's. `Closes #N` lets GitHub close the issue when this is merged.
49
+ * What the pull request delivers, from what was asked. Nothing here is
50
+ * generated: the intention is the human's words. `Closes #N` lets GitHub close
51
+ * the issue when this is merged.
42
52
  */
43
- export declare function bodyOf(input: Pick<SubmissionRequest, "key" | "title" | "intention" | "steps" | "description">): string;
53
+ export declare function bodyOf(input: Pick<SubmissionRequest, "key" | "title" | "intention" | "description">): string;
44
54
  //# sourceMappingURL=submission.d.ts.map