Skip to content
Snippets Groups Projects
use.go 1.06 KiB
Newer Older
Tamer Tas's avatar
Tamer Tas committed
package cmd

import (
	"time"

	cli "github.com/spf13/cobra"
Tamer Tas's avatar
Tamer Tas committed

	"github.com/tmrts/tmplt/pkg/cmd/util"
Tamer Tas's avatar
Tamer Tas committed
	"github.com/tmrts/tmplt/pkg/template"
	"github.com/tmrts/tmplt/pkg/tmplt"
	"github.com/tmrts/tmplt/pkg/util/exit"
	"github.com/tmrts/tmplt/pkg/util/validate"
func MustValidateArgs(args []string, validations []validate.String) {
	if errs := util.ValidateArgs(args, validations); len(errs) > 0 {
		exit.Error(errs...)
	}
}

Tamer Tas's avatar
Tamer Tas committed
var Use = &cli.Command{
	Use:   "use <template-name>",
Tamer Tas's avatar
Tamer Tas committed
	Short: "Executes a project template",
	Run: func(_ *cli.Command, args []string) {
		MustValidateArgs(args, []validate.String{
			validate.Alphanumeric,
		})

Tamer Tas's avatar
Tamer Tas committed
		tmplPath, err := tmplt.TemplatePath(args[0])
		if err != nil {
			panic(err)
		}

		tmpl, err := template.Get(tmplPath)
Tamer Tas's avatar
Tamer Tas committed
		if err != nil {
			panic(err)
		}

		metadata := template.Metadata{
			Name:    "test-project-1",
			Author:  "test-author",
			Email:   "test@mail.com",
			Date:    time.Now().Format("Mon Jan 2 2006 15:04:05"),
			Version: "0.0.1",
		}

		err = tmpl.Execute(args[1], metadata)
		if err != nil {
			panic(err)
		}
	},
}