Documentation
¶
Overview ¶
Package codemod defines the data structures used to represent codification modification scripts for the contextvibes CLI. These structures allow for a standardized way to describe a series of automated changes to files within a codebase.
The core types are:
- Operation: Defines a single modification to be performed on a file, such as a regular expression replacement or a file deletion. It includes fields like `Type`, `Description`, `FindRegex`, and `ReplaceWith`.
- FileChangeSet: Groups all `Operation`s intended for a single target file, specified by `FilePath`.
- ChangeScript: Represents the top-level structure of a codemod script, which is an array of `FileChangeSet`s, allowing modifications across multiple files.
These types are typically unmarshalled from a JSON file (e.g., the default `contextvibes-codemod.json` or a user-specified script) by the `contextvibes codemod` command. The command then interprets these structures to apply the requested changes to the project's files.
This package itself does not contain the execution logic for applying the codemods; that logic resides in the `cmd` package (specifically `cmd/codemod.go`). The primary role of `internal/codemod` is to provide the clear, typed representation of the modification instructions.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChangeScript ¶
type ChangeScript []FileChangeSet
ChangeScript is the top-level structure, representing a list of changes for multiple files.
type FileChangeSet ¶
type FileChangeSet struct {
//nolint:tagliatelle // JSON keys are fixed by schema.
FilePath string `json:"file_path"`
Operations []Operation `json:"operations"`
}
FileChangeSet groups all operations for a single file.
type Operation ¶
type Operation struct {
// Type indicates the kind of operation (e.g., "regex_replace", "add_import").
Type string `json:"type"`
// Description provides a human-readable explanation of the operation.
Description string `json:"description,omitempty"`
// --- Fields for "regex_replace" type ---
// FindRegex is the regular expression to find.
//nolint:tagliatelle // JSON keys are fixed by schema.
FindRegex string `json:"find_regex,omitempty"`
// ReplaceWith is the string to replace matches with.
//nolint:tagliatelle // JSON keys are fixed by schema.
ReplaceWith string `json:"replace_with,omitempty"`
// --- Fields for "create_or_overwrite" ---
Content *string `json:"content,omitempty"` // Pointer to distinguish empty from not-set
// LineNumber can be used to target a specific line for some operations (not used by basic regex_replace yet).
//nolint:tagliatelle // JSON keys are fixed by schema.
LineNumber *int `json:"line_number,omitempty"`
}
Operation defines a single modification to be performed on a file.