func main() { var widthstr string flag.StringVarP(&widthstr, "width", "w", "100%", "Output width. Supports column count, percentage and decimals.") flag.Usage = usage flag.Parse() if len(flag.Args()) == 0 { flag.Usage() os.Exit(1) } width := getColumns(widthstr) - 1 // -1 for the reset column for _, fpath := range flag.Args() { im := aimg.NewImage(width) handleErr(im.ParseFile(fpath)) if terminal.IsTerminal(os.Stdout) { fmt.Print(im.BlankReset()) } im.WriteTo(os.Stdout) w, h := im.ActualSize() fmt.Println("File:", filepath.Base(fpath), "size:", w, "x", h) } }
func (p PlatinumSearcher) Run(args []string) int { parser := newOptionParser(&opts) conflag.LongHyphen = true conflag.BoolValue = false for _, c := range []string{filepath.Join(home.Dir(), ".ptconfig.toml"), ".ptconfig.toml"} { if args, err := conflag.ArgsFrom(c); err == nil { parser.ParseArgs(args) } } args, err := parser.ParseArgs(args) if err != nil { return ExitCodeError } if opts.Version { fmt.Printf("pt version %s\n", version) return ExitCodeOK } if len(args) == 0 && !opts.SearchOption.EnableFilesWithRegexp { parser.WriteHelp(p.Err) return ExitCodeError } if !terminal.IsTerminal(os.Stdout) { opts.OutputOption.EnableColor = false opts.OutputOption.EnableGroup = false } if p.givenStdin() && p.noRootPathIn(args) { opts.SearchOption.SearchStream = true } if opts.SearchOption.EnableFilesWithRegexp { args = append([]string{""}, args...) } if opts.OutputOption.Count { opts.OutputOption.Before = 0 opts.OutputOption.After = 0 opts.OutputOption.Context = 0 } search := search{ roots: p.rootsFrom(args), out: p.Out, } if err = search.start(p.patternFrom(args)); err != nil { fmt.Fprintf(p.Err, "%s\n", err) return ExitCodeError } return ExitCodeOK }
func main() { opts.Color = opts.SetEnableColor opts.NoColor = opts.SetDisableColor opts.EnableColor = true opts.SkipVcsIgnore = opts.SkipVcsIgnores parser := flags.NewParser(&opts, flags.Default) parser.Name = "pt" parser.Usage = "[OPTIONS] PATTERN [PATH]" args, err := parser.Parse() if err != nil { os.Exit(1) } if opts.Version { fmt.Printf("%s\n", version) os.Exit(0) } if len(args) == 0 && opts.FilesWithRegexp == "" { parser.WriteHelp(os.Stdout) os.Exit(1) } opts.SearchStream = false if len(args) == 1 { fi, err := os.Stdin.Stat() if runtime.GOOS == "windows" { if err == nil { opts.SearchStream = true opts.NoGroup = true } } else { if err != nil { os.Exit(1) } mode := fi.Mode() if (mode&os.ModeNamedPipe != 0) || mode.IsRegular() { opts.SearchStream = true opts.NoGroup = true } } } var roots = []string{"."} if len(args) >= 2 { roots = []string{} for _, root := range args[1:] { root = strings.TrimRight(root, "\"") _, err := os.Lstat(root) if err != nil { fmt.Fprintf(os.Stderr, "%s\n", err) os.Exit(1) } roots = append(roots, root) } } opts.Proc = runtime.NumCPU() if !terminal.IsTerminal(os.Stdout) { if !opts.ForceColor { opts.EnableColor = false } opts.NoGroup = true } if opts.Context > 0 { opts.Before = opts.Context opts.After = opts.Context } pattern := "" if len(args) > 0 { pattern = args[0] } if opts.WordRegexp { opts.Regexp = true pattern = "\\b" + pattern + "\\b" } start := time.Now() searcher := pt.PlatinumSearcher{roots, pattern, &opts} err = searcher.Search() if err != nil { fmt.Fprintf(os.Stderr, "%s\n", err) os.Exit(1) } if opts.Stats { elapsed := time.Since(start) fmt.Printf("%d Files Searched\n", pt.FilesSearched) fmt.Printf("%s Elapsed\n", elapsed) } if pt.FileMatchCount == 0 && pt.MatchCount == 0 { os.Exit(1) } }