45 lines
		
	
	
	
		
			761 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			761 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package build
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"code.vulpine.solutions/sam/vlp/internal/packages"
 | 
						|
	"code.vulpine.solutions/sam/vlp/internal/state"
 | 
						|
	"github.com/urfave/cli/v2"
 | 
						|
)
 | 
						|
 | 
						|
var Command = &cli.Command{
 | 
						|
	Name:      "build",
 | 
						|
	Aliases:   []string{"b"},
 | 
						|
	Usage:     "Build a package from source",
 | 
						|
	Args:      true,
 | 
						|
	ArgsUsage: "<name>",
 | 
						|
	Action:    action,
 | 
						|
}
 | 
						|
 | 
						|
func action(ctx *cli.Context) error {
 | 
						|
	if ctx.NArg() < 1 {
 | 
						|
		return cli.Exit("Not enough arguments", 1)
 | 
						|
	}
 | 
						|
 | 
						|
	name := ctx.Args().Get(0)
 | 
						|
 | 
						|
	script, err := packages.LookupPackageFile(name)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	s := state.New(name)
 | 
						|
	err = s.Eval(script)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	err = s.Build()
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	fmt.Println(s.Builder.Name, s.Builder.Dependencies)
 | 
						|
	return nil
 | 
						|
}
 |