Files
james.maes 0031b00eb3 feat(#29): single-form init wizard with adaptive live preview
Replaces the 7-step 3-pane wizard with a single repo-seeded form and a
persistent adaptive preview. wizard.go is now a thin Bubble Tea adapter;
all logic lives in internal/initwizard at 100% coverage.

Closes #29
2026-06-08 12:33:49 -05:00

61 lines
2.0 KiB
Go

// Package initwizard defines the structured answer model shared by the init
// command and the interactive collector.
package initwizard
import "errors"
// ErrAborted is returned when the operator exits the interactive wizard without
// confirming the review step.
var ErrAborted = errors.New("init wizard aborted")
// Answers is the structured payload the init form edits and returns. WHY no project
// model or review step: the redesign detects defaults from the repo (see Seed) rather
// than asking a project-model question, and the single-screen form is itself the
// review, so the former Project/Review/Step machinery was removed.
type Answers struct {
// License records the target license choice.
License LicenseAnswer
// Identity records copyright holder and year policy.
Identity IdentityAnswer
// HeaderStyle records the source header format.
HeaderStyle HeaderStyleAnswer
// LicenseFiles records whether top-level license files should be managed.
LicenseFiles LicenseFilesAnswer
// Coverage records include and exclude file scope answers.
Coverage CoverageAnswer
}
// LicenseAnswer holds the target license selection.
type LicenseAnswer struct {
// SPDXID is the SPDX identifier selected for generated config.
SPDXID string
}
// IdentityAnswer holds copyright identity answers.
type IdentityAnswer struct {
// Holder is the copyright holder text.
Holder string
// Year is the raw year policy token.
Year string
}
// HeaderStyleAnswer holds the raw header style token.
type HeaderStyleAnswer struct {
// Style is reuse, notice, or reuse+notice.
Style string
}
// LicenseFilesAnswer records license file management intent.
type LicenseFilesAnswer struct {
// Manage enables top-level LICENSE and LICENSES/<id>.txt management.
Manage bool
}
// CoverageAnswer records source file scope selections.
type CoverageAnswer struct {
// Include is the selected include glob list.
Include []string
// Exclude is the selected exclude glob list.
Exclude []string
}