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 }