mirror of
https://github.com/ivuorinen/gh-action-readme.git
synced 2026-02-21 03:52:03 +00:00
Initial commit
This commit is contained in:
62
internal/validation/strings.go
Normal file
62
internal/validation/strings.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package validation
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CleanVersionString removes common prefixes and normalizes version strings.
|
||||
func CleanVersionString(version string) string {
|
||||
cleaned := strings.TrimSpace(version)
|
||||
return strings.TrimPrefix(cleaned, "v")
|
||||
}
|
||||
|
||||
// ParseGitHubURL extracts organization and repository from a GitHub URL.
|
||||
func ParseGitHubURL(url string) (organization, repository string) {
|
||||
// Handle different GitHub URL formats
|
||||
patterns := []string{
|
||||
`github\.com[:/]([^/]+)/([^/.]+)(?:\.git)?`,
|
||||
`^([^/]+)/([^/.]+)$`, // Simple org/repo format
|
||||
}
|
||||
|
||||
for _, pattern := range patterns {
|
||||
re := regexp.MustCompile(pattern)
|
||||
matches := re.FindStringSubmatch(url)
|
||||
if len(matches) >= 3 {
|
||||
return matches[1], matches[2]
|
||||
}
|
||||
}
|
||||
|
||||
return "", ""
|
||||
}
|
||||
|
||||
// SanitizeActionName converts action name to a URL-friendly format.
|
||||
func SanitizeActionName(name string) string {
|
||||
// Convert to lowercase and replace spaces with hyphens
|
||||
return strings.ToLower(strings.ReplaceAll(strings.TrimSpace(name), " ", "-"))
|
||||
}
|
||||
|
||||
// TrimAndNormalize removes extra whitespace and normalizes strings.
|
||||
func TrimAndNormalize(input string) string {
|
||||
// Remove leading/trailing whitespace and normalize internal whitespace
|
||||
re := regexp.MustCompile(`\s+`)
|
||||
return re.ReplaceAllString(strings.TrimSpace(input), " ")
|
||||
}
|
||||
|
||||
// FormatUsesStatement creates a properly formatted GitHub Action uses statement.
|
||||
func FormatUsesStatement(org, repo, version string) string {
|
||||
if org == "" || repo == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
if version == "" {
|
||||
version = "v1"
|
||||
}
|
||||
|
||||
// Ensure version starts with @
|
||||
if !strings.HasPrefix(version, "@") {
|
||||
version = "@" + version
|
||||
}
|
||||
|
||||
return org + "/" + repo + version
|
||||
}
|
||||
Reference in New Issue
Block a user