tools/echo.go (96 lines of code) (raw):

// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package tools import ( "flag" "fmt" "os" "os/exec" ) func echoIfTool() error { flags := flag.NewFlagSet("echoif", flag.ContinueOnError) flags.Usage = printEchoIfUsage showHelp := flags.Bool("h", false, "Show help") if err := flags.Parse(os.Args[1:]); err != nil { return err } if *showHelp { flags.Usage() return nil } if flags.NArg() != 2 { flags.Usage() return nil } a := flags.Arg(0) b := flags.Arg(1) cmd := exec.Command("sh", "-c", "echo $?") exitCode, err := cmd.Output() if err != nil { return err } // Trim any newline characters from the exit code exitCode = exitCode[:len(exitCode)-1] // Check if the exit code is 0 and print the corresponding value if string(exitCode) == "0" { fmt.Println(a) } else { fmt.Println(b) } return nil } func echoIfEmptyTool() error { flags := flag.NewFlagSet("echoifempty", flag.ContinueOnError) flags.Usage = printEchoIfEmptyUsage showHelp := flags.Bool("h", false, "Show help") if *showHelp { flags.Usage() return nil } if err := flags.Parse(os.Args[1:]); err != nil { return err } if flags.NArg() != 3 { flags.Usage() return nil } str := flags.Arg(0) if str == "" { fmt.Println(flags.Arg(1)) } else { fmt.Println(flags.Arg(2)) } return nil } func echoIfExistsTool() error { flags := flag.NewFlagSet("echoifexists", flag.ContinueOnError) flags.Usage = printEchoIfExistsUsage showHelp := flags.Bool("h", false, "Show help") if *showHelp { flags.Usage() return nil } if err := flags.Parse(os.Args[1:]); err != nil { return err } if flags.NArg() != 3 { flags.Usage() return nil } file := flags.Arg(0) _, err := os.Stat(file) if err == nil { fmt.Println(flags.Arg(1)) return nil } if os.IsNotExist(err) { fmt.Println(flags.Arg(2)) return nil } return err } func printEchoIfUsage() { fmt.Println(MarkdownHelp("echoif")) } func printEchoIfEmptyUsage() { fmt.Println(MarkdownHelp("echoifempty")) } func printEchoIfExistsUsage() { fmt.Println(MarkdownHelp("echoifexists")) }