func newRootCmd()

in cmd/root.go [29:84]


func newRootCmd() *cobra.Command {
	var showVersion bool

	cmd := &cobra.Command{
		Use:   "tempura",
		Short: "tempura is a Tool that fills in templates.",
		Long:  `A Fast and Flexible Template Fill Tool built with love by korosuke613 in Go.`,
		RunE: func(_ *cobra.Command, args []string) error {
			if showVersion {
				printVersion()
				return nil
			}

			t := lib.Tempura{Template: templateString, TemplateFilePath: templateFilePath}

			if inputString != "" {
				if err := t.SetInputFromString(inputString); err != nil {
					return err
				}
			} else {
				if err := t.SetInputFromJSON(inputFilePath); err != nil {
					return err
				}
			}

			output, err := t.Fill()
			if err != nil {
				return err
			}

			if outputFilePath != "" {
				file, err := os.Create(outputFilePath)
				if err != nil {
					return err
				}
				defer file.Close()

				_, err = file.WriteString(output)
				if err != nil {
					return err
				}
			} else {
				fmt.Println(output)
			}
			return nil
		},
	}
	cmd.PersistentFlags().BoolVarP(&showVersion, "version", "v", false, "show version")
	cmd.PersistentFlags().StringVarP(&inputFilePath, "input-filepath", "i", "input.json", "input file name")
	cmd.PersistentFlags().StringVarP(&templateFilePath, "template-filepath", "t", "template.tmpl", "template file name")
	cmd.PersistentFlags().StringVarP(&outputFilePath, "output", "o", "", "output file name")
	cmd.PersistentFlags().StringVar(&inputString, "input-string", "", "input string")
	cmd.PersistentFlags().StringVar(&templateString, "template-string", "", "template string")

	return cmd
}