Documentation
¶
Index ¶
- Constants
- func GenerateGitignore(targetDir string) error
- func GenerateHandlerFile(repoName, targetDir string) error
- func GenerateLicense(ownerName, targetDir string) error
- func GenerateREADME(repoName, description, targetDir string) error
- func PrintError(msg string)
- func PrintInfo(msg string)
- func PrintSuccess(msg string)
- func PrintWarning(msg string)
- func RunCommand(name string, args ...string) (string, error)
- func RunCommandSilent(name string, args ...string) (string, error)
- func RunShellCommand(command string) (string, error)
- func RunShellCommandAsync(command string) error
- func ValidateDescription(desc string) error
- func ValidateRepoName(name string) error
- type Badge
- type Badges
- type Bashrc
- type ConsoleFilter
- type DevBackup
- type Git
- func (g *Git) GenerateNextTag() (string, error)
- func (g *Git) GetConfigUserEmail() (string, error)
- func (g *Git) GetConfigUserName() (string, error)
- func (g *Git) GetLatestTag() (string, error)
- func (g *Git) InitRepo(dir string) error
- func (g *Git) Push(message, tag string) (string, error)
- func (g *Git) SetLog(fn func(...any))
- func (g *Git) SetUserConfig(name, email string) error
- type GitHub
- func (gh *GitHub) CreateRepo(name, description, visibility string) error
- func (gh *GitHub) GetCurrentUser() (string, error)
- func (gh *GitHub) GetHelpfulErrorMessage(err error) string
- func (gh *GitHub) IsNetworkError(err error) bool
- func (gh *GitHub) RepoExists(owner, name string) (bool, error)
- func (gh *GitHub) SetLog(fn func(...any))
- type Go
- func (g *Go) DetectGoExecutable() (string, error)
- func (g *Go) GoVersion() (string, error)
- func (g *Go) ModInit(modulePath, targetDir string) error
- func (g *Go) Push(message, tag string, skipTests, skipRace bool, searchPath string) (string, error)
- func (g *Go) SetLog(fn func(...any))
- func (g *Go) Test(verbose bool) (string, error)
- type GoNew
- type MarkDown
- func (m *MarkDown) Extract(outputFile string) error
- func (m *MarkDown) InputByte(content []byte) *MarkDown
- func (m *MarkDown) InputEmbed(path string, readerFile func(name string) ([]byte, error)) *MarkDown
- func (m *MarkDown) InputPath(pathFile string, readerFile func(name string) ([]byte, error)) *MarkDown
- func (m *MarkDown) SetLogger(logger func(...any)) *MarkDown
- func (m *MarkDown) UpdateSection(sectionID, content string, afterLine ...string) error
- type NewProjectOptions
Constants ¶
const ( ColorRed = "\033[0;31m" ColorGreen = "\033[0;32m" ColorYellow = "\033[0;33m" ColorCyan = "\033[0;36m" ColorNone = "\033[0m" )
Variables ¶
This section is empty.
Functions ¶
func GenerateGitignore ¶ added in v0.0.13
GenerateGitignore generates .gitignore for Go
func GenerateHandlerFile ¶ added in v0.0.13
GenerateHandlerFile generates the main handler file
func GenerateLicense ¶ added in v0.0.13
GenerateLicense generates LICENSE (MIT)
func GenerateREADME ¶ added in v0.0.13
GenerateREADME generates README.md
func PrintError ¶ added in v0.0.13
func PrintError(msg string)
PrintError prints an error message in red.
func PrintInfo ¶ added in v0.0.13
func PrintInfo(msg string)
PrintInfo prints an informational message in cyan.
func PrintSuccess ¶ added in v0.0.13
func PrintSuccess(msg string)
PrintSuccess prints a success message in green.
func PrintWarning ¶ added in v0.0.13
func PrintWarning(msg string)
PrintWarning prints a warning message in yellow.
func RunCommand ¶
RunCommand executes a shell command It returns the output (trimmed) and an error if the command fails
func RunCommandSilent ¶
RunCommandSilent executes a command (alias for RunCommand now, as RunCommand is also silent on success) kept for backward compatibility if needed, or we can remove it. The previous implementation was identical except for logging.
func RunShellCommand ¶ added in v0.0.10
RunShellCommand executes a shell command in a cross-platform way On Windows: uses cmd.exe /C On Unix (Linux/macOS): uses sh -c
func RunShellCommandAsync ¶ added in v0.0.13
RunShellCommandAsync starts a shell command asynchronously (non-blocking) Returns immediately after starting, does not wait for completion
func ValidateDescription ¶ added in v0.0.13
ValidateDescription validates the repository description
func ValidateRepoName ¶ added in v0.0.13
ValidateRepoName validates the repository name Only alphanumeric, dash, and underscore allowed
Types ¶
type Badge ¶ added in v0.0.13
type Badge struct {
Label string // The text displayed on the left side of the badge.
Value string // The text displayed on the right side of the badge.
Color string // The background color for the value part of the badge (e.g., "#4c1" or "green").
}
Badge represents a single badge with a label, value, and color. This is the primary struct used to define a badge's appearance and content.
For example, to create a "Go version" badge, you might use:
b := Badge{
Label: "Go",
Value: "1.18",
Color: "#007d9c",
}
type Badges ¶ added in v0.0.13
type Badges struct {
// contains filtered or unexported fields
}
Badges is responsible for creating and managing a collection of badges. It handles parsing input arguments, generating the SVG image, and preparing the necessary markdown to embed the badges in a file.
The handler is configured using a series of string arguments, where each argument defines a badge in the "label:value:color" format.
Special commands can be passed as arguments to control the output:
- "output_svgfile:path/to/your.svg": Specifies the output file for the SVG image.
- "readmefile:path/to/your/README.md": Specifies the markdown file to be updated.
func NewBadges ¶ added in v0.0.13
NewBadges creates and initializes a new Badges.
It takes a variadic slice of strings as input. Each string can be a badge definition ("label:value:color") or a special command.
Example:
handler := NewBadges( "Go:1.18:#007d9c", "Tests:Passing:#4c1", "output_svgfile:docs/badges.svg", )
func (*Badges) BadgeMarkdown ¶ added in v0.0.13
BadgeMarkdown generates the markdown snippet for embedding the badge image. The snippet is an HTML `<a>` tag containing an `<img>` tag, which is compatible with most markdown renderers.
Example output:
<a href="docs/img/badges.svg"><img src="docs/img/badges.svg" alt="Project Badges" title="..."></a>
func (*Badges) BuildBadges ¶ added in v0.0.13
BuildBadges generates the SVG image, writes it to the specified output file, and returns a slice of strings intended for updating a markdown file.
The returned slice contains the following elements in order: 1. sectionID: The ID of the markdown section to update. 2. afterLine: The line number after which the content should be inserted. 3. content: The markdown content to be inserted. 4. readmeFile: The path to the markdown file to be updated.
This method centralizes the core logic of badge generation and file I/O.
func (*Badges) Err ¶ added in v0.0.13
Err returns any error that occurred during the initialization or processing of the Badges. It's important to check this error before proceeding with badge generation.
func (*Badges) GenerateSVG ¶ added in v0.0.13
GenerateSVG creates an SVG image from the configured badges.
It returns the SVG content as a byte slice, the number of badges included, and an error if the generation fails. This method is typically called by BuildBadges, but it can be used directly if you only need the SVG data.
Example of a generated SVG for two badges ("License:MIT:blue" and "Go:1.22:blue"):
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="168" height="20" viewBox="0 0 168 20">
<!-- Badge: License --> <g transform="translate(0, 0)"> <rect x="0" y="0" width="58" height="20" fill="#6c757d"/> <rect x="58" y="0" width="46" height="20" fill="blue"/> <text x="29" y="14" text-anchor="middle" font-family="sans-serif" font-size="11" fill="white">License</text> <text x="81" y="14" text-anchor="middle" font-family="sans-serif" font-size="11" fill="white">MIT</text> </g> <!-- Badge: Go --> <g transform="translate(109, 0)"> <rect x="0" y="0" width="34" height="20" fill="#6c757d"/> <rect x="34" y="0" width="25" height="20" fill="blue"/> <text x="17" y="14" text-anchor="middle" font-family="sans-serif" font-size="11" fill="white">Go</text> <text x="46" y="14" text-anchor="middle" font-family="sans-serif" font-size="11" fill="white">1.22</text> </g>
</svg>
func (*Badges) OutputFile ¶ added in v0.0.13
OutputFile returns the configured path for the output SVG file. This is the destination where the generated SVG image will be saved.
func (*Badges) ReadmeFile ¶ added in v0.0.13
ReadmeFile returns the configured path for the markdown file to be updated.
type Bashrc ¶ added in v0.0.10
type Bashrc struct {
// contains filtered or unexported fields
}
Bashrc handles updates to .bashrc file using markers
func NewBashrc ¶ added in v0.0.10
func NewBashrc() *Bashrc
NewBashrc creates a new Bashrc handler for ~/.bashrc
type ConsoleFilter ¶
type ConsoleFilter struct {
// contains filtered or unexported fields
}
ConsoleFilter buffers console output and filters out passing tests when in quiet mode.
func NewConsoleFilter ¶
func NewConsoleFilter(quiet bool, output func(string)) *ConsoleFilter
func (*ConsoleFilter) Add ¶
func (cf *ConsoleFilter) Add(input string)
func (*ConsoleFilter) Flush ¶
func (cf *ConsoleFilter) Flush()
type DevBackup ¶ added in v0.0.10
type DevBackup struct {
// contains filtered or unexported fields
}
DevBackup handles backup operations
func NewDevBackup ¶ added in v0.0.10
func NewDevBackup() *DevBackup
NewDevBackup creates a new DevBackup instance
func (*DevBackup) GetCommand ¶ added in v0.0.10
GetCommand retrieves the backup command First checks environment variable, then falls back to .bashrc
func (*DevBackup) Run ¶ added in v0.0.10
Run executes the backup command asynchronously Returns a message for the summary or empty string if not configured
func (*DevBackup) SetCommand ¶ added in v0.0.10
SetCommand sets the backup command in .bashrc and current environment
type Git ¶
type Git struct {
// contains filtered or unexported fields
}
Git handler for Git operations
func (*Git) GenerateNextTag ¶
GenerateNextTag calculates the next semantic version
func (*Git) GetConfigUserEmail ¶ added in v0.0.13
GetConfigUserEmail gets the git user.email
func (*Git) GetConfigUserName ¶ added in v0.0.13
GetConfigUserName gets the git user.name
func (*Git) GetLatestTag ¶
GetLatestTag gets the latest tag
func (*Git) Push ¶
Push executes the complete push workflow (add, commit, tag, push) Returns a summary of operations and error if any.
func (*Git) SetUserConfig ¶ added in v0.0.13
SetUserConfig sets git user name and email
type GitHub ¶ added in v0.0.13
type GitHub struct {
// contains filtered or unexported fields
}
GitHub handler for GitHub operations
func (*GitHub) CreateRepo ¶ added in v0.0.13
CreateRepo creates a new repository on GitHub
func (*GitHub) GetCurrentUser ¶ added in v0.0.13
GetCurrentUser gets the current authenticated user
func (*GitHub) GetHelpfulErrorMessage ¶ added in v0.0.13
GetHelpfulErrorMessage returns a helpful message for common errors
func (*GitHub) IsNetworkError ¶ added in v0.0.13
IsNetworkError checks if an error is likely a network error
func (*GitHub) RepoExists ¶ added in v0.0.13
RepoExists checks if a repository exists
type Go ¶
type Go struct {
// contains filtered or unexported fields
}
Go handler for Go operations
func (*Go) DetectGoExecutable ¶ added in v0.0.13
DetectGoExecutable returns the path to the go executable
func (*Go) GoVersion ¶ added in v0.0.13
GoVersion reads the Go version from the go.mod file in the current directory. It returns the version string (e.g., "1.18") or an empty string if not found.
type GoNew ¶ added in v0.0.13
type GoNew struct {
// contains filtered or unexported fields
}
GoNew orchestrator
type MarkDown ¶ added in v0.0.13
type MarkDown struct {
// contains filtered or unexported fields
}
func NewMarkDown ¶ added in v0.0.13
func NewMarkDown(rootDir, destination string, writerFile func(name string, data []byte) error) *MarkDown
NewMarkDown creates a new MarkDown instance with the root directory. Destination (output directory) and input must be set via methods.
func (*MarkDown) Extract ¶ added in v0.0.13
Extract extracts code blocks from the configured input and writes to outputFile The output file extension determines which code type to extract (.go, .js, .css)
func (*MarkDown) InputByte ¶ added in v0.0.13
InputByte sets the input as a byte slice (markdown content)
func (*MarkDown) InputEmbed ¶ added in v0.0.13
InputEmbed sets the input as any ReaderFile implementation and a relative path inside it
func (*MarkDown) InputPath ¶ added in v0.0.13
func (m *MarkDown) InputPath(pathFile string, readerFile func(name string) ([]byte, error)) *MarkDown
InputPath sets the input as a file path (relative to rootDir)
func (*MarkDown) UpdateSection ¶ added in v0.0.13
UpdateSection updates or creates a section in the input file based on identifier. sectionID: The identifier for the section (e.g., "BADGES"). content: The new content to insert. afterLine: Optional. Implementation tries to insert after this line number if section doesn't exist.
type NewProjectOptions ¶ added in v0.0.13
type NewProjectOptions struct {
Name string // Required, must be valid (alphanumeric, dash, underscore only)
Description string // Required, max 350 chars
Owner string // GitHub owner/organization (default: detected from gh or git config)
Visibility string // "public" or "private" (default: "public")
Directory string // Supports ~/path, ./path, /abs/path (default: ./{Name})
LocalOnly bool // If true, skip remote creation
License string // Default "MIT"
}
NewProjectOptions options for creating a new project