package app import ( "context" "flag" "fmt" "io" "strings" ) // ArtifactsList lists effective artifact sources. func ArtifactsList(ctx context.Context, args []string, out io.Writer) error { fs := flag.NewFlagSet("artifacts list", flag.ContinueOnError) fs.SetOutput(io.Discard) var flags commonConfigFlags var remote bool addCommonConfigFlags(fs, &flags) fs.BoolVar(&remote, "remote", false, "inspect remote publish availability") if err := parseSessionAwareFlags("artifacts list", fs, args, &flags.sessionID); err != nil { return err } if strings.TrimSpace(flags.sessionID) == "" { return fmt.Errorf("artifacts list: session_id is required") } cfg, store, locks, m, err := loadHelperContext(ctx, flags, remote) if err != nil { return fmt.Errorf("artifacts list: %w", err) } catalog, err := buildHelperArtifactCatalog(cfg, m) if err != nil { return fmt.Errorf("artifacts list: %w", err) } publishedRemoteState := map[string]string{} if remote && store != nil { publishedRemoteState = remotePublishedOutputAvailability(ctx, cfg, store, catalog) } writeArtifactList(out, cfg, catalog, locks, publishedRemoteState) return nil }