UNPKG

@elsikora/setup-wizard

Version:

Setup Wizard - CLI scaffolding utility

95 lines (92 loc) 5.23 kB
#!/usr/bin/env node import { EPrlintGenerationProvider } from '../../../domain/enum/prlint-generation-provider.enum.js'; import { EPrlintTicketMissingBranchLintBehavior } from '../../../domain/enum/prlint-ticket-missing-branch-lint-behavior.enum.js'; import { EPrlintTicketNormalization } from '../../../domain/enum/prlint-ticket-normalization.enum.js'; import { EPrlintTicketSource } from '../../../domain/enum/prlint-ticket-source.enum.js'; const DEFAULT_BASE_BRANCH = "dev"; const IS_DRAFT_DEFAULT = false; const DEFAULT_FORBIDDEN_PLACEHOLDERS = ["WIP", "TODO", "<!--", "TEMPLATE", "lorem ipsum", "[ ]", "<replace-me>"]; const DEFAULT_MAX_RETRIES = 3; const DEFAULT_MODEL = "claude-opus-4-5"; const DEFAULT_PROHIBITED_BRANCHES = ["main", "master"]; const DEFAULT_PROVIDER = EPrlintGenerationProvider.ANTHROPIC; const DEFAULT_REQUIRED_SECTIONS = ["Summary", "Scope", "Changes", "Acceptance Criteria", "Test Plan", "Risks", "Linear"]; const DEFAULT_TICKET_PATTERN = "[a-z]{2,}-[0-9]+"; const DEFAULT_TICKET_PATTERN_FLAGS = "i"; const DEFAULT_TITLE_PATTERN = String.raw `^(?<type>[a-z]+)\((?<scope>[a-z0-9-]+)\): (?<subject>.+) \| (?<ticket>[A-Za-z]{2,}-\d+)$`; const DEFAULT_VALIDATION_RETRIES = 3; const PRLINT_CONFIG_DEFAULTS = { generation: { model: DEFAULT_MODEL, provider: DEFAULT_PROVIDER, retries: DEFAULT_MAX_RETRIES, validationRetries: DEFAULT_VALIDATION_RETRIES, }, github: { base: DEFAULT_BASE_BRANCH, isDraft: IS_DRAFT_DEFAULT, prohibitedBranches: DEFAULT_PROHIBITED_BRANCHES, }, lint: { forbiddenPlaceholders: DEFAULT_FORBIDDEN_PLACEHOLDERS, requiredSections: DEFAULT_REQUIRED_SECTIONS, titlePattern: DEFAULT_TITLE_PATTERN, }, ticket: { missingBranchLintBehavior: EPrlintTicketMissingBranchLintBehavior.ERROR, normalization: EPrlintTicketNormalization.UPPER, pattern: DEFAULT_TICKET_PATTERN, patternFlags: DEFAULT_TICKET_PATTERN_FLAGS, source: EPrlintTicketSource.BRANCH_LINT, }, }; const PRLINT_CONFIG = { template: (config) => { const generationConfig = config?.generation; const githubConfig = config?.github; const lintConfig = config?.lint; const ticketConfig = config?.ticket; const generationProvider = generationConfig?.provider ?? PRLINT_CONFIG_DEFAULTS.generation.provider; const generationModel = generationConfig?.model ?? PRLINT_CONFIG_DEFAULTS.generation.model; const generationRetries = typeof generationConfig?.retries === "number" ? generationConfig.retries : PRLINT_CONFIG_DEFAULTS.generation.retries; const generationValidationRetries = typeof generationConfig?.validationRetries === "number" ? generationConfig.validationRetries : PRLINT_CONFIG_DEFAULTS.generation.validationRetries; const githubBaseBranch = githubConfig?.base ?? PRLINT_CONFIG_DEFAULTS.github.base; const isGithubDraft = typeof githubConfig?.isDraft === "boolean" ? githubConfig.isDraft : PRLINT_CONFIG_DEFAULTS.github.isDraft; const githubProhibitedBranches = Array.isArray(githubConfig?.prohibitedBranches) ? githubConfig.prohibitedBranches : PRLINT_CONFIG_DEFAULTS.github.prohibitedBranches; const lintTitlePattern = lintConfig?.titlePattern ?? PRLINT_CONFIG_DEFAULTS.lint.titlePattern; const lintRequiredSections = Array.isArray(lintConfig?.requiredSections) ? lintConfig.requiredSections : PRLINT_CONFIG_DEFAULTS.lint.requiredSections; const lintForbiddenPlaceholders = Array.isArray(lintConfig?.forbiddenPlaceholders) ? lintConfig.forbiddenPlaceholders : PRLINT_CONFIG_DEFAULTS.lint.forbiddenPlaceholders; const ticketSource = ticketConfig?.source ?? PRLINT_CONFIG_DEFAULTS.ticket.source; const ticketPattern = ticketConfig?.pattern ?? PRLINT_CONFIG_DEFAULTS.ticket.pattern; const ticketPatternFlags = ticketConfig?.patternFlags ?? PRLINT_CONFIG_DEFAULTS.ticket.patternFlags; const ticketNormalization = ticketConfig?.normalization ?? PRLINT_CONFIG_DEFAULTS.ticket.normalization; const ticketMissingBranchLintBehavior = ticketConfig?.missingBranchLintBehavior ?? PRLINT_CONFIG_DEFAULTS.ticket.missingBranchLintBehavior; return `export default { generation: { model: ${JSON.stringify(generationModel)}, provider: ${JSON.stringify(generationProvider)}, retries: ${generationRetries}, validationRetries: ${generationValidationRetries}, }, github: { base: ${JSON.stringify(githubBaseBranch)}, draft: ${isGithubDraft}, prohibitedBranches: ${JSON.stringify(githubProhibitedBranches)}, }, lint: { forbiddenPlaceholders: ${JSON.stringify(lintForbiddenPlaceholders)}, requiredSections: ${JSON.stringify(lintRequiredSections)}, titlePattern: ${JSON.stringify(lintTitlePattern)}, }, ticket: { missingBranchLintBehavior: ${JSON.stringify(ticketMissingBranchLintBehavior)}, normalization: ${JSON.stringify(ticketNormalization)}, pattern: ${JSON.stringify(ticketPattern)}, patternFlags: ${JSON.stringify(ticketPatternFlags)}, source: ${JSON.stringify(ticketSource)}, }, };`; }, }; export { PRLINT_CONFIG, PRLINT_CONFIG_DEFAULTS }; //# sourceMappingURL=config.constant.js.map