github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/dream/build/website.go (about)

     1  package build
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path"
     7  	"strings"
     8  
     9  	dreamI18n "github.com/taubyte/tau-cli/i18n/dream"
    10  	websiteI18n "github.com/taubyte/tau-cli/i18n/website"
    11  	applicationLib "github.com/taubyte/tau-cli/lib/application"
    12  	dreamLib "github.com/taubyte/tau-cli/lib/dream"
    13  	websitePrompts "github.com/taubyte/tau-cli/prompts/website"
    14  	"github.com/urfave/cli/v2"
    15  )
    16  
    17  func buildWebsite(ctx *cli.Context) error {
    18  	if !dreamLib.IsRunning() {
    19  		dreamI18n.Help().IsDreamlandRunning()
    20  		return dreamI18n.ErrorDreamlandNotStarted
    21  	}
    22  
    23  	website, err := websitePrompts.GetOrSelect(ctx)
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	builder, err := initBuild()
    29  	if err != nil {
    30  		return err
    31  	}
    32  
    33  	compileFor := &dreamLib.CompileForRepository{
    34  		ProjectId:  builder.project.Get().Id(),
    35  		ResourceId: website.Id,
    36  		Branch:     builder.currentBranch,
    37  	}
    38  
    39  	if len(builder.selectedApp) > 0 {
    40  		app, err := applicationLib.Get(builder.selectedApp)
    41  		if err != nil {
    42  			return err
    43  		}
    44  
    45  		compileFor.ApplicationId = app.Id
    46  	}
    47  
    48  	splitName := strings.Split(website.RepoName, "/")
    49  	if len(splitName) != 2 {
    50  		return fmt.Errorf("invalid repository name `%s` expected `user/repo`", website.RepoName)
    51  	}
    52  
    53  	compileFor.Path = path.Join(builder.projectConfig.WebsiteLoc(), splitName[1])
    54  	_, err = os.Stat(compileFor.Path)
    55  	if err != nil {
    56  		websiteI18n.Help().BeSureToCloneWebsite()
    57  		return err
    58  	}
    59  
    60  	return compileFor.Execute()
    61  }