@iwonz/ywtc 2.0.3 → 3.1.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.
- package/CHANGELOG.md +40 -0
- package/README.md +162 -166
- package/dist/cli-arguments.d.ts +1 -0
- package/dist/cli-arguments.js +10 -8
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli.js +21 -9
- package/dist/cli.js.map +1 -1
- package/dist/clients/confluence-cloud.d.ts +1 -0
- package/dist/clients/confluence-cloud.js +6 -0
- package/dist/clients/confluence-cloud.js.map +1 -1
- package/dist/clients/confluence.d.ts +1 -0
- package/dist/clients/confluence.js +9 -0
- package/dist/clients/confluence.js.map +1 -1
- package/dist/clients/yandex-wiki.d.ts +2 -1
- package/dist/clients/yandex-wiki.js +12 -0
- package/dist/clients/yandex-wiki.js.map +1 -1
- package/dist/config.d.ts +3 -6
- package/dist/config.js +45 -51
- package/dist/config.js.map +1 -1
- package/dist/connection-verifier.d.ts +17 -0
- package/dist/connection-verifier.js +94 -0
- package/dist/connection-verifier.js.map +1 -0
- package/dist/filesystem-export.d.ts +0 -1
- package/dist/filesystem-export.js +26 -3
- package/dist/filesystem-export.js.map +1 -1
- package/dist/http.d.ts +2 -1
- package/dist/http.js +4 -2
- package/dist/http.js.map +1 -1
- package/dist/init-prompts.d.ts +49 -0
- package/dist/init-prompts.js +63 -0
- package/dist/init-prompts.js.map +1 -0
- package/dist/interactive-config.d.ts +37 -0
- package/dist/interactive-config.js +226 -0
- package/dist/interactive-config.js.map +1 -0
- package/dist/interactive-init.d.ts +20 -0
- package/dist/interactive-init.js +446 -0
- package/dist/interactive-init.js.map +1 -0
- package/dist/report.d.ts +1 -2
- package/dist/report.js +0 -1
- package/dist/report.js.map +1 -1
- package/dist/state.d.ts +0 -1
- package/dist/state.js +79 -13
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/workspace.d.ts +12 -7
- package/dist/workspace.js +31 -53
- package/dist/workspace.js.map +1 -1
- package/docs/assets/readme-header.png +0 -0
- package/package.json +2 -3
- package/ywtc.config.example.yaml +4 -6
- package/.env.example +0 -4
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { verifyConnection, ConnectionVerificationError } from './connection-verifier.js';
|
|
2
|
+
import { commitInteractiveConfig, createInteractiveConfigDocument, defaultConfluenceProfile, defaultYandexProfile, readExistingInteractiveConfig, updateInteractiveProfile, validateInteractiveDocument, } from './interactive-config.js';
|
|
3
|
+
import { WizardCancelledError } from './init-prompts.js';
|
|
4
|
+
import { redact } from './logger.js';
|
|
5
|
+
import { resolveInitWorkspace } from './workspace.js';
|
|
6
|
+
class InteractiveTerminalError extends Error {
|
|
7
|
+
constructor() {
|
|
8
|
+
super('init --interactive requires an interactive TTY. Run "ywtc init" and edit ywtc.config.yaml for non-interactive setup.');
|
|
9
|
+
this.name = 'InteractiveTerminalError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function assertInteractiveTerminal(inputIsTTY, outputIsTTY) {
|
|
13
|
+
if (!inputIsTTY || !outputIsTTY)
|
|
14
|
+
throw new InteractiveTerminalError();
|
|
15
|
+
}
|
|
16
|
+
function required(value) {
|
|
17
|
+
return value.trim() ? undefined : 'Value is required.';
|
|
18
|
+
}
|
|
19
|
+
function profileName(value) {
|
|
20
|
+
return /^[a-z0-9][a-z0-9._-]*$/.test(value.trim())
|
|
21
|
+
? undefined
|
|
22
|
+
: 'Use lowercase letters, digits, dots, underscores, or dashes; start with a letter or digit.';
|
|
23
|
+
}
|
|
24
|
+
function httpUrl(value) {
|
|
25
|
+
try {
|
|
26
|
+
const url = new URL(value.trim());
|
|
27
|
+
return ['http:', 'https:'].includes(url.protocol) ? undefined : 'Use an absolute HTTP(S) URL.';
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return 'Use an absolute HTTP(S) URL.';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function email(value) {
|
|
34
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value.trim()) ? undefined : 'Enter a valid email address.';
|
|
35
|
+
}
|
|
36
|
+
function withoutTrailingSlash(value) {
|
|
37
|
+
return value.trim().replace(/\/+$/, '');
|
|
38
|
+
}
|
|
39
|
+
function availableName(base, used) {
|
|
40
|
+
if (!used.has(base))
|
|
41
|
+
return base;
|
|
42
|
+
for (let suffix = 2;; suffix += 1) {
|
|
43
|
+
const candidate = `${base}-${suffix}`;
|
|
44
|
+
if (!used.has(candidate))
|
|
45
|
+
return candidate;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function usedProfileNames(context, excluding = []) {
|
|
49
|
+
const names = new Set(Object.keys(context.baseConfig?.profiles ?? {}));
|
|
50
|
+
for (const name of excluding)
|
|
51
|
+
names.delete(name);
|
|
52
|
+
if (!excluding.includes(context.yandex?.profile.name ?? ''))
|
|
53
|
+
names.add(context.yandex?.profile.name ?? '');
|
|
54
|
+
if (!excluding.includes(context.confluence?.profile.name ?? ''))
|
|
55
|
+
names.add(context.confluence?.profile.name ?? '');
|
|
56
|
+
names.delete('');
|
|
57
|
+
return names;
|
|
58
|
+
}
|
|
59
|
+
function uniqueProfileName(context, ...excluding) {
|
|
60
|
+
return (value) => {
|
|
61
|
+
const syntax = profileName(value);
|
|
62
|
+
if (syntax)
|
|
63
|
+
return syntax;
|
|
64
|
+
if (usedProfileNames(context, excluding.filter((item) => Boolean(item))).has(value.trim()))
|
|
65
|
+
return 'Another connection already uses this name.';
|
|
66
|
+
return undefined;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async function navigation(prompter, id, canBack = true) {
|
|
70
|
+
return prompter.select({
|
|
71
|
+
id,
|
|
72
|
+
message: 'Next step',
|
|
73
|
+
options: [
|
|
74
|
+
{ value: 'continue', label: 'Continue' },
|
|
75
|
+
...(canBack ? [{ value: 'back', label: 'Back' }] : []),
|
|
76
|
+
{ value: 'cancel', label: 'Cancel' },
|
|
77
|
+
],
|
|
78
|
+
initialValue: 'continue',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async function selectExistingProfile(input) {
|
|
82
|
+
if (input.context.mode !== 'edit')
|
|
83
|
+
return input.current;
|
|
84
|
+
const profiles = Object.values(input.context.baseConfig?.profiles ?? {}).filter((profile) => profile.type === input.type);
|
|
85
|
+
const currentIsUnsaved = input.current !== undefined
|
|
86
|
+
&& input.current.previousName === undefined
|
|
87
|
+
&& !profiles.some((profile) => profile.name === input.current?.profile.name);
|
|
88
|
+
const choices = [
|
|
89
|
+
...profiles.map((profile) => ({ value: profile.name, label: profile.name, hint: 'existing' })),
|
|
90
|
+
...(currentIsUnsaved ? [{ value: '__draft__', label: input.current.profile.name, hint: 'current draft' }] : []),
|
|
91
|
+
{ value: '__new__', label: `Add ${input.label} connection`, hint: 'new profile' },
|
|
92
|
+
];
|
|
93
|
+
const selected = await input.prompter.select({
|
|
94
|
+
id: input.id,
|
|
95
|
+
message: `${input.label} profile to configure`,
|
|
96
|
+
options: choices,
|
|
97
|
+
initialValue: input.current?.previousName ?? (currentIsUnsaved ? '__draft__' : input.current?.profile.name) ?? profiles[0]?.name ?? '__new__',
|
|
98
|
+
});
|
|
99
|
+
if (selected === '__new__') {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (selected === '__draft__'
|
|
103
|
+
|| selected === input.current?.previousName
|
|
104
|
+
|| selected === input.current?.profile.name) {
|
|
105
|
+
return input.current;
|
|
106
|
+
}
|
|
107
|
+
const profile = input.context.baseConfig?.profiles[selected];
|
|
108
|
+
return profile?.type === input.type ? { profile: profile, previousName: selected } : undefined;
|
|
109
|
+
}
|
|
110
|
+
async function yandexStep(context, prompter) {
|
|
111
|
+
prompter.info('Step 2 of 4 · Yandex Wiki');
|
|
112
|
+
const selected = await selectExistingProfile({
|
|
113
|
+
context, prompter, type: 'yandex-wiki', ...(context.yandex ? { current: context.yandex } : {}), id: 'yandex.profile', label: 'Yandex Wiki',
|
|
114
|
+
});
|
|
115
|
+
const draft = selected === null
|
|
116
|
+
? defaultYandexProfile(availableName('yandex', usedProfileNames(context, [context.yandex?.profile.name ?? ''])))
|
|
117
|
+
: selected?.profile ?? context.yandex?.profile ?? defaultYandexProfile(availableName('yandex', usedProfileNames(context)));
|
|
118
|
+
const previousName = selected?.previousName;
|
|
119
|
+
const name = (await prompter.text({
|
|
120
|
+
id: 'yandex.name', message: 'Yandex Wiki profile name', initialValue: draft.name,
|
|
121
|
+
validate: uniqueProfileName(context, previousName, context.yandex?.profile.name),
|
|
122
|
+
})).trim();
|
|
123
|
+
const apiUrl = withoutTrailingSlash(await prompter.text({
|
|
124
|
+
id: 'yandex.apiUrl', message: 'Yandex Wiki API URL', initialValue: draft.apiUrl, validate: httpUrl,
|
|
125
|
+
}));
|
|
126
|
+
const webUrl = withoutTrailingSlash(await prompter.text({
|
|
127
|
+
id: 'yandex.webUrl', message: 'Yandex Wiki web URL', initialValue: draft.webUrl, validate: httpUrl,
|
|
128
|
+
}));
|
|
129
|
+
const authType = await prompter.select({
|
|
130
|
+
id: 'yandex.authType', message: 'Yandex authentication', initialValue: draft.authType,
|
|
131
|
+
options: [
|
|
132
|
+
{ value: 'oauth', label: 'OAuth', hint: 'Yandex 360 or Identity Hub' },
|
|
133
|
+
{ value: 'iam', label: 'IAM token', hint: 'Yandex Cloud only' },
|
|
134
|
+
],
|
|
135
|
+
});
|
|
136
|
+
const organizationType = authType === 'iam'
|
|
137
|
+
? 'cloud'
|
|
138
|
+
: await prompter.select({
|
|
139
|
+
id: 'yandex.organization.type', message: 'Yandex organization type', initialValue: draft.organization.type,
|
|
140
|
+
options: [
|
|
141
|
+
{ value: 'yandex360', label: 'Yandex 360' },
|
|
142
|
+
{ value: 'cloud', label: 'Yandex Cloud / Identity Hub' },
|
|
143
|
+
],
|
|
144
|
+
});
|
|
145
|
+
if (authType === 'iam')
|
|
146
|
+
prompter.info('IAM uses the Yandex Cloud organization header.');
|
|
147
|
+
const organizationId = (await prompter.text({
|
|
148
|
+
id: 'yandex.organization.id', message: 'Yandex organization ID', initialValue: draft.organization.id, validate: required,
|
|
149
|
+
})).trim();
|
|
150
|
+
const enteredToken = await prompter.password({
|
|
151
|
+
id: 'yandex.token',
|
|
152
|
+
message: draft.token ? 'Yandex token (leave empty to keep the configured token)' : 'Yandex token',
|
|
153
|
+
validate: (value) => draft.token || value.trim() ? undefined : 'Token is required.',
|
|
154
|
+
});
|
|
155
|
+
context.yandex = {
|
|
156
|
+
...(previousName ? { previousName } : {}),
|
|
157
|
+
profile: {
|
|
158
|
+
...draft,
|
|
159
|
+
name,
|
|
160
|
+
apiUrl,
|
|
161
|
+
webUrl,
|
|
162
|
+
authType,
|
|
163
|
+
token: enteredToken.trim() || draft.token,
|
|
164
|
+
organization: { type: organizationType, id: organizationId },
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
return navigation(prompter, 'yandex.navigation');
|
|
168
|
+
}
|
|
169
|
+
async function confluenceStep(context, prompter) {
|
|
170
|
+
prompter.info('Step 3 of 4 · Confluence');
|
|
171
|
+
const selected = await selectExistingProfile({
|
|
172
|
+
context, prompter, type: 'confluence', ...(context.confluence ? { current: context.confluence } : {}), id: 'confluence.profile', label: 'Confluence',
|
|
173
|
+
});
|
|
174
|
+
const draft = selected === null
|
|
175
|
+
? defaultConfluenceProfile(availableName('confluence', usedProfileNames(context, [context.confluence?.profile.name ?? ''])))
|
|
176
|
+
: selected?.profile ?? context.confluence?.profile ?? defaultConfluenceProfile(availableName('confluence', usedProfileNames(context)));
|
|
177
|
+
const previousName = selected?.previousName;
|
|
178
|
+
const name = (await prompter.text({
|
|
179
|
+
id: 'confluence.name', message: 'Confluence profile name', initialValue: draft.name,
|
|
180
|
+
validate: uniqueProfileName(context, previousName, context.confluence?.profile.name),
|
|
181
|
+
})).trim();
|
|
182
|
+
const deployment = await prompter.select({
|
|
183
|
+
id: 'confluence.deployment', message: 'Confluence deployment', initialValue: draft.deployment,
|
|
184
|
+
options: [
|
|
185
|
+
{ value: 'data-center', label: 'Data Center', hint: 'PAT authentication' },
|
|
186
|
+
{ value: 'cloud', label: 'Cloud', hint: 'email and Atlassian API token' },
|
|
187
|
+
],
|
|
188
|
+
});
|
|
189
|
+
const baseUrl = withoutTrailingSlash(await prompter.text({
|
|
190
|
+
id: 'confluence.baseUrl',
|
|
191
|
+
message: 'Confluence base URL',
|
|
192
|
+
initialValue: draft.baseUrl,
|
|
193
|
+
placeholder: deployment === 'cloud' ? 'https://example.atlassian.net' : 'https://confluence.example.com/confluence',
|
|
194
|
+
validate: (value) => required(value) ?? httpUrl(value),
|
|
195
|
+
}));
|
|
196
|
+
const cloudEmail = deployment === 'cloud'
|
|
197
|
+
? (await prompter.text({
|
|
198
|
+
id: 'confluence.email', message: 'Atlassian account email', initialValue: draft.email ?? '', validate: email,
|
|
199
|
+
})).trim()
|
|
200
|
+
: undefined;
|
|
201
|
+
const enteredToken = await prompter.password({
|
|
202
|
+
id: 'confluence.token',
|
|
203
|
+
message: draft.token
|
|
204
|
+
? `Confluence ${deployment === 'cloud' ? 'API token' : 'PAT'} (leave empty to keep the configured token)`
|
|
205
|
+
: `Confluence ${deployment === 'cloud' ? 'API token' : 'PAT'}`,
|
|
206
|
+
validate: (value) => draft.token || value.trim() ? undefined : 'Token is required.',
|
|
207
|
+
});
|
|
208
|
+
context.confluence = {
|
|
209
|
+
...(previousName ? { previousName } : {}),
|
|
210
|
+
profile: {
|
|
211
|
+
...draft,
|
|
212
|
+
name,
|
|
213
|
+
deployment,
|
|
214
|
+
baseUrl,
|
|
215
|
+
authType: deployment === 'cloud' ? 'api-token' : 'pat',
|
|
216
|
+
token: enteredToken.trim() || draft.token,
|
|
217
|
+
...(cloudEmail !== undefined ? { email: cloudEmail } : {}),
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
if (deployment === 'data-center')
|
|
221
|
+
delete context.confluence.profile.email;
|
|
222
|
+
return navigation(prompter, 'confluence.navigation');
|
|
223
|
+
}
|
|
224
|
+
function buildDocument(context) {
|
|
225
|
+
if (!context.yandex || !context.confluence)
|
|
226
|
+
throw new Error('Both connection stages must be complete.');
|
|
227
|
+
const document = context.baseDocument.clone();
|
|
228
|
+
updateInteractiveProfile(document, context.yandex.previousName, context.yandex.profile);
|
|
229
|
+
updateInteractiveProfile(document, context.confluence.previousName, context.confluence.profile);
|
|
230
|
+
return document;
|
|
231
|
+
}
|
|
232
|
+
function selectedProfiles(config, context) {
|
|
233
|
+
const yandex = config.profiles[context.yandex.profile.name];
|
|
234
|
+
const confluence = config.profiles[context.confluence.profile.name];
|
|
235
|
+
if (yandex?.type !== 'yandex-wiki' || confluence?.type !== 'confluence') {
|
|
236
|
+
throw new Error('Configured connection profiles could not be resolved.');
|
|
237
|
+
}
|
|
238
|
+
return [yandex, confluence];
|
|
239
|
+
}
|
|
240
|
+
function review(context) {
|
|
241
|
+
const yandex = context.yandex.profile;
|
|
242
|
+
const confluence = context.confluence.profile;
|
|
243
|
+
return [
|
|
244
|
+
`Workdir: ${context.workspace.root}`,
|
|
245
|
+
`Yandex Wiki: ${yandex.name} · ${yandex.authType} · ${yandex.organization.type} · ${yandex.webUrl}`,
|
|
246
|
+
`Confluence: ${confluence.name} · ${confluence.deployment} · ${confluence.baseUrl}`,
|
|
247
|
+
'Credentials: configured and hidden',
|
|
248
|
+
].join('\n');
|
|
249
|
+
}
|
|
250
|
+
function firstDryRun(context) {
|
|
251
|
+
const workdir = JSON.stringify(context.workspace.root);
|
|
252
|
+
const sourceProfile = JSON.stringify(context.yandex.profile.name);
|
|
253
|
+
const destinationProfile = JSON.stringify(context.confluence.profile.name);
|
|
254
|
+
return `ywtc migrate --source "<yandex-page-url-or-slug>" --source-profile ${sourceProfile} --destination "<confluence-page-url-or-id>" --destination-profile ${destinationProfile} --scope subtree --dry-run --workdir ${workdir}`;
|
|
255
|
+
}
|
|
256
|
+
async function workspaceStep(options, prior) {
|
|
257
|
+
const { prompter } = options;
|
|
258
|
+
prompter.info('Step 1 of 4 · Workspace');
|
|
259
|
+
let initialPath = prior?.workspace.root ?? options.workdir ?? '~/.ywtc';
|
|
260
|
+
while (true) {
|
|
261
|
+
const selectedPath = (await prompter.text({
|
|
262
|
+
id: 'workspace.path', message: 'Working directory', initialValue: initialPath, validate: required,
|
|
263
|
+
})).trim();
|
|
264
|
+
let workspace;
|
|
265
|
+
try {
|
|
266
|
+
workspace = resolveInitWorkspace({
|
|
267
|
+
explicit: selectedPath,
|
|
268
|
+
...(options.cwd ? { cwd: options.cwd } : {}),
|
|
269
|
+
...(options.homeDirectory ? { homeDirectory: options.homeDirectory } : {}),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
prompter.error(error instanceof Error ? error.message : String(error));
|
|
274
|
+
initialPath = selectedPath;
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
const original = await readExistingInteractiveConfig(workspace);
|
|
278
|
+
if (!original) {
|
|
279
|
+
const same = prior?.workspace.root === workspace.root && prior.mode === 'new';
|
|
280
|
+
return same ? prior : { workspace, mode: 'new', baseDocument: createInteractiveConfigDocument() };
|
|
281
|
+
}
|
|
282
|
+
if (original.error)
|
|
283
|
+
prompter.error(`Existing configuration is invalid: ${original.error}`);
|
|
284
|
+
const action = await prompter.select({
|
|
285
|
+
id: 'workspace.action',
|
|
286
|
+
message: `Workspace already exists at ${workspace.root}`,
|
|
287
|
+
options: [
|
|
288
|
+
...(!original.error ? [{ value: 'edit', label: 'Change connection settings', hint: 'preserve other profiles and state' }] : []),
|
|
289
|
+
{ value: 'reset', label: 'Configure from scratch', hint: 'backup config; preserve .states' },
|
|
290
|
+
{ value: 'change', label: 'Choose another directory' },
|
|
291
|
+
{ value: 'exit', label: 'Do nothing and exit' },
|
|
292
|
+
],
|
|
293
|
+
initialValue: original.error ? 'reset' : 'edit',
|
|
294
|
+
});
|
|
295
|
+
if (action === 'exit') {
|
|
296
|
+
prompter.outro('Workspace left unchanged.');
|
|
297
|
+
return { status: 'no-op', code: 0, workspace };
|
|
298
|
+
}
|
|
299
|
+
if (action === 'change') {
|
|
300
|
+
initialPath = workspace.root;
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const same = prior?.workspace.root === workspace.root && prior.mode === action
|
|
304
|
+
&& prior.original?.fingerprint === original.fingerprint;
|
|
305
|
+
if (same)
|
|
306
|
+
return prior;
|
|
307
|
+
if (action === 'edit' && original.document && original.config) {
|
|
308
|
+
return {
|
|
309
|
+
workspace,
|
|
310
|
+
mode: 'edit',
|
|
311
|
+
original,
|
|
312
|
+
baseDocument: original.document.clone(),
|
|
313
|
+
baseConfig: original.config,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
return { workspace, mode: 'reset', original, baseDocument: createInteractiveConfigDocument() };
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
async function verifyAndCommit(context, prompter, verify) {
|
|
320
|
+
prompter.info('Step 4 of 4 · Review and verify');
|
|
321
|
+
prompter.note(review(context), 'Configuration summary');
|
|
322
|
+
const action = await prompter.select({
|
|
323
|
+
id: 'review.action',
|
|
324
|
+
message: 'Review action',
|
|
325
|
+
options: [
|
|
326
|
+
{ value: 'save', label: 'Verify connections and save' },
|
|
327
|
+
{ value: 'yandex', label: 'Back to Yandex Wiki' },
|
|
328
|
+
{ value: 'confluence', label: 'Back to Confluence' },
|
|
329
|
+
{ value: 'workspace', label: 'Back to workspace' },
|
|
330
|
+
{ value: 'cancel', label: 'Cancel' },
|
|
331
|
+
],
|
|
332
|
+
initialValue: 'save',
|
|
333
|
+
});
|
|
334
|
+
if (action === 'workspace')
|
|
335
|
+
return 0;
|
|
336
|
+
if (action === 'yandex')
|
|
337
|
+
return 1;
|
|
338
|
+
if (action === 'confluence')
|
|
339
|
+
return 2;
|
|
340
|
+
if (action === 'cancel')
|
|
341
|
+
throw new WizardCancelledError();
|
|
342
|
+
const document = buildDocument(context);
|
|
343
|
+
const config = validateInteractiveDocument(document, context.workspace.configFile);
|
|
344
|
+
const [yandex, confluence] = selectedProfiles(config, context);
|
|
345
|
+
while (true) {
|
|
346
|
+
try {
|
|
347
|
+
await prompter.task('Checking Yandex Wiki API and credentials', () => verify(config, yandex), verifiedLabel);
|
|
348
|
+
await prompter.task('Checking Confluence API and credentials', () => verify(config, confluence), verifiedLabel);
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
const safe = redact(error, [yandex.token, confluence.token, confluence.email ?? '']);
|
|
353
|
+
prompter.error(safe);
|
|
354
|
+
const failureAction = await prompter.select({
|
|
355
|
+
id: 'verification.failure',
|
|
356
|
+
message: 'Connection verification failed',
|
|
357
|
+
options: [
|
|
358
|
+
{ value: 'retry', label: 'Retry' },
|
|
359
|
+
{ value: 'yandex', label: 'Edit Yandex Wiki' },
|
|
360
|
+
{ value: 'confluence', label: 'Edit Confluence' },
|
|
361
|
+
{ value: 'workspace', label: 'Back to workspace' },
|
|
362
|
+
{ value: 'cancel', label: 'Cancel' },
|
|
363
|
+
],
|
|
364
|
+
initialValue: error instanceof ConnectionVerificationError && error.provider === 'confluence' ? 'confluence' : 'yandex',
|
|
365
|
+
});
|
|
366
|
+
if (failureAction === 'retry')
|
|
367
|
+
continue;
|
|
368
|
+
if (failureAction === 'workspace')
|
|
369
|
+
return 0;
|
|
370
|
+
if (failureAction === 'yandex')
|
|
371
|
+
return 1;
|
|
372
|
+
if (failureAction === 'confluence')
|
|
373
|
+
return 2;
|
|
374
|
+
throw new WizardCancelledError();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
const committed = await prompter.task('Saving verified workspace configuration', () => commitInteractiveConfig({
|
|
378
|
+
workspace: context.workspace,
|
|
379
|
+
document,
|
|
380
|
+
...(context.original ? { original: context.original } : {}),
|
|
381
|
+
reset: context.mode === 'reset',
|
|
382
|
+
}), () => 'Workspace configuration saved');
|
|
383
|
+
const dryRunCommand = firstDryRun(context);
|
|
384
|
+
prompter.success(`Config: ${committed.configFile}`);
|
|
385
|
+
if (committed.backupFile)
|
|
386
|
+
prompter.info(`Backup: ${committed.backupFile}`);
|
|
387
|
+
prompter.note(dryRunCommand, 'First migration dry-run');
|
|
388
|
+
prompter.info('Connection checks passed. Page-specific read/write access is checked by doctor or migrate.');
|
|
389
|
+
prompter.outro('ywtc workspace is ready.');
|
|
390
|
+
return {
|
|
391
|
+
status: 'completed',
|
|
392
|
+
code: 0,
|
|
393
|
+
workspace: context.workspace,
|
|
394
|
+
configFile: committed.configFile,
|
|
395
|
+
...(committed.backupFile ? { backupFile: committed.backupFile } : {}),
|
|
396
|
+
dryRunCommand,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
function verifiedLabel(value) {
|
|
400
|
+
return `${value.product}${value.version ? ` ${value.version}` : ''} authenticated`;
|
|
401
|
+
}
|
|
402
|
+
export async function runInteractiveInit(options) {
|
|
403
|
+
const { prompter } = options;
|
|
404
|
+
prompter.intro('ywtc interactive setup');
|
|
405
|
+
let context;
|
|
406
|
+
let step = 0;
|
|
407
|
+
try {
|
|
408
|
+
while (true) {
|
|
409
|
+
if (step === 0) {
|
|
410
|
+
const result = await workspaceStep(options, context);
|
|
411
|
+
if ('status' in result)
|
|
412
|
+
return result;
|
|
413
|
+
context = result;
|
|
414
|
+
step = 1;
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
if (!context)
|
|
418
|
+
throw new Error('Workspace step did not complete.');
|
|
419
|
+
if (step === 1) {
|
|
420
|
+
const next = await yandexStep(context, prompter);
|
|
421
|
+
if (next === 'cancel')
|
|
422
|
+
throw new WizardCancelledError();
|
|
423
|
+
step = next === 'back' ? 0 : 2;
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (step === 2) {
|
|
427
|
+
const next = await confluenceStep(context, prompter);
|
|
428
|
+
if (next === 'cancel')
|
|
429
|
+
throw new WizardCancelledError();
|
|
430
|
+
step = next === 'back' ? 1 : 3;
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
const result = await verifyAndCommit(context, prompter, options.verify ?? verifyConnection);
|
|
434
|
+
if (typeof result !== 'number')
|
|
435
|
+
return result;
|
|
436
|
+
step = result;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
catch (error) {
|
|
440
|
+
if (!(error instanceof WizardCancelledError))
|
|
441
|
+
throw error;
|
|
442
|
+
prompter.cancel('Interactive setup cancelled; no configuration was changed.');
|
|
443
|
+
return { status: 'cancelled', code: 130, ...(context ? { workspace: context.workspace } : {}) };
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=interactive-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-init.js","sourceRoot":"","sources":["../src/interactive-init.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
CHANGED
|
@@ -29,7 +29,6 @@ export interface TransferReportEdge {
|
|
|
29
29
|
message?: string;
|
|
30
30
|
}
|
|
31
31
|
export interface TransferReportData {
|
|
32
|
-
version: 4;
|
|
33
32
|
runId: string;
|
|
34
33
|
startedAt: string;
|
|
35
34
|
finishedAt?: string;
|
|
@@ -89,7 +88,7 @@ interface PreviewPair {
|
|
|
89
88
|
export declare class TransferReport {
|
|
90
89
|
readonly data: TransferReportData;
|
|
91
90
|
private readonly previews;
|
|
92
|
-
constructor(input: Omit<TransferReportData, '
|
|
91
|
+
constructor(input: Omit<TransferReportData, 'runId' | 'startedAt' | 'status' | 'pages' | 'edges' | 'warnings' | 'errors' | 'outputs' | 'summary'>);
|
|
93
92
|
addPage(page: TransferReportPage, previews?: PreviewPair): void;
|
|
94
93
|
setEdges(edges: TransferReportEdge[]): void;
|
|
95
94
|
warning(message: string): void;
|
package/dist/report.js
CHANGED
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|