github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/modules/cmd-git.go (about)

     1  package modules
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/lmorg/murex/config/profile"
     8  	"github.com/lmorg/murex/lang"
     9  	"github.com/lmorg/murex/lang/ref"
    10  	"github.com/lmorg/murex/lang/types"
    11  )
    12  
    13  func gitPackage(p *lang.Process) error {
    14  	block := `exec git -C "$(MUREX_MODULE_PATH)/$(PACKAGE_NAME)" @PARAMS`
    15  
    16  	if p.Parameters.Len() < 3 {
    17  		return fmt.Errorf("expecting `murex-package git package parameters...`")
    18  	}
    19  	params := p.Parameters.StringArray()
    20  	packageName := params[1]
    21  
    22  	f, err := os.Stat(profile.ModulePath() + "/" + packageName)
    23  	if err != nil {
    24  		return err
    25  	}
    26  	if !f.IsDir() {
    27  		return fmt.Errorf("package path doesn't exist or isn't a directory: %s", profile.ModulePath()+"/"+packageName)
    28  	}
    29  
    30  	fork := p.Fork(lang.F_FUNCTION | lang.F_NEW_MODULE | lang.F_NO_STDIN)
    31  	fork.Name.Set("(git package)")
    32  	fork.Parameters.DefineParsed(params[2:])
    33  	fork.FileRef = ref.NewModule("shell/modules.gitPackage")
    34  	fork.Variables.Set(p, "MUREX_MODULE_PATH", profile.ModulePath(), types.String)
    35  	fork.Variables.Set(p, "PACKAGE_NAME", packageName, types.String)
    36  
    37  	exitNum, err := fork.Execute([]rune(block))
    38  	p.ExitNum = exitNum
    39  
    40  	return err
    41  }