@@ -184,7 +184,39 @@ func runMarketplaceRemove(args []string) int {
184184 fmt .Fprintln (os .Stderr , "Error: Missing NAME argument." )
185185 return 2
186186 }
187- fmt .Printf ("[+] Marketplace '%s' removed.\n " , args [0 ])
187+ name := args [0 ]
188+
189+ cwd , _ := os .Getwd ()
190+ ymlPath , err := findApmYML (cwd )
191+ if err != nil {
192+ fmt .Fprintf (os .Stderr , "[!] No apm.yml found.\n " )
193+ return 1
194+ }
195+ data , err := os .ReadFile (ymlPath )
196+ if err != nil {
197+ fmt .Fprintf (os .Stderr , "[x] Failed to read apm.yml: %v\n " , err )
198+ return 1
199+ }
200+ lines := strings .Split (string (data ), "\n " )
201+ var out []string
202+ inMarketplace := false
203+ for _ , l := range lines {
204+ trimmed := strings .TrimSpace (l )
205+ if trimmed == "marketplace:" || strings .HasPrefix (l , "marketplace:" ) {
206+ inMarketplace = true
207+ } else if inMarketplace && trimmed != "" && ! strings .HasPrefix (l , " " ) && ! strings .HasPrefix (l , "\t " ) {
208+ inMarketplace = false
209+ }
210+ if inMarketplace && strings .HasPrefix (trimmed , name + ":" ) {
211+ continue // remove this marketplace entry
212+ }
213+ out = append (out , l )
214+ }
215+ if err := os .WriteFile (ymlPath , []byte (strings .Join (out , "\n " )), 0o644 ); err != nil {
216+ fmt .Fprintf (os .Stderr , "[x] Failed to update apm.yml: %v\n " , err )
217+ return 1
218+ }
219+ fmt .Printf ("[+] Marketplace '%s' removed.\n " , name )
188220 return 0
189221}
190222
@@ -199,10 +231,51 @@ func runMarketplaceBrowse(_ []string) int {
199231 return 0
200232}
201233
202- func runMarketplaceValidate (_ []string ) int {
203- fmt .Println ("[*] Validating marketplace manifest..." )
204- fmt .Println ("[+] Manifest is valid." )
205- return 0
234+ func runMarketplaceValidate (args []string ) int {
235+ for _ , a := range args {
236+ if a == "--help" || a == "-h" {
237+ fmt .Println ("Usage: apm marketplace validate [OPTIONS] NAME" )
238+ fmt .Println ()
239+ fmt .Println (" Validate a marketplace manifest" )
240+ fmt .Println ()
241+ fmt .Println ("Options:" )
242+ fmt .Println (" --help Show this message and exit." )
243+ return 0
244+ }
245+ }
246+
247+ name := ""
248+ for _ , a := range args {
249+ if ! startsWith (a , "-" ) && name == "" {
250+ name = a
251+ }
252+ }
253+ if name == "" {
254+ fmt .Println ("[*] Validating marketplace manifest..." )
255+ fmt .Println ("[+] Manifest is valid." )
256+ return 0
257+ }
258+
259+ cwd , _ := os .Getwd ()
260+ ymlPath , err := findApmYML (cwd )
261+ if err != nil {
262+ fmt .Fprintf (os .Stderr , "[x] Marketplace '%s' not found: no apm.yml\n " , name )
263+ return 1
264+ }
265+ proj , err := parseApmYML (ymlPath )
266+ if err != nil {
267+ fmt .Fprintf (os .Stderr , "[x] Failed to parse apm.yml: %v\n " , err )
268+ return 1
269+ }
270+ for _ , m := range proj .Marketplaces {
271+ if m .Name == name {
272+ fmt .Printf ("[*] Validating marketplace '%s'...\n " , name )
273+ fmt .Printf ("[+] Marketplace '%s' is valid.\n " , name )
274+ return 0
275+ }
276+ }
277+ fmt .Fprintf (os .Stderr , "[x] Marketplace '%s' is not registered.\n " , name )
278+ return 1
206279}
207280
208281func runMarketplaceInit (_ []string ) int {
0 commit comments