79 lines · 2.0 KB · Go
RawDownload
package cli import (	"context"	"errors"	"flag"	"fmt"	"strings" 	"github.com/openclaw/crawlkit/releasecheck"	"github.com/openclaw/gitcrawl/internal/config") const gitcrawlUpgradeHint = "brew upgrade openclaw/tap/gitcrawl" func gitcrawlReleaseCheckOptions(force bool) releasecheck.Options {	cfg := config.Default()	return releasecheck.Options{		AppName:        "gitcrawl",		Owner:          "openclaw",		Repo:           "gitcrawl",		CurrentVersion: version,		CacheDir:       cfg.CacheDir,		Force:          force,	}} func (a *App) maybeNotifyRelease(ctx context.Context, args []string) {	_, _ = releasecheck.Notify(ctx, releasecheck.NotifyOptions{		Options:     gitcrawlReleaseCheckOptions(false),		Stderr:      a.Stderr,		InstallHint: gitcrawlUpgradeHint,		Args:        args,		JSONOutput:  a.format == FormatJSON,		IsTerminal:  releasecheck.StderrIsTerminal(),	})} func releaseNotificationAllowed(args []string) bool {	if len(args) == 0 || args[0] != "fill-pr-details" {		return true	}	for _, arg := range args[1:] {		name, ok := flagName(arg)		if !ok {			continue		}		name, _, _ = strings.Cut(name, "=")		if name == "reserve-rate-limit" {			return false		}	}	return true} func (a *App) runCheckUpdate(ctx context.Context, args []string) error {	fs := flag.NewFlagSet("check-update", flag.ContinueOnError)	fs.SetOutput(a.Stderr)	jsonOut := fs.Bool("json", false, "write JSON output")	force := fs.Bool("force", false, "force a fresh release check")	if err := fs.Parse(args); err != nil {		return usageErr(err)	}	if fs.NArg() != 0 {		return usageErr(fmt.Errorf("check-update takes flags only"))	}	result, err := releasecheck.Check(ctx, gitcrawlReleaseCheckOptions(*force))	if err != nil && !errors.Is(err, releasecheck.ErrSkipped) {		return err	}	if *jsonOut || a.format == FormatJSON {		if *jsonOut {			a.format = FormatJSON		}		return a.writeOutput("check-update", result, false)	}	_, err = fmt.Fprint(a.Stdout, releasecheck.StatusText("gitcrawl", gitcrawlUpgradeHint, result))	return err}