MCPcopy Create free account
hub / github.com/github/gh-aw / GenerateActionMetadataCommand

Function GenerateActionMetadataCommand

pkg/cli/generate_action_metadata_command.go:60–150  ·  view source on GitHub ↗

GenerateActionMetadataCommand generates action.yml and README.md files for JavaScript modules

()

Source from the content-addressed store, hash-verified

58
59// GenerateActionMetadataCommand generates action.yml and README.md files for JavaScript modules
60func GenerateActionMetadataCommand() error {
61 jsDir := "pkg/workflow/js"
62 actionsDir := "actions"
63
64 generateActionMetadataLog.Print("Starting action metadata generation")
65
66 // Select target JavaScript files (simple ones for proof of concept)
67 targetFiles := []string{
68 "noop.cjs",
69 "minimize_comment.cjs",
70 "close_issue.cjs",
71 "close_pull_request.cjs",
72 "close_discussion.cjs",
73 }
74
75 fmt.Fprintln(os.Stderr, console.FormatInfoMessage(fmt.Sprintf("🔍 Generating actions for %d JavaScript modules...", len(targetFiles))))
76
77 generatedCount := 0
78 generateActionMetadataLog.Printf("Processing %d target JavaScript files in %s", len(targetFiles), jsDir)
79 for _, filename := range targetFiles {
80 jsPath := filepath.Join(jsDir, filename)
81 generateActionMetadataLog.Printf("Processing file: %s", filename)
82
83 // Read file content directly from filesystem
84 contentBytes, err := os.ReadFile(jsPath)
85 if err != nil {
86 generateActionMetadataLog.Printf("Skipping %s: failed to read file: %v", filename, err)
87 fmt.Fprintln(os.Stderr, console.FormatWarningMessage(fmt.Sprintf("⚠ Skipping %s: %s", filename, err.Error())))
88 continue
89 }
90 content := string(contentBytes)
91
92 fmt.Fprintln(os.Stderr, console.FormatInfoMessage("\n📦 Processing: "+filename))
93
94 // Extract metadata
95 metadata, err := extractActionMetadata(filename, content)
96 if err != nil {
97 fmt.Fprintln(os.Stderr, console.FormatErrorMessage(fmt.Sprintf("✗ Failed to extract metadata from %s: %s", filename, err.Error())))
98 continue
99 }
100
101 // Create action directory
102 actionDir := filepath.Join(actionsDir, metadata.ActionName)
103 if err := os.MkdirAll(actionDir, constants.DirPermPublic); err != nil {
104 return fmt.Errorf("failed to create directory %s: %w", actionDir, err)
105 }
106
107 // Create src directory
108 srcDir := filepath.Join(actionDir, "src")
109 if err := os.MkdirAll(srcDir, constants.DirPermPublic); err != nil {
110 return fmt.Errorf("failed to create directory %s: %w", srcDir, err)
111 }
112
113 // Generate action.yml
114 if err := generateActionYml(actionDir, metadata); err != nil {
115 fmt.Fprintln(os.Stderr, console.FormatErrorMessage("✗ Failed to generate action.yml: "+err.Error()))
116 continue
117 }

Callers 2

mainFunction · 0.92

Calls 11

FormatInfoMessageFunction · 0.92
FormatWarningMessageFunction · 0.92
FormatErrorMessageFunction · 0.92
FormatSuccessMessageFunction · 0.92
extractActionMetadataFunction · 0.85
generateActionYmlFunction · 0.85
generateReadmeFunction · 0.85
PrintMethod · 0.80
PrintfMethod · 0.45
ErrorMethod · 0.45
ErrorfMethod · 0.45