modernized some parts of code and new flags system
This commit is contained in:
		@@ -147,4 +147,28 @@ func LChmod(L *lua.LState) int {
 | 
			
		||||
	return 2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Flag struct {
 | 
			
		||||
	Name     string
 | 
			
		||||
	Path     string
 | 
			
		||||
	FlagType string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Flags struct {
 | 
			
		||||
	Flags []Flag
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f Flags) LSetFlag(L *lua.LState) int {
 | 
			
		||||
	flagtype := L.CheckString(1)
 | 
			
		||||
	name := L.CheckString(2)
 | 
			
		||||
	flagPath := L.CheckString(3)
 | 
			
		||||
 | 
			
		||||
	f.Flags = append(f.Flags, Flag{
 | 
			
		||||
		Name:     name,
 | 
			
		||||
		Path:     flagPath,
 | 
			
		||||
		FlagType: flagtype,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func llogger() *log.Logger { return log.New(os.Stderr, "script error: ", 0) }
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,8 @@ type PacketLua struct {
 | 
			
		||||
	GlobalSources      *[]Source
 | 
			
		||||
	GlobalDependencies *PkgDependencies
 | 
			
		||||
 | 
			
		||||
	Flags *[]lua_utils.Flag
 | 
			
		||||
 | 
			
		||||
	Build     *lua.LFunction
 | 
			
		||||
	Install   *lua.LFunction
 | 
			
		||||
	PreRemove *lua.LFunction
 | 
			
		||||
@@ -81,7 +83,7 @@ type GETSpecs struct {
 | 
			
		||||
var ErrCantFindPacketDotLua = errors.New("can't find Packet.lua in .tar.zst file")
 | 
			
		||||
var ErrFileDontReturnTable = errors.New("invalid Packet.lua format: the file do not return a table")
 | 
			
		||||
var ErrCannotFindPackageTable = errors.New("invalid Packet.lua format: can't find package table")
 | 
			
		||||
var ErrInstallFunctionDoesNotExist = errors.New("can not find instal()")
 | 
			
		||||
var ErrInstallFunctionDoesNotExist = errors.New("can not find install()")
 | 
			
		||||
var ErrSha256Sum = errors.New("false checksum")
 | 
			
		||||
 | 
			
		||||
// ReadPacket read a Packet.lua and alredy set global vars
 | 
			
		||||
@@ -103,6 +105,8 @@ func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
 | 
			
		||||
	L.SetGlobal("CURRENT_ARCH_NORMALIZED", lua.LString(normalizeArch(runtime.GOARCH)))
 | 
			
		||||
	L.SetGlobal("CURRENT_PLATAFORM", lua.LString(runtime.GOOS))
 | 
			
		||||
 | 
			
		||||
	var newFlags lua_utils.Flags
 | 
			
		||||
	L.SetGlobal("setflags", L.NewFunction(newFlags.LSetFlag))
 | 
			
		||||
	L.SetGlobal("pathjoin", L.NewFunction(lua_utils.Ljoin))
 | 
			
		||||
 | 
			
		||||
	if err := L.DoString(string(f)); err != nil {
 | 
			
		||||
@@ -143,6 +147,10 @@ func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
 | 
			
		||||
		PreRemove: getFunctionFromTable(table, "pre_remove"),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(newFlags.Flags) > 0 {
 | 
			
		||||
		packetLua.Flags = &newFlags.Flags
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	packetLua.LuaState = L
 | 
			
		||||
	if packetLua.Install == nil {
 | 
			
		||||
		return PacketLua{}, ErrInstallFunctionDoesNotExist
 | 
			
		||||
@@ -205,7 +213,7 @@ func GetSource(url, method string, info any, tryAttempts int) (any, error) {
 | 
			
		||||
		client := http.Client{Timeout: 5 * time.Minute}
 | 
			
		||||
 | 
			
		||||
		var resp *http.Response
 | 
			
		||||
		for i := 0; i < tryAttempts; i++ {
 | 
			
		||||
		for range tryAttempts {
 | 
			
		||||
			resp, err = client.Do(req)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
@@ -251,7 +259,7 @@ func GetSource(url, method string, info any, tryAttempts int) (any, error) {
 | 
			
		||||
		client := http.Client{Timeout: 5 * time.Minute}
 | 
			
		||||
 | 
			
		||||
		var resp *http.Response
 | 
			
		||||
		for i := 0; i < tryAttempts; i++ {
 | 
			
		||||
		for range tryAttempts {
 | 
			
		||||
			resp, err = client.Do(req)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
@@ -328,6 +336,8 @@ func (pkg PacketLua) ExecuteBuild(cfg *Config) error {
 | 
			
		||||
	L.SetGlobal("SOURCESDIR", lua.LString(cfg.SourcesDir))
 | 
			
		||||
	L.SetGlobal("PACKETDIR", lua.LString(cfg.PacketDir))
 | 
			
		||||
 | 
			
		||||
	var newFlags lua_utils.Flags
 | 
			
		||||
	L.SetGlobal("setflags", L.NewFunction(newFlags.LSetFlag))
 | 
			
		||||
	L.SetGlobal("pathjoin", L.NewFunction(lua_utils.Ljoin))
 | 
			
		||||
 | 
			
		||||
	os.Chdir(cfg.RootDir)
 | 
			
		||||
@@ -335,7 +345,14 @@ func (pkg PacketLua) ExecuteBuild(cfg *Config) error {
 | 
			
		||||
	os.Setenv("PATH", os.Getenv("PATH")+":"+cfg.BinDir)
 | 
			
		||||
 | 
			
		||||
	L.Push(pkg.Build)
 | 
			
		||||
	return L.PCall(0, 0, nil)
 | 
			
		||||
	L.Call(0, 0)
 | 
			
		||||
 | 
			
		||||
	if len(newFlags.Flags) > 0 && pkg.Flags != nil {
 | 
			
		||||
		*pkg.Flags = append(*pkg.Flags, newFlags.Flags...)
 | 
			
		||||
	} else if len(newFlags.Flags) > 0 {
 | 
			
		||||
		*pkg.Flags = newFlags.Flags
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pkg PacketLua) ExecuteInstall(cfg *Config) error {
 | 
			
		||||
@@ -362,13 +379,21 @@ func (pkg PacketLua) ExecuteInstall(cfg *Config) error {
 | 
			
		||||
	L.SetGlobal("SOURCESDIR", lua.LString(cfg.SourcesDir))
 | 
			
		||||
	L.SetGlobal("PACKETDIR", lua.LString(cfg.PacketDir))
 | 
			
		||||
 | 
			
		||||
	var newFlags lua_utils.Flags
 | 
			
		||||
	L.SetGlobal("setflags", L.NewFunction(newFlags.LSetFlag))
 | 
			
		||||
	L.SetGlobal("pathjoin", L.NewFunction(lua_utils.Ljoin))
 | 
			
		||||
 | 
			
		||||
	os.Chdir(cfg.RootDir)
 | 
			
		||||
 | 
			
		||||
	os.Setenv("PATH", os.Getenv("PATH")+":"+cfg.BinDir)
 | 
			
		||||
 | 
			
		||||
	L.Push(pkg.Install)
 | 
			
		||||
	L.Call(0, 0)
 | 
			
		||||
 | 
			
		||||
	if len(newFlags.Flags) > 0 && pkg.Flags != nil {
 | 
			
		||||
		*pkg.Flags = append(*pkg.Flags, newFlags.Flags...)
 | 
			
		||||
	} else if len(newFlags.Flags) > 0 {
 | 
			
		||||
		*pkg.Flags = newFlags.Flags
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user