specweave 0.28.49 → 0.28.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli/helpers/init/config-detection.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/config-detection.js +11 -4
- package/dist/src/cli/helpers/init/config-detection.js.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/dist/src/cli/helpers/init/types.d.ts +9 -0
- package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/selection-strategy.d.ts +136 -0
- package/dist/src/cli/helpers/selection-strategy.d.ts.map +1 -0
- package/dist/src/cli/helpers/selection-strategy.js +684 -0
- package/dist/src/cli/helpers/selection-strategy.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-detection.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/config-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA2BzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA8BrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"config-detection.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/config-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA2BzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA8BrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAyEnE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAWA"}
|
|
@@ -104,15 +104,22 @@ export function detectADOConfig(targetDir) {
|
|
|
104
104
|
const profiles = config.sync?.profiles || {};
|
|
105
105
|
const adoProfile = Object.values(profiles).find((p) => p.provider === 'ado');
|
|
106
106
|
if (adoProfile?.config) {
|
|
107
|
-
const { organization, project, teams, areaPaths, strategy } = adoProfile.config;
|
|
108
|
-
|
|
107
|
+
const { organization, project, projects, teams, areaPaths, strategy } = adoProfile.config;
|
|
108
|
+
// Handle both single-project (project) and multi-project (projects) modes
|
|
109
|
+
// For multi-project, use first project as the "primary" for backwards compatibility
|
|
110
|
+
const primaryProject = project || (Array.isArray(projects) && projects.length > 0
|
|
111
|
+
? (projects[0]?.name || projects[0])
|
|
112
|
+
: null);
|
|
113
|
+
if (organization && primaryProject) {
|
|
109
114
|
return {
|
|
110
115
|
orgUrl: `https://dev.azure.com/${organization}`,
|
|
111
|
-
project,
|
|
116
|
+
project: primaryProject,
|
|
112
117
|
pat,
|
|
113
118
|
teams,
|
|
114
119
|
areaPaths,
|
|
115
|
-
strategy
|
|
120
|
+
strategy,
|
|
121
|
+
// Pass the full projects array for multi-project support
|
|
122
|
+
projects: Array.isArray(projects) ? projects : undefined
|
|
116
123
|
};
|
|
117
124
|
}
|
|
118
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-detection.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/config-detection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-detection.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/config-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE1D,gDAAgD;QAChD,2CAA2C;QAC3C,qCAAqC;QACrC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAE1F,MAAM,KAAK,GAAG,UAAU,IAAI,QAAQ,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAE5C,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAChE,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;YAEzC,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,IAAI,CAAC;QACH,+CAA+C;QAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAE9D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzC,GAAG,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;YACpD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,yBAAyB;QACxC,CAAC;QAED,oDAAoD;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEzC,wCAAwC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAC1B,CAAC;YAET,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;gBACvB,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;gBAE1F,0EAA0E;gBAC1E,oFAAoF;gBACpF,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC/E,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAEV,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;oBACnC,OAAO;wBACL,MAAM,EAAE,yBAAyB,YAAY,EAAE;wBAC/C,OAAO,EAAE,cAAc;wBACvB,GAAG;wBACH,KAAK;wBACL,SAAS;wBACT,QAAQ;wBACR,yDAAyD;wBACzD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;qBACzD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAE/E,IAAI,MAAM,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;YACpC,uEAAuE;YACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,MAAM,EAAE,CAAC;YACpG,OAAO;gBACL,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzD,GAAG;aACJ,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAMhD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,MAAM;QAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,IAAI;QAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG;QAAE,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-setup.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"repository-setup.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAoLD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsF5G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,14 @@ export interface JiraConfig {
|
|
|
46
46
|
email?: string;
|
|
47
47
|
apiToken?: string;
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Azure DevOps project configuration for multi-project mode
|
|
51
|
+
*/
|
|
52
|
+
export interface ADOProjectConfig {
|
|
53
|
+
name: string;
|
|
54
|
+
areaPaths?: string[];
|
|
55
|
+
isDefault?: boolean;
|
|
56
|
+
}
|
|
49
57
|
/**
|
|
50
58
|
* Azure DevOps configuration detection result
|
|
51
59
|
*/
|
|
@@ -56,6 +64,7 @@ export interface ADOConfig {
|
|
|
56
64
|
teams?: string[];
|
|
57
65
|
areaPaths?: string[];
|
|
58
66
|
strategy?: string;
|
|
67
|
+
projects?: ADOProjectConfig[];
|
|
59
68
|
}
|
|
60
69
|
/**
|
|
61
70
|
* Testing mode configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,OAAO,GACP,cAAc,GACd,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Selection Strategy Helper
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent selection UI across all platforms (GitHub, JIRA, Azure DevOps)
|
|
5
|
+
* for selecting repositories, projects, area paths, etc.
|
|
6
|
+
*
|
|
7
|
+
* Strategies:
|
|
8
|
+
* - all: Select everything
|
|
9
|
+
* - pattern-glob: Glob pattern matching (e.g., "sw-*", "*-backend")
|
|
10
|
+
* - pattern-regex: Regular expression matching (e.g., "^sw-.*$")
|
|
11
|
+
* - select-specific: Checkbox selection from list
|
|
12
|
+
* - manual-entry: Comma-separated text input
|
|
13
|
+
*
|
|
14
|
+
* Pattern Shortcuts:
|
|
15
|
+
* - "starts: prefix" → "prefix*"
|
|
16
|
+
* - "ends: suffix" → "*suffix"
|
|
17
|
+
* - "contains: text" → "*text*"
|
|
18
|
+
*
|
|
19
|
+
* @module cli/helpers/selection-strategy
|
|
20
|
+
*/
|
|
21
|
+
import type { SupportedLanguage } from '../../core/i18n/types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Selection strategy options
|
|
24
|
+
*/
|
|
25
|
+
export type SelectionStrategy = 'all' | 'pattern-glob' | 'pattern-regex' | 'select-specific' | 'manual-entry';
|
|
26
|
+
/**
|
|
27
|
+
* Generic selectable item interface
|
|
28
|
+
*/
|
|
29
|
+
export interface SelectableItem {
|
|
30
|
+
/** Display name for the item */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Unique identifier/value */
|
|
33
|
+
value: string;
|
|
34
|
+
/** Optional: full path or additional context */
|
|
35
|
+
path?: string;
|
|
36
|
+
/** Optional: additional metadata */
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Selection result
|
|
41
|
+
*/
|
|
42
|
+
export interface SelectionResult<T extends SelectableItem = SelectableItem> {
|
|
43
|
+
/** Selected strategy */
|
|
44
|
+
strategy: SelectionStrategy;
|
|
45
|
+
/** Selected items */
|
|
46
|
+
items: T[];
|
|
47
|
+
/** Pattern used (for pattern strategies) */
|
|
48
|
+
pattern?: string;
|
|
49
|
+
/** Whether selection was cancelled */
|
|
50
|
+
cancelled: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Options for the selection prompt
|
|
54
|
+
*/
|
|
55
|
+
export interface SelectionPromptOptions<T extends SelectableItem = SelectableItem> {
|
|
56
|
+
/** All available items to select from */
|
|
57
|
+
items: T[];
|
|
58
|
+
/** Type of items being selected (for display) */
|
|
59
|
+
itemType: 'repositories' | 'projects' | 'area paths' | 'boards' | 'items';
|
|
60
|
+
/** Optional: source/context name (e.g., org name, project name) */
|
|
61
|
+
sourceName?: string;
|
|
62
|
+
/** Language for i18n */
|
|
63
|
+
language?: SupportedLanguage;
|
|
64
|
+
/** Whether to show "All" option (default: true) */
|
|
65
|
+
showAllOption?: boolean;
|
|
66
|
+
/** Whether to show preview before confirmation (default: true) */
|
|
67
|
+
showPreview?: boolean;
|
|
68
|
+
/** Maximum items to show in preview (default: 20) */
|
|
69
|
+
previewLimit?: number;
|
|
70
|
+
/** Custom validator for manual entry */
|
|
71
|
+
manualEntryValidator?: (value: string) => boolean | string;
|
|
72
|
+
/** Whether to transform manual entry to uppercase (for JIRA keys) */
|
|
73
|
+
uppercaseManualEntry?: boolean;
|
|
74
|
+
/** Field to match patterns against (default: 'name') */
|
|
75
|
+
matchField?: keyof T;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parse pattern shortcuts into glob/regex patterns
|
|
79
|
+
*
|
|
80
|
+
* Shortcuts:
|
|
81
|
+
* - "starts: prefix" → "prefix*" (glob)
|
|
82
|
+
* - "ends: suffix" → "*suffix" (glob)
|
|
83
|
+
* - "contains: text" → "*text*" (glob)
|
|
84
|
+
* - Raw patterns are passed through as-is
|
|
85
|
+
*
|
|
86
|
+
* @param input - User input (may contain shortcuts)
|
|
87
|
+
* @returns Parsed pattern
|
|
88
|
+
*/
|
|
89
|
+
export declare function parsePatternShortcut(input: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Match items by glob pattern
|
|
92
|
+
*
|
|
93
|
+
* @param items - Items to filter
|
|
94
|
+
* @param pattern - Glob pattern (e.g., "sw-*", "*-backend")
|
|
95
|
+
* @param field - Field to match against (default: 'name')
|
|
96
|
+
* @returns Matching items
|
|
97
|
+
*/
|
|
98
|
+
export declare function matchByGlob<T extends SelectableItem>(items: T[], pattern: string, field?: keyof T): T[];
|
|
99
|
+
/**
|
|
100
|
+
* Match items by regular expression
|
|
101
|
+
*
|
|
102
|
+
* @param items - Items to filter
|
|
103
|
+
* @param pattern - Regex pattern (e.g., "^sw-.*$")
|
|
104
|
+
* @param field - Field to match against (default: 'name')
|
|
105
|
+
* @returns Object with matching items or error
|
|
106
|
+
*/
|
|
107
|
+
export declare function matchByRegex<T extends SelectableItem>(items: T[], pattern: string, field?: keyof T): {
|
|
108
|
+
items: T[];
|
|
109
|
+
error?: string;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Validate regex pattern
|
|
113
|
+
*
|
|
114
|
+
* @param pattern - Pattern to validate
|
|
115
|
+
* @returns True if valid, error message if invalid
|
|
116
|
+
*/
|
|
117
|
+
export declare function validateRegex(pattern: string): true | string;
|
|
118
|
+
/**
|
|
119
|
+
* Main selection prompt - unified across all platforms
|
|
120
|
+
*
|
|
121
|
+
* @param options - Selection options
|
|
122
|
+
* @returns Selection result
|
|
123
|
+
*/
|
|
124
|
+
export declare function promptSelection<T extends SelectableItem>(options: SelectionPromptOptions<T>): Promise<SelectionResult<T>>;
|
|
125
|
+
/**
|
|
126
|
+
* Convert array of strings to SelectableItem array
|
|
127
|
+
*/
|
|
128
|
+
export declare function toSelectableItems(items: string[]): SelectableItem[];
|
|
129
|
+
/**
|
|
130
|
+
* Convert array of objects with name/value to SelectableItem array
|
|
131
|
+
*/
|
|
132
|
+
export declare function toSelectableItemsFromObjects<T extends {
|
|
133
|
+
name: string;
|
|
134
|
+
[key: string]: unknown;
|
|
135
|
+
}>(items: T[], valueField?: keyof T): SelectableItem[];
|
|
136
|
+
//# sourceMappingURL=selection-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-strategy.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/selection-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,684 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Selection Strategy Helper
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent selection UI across all platforms (GitHub, JIRA, Azure DevOps)
|
|
5
|
+
* for selecting repositories, projects, area paths, etc.
|
|
6
|
+
*
|
|
7
|
+
* Strategies:
|
|
8
|
+
* - all: Select everything
|
|
9
|
+
* - pattern-glob: Glob pattern matching (e.g., "sw-*", "*-backend")
|
|
10
|
+
* - pattern-regex: Regular expression matching (e.g., "^sw-.*$")
|
|
11
|
+
* - select-specific: Checkbox selection from list
|
|
12
|
+
* - manual-entry: Comma-separated text input
|
|
13
|
+
*
|
|
14
|
+
* Pattern Shortcuts:
|
|
15
|
+
* - "starts: prefix" → "prefix*"
|
|
16
|
+
* - "ends: suffix" → "*suffix"
|
|
17
|
+
* - "contains: text" → "*text*"
|
|
18
|
+
*
|
|
19
|
+
* @module cli/helpers/selection-strategy
|
|
20
|
+
*/
|
|
21
|
+
import { select, input, checkbox, confirm } from '@inquirer/prompts';
|
|
22
|
+
import chalk from 'chalk';
|
|
23
|
+
import { minimatch } from 'minimatch';
|
|
24
|
+
function getSelectionStrings(language) {
|
|
25
|
+
const strings = {
|
|
26
|
+
en: {
|
|
27
|
+
header: 'Selection',
|
|
28
|
+
strategyQuestion: 'How do you want to select',
|
|
29
|
+
allOption: 'All',
|
|
30
|
+
allDescription: 'Import everything',
|
|
31
|
+
patternGlobOption: 'Pattern (glob)',
|
|
32
|
+
patternGlobDescription: 'Match by pattern (e.g., "sw-*", "*-backend")',
|
|
33
|
+
patternRegexOption: 'Pattern (regex)',
|
|
34
|
+
patternRegexDescription: 'Regular expression (e.g., "^sw-.*$")',
|
|
35
|
+
selectSpecificOption: 'Select specific',
|
|
36
|
+
selectSpecificDescription: 'Choose from list (checkbox)',
|
|
37
|
+
manualEntryOption: 'Manual entry',
|
|
38
|
+
manualEntryDescription: 'Enter names directly (comma-separated)',
|
|
39
|
+
patternPrompt: 'Enter pattern',
|
|
40
|
+
patternGlobHint: 'Examples: "sw-*", "*-backend", "api-*-service"',
|
|
41
|
+
patternRegexHint: 'Examples: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
42
|
+
patternShortcutsHint: 'Shortcuts: "starts: sw-", "ends: -api", "contains: core"',
|
|
43
|
+
manualEntryPrompt: 'Enter names (comma-separated)',
|
|
44
|
+
manualEntryHint: 'Example: "repo1, repo2, repo3"',
|
|
45
|
+
checkboxPrompt: 'Select items (space to toggle, enter to confirm)',
|
|
46
|
+
previewHeader: 'Preview',
|
|
47
|
+
previewMore: 'and {count} more',
|
|
48
|
+
confirmSelection: 'Confirm selection of {count} {itemType}?',
|
|
49
|
+
noMatches: 'No items match pattern "{pattern}"',
|
|
50
|
+
tryAgain: 'Try a different pattern?',
|
|
51
|
+
cancelled: 'Selection cancelled',
|
|
52
|
+
selected: 'Selected {count} {itemType}',
|
|
53
|
+
invalidPattern: 'Invalid pattern format',
|
|
54
|
+
invalidRegex: 'Invalid regular expression: {error}',
|
|
55
|
+
patternRequired: 'Pattern is required',
|
|
56
|
+
entryRequired: 'At least one entry is required',
|
|
57
|
+
available: 'Available',
|
|
58
|
+
source: 'Source',
|
|
59
|
+
},
|
|
60
|
+
ru: {
|
|
61
|
+
header: 'Выбор',
|
|
62
|
+
strategyQuestion: 'Как вы хотите выбрать',
|
|
63
|
+
allOption: 'Все',
|
|
64
|
+
allDescription: 'Импортировать всё',
|
|
65
|
+
patternGlobOption: 'Шаблон (glob)',
|
|
66
|
+
patternGlobDescription: 'Сопоставление по шаблону (напр., "sw-*", "*-backend")',
|
|
67
|
+
patternRegexOption: 'Шаблон (regex)',
|
|
68
|
+
patternRegexDescription: 'Регулярное выражение (напр., "^sw-.*$")',
|
|
69
|
+
selectSpecificOption: 'Выбрать конкретные',
|
|
70
|
+
selectSpecificDescription: 'Выбрать из списка (чекбоксы)',
|
|
71
|
+
manualEntryOption: 'Ручной ввод',
|
|
72
|
+
manualEntryDescription: 'Ввести имена напрямую (через запятую)',
|
|
73
|
+
patternPrompt: 'Введите шаблон',
|
|
74
|
+
patternGlobHint: 'Примеры: "sw-*", "*-backend", "api-*-service"',
|
|
75
|
+
patternRegexHint: 'Примеры: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
76
|
+
patternShortcutsHint: 'Сокращения: "starts: sw-", "ends: -api", "contains: core"',
|
|
77
|
+
manualEntryPrompt: 'Введите имена (через запятую)',
|
|
78
|
+
manualEntryHint: 'Пример: "repo1, repo2, repo3"',
|
|
79
|
+
checkboxPrompt: 'Выберите элементы (пробел - переключить, enter - подтвердить)',
|
|
80
|
+
previewHeader: 'Предпросмотр',
|
|
81
|
+
previewMore: 'и ещё {count}',
|
|
82
|
+
confirmSelection: 'Подтвердить выбор {count} {itemType}?',
|
|
83
|
+
noMatches: 'Нет элементов, соответствующих шаблону "{pattern}"',
|
|
84
|
+
tryAgain: 'Попробовать другой шаблон?',
|
|
85
|
+
cancelled: 'Выбор отменён',
|
|
86
|
+
selected: 'Выбрано {count} {itemType}',
|
|
87
|
+
invalidPattern: 'Неверный формат шаблона',
|
|
88
|
+
invalidRegex: 'Неверное регулярное выражение: {error}',
|
|
89
|
+
patternRequired: 'Шаблон обязателен',
|
|
90
|
+
entryRequired: 'Требуется хотя бы одна запись',
|
|
91
|
+
available: 'Доступно',
|
|
92
|
+
source: 'Источник',
|
|
93
|
+
},
|
|
94
|
+
es: {
|
|
95
|
+
header: 'Selección',
|
|
96
|
+
strategyQuestion: 'Cómo desea seleccionar',
|
|
97
|
+
allOption: 'Todos',
|
|
98
|
+
allDescription: 'Importar todo',
|
|
99
|
+
patternGlobOption: 'Patrón (glob)',
|
|
100
|
+
patternGlobDescription: 'Coincidir por patrón (ej., "sw-*", "*-backend")',
|
|
101
|
+
patternRegexOption: 'Patrón (regex)',
|
|
102
|
+
patternRegexDescription: 'Expresión regular (ej., "^sw-.*$")',
|
|
103
|
+
selectSpecificOption: 'Seleccionar específicos',
|
|
104
|
+
selectSpecificDescription: 'Elegir de lista (casillas)',
|
|
105
|
+
manualEntryOption: 'Entrada manual',
|
|
106
|
+
manualEntryDescription: 'Ingresar nombres directamente (separados por coma)',
|
|
107
|
+
patternPrompt: 'Ingrese patrón',
|
|
108
|
+
patternGlobHint: 'Ejemplos: "sw-*", "*-backend", "api-*-service"',
|
|
109
|
+
patternRegexHint: 'Ejemplos: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
110
|
+
patternShortcutsHint: 'Atajos: "starts: sw-", "ends: -api", "contains: core"',
|
|
111
|
+
manualEntryPrompt: 'Ingrese nombres (separados por coma)',
|
|
112
|
+
manualEntryHint: 'Ejemplo: "repo1, repo2, repo3"',
|
|
113
|
+
checkboxPrompt: 'Seleccione elementos (espacio para alternar, enter para confirmar)',
|
|
114
|
+
previewHeader: 'Vista previa',
|
|
115
|
+
previewMore: 'y {count} más',
|
|
116
|
+
confirmSelection: '¿Confirmar selección de {count} {itemType}?',
|
|
117
|
+
noMatches: 'Ningún elemento coincide con el patrón "{pattern}"',
|
|
118
|
+
tryAgain: '¿Intentar con otro patrón?',
|
|
119
|
+
cancelled: 'Selección cancelada',
|
|
120
|
+
selected: 'Seleccionado {count} {itemType}',
|
|
121
|
+
invalidPattern: 'Formato de patrón inválido',
|
|
122
|
+
invalidRegex: 'Expresión regular inválida: {error}',
|
|
123
|
+
patternRequired: 'El patrón es requerido',
|
|
124
|
+
entryRequired: 'Se requiere al menos una entrada',
|
|
125
|
+
available: 'Disponible',
|
|
126
|
+
source: 'Fuente',
|
|
127
|
+
},
|
|
128
|
+
zh: {
|
|
129
|
+
header: '选择',
|
|
130
|
+
strategyQuestion: '您想如何选择',
|
|
131
|
+
allOption: '全部',
|
|
132
|
+
allDescription: '导入所有内容',
|
|
133
|
+
patternGlobOption: '模式 (glob)',
|
|
134
|
+
patternGlobDescription: '按模式匹配(例如 "sw-*"、"*-backend")',
|
|
135
|
+
patternRegexOption: '模式 (正则)',
|
|
136
|
+
patternRegexDescription: '正则表达式(例如 "^sw-.*$")',
|
|
137
|
+
selectSpecificOption: '选择特定项',
|
|
138
|
+
selectSpecificDescription: '从列表中选择(复选框)',
|
|
139
|
+
manualEntryOption: '手动输入',
|
|
140
|
+
manualEntryDescription: '直接输入名称(逗号分隔)',
|
|
141
|
+
patternPrompt: '输入模式',
|
|
142
|
+
patternGlobHint: '示例:"sw-*"、"*-backend"、"api-*-service"',
|
|
143
|
+
patternRegexHint: '示例:"^sw-"、".*-backend$"、"^api-\\d+-service$"',
|
|
144
|
+
patternShortcutsHint: '快捷方式:"starts: sw-"、"ends: -api"、"contains: core"',
|
|
145
|
+
manualEntryPrompt: '输入名称(逗号分隔)',
|
|
146
|
+
manualEntryHint: '示例:"repo1, repo2, repo3"',
|
|
147
|
+
checkboxPrompt: '选择项目(空格切换,回车确认)',
|
|
148
|
+
previewHeader: '预览',
|
|
149
|
+
previewMore: '还有 {count} 个',
|
|
150
|
+
confirmSelection: '确认选择 {count} 个{itemType}?',
|
|
151
|
+
noMatches: '没有项目匹配模式 "{pattern}"',
|
|
152
|
+
tryAgain: '尝试其他模式?',
|
|
153
|
+
cancelled: '选择已取消',
|
|
154
|
+
selected: '已选择 {count} 个{itemType}',
|
|
155
|
+
invalidPattern: '无效的模式格式',
|
|
156
|
+
invalidRegex: '无效的正则表达式:{error}',
|
|
157
|
+
patternRequired: '模式是必需的',
|
|
158
|
+
entryRequired: '至少需要一个条目',
|
|
159
|
+
available: '可用',
|
|
160
|
+
source: '来源',
|
|
161
|
+
},
|
|
162
|
+
de: {
|
|
163
|
+
header: 'Auswahl',
|
|
164
|
+
strategyQuestion: 'Wie möchten Sie auswählen',
|
|
165
|
+
allOption: 'Alle',
|
|
166
|
+
allDescription: 'Alles importieren',
|
|
167
|
+
patternGlobOption: 'Muster (glob)',
|
|
168
|
+
patternGlobDescription: 'Nach Muster filtern (z.B. "sw-*", "*-backend")',
|
|
169
|
+
patternRegexOption: 'Muster (regex)',
|
|
170
|
+
patternRegexDescription: 'Regulärer Ausdruck (z.B. "^sw-.*$")',
|
|
171
|
+
selectSpecificOption: 'Spezifische auswählen',
|
|
172
|
+
selectSpecificDescription: 'Aus Liste wählen (Kontrollkästchen)',
|
|
173
|
+
manualEntryOption: 'Manuelle Eingabe',
|
|
174
|
+
manualEntryDescription: 'Namen direkt eingeben (kommagetrennt)',
|
|
175
|
+
patternPrompt: 'Muster eingeben',
|
|
176
|
+
patternGlobHint: 'Beispiele: "sw-*", "*-backend", "api-*-service"',
|
|
177
|
+
patternRegexHint: 'Beispiele: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
178
|
+
patternShortcutsHint: 'Abkürzungen: "starts: sw-", "ends: -api", "contains: core"',
|
|
179
|
+
manualEntryPrompt: 'Namen eingeben (kommagetrennt)',
|
|
180
|
+
manualEntryHint: 'Beispiel: "repo1, repo2, repo3"',
|
|
181
|
+
checkboxPrompt: 'Elemente auswählen (Leertaste zum Umschalten, Enter zum Bestätigen)',
|
|
182
|
+
previewHeader: 'Vorschau',
|
|
183
|
+
previewMore: 'und {count} weitere',
|
|
184
|
+
confirmSelection: 'Auswahl von {count} {itemType} bestätigen?',
|
|
185
|
+
noMatches: 'Keine Elemente entsprechen dem Muster "{pattern}"',
|
|
186
|
+
tryAgain: 'Anderes Muster versuchen?',
|
|
187
|
+
cancelled: 'Auswahl abgebrochen',
|
|
188
|
+
selected: '{count} {itemType} ausgewählt',
|
|
189
|
+
invalidPattern: 'Ungültiges Musterformat',
|
|
190
|
+
invalidRegex: 'Ungültiger regulärer Ausdruck: {error}',
|
|
191
|
+
patternRequired: 'Muster ist erforderlich',
|
|
192
|
+
entryRequired: 'Mindestens ein Eintrag ist erforderlich',
|
|
193
|
+
available: 'Verfügbar',
|
|
194
|
+
source: 'Quelle',
|
|
195
|
+
},
|
|
196
|
+
fr: {
|
|
197
|
+
header: 'Sélection',
|
|
198
|
+
strategyQuestion: 'Comment voulez-vous sélectionner',
|
|
199
|
+
allOption: 'Tous',
|
|
200
|
+
allDescription: 'Tout importer',
|
|
201
|
+
patternGlobOption: 'Modèle (glob)',
|
|
202
|
+
patternGlobDescription: 'Correspondance par modèle (ex., "sw-*", "*-backend")',
|
|
203
|
+
patternRegexOption: 'Modèle (regex)',
|
|
204
|
+
patternRegexDescription: 'Expression régulière (ex., "^sw-.*$")',
|
|
205
|
+
selectSpecificOption: 'Sélection spécifique',
|
|
206
|
+
selectSpecificDescription: 'Choisir dans la liste (cases à cocher)',
|
|
207
|
+
manualEntryOption: 'Entrée manuelle',
|
|
208
|
+
manualEntryDescription: 'Entrer les noms directement (séparés par virgule)',
|
|
209
|
+
patternPrompt: 'Entrez le modèle',
|
|
210
|
+
patternGlobHint: 'Exemples: "sw-*", "*-backend", "api-*-service"',
|
|
211
|
+
patternRegexHint: 'Exemples: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
212
|
+
patternShortcutsHint: 'Raccourcis: "starts: sw-", "ends: -api", "contains: core"',
|
|
213
|
+
manualEntryPrompt: 'Entrez les noms (séparés par virgule)',
|
|
214
|
+
manualEntryHint: 'Exemple: "repo1, repo2, repo3"',
|
|
215
|
+
checkboxPrompt: 'Sélectionnez les éléments (espace pour basculer, entrée pour confirmer)',
|
|
216
|
+
previewHeader: 'Aperçu',
|
|
217
|
+
previewMore: 'et {count} de plus',
|
|
218
|
+
confirmSelection: 'Confirmer la sélection de {count} {itemType}?',
|
|
219
|
+
noMatches: 'Aucun élément ne correspond au modèle "{pattern}"',
|
|
220
|
+
tryAgain: 'Essayer un autre modèle?',
|
|
221
|
+
cancelled: 'Sélection annulée',
|
|
222
|
+
selected: '{count} {itemType} sélectionné(s)',
|
|
223
|
+
invalidPattern: 'Format de modèle invalide',
|
|
224
|
+
invalidRegex: 'Expression régulière invalide: {error}',
|
|
225
|
+
patternRequired: 'Le modèle est requis',
|
|
226
|
+
entryRequired: 'Au moins une entrée est requise',
|
|
227
|
+
available: 'Disponible',
|
|
228
|
+
source: 'Source',
|
|
229
|
+
},
|
|
230
|
+
ja: {
|
|
231
|
+
header: '選択',
|
|
232
|
+
strategyQuestion: '選択方法を選んでください',
|
|
233
|
+
allOption: 'すべて',
|
|
234
|
+
allDescription: 'すべてインポート',
|
|
235
|
+
patternGlobOption: 'パターン (glob)',
|
|
236
|
+
patternGlobDescription: 'パターンでマッチ(例: "sw-*", "*-backend")',
|
|
237
|
+
patternRegexOption: 'パターン (正規表現)',
|
|
238
|
+
patternRegexDescription: '正規表現(例: "^sw-.*$")',
|
|
239
|
+
selectSpecificOption: '特定を選択',
|
|
240
|
+
selectSpecificDescription: 'リストから選択(チェックボックス)',
|
|
241
|
+
manualEntryOption: '手動入力',
|
|
242
|
+
manualEntryDescription: '名前を直接入力(カンマ区切り)',
|
|
243
|
+
patternPrompt: 'パターンを入力',
|
|
244
|
+
patternGlobHint: '例: "sw-*", "*-backend", "api-*-service"',
|
|
245
|
+
patternRegexHint: '例: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
246
|
+
patternShortcutsHint: 'ショートカット: "starts: sw-", "ends: -api", "contains: core"',
|
|
247
|
+
manualEntryPrompt: '名前を入力(カンマ区切り)',
|
|
248
|
+
manualEntryHint: '例: "repo1, repo2, repo3"',
|
|
249
|
+
checkboxPrompt: '項目を選択(スペースで切替、Enterで確認)',
|
|
250
|
+
previewHeader: 'プレビュー',
|
|
251
|
+
previewMore: '他 {count} 件',
|
|
252
|
+
confirmSelection: '{count} 件の{itemType}の選択を確認しますか?',
|
|
253
|
+
noMatches: 'パターン "{pattern}" に一致する項目がありません',
|
|
254
|
+
tryAgain: '別のパターンを試しますか?',
|
|
255
|
+
cancelled: '選択がキャンセルされました',
|
|
256
|
+
selected: '{count} 件の{itemType}を選択しました',
|
|
257
|
+
invalidPattern: '無効なパターン形式',
|
|
258
|
+
invalidRegex: '無効な正規表現: {error}',
|
|
259
|
+
patternRequired: 'パターンは必須です',
|
|
260
|
+
entryRequired: '少なくとも1つのエントリが必要です',
|
|
261
|
+
available: '利用可能',
|
|
262
|
+
source: 'ソース',
|
|
263
|
+
},
|
|
264
|
+
ko: {
|
|
265
|
+
header: '선택',
|
|
266
|
+
strategyQuestion: '선택 방법을 고르세요',
|
|
267
|
+
allOption: '모두',
|
|
268
|
+
allDescription: '모두 가져오기',
|
|
269
|
+
patternGlobOption: '패턴 (glob)',
|
|
270
|
+
patternGlobDescription: '패턴으로 매칭 (예: "sw-*", "*-backend")',
|
|
271
|
+
patternRegexOption: '패턴 (정규식)',
|
|
272
|
+
patternRegexDescription: '정규 표현식 (예: "^sw-.*$")',
|
|
273
|
+
selectSpecificOption: '특정 항목 선택',
|
|
274
|
+
selectSpecificDescription: '목록에서 선택 (체크박스)',
|
|
275
|
+
manualEntryOption: '수동 입력',
|
|
276
|
+
manualEntryDescription: '이름 직접 입력 (쉼표로 구분)',
|
|
277
|
+
patternPrompt: '패턴 입력',
|
|
278
|
+
patternGlobHint: '예: "sw-*", "*-backend", "api-*-service"',
|
|
279
|
+
patternRegexHint: '예: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
280
|
+
patternShortcutsHint: '단축키: "starts: sw-", "ends: -api", "contains: core"',
|
|
281
|
+
manualEntryPrompt: '이름 입력 (쉼표로 구분)',
|
|
282
|
+
manualEntryHint: '예: "repo1, repo2, repo3"',
|
|
283
|
+
checkboxPrompt: '항목 선택 (스페이스로 전환, Enter로 확인)',
|
|
284
|
+
previewHeader: '미리보기',
|
|
285
|
+
previewMore: '외 {count}개',
|
|
286
|
+
confirmSelection: '{count}개의 {itemType} 선택을 확인하시겠습니까?',
|
|
287
|
+
noMatches: '패턴 "{pattern}"과 일치하는 항목이 없습니다',
|
|
288
|
+
tryAgain: '다른 패턴을 시도하시겠습니까?',
|
|
289
|
+
cancelled: '선택이 취소되었습니다',
|
|
290
|
+
selected: '{count}개의 {itemType} 선택됨',
|
|
291
|
+
invalidPattern: '잘못된 패턴 형식',
|
|
292
|
+
invalidRegex: '잘못된 정규 표현식: {error}',
|
|
293
|
+
patternRequired: '패턴이 필요합니다',
|
|
294
|
+
entryRequired: '최소 하나의 항목이 필요합니다',
|
|
295
|
+
available: '사용 가능',
|
|
296
|
+
source: '소스',
|
|
297
|
+
},
|
|
298
|
+
pt: {
|
|
299
|
+
header: 'Seleção',
|
|
300
|
+
strategyQuestion: 'Como você quer selecionar',
|
|
301
|
+
allOption: 'Todos',
|
|
302
|
+
allDescription: 'Importar tudo',
|
|
303
|
+
patternGlobOption: 'Padrão (glob)',
|
|
304
|
+
patternGlobDescription: 'Corresponder por padrão (ex., "sw-*", "*-backend")',
|
|
305
|
+
patternRegexOption: 'Padrão (regex)',
|
|
306
|
+
patternRegexDescription: 'Expressão regular (ex., "^sw-.*$")',
|
|
307
|
+
selectSpecificOption: 'Selecionar específicos',
|
|
308
|
+
selectSpecificDescription: 'Escolher da lista (caixas de seleção)',
|
|
309
|
+
manualEntryOption: 'Entrada manual',
|
|
310
|
+
manualEntryDescription: 'Digitar nomes diretamente (separados por vírgula)',
|
|
311
|
+
patternPrompt: 'Digite o padrão',
|
|
312
|
+
patternGlobHint: 'Exemplos: "sw-*", "*-backend", "api-*-service"',
|
|
313
|
+
patternRegexHint: 'Exemplos: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
314
|
+
patternShortcutsHint: 'Atalhos: "starts: sw-", "ends: -api", "contains: core"',
|
|
315
|
+
manualEntryPrompt: 'Digite os nomes (separados por vírgula)',
|
|
316
|
+
manualEntryHint: 'Exemplo: "repo1, repo2, repo3"',
|
|
317
|
+
checkboxPrompt: 'Selecione itens (espaço para alternar, enter para confirmar)',
|
|
318
|
+
previewHeader: 'Visualização',
|
|
319
|
+
previewMore: 'e mais {count}',
|
|
320
|
+
confirmSelection: 'Confirmar seleção de {count} {itemType}?',
|
|
321
|
+
noMatches: 'Nenhum item corresponde ao padrão "{pattern}"',
|
|
322
|
+
tryAgain: 'Tentar outro padrão?',
|
|
323
|
+
cancelled: 'Seleção cancelada',
|
|
324
|
+
selected: '{count} {itemType} selecionado(s)',
|
|
325
|
+
invalidPattern: 'Formato de padrão inválido',
|
|
326
|
+
invalidRegex: 'Expressão regular inválida: {error}',
|
|
327
|
+
patternRequired: 'Padrão é obrigatório',
|
|
328
|
+
entryRequired: 'Pelo menos uma entrada é necessária',
|
|
329
|
+
available: 'Disponível',
|
|
330
|
+
source: 'Fonte',
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
return strings[language] || strings.en;
|
|
334
|
+
}
|
|
335
|
+
// ============================================================================
|
|
336
|
+
// Pattern Utilities
|
|
337
|
+
// ============================================================================
|
|
338
|
+
/**
|
|
339
|
+
* Parse pattern shortcuts into glob/regex patterns
|
|
340
|
+
*
|
|
341
|
+
* Shortcuts:
|
|
342
|
+
* - "starts: prefix" → "prefix*" (glob)
|
|
343
|
+
* - "ends: suffix" → "*suffix" (glob)
|
|
344
|
+
* - "contains: text" → "*text*" (glob)
|
|
345
|
+
* - Raw patterns are passed through as-is
|
|
346
|
+
*
|
|
347
|
+
* @param input - User input (may contain shortcuts)
|
|
348
|
+
* @returns Parsed pattern
|
|
349
|
+
*/
|
|
350
|
+
export function parsePatternShortcut(input) {
|
|
351
|
+
const trimmed = input.trim();
|
|
352
|
+
// Check for shortcuts (case-insensitive)
|
|
353
|
+
const startsMatch = trimmed.match(/^starts?:\s*(.+)$/i);
|
|
354
|
+
if (startsMatch) {
|
|
355
|
+
return `${startsMatch[1].trim()}*`;
|
|
356
|
+
}
|
|
357
|
+
const endsMatch = trimmed.match(/^ends?:\s*(.+)$/i);
|
|
358
|
+
if (endsMatch) {
|
|
359
|
+
return `*${endsMatch[1].trim()}`;
|
|
360
|
+
}
|
|
361
|
+
const containsMatch = trimmed.match(/^contains?:\s*(.+)$/i);
|
|
362
|
+
if (containsMatch) {
|
|
363
|
+
return `*${containsMatch[1].trim()}*`;
|
|
364
|
+
}
|
|
365
|
+
// No shortcut, return as-is
|
|
366
|
+
return trimmed;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Match items by glob pattern
|
|
370
|
+
*
|
|
371
|
+
* @param items - Items to filter
|
|
372
|
+
* @param pattern - Glob pattern (e.g., "sw-*", "*-backend")
|
|
373
|
+
* @param field - Field to match against (default: 'name')
|
|
374
|
+
* @returns Matching items
|
|
375
|
+
*/
|
|
376
|
+
export function matchByGlob(items, pattern, field = 'name') {
|
|
377
|
+
const parsedPattern = parsePatternShortcut(pattern);
|
|
378
|
+
return items.filter(item => {
|
|
379
|
+
const value = String(item[field] || '');
|
|
380
|
+
return minimatch(value, parsedPattern, { nocase: true });
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Match items by regular expression
|
|
385
|
+
*
|
|
386
|
+
* @param items - Items to filter
|
|
387
|
+
* @param pattern - Regex pattern (e.g., "^sw-.*$")
|
|
388
|
+
* @param field - Field to match against (default: 'name')
|
|
389
|
+
* @returns Object with matching items or error
|
|
390
|
+
*/
|
|
391
|
+
export function matchByRegex(items, pattern, field = 'name') {
|
|
392
|
+
try {
|
|
393
|
+
const regex = new RegExp(pattern, 'i'); // Case-insensitive
|
|
394
|
+
const matched = items.filter(item => {
|
|
395
|
+
const value = String(item[field] || '');
|
|
396
|
+
return regex.test(value);
|
|
397
|
+
});
|
|
398
|
+
return { items: matched };
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
return {
|
|
402
|
+
items: [],
|
|
403
|
+
error: error instanceof Error ? error.message : String(error),
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Validate regex pattern
|
|
409
|
+
*
|
|
410
|
+
* @param pattern - Pattern to validate
|
|
411
|
+
* @returns True if valid, error message if invalid
|
|
412
|
+
*/
|
|
413
|
+
export function validateRegex(pattern) {
|
|
414
|
+
try {
|
|
415
|
+
new RegExp(pattern);
|
|
416
|
+
return true;
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
return error instanceof Error ? error.message : 'Invalid regex';
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// ============================================================================
|
|
423
|
+
// Preview & Display
|
|
424
|
+
// ============================================================================
|
|
425
|
+
/**
|
|
426
|
+
* Show selection preview table
|
|
427
|
+
*
|
|
428
|
+
* @param items - Items to preview
|
|
429
|
+
* @param strings - I18n strings
|
|
430
|
+
* @param limit - Maximum items to show
|
|
431
|
+
*/
|
|
432
|
+
function showPreview(items, strings, limit = 20) {
|
|
433
|
+
console.log(chalk.blue(`\n📋 ${strings.previewHeader}:\n`));
|
|
434
|
+
const header = `${chalk.bold('Name')}${' '.repeat(45)}${chalk.bold('Value/Path')}`;
|
|
435
|
+
console.log(header);
|
|
436
|
+
console.log('-'.repeat(80));
|
|
437
|
+
items.slice(0, limit).forEach(item => {
|
|
438
|
+
const name = (item.name.length > 45
|
|
439
|
+
? item.name.slice(0, 42) + '...'
|
|
440
|
+
: item.name).padEnd(50);
|
|
441
|
+
const value = item.path || item.value;
|
|
442
|
+
console.log(`${name}${value}`);
|
|
443
|
+
});
|
|
444
|
+
if (items.length > limit) {
|
|
445
|
+
const moreText = strings.previewMore.replace('{count}', String(items.length - limit));
|
|
446
|
+
console.log(chalk.gray(`\n... ${moreText}\n`));
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
console.log('');
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
// ============================================================================
|
|
453
|
+
// Main Selection Prompt
|
|
454
|
+
// ============================================================================
|
|
455
|
+
/**
|
|
456
|
+
* Main selection prompt - unified across all platforms
|
|
457
|
+
*
|
|
458
|
+
* @param options - Selection options
|
|
459
|
+
* @returns Selection result
|
|
460
|
+
*/
|
|
461
|
+
export async function promptSelection(options) {
|
|
462
|
+
const { items, itemType, sourceName, language = 'en', showAllOption = true, showPreview: shouldShowPreview = true, previewLimit = 20, manualEntryValidator, uppercaseManualEntry = false, matchField = 'name', } = options;
|
|
463
|
+
const strings = getSelectionStrings(language);
|
|
464
|
+
// Header
|
|
465
|
+
console.log(chalk.blue(`\n🔗 ${strings.header}\n`));
|
|
466
|
+
if (sourceName) {
|
|
467
|
+
console.log(chalk.gray(` ${strings.source}: ${sourceName}`));
|
|
468
|
+
}
|
|
469
|
+
console.log(chalk.gray(` ${strings.available}: ${items.length} ${itemType}\n`));
|
|
470
|
+
if (items.length === 0) {
|
|
471
|
+
console.log(chalk.yellow(`⚠️ No ${itemType} found.\n`));
|
|
472
|
+
return { strategy: 'all', items: [], cancelled: true };
|
|
473
|
+
}
|
|
474
|
+
// Build strategy choices
|
|
475
|
+
const strategyChoices = [];
|
|
476
|
+
if (showAllOption) {
|
|
477
|
+
strategyChoices.push({
|
|
478
|
+
name: `${chalk.green('✓')} ${strings.allOption} ${chalk.gray(`- ${strings.allDescription}`)}`,
|
|
479
|
+
value: 'all',
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
strategyChoices.push({
|
|
483
|
+
name: `${strings.patternGlobOption} ${chalk.gray(`- ${strings.patternGlobDescription}`)}`,
|
|
484
|
+
value: 'pattern-glob',
|
|
485
|
+
}, {
|
|
486
|
+
name: `${strings.patternRegexOption} ${chalk.gray(`- ${strings.patternRegexDescription}`)}`,
|
|
487
|
+
value: 'pattern-regex',
|
|
488
|
+
}, {
|
|
489
|
+
name: `${strings.selectSpecificOption} ${chalk.gray(`- ${strings.selectSpecificDescription}`)}`,
|
|
490
|
+
value: 'select-specific',
|
|
491
|
+
}, {
|
|
492
|
+
name: `${strings.manualEntryOption} ${chalk.gray(`- ${strings.manualEntryDescription}`)}`,
|
|
493
|
+
value: 'manual-entry',
|
|
494
|
+
});
|
|
495
|
+
// Prompt for strategy
|
|
496
|
+
const strategy = await select({
|
|
497
|
+
message: `${strings.strategyQuestion} ${itemType}?`,
|
|
498
|
+
choices: strategyChoices,
|
|
499
|
+
default: showAllOption ? 'all' : 'pattern-glob',
|
|
500
|
+
});
|
|
501
|
+
let selectedItems = [];
|
|
502
|
+
let pattern;
|
|
503
|
+
// Execute strategy
|
|
504
|
+
switch (strategy) {
|
|
505
|
+
case 'all': {
|
|
506
|
+
selectedItems = [...items];
|
|
507
|
+
break;
|
|
508
|
+
}
|
|
509
|
+
case 'pattern-glob': {
|
|
510
|
+
// Show example items for context
|
|
511
|
+
const exampleNames = items.slice(0, 3).map(i => i.name);
|
|
512
|
+
const exampleHint = exampleNames.length > 0
|
|
513
|
+
? ` (examples: ${exampleNames.join(', ')}...)`
|
|
514
|
+
: '';
|
|
515
|
+
console.log(chalk.gray(`\n💡 ${strings.patternGlobHint}`));
|
|
516
|
+
console.log(chalk.gray(` ${strings.patternShortcutsHint}\n`));
|
|
517
|
+
pattern = await input({
|
|
518
|
+
message: `${strings.patternPrompt}${exampleHint}:`,
|
|
519
|
+
validate: (value) => {
|
|
520
|
+
if (!value.trim())
|
|
521
|
+
return strings.patternRequired;
|
|
522
|
+
return true;
|
|
523
|
+
},
|
|
524
|
+
});
|
|
525
|
+
selectedItems = matchByGlob(items, pattern.trim(), matchField);
|
|
526
|
+
if (selectedItems.length === 0) {
|
|
527
|
+
console.log(chalk.yellow(`\n⚠️ ${strings.noMatches.replace('{pattern}', pattern)}\n`));
|
|
528
|
+
const retry = await confirm({
|
|
529
|
+
message: strings.tryAgain,
|
|
530
|
+
default: true,
|
|
531
|
+
});
|
|
532
|
+
if (retry) {
|
|
533
|
+
return promptSelection(options); // Recursive retry
|
|
534
|
+
}
|
|
535
|
+
return { strategy, items: [], pattern, cancelled: true };
|
|
536
|
+
}
|
|
537
|
+
break;
|
|
538
|
+
}
|
|
539
|
+
case 'pattern-regex': {
|
|
540
|
+
console.log(chalk.gray(`\n💡 ${strings.patternRegexHint}\n`));
|
|
541
|
+
pattern = await input({
|
|
542
|
+
message: `${strings.patternPrompt}:`,
|
|
543
|
+
validate: (value) => {
|
|
544
|
+
if (!value.trim())
|
|
545
|
+
return strings.patternRequired;
|
|
546
|
+
const validation = validateRegex(value.trim());
|
|
547
|
+
if (validation !== true) {
|
|
548
|
+
return strings.invalidRegex.replace('{error}', validation);
|
|
549
|
+
}
|
|
550
|
+
return true;
|
|
551
|
+
},
|
|
552
|
+
});
|
|
553
|
+
const regexResult = matchByRegex(items, pattern.trim(), matchField);
|
|
554
|
+
if (regexResult.error) {
|
|
555
|
+
console.log(chalk.red(`\n❌ ${strings.invalidRegex.replace('{error}', regexResult.error)}\n`));
|
|
556
|
+
return { strategy, items: [], pattern, cancelled: true };
|
|
557
|
+
}
|
|
558
|
+
selectedItems = regexResult.items;
|
|
559
|
+
if (selectedItems.length === 0) {
|
|
560
|
+
console.log(chalk.yellow(`\n⚠️ ${strings.noMatches.replace('{pattern}', pattern)}\n`));
|
|
561
|
+
const retry = await confirm({
|
|
562
|
+
message: strings.tryAgain,
|
|
563
|
+
default: true,
|
|
564
|
+
});
|
|
565
|
+
if (retry) {
|
|
566
|
+
return promptSelection(options); // Recursive retry
|
|
567
|
+
}
|
|
568
|
+
return { strategy, items: [], pattern, cancelled: true };
|
|
569
|
+
}
|
|
570
|
+
break;
|
|
571
|
+
}
|
|
572
|
+
case 'select-specific': {
|
|
573
|
+
const checkboxChoices = items.map(item => ({
|
|
574
|
+
name: item.path ? `${item.name} ${chalk.gray(`(${item.path})`)}` : item.name,
|
|
575
|
+
value: item,
|
|
576
|
+
checked: false, // User explicitly selects
|
|
577
|
+
}));
|
|
578
|
+
selectedItems = await checkbox({
|
|
579
|
+
message: strings.checkboxPrompt,
|
|
580
|
+
choices: checkboxChoices,
|
|
581
|
+
pageSize: 15,
|
|
582
|
+
required: true,
|
|
583
|
+
});
|
|
584
|
+
if (selectedItems.length === 0) {
|
|
585
|
+
console.log(chalk.yellow(`\n⚠️ No ${itemType} selected.\n`));
|
|
586
|
+
return { strategy, items: [], cancelled: true };
|
|
587
|
+
}
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
case 'manual-entry': {
|
|
591
|
+
console.log(chalk.gray(`\n💡 ${strings.manualEntryHint}\n`));
|
|
592
|
+
const entryInput = await input({
|
|
593
|
+
message: strings.manualEntryPrompt,
|
|
594
|
+
validate: (value) => {
|
|
595
|
+
if (!value.trim())
|
|
596
|
+
return strings.entryRequired;
|
|
597
|
+
if (manualEntryValidator) {
|
|
598
|
+
return manualEntryValidator(value);
|
|
599
|
+
}
|
|
600
|
+
return true;
|
|
601
|
+
},
|
|
602
|
+
});
|
|
603
|
+
// Parse comma-separated entries
|
|
604
|
+
let entries = entryInput.split(',').map(s => s.trim()).filter(Boolean);
|
|
605
|
+
if (uppercaseManualEntry) {
|
|
606
|
+
entries = entries.map(e => e.toUpperCase());
|
|
607
|
+
}
|
|
608
|
+
// Match against available items
|
|
609
|
+
const entrySet = new Set(entries.map(e => e.toLowerCase()));
|
|
610
|
+
selectedItems = items.filter(item => {
|
|
611
|
+
const name = String(item[matchField] || item.name).toLowerCase();
|
|
612
|
+
return entrySet.has(name);
|
|
613
|
+
});
|
|
614
|
+
// Also create items for entries not found (for manual entry flexibility)
|
|
615
|
+
const foundNames = new Set(selectedItems.map(i => String(i[matchField] || i.name).toLowerCase()));
|
|
616
|
+
const notFoundEntries = entries.filter(e => !foundNames.has(e.toLowerCase()));
|
|
617
|
+
if (notFoundEntries.length > 0) {
|
|
618
|
+
console.log(chalk.yellow(`\n⚠️ Not found in list: ${notFoundEntries.join(', ')}`));
|
|
619
|
+
console.log(chalk.gray(` These will be used as-is (if valid).\n`));
|
|
620
|
+
// Add not-found entries as new items (for flexibility)
|
|
621
|
+
for (const entry of notFoundEntries) {
|
|
622
|
+
selectedItems.push({
|
|
623
|
+
name: entry,
|
|
624
|
+
value: entry,
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
if (selectedItems.length === 0) {
|
|
629
|
+
console.log(chalk.yellow(`\n⚠️ No valid ${itemType} found.\n`));
|
|
630
|
+
return { strategy, items: [], cancelled: true };
|
|
631
|
+
}
|
|
632
|
+
break;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
// Show preview
|
|
636
|
+
if (shouldShowPreview && selectedItems.length > 0) {
|
|
637
|
+
showPreview(selectedItems, strings, previewLimit);
|
|
638
|
+
}
|
|
639
|
+
// Confirm selection
|
|
640
|
+
const confirmMessage = strings.confirmSelection
|
|
641
|
+
.replace('{count}', String(selectedItems.length))
|
|
642
|
+
.replace('{itemType}', itemType);
|
|
643
|
+
const confirmed = await confirm({
|
|
644
|
+
message: confirmMessage,
|
|
645
|
+
default: true,
|
|
646
|
+
});
|
|
647
|
+
if (!confirmed) {
|
|
648
|
+
console.log(chalk.gray(`\n✓ ${strings.cancelled}\n`));
|
|
649
|
+
return { strategy, items: [], pattern, cancelled: true };
|
|
650
|
+
}
|
|
651
|
+
const selectedMessage = strings.selected
|
|
652
|
+
.replace('{count}', String(selectedItems.length))
|
|
653
|
+
.replace('{itemType}', itemType);
|
|
654
|
+
console.log(chalk.green(`\n✅ ${selectedMessage}\n`));
|
|
655
|
+
return {
|
|
656
|
+
strategy,
|
|
657
|
+
items: selectedItems,
|
|
658
|
+
pattern,
|
|
659
|
+
cancelled: false,
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
// ============================================================================
|
|
663
|
+
// Convenience Functions for Specific Platforms
|
|
664
|
+
// ============================================================================
|
|
665
|
+
/**
|
|
666
|
+
* Convert array of strings to SelectableItem array
|
|
667
|
+
*/
|
|
668
|
+
export function toSelectableItems(items) {
|
|
669
|
+
return items.map(item => ({
|
|
670
|
+
name: item,
|
|
671
|
+
value: item,
|
|
672
|
+
}));
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Convert array of objects with name/value to SelectableItem array
|
|
676
|
+
*/
|
|
677
|
+
export function toSelectableItemsFromObjects(items, valueField = 'name') {
|
|
678
|
+
return items.map(item => ({
|
|
679
|
+
name: item.name,
|
|
680
|
+
value: String(item[valueField]),
|
|
681
|
+
metadata: item,
|
|
682
|
+
}));
|
|
683
|
+
}
|
|
684
|
+
//# sourceMappingURL=selection-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-strategy.js","sourceRoot":"","sources":["../../../../src/cli/helpers/selection-strategy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.50",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|