github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/project/new.go (about)

     1  package project
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  
     7  	"github.com/taubyte/tau-cli/cli/common"
     8  	"github.com/taubyte/tau-cli/flags"
     9  	projectFlags "github.com/taubyte/tau-cli/flags/project"
    10  	"github.com/taubyte/tau-cli/i18n"
    11  	projectI18n "github.com/taubyte/tau-cli/i18n/project"
    12  	projectLib "github.com/taubyte/tau-cli/lib/project"
    13  	projectPrompts "github.com/taubyte/tau-cli/prompts/project"
    14  	projectTable "github.com/taubyte/tau-cli/table/project"
    15  	"github.com/urfave/cli/v2"
    16  )
    17  
    18  func (link) New() common.Command {
    19  	return common.Create(
    20  		&cli.Command{
    21  			Flags: []cli.Flag{
    22  				flags.Description,
    23  				projectFlags.Loc,
    24  				flags.EmbedToken,
    25  				projectFlags.Public,
    26  				projectFlags.Private,
    27  				flags.Yes,
    28  			},
    29  			Action: new,
    30  		},
    31  	)
    32  }
    33  
    34  func new(ctx *cli.Context) error {
    35  	embedToken, project, err := projectPrompts.New(ctx)
    36  	if err != nil {
    37  		return err
    38  	}
    39  
    40  	name := project.Name
    41  
    42  	// Check location flag, otherwise clone into cwd
    43  	var location string
    44  	if ctx.IsSet(projectFlags.Loc.Name) {
    45  		location = ctx.String(projectFlags.Loc.Name)
    46  	} else {
    47  		cwd, err := os.Getwd()
    48  		if err != nil {
    49  			return i18n.GettingCwdFailed(err)
    50  		}
    51  
    52  		location = path.Join(cwd, project.Name)
    53  	}
    54  
    55  	if projectTable.Confirm(ctx, project, projectPrompts.CreateThisProject) {
    56  		err = projectLib.New(project, location, embedToken)
    57  		if err != nil {
    58  			return err
    59  		}
    60  		projectI18n.CreatedProject(name)
    61  		projectI18n.SelectedProject(name)
    62  
    63  		return nil
    64  	}
    65  
    66  	return nil
    67  }