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

     1  package modules
     2  
     3  import (
     4  	"embed"
     5  
     6  	"github.com/lmorg/murex/config/profile"
     7  	"github.com/lmorg/murex/lang"
     8  	"github.com/lmorg/murex/lang/ref"
     9  	"github.com/lmorg/murex/lang/types"
    10  )
    11  
    12  //go:embed *.mx
    13  var mxScripts embed.FS
    14  
    15  func newPackage(p *lang.Process) error {
    16  	b, err := mxScripts.ReadFile("cmd-new.mx")
    17  	if err != nil {
    18  		return err
    19  	}
    20  	block := []rune(string(b))
    21  
    22  	fork := p.Fork(lang.F_FUNCTION | lang.F_NEW_MODULE | lang.F_NO_STDIN)
    23  	fork.Name.Set("(new package)")
    24  	fork.FileRef = ref.NewModule("shell/modules.newPackage")
    25  	fork.Variables.Set(p, "MUREX_MODULE_PATH", profile.ModulePath(), types.String)
    26  
    27  	exitNum, err := fork.Execute(block)
    28  	p.ExitNum = exitNum
    29  
    30  	return err
    31  }