/
melnik-demyan
/
ipdocgen
Обзор
Документация
Войти
/
melnik-demyan
/
ipdocgen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/clientWizard.ts
41 строка
1 KB
Demyan Melnik
Make name/contractNumber/startContractDate required in client config
15 май 2026, 19:47
15 май 2026, 19:47
245343e
Код
Авторство
О чём код?
import input from '@inquirer/input'; import moment from 'moment'; import {clientConfigPath, loadClientConfig, saveClientConfig} from './clientConfig'; import type {TClientConfig, TClientConfigRaw} from './@types/TConfig'; const DEFAULT_BLACKLIST = 'ENGLISH'; export const ensureClientContractData = async ( clientId: string, clientName: string, ): Promise<TClientConfig> => { const raw = loadClientConfig(clientId); const patch: TClientConfigRaw = {}; if (!raw.name) patch.name = clientName; if (raw.contractNumber === undefined) { const value = await input({ message: `Номер контракта для клиента «${clientName}»:`, required: true, validate: (v) => /^\d+$/.test(v.trim()) || 'Введите целое число', }); patch.contractNumber = parseInt(value.trim(), 10); } if (!raw.startContractDate) { patch.startContractDate = (await input({ message: `Дата начала контракта (DD.MM.YYYY) для «${clientName}»:`, default: moment().format('DD.MM.YYYY'), validate: (v) => moment(v.trim(), 'DD.MM.YYYY', true).isValid() || 'Формат: DD.MM.YYYY', })).trim(); } if (raw.blacklist === undefined) patch.blacklist = DEFAULT_BLACKLIST; const saved = Object.keys(patch).length > 0 ? saveClientConfig(clientId, patch) : raw; if (Object.keys(patch).length > 0) { console.log(`✓ Конфиг клиента сохранён: ${clientConfigPath(clientId)}`); } return saved as TClientConfig; };