spf13--cobra/cobra/cmd/init.go

79 lines
2.1 KiB
Go
Raw Normal View History

2015-10-28 16:51:48 +00:00
// Copyright © 2015 Steve Francia <spf@spf13.com>.
//
// Licensed 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 cmd
import (
"fmt"
2015-10-28 16:51:48 +00:00
"os"
2017-04-29 10:02:02 +00:00
"path"
"github.com/spf13/cobra"
"github.com/spf13/viper"
2015-10-28 16:51:48 +00:00
)
var (
pkgName string
initCmd = &cobra.Command{
Use: "init [name]",
Aliases: []string{"initialize", "initialise", "create"},
Short: "Initialize a Cobra Application",
Long: `Initialize (cobra init) will create a new application, with a license
and the appropriate structure for a Cobra-based CLI application.
2015-10-28 16:51:48 +00:00
* If a name is provided, it will be created in the current directory;
* If no name is provided, the current directory will be assumed;
* If a relative path is provided, it will be created inside $GOPATH
(e.g. github.com/spf13/hugo);
* If an absolute path is provided, it will be created;
* If the directory already exists but is empty, it will be used.
2015-10-28 16:51:48 +00:00
2015-12-17 21:43:23 +00:00
Init will not use an existing directory with contents.`,
2015-10-28 16:51:48 +00:00
Run: func(cmd *cobra.Command, args []string) {
wd, err := os.Getwd()
if err != nil {
er(err)
}
if len(args) > 0 {
if args[0] != "." {
wd = fmt.Sprintf("%s/%s", wd, args[0])
}
}
2019-01-30 08:02:51 +00:00
project := &Project{
AbsolutePath: wd,
PkgName: pkgName,
Legal: getLicense(),
Copyright: copyrightLine(),
2019-01-29 09:19:08 +00:00
Viper: viper.GetBool("useViper"),
AppName: path.Base(pkgName),
2017-05-05 08:06:10 +00:00
}
2017-04-29 10:02:02 +00:00
if err := project.Create(); err != nil {
er(err)
}
2019-01-29 09:07:11 +00:00
fmt.Printf("Your Cobra applicaton is ready at\n%s\n", project.AbsolutePath)
},
}
)
2017-05-05 08:06:10 +00:00
func init() {
initCmd.Flags().StringVar(&pkgName, "pkg-name", "", "fully qualified pkg name")
initCmd.MarkFlagRequired("pkg-name")
2019-01-30 07:41:41 +00:00
}