Compare commits
5 Commits
05af0969e9
...
4c88ec3bc2
| Author | SHA1 | Date | |
|---|---|---|---|
| 4c88ec3bc2 | |||
| ff5e271195 | |||
| cbea1dd8b5 | |||
| acf00bc5f8 | |||
| b15d847fd2 |
120
internal/lua/luafunctions.go
Normal file
120
internal/lua/luafunctions.go
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
package lua
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
lua "github.com/yuin/gopher-lua"
|
||||||
|
)
|
||||||
|
|
||||||
|
func LRemove(L *lua.LState) int {
|
||||||
|
filename := L.CheckString(1)
|
||||||
|
|
||||||
|
err := os.RemoveAll(filename)
|
||||||
|
if err != nil {
|
||||||
|
L.Push(lua.LFalse)
|
||||||
|
L.Push(lua.LString(err.Error()))
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
L.Push(lua.LTrue)
|
||||||
|
L.Push(lua.LNil)
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
func LRename(L *lua.LState) int {
|
||||||
|
oldname := L.CheckString(1)
|
||||||
|
newname := L.CheckString(2)
|
||||||
|
|
||||||
|
if err := os.Rename(oldname, newname); err != nil {
|
||||||
|
L.Push(lua.LFalse)
|
||||||
|
L.Push(lua.LString(err.Error()))
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
L.Push(lua.LTrue)
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
func LCopy(L *lua.LState) int {
|
||||||
|
oldname := L.CheckString(1)
|
||||||
|
newname := L.CheckString(2)
|
||||||
|
|
||||||
|
if err := copyDir(oldname, newname); err != nil {
|
||||||
|
L.Push(lua.LFalse)
|
||||||
|
L.Push(lua.LString(err.Error()))
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
L.Push(lua.LTrue)
|
||||||
|
L.Push(lua.LNil)
|
||||||
|
return 2
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func LSymlink(L *lua.LState) int {
|
||||||
|
fileName := L.CheckString(1)
|
||||||
|
destination := L.CheckString(2)
|
||||||
|
|
||||||
|
_ = os.RemoveAll(destination)
|
||||||
|
if err := os.Symlink(fileName, destination); err != nil {
|
||||||
|
L.Push(lua.LFalse)
|
||||||
|
L.Push(lua.LString(err.Error()))
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
L.Push(lua.LTrue)
|
||||||
|
L.Push(lua.LNil)
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
func Ljoin(L *lua.LState) int {
|
||||||
|
|
||||||
|
n := L.GetTop()
|
||||||
|
parts := make([]string, 0, n)
|
||||||
|
|
||||||
|
for i := 1; i <= n; i++ {
|
||||||
|
val := L.Get(i)
|
||||||
|
parts = append(parts, val.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
result := filepath.Join(parts...)
|
||||||
|
L.Push(lua.LString(result))
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
func LMkdir(L *lua.LState) int {
|
||||||
|
path := L.CheckString(1)
|
||||||
|
perm := L.CheckInt(2)
|
||||||
|
|
||||||
|
if err := os.MkdirAll(path, os.FileMode(perm)); err != nil {
|
||||||
|
L.Push(lua.LFalse)
|
||||||
|
L.Push(lua.LString(err.Error()))
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
L.Push(lua.LTrue)
|
||||||
|
L.Push(lua.LNil)
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
func LError(L *lua.LState) int {
|
||||||
|
n := L.GetTop()
|
||||||
|
parts := make([]any, 0, n)
|
||||||
|
|
||||||
|
for i := 1; i <= n; i++ {
|
||||||
|
val := L.Get(i)
|
||||||
|
parts = append(parts, val.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
llogger().Panic(parts...)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func LSetEnv(L *lua.LState) int {
|
||||||
|
env := L.CheckString(1)
|
||||||
|
value := L.CheckString(2)
|
||||||
|
os.Setenv(env, value)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func llogger() *log.Logger { return log.New(os.Stderr, "script error: ", 0) }
|
||||||
95
internal/lua/utils.go
Normal file
95
internal/lua/utils.go
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
package lua
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func copyDir(src string, dest string) error {
|
||||||
|
if stats, err := os.Stat(src); err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
if stats.IsDir() {
|
||||||
|
files, err := os.ReadDir(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := os.MkdirAll(dest, 0o755); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
if file.IsDir() {
|
||||||
|
copyDir(filepath.Join(src, file.Name()), filepath.Join(dest, file.Name()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
srcFile := filepath.Join(src, file.Name())
|
||||||
|
|
||||||
|
f, err := os.Create(filepath.Join(dest, file.Name()))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
opennedSrcFile, err := os.Open(srcFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer opennedSrcFile.Close()
|
||||||
|
if _, err := io.Copy(f, opennedSrcFile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := copyFile(src, dest); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func copyFile(source string, destination string) error {
|
||||||
|
src, err := os.Open(source)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer src.Close()
|
||||||
|
|
||||||
|
status, err := src.Stat()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = os.MkdirAll(filepath.Dir(destination), 0o755)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
dst, err := os.Create(destination)
|
||||||
|
if err != nil {
|
||||||
|
if !os.IsExist(err) {
|
||||||
|
dst, err = os.Open(destination)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defer dst.Close()
|
||||||
|
if err := dst.Chmod(status.Mode()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = io.Copy(dst, src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -287,3 +287,58 @@ func parseVersionString(s string) version {
|
|||||||
|
|
||||||
return version{}
|
return version{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func normalizeArch(arch string) string {
|
||||||
|
switch arch {
|
||||||
|
case "386":
|
||||||
|
return "i686"
|
||||||
|
case "amd64":
|
||||||
|
return "x86_64"
|
||||||
|
case "amd64p32":
|
||||||
|
return "x86_64"
|
||||||
|
case "arm":
|
||||||
|
return "arm"
|
||||||
|
case "arm64":
|
||||||
|
return "aarch64"
|
||||||
|
case "arm64be":
|
||||||
|
return "aarch64_be"
|
||||||
|
case "armbe":
|
||||||
|
return "armbe"
|
||||||
|
case "loong64":
|
||||||
|
return "loongarch64"
|
||||||
|
case "mips":
|
||||||
|
return "mips"
|
||||||
|
case "mips64":
|
||||||
|
return "mips64"
|
||||||
|
case "mips64le":
|
||||||
|
return "mips64el"
|
||||||
|
case "mips64p32":
|
||||||
|
return "mips64"
|
||||||
|
case "mips64p32le":
|
||||||
|
return "mips64el"
|
||||||
|
case "mipsle":
|
||||||
|
return "mipsel"
|
||||||
|
case "ppc":
|
||||||
|
return "powerpc"
|
||||||
|
case "ppc64":
|
||||||
|
return "ppc64"
|
||||||
|
case "ppc64le":
|
||||||
|
return "ppc64le"
|
||||||
|
case "riscv":
|
||||||
|
return "riscv"
|
||||||
|
case "riscv64":
|
||||||
|
return "riscv64"
|
||||||
|
case "s390":
|
||||||
|
return "s390"
|
||||||
|
case "s390x":
|
||||||
|
return "s390x"
|
||||||
|
case "sparc":
|
||||||
|
return "sparc"
|
||||||
|
case "sparc64":
|
||||||
|
return "sparc64"
|
||||||
|
case "wasm":
|
||||||
|
return "wasm"
|
||||||
|
default:
|
||||||
|
return arch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,24 +1,39 @@
|
|||||||
package packet
|
package packet
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
BinDir string
|
BinDir *string
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultBinDir = "/usr/bin"
|
const defaultBinDir = "/usr/bin"
|
||||||
|
|
||||||
func checkConfig(cfg *Config) *Config {
|
func checkConfig(cfg *Config) *Config {
|
||||||
|
|
||||||
if cfg == nil {
|
if cfg == nil {
|
||||||
|
bin := defaultBinDir
|
||||||
return &Config{
|
return &Config{
|
||||||
BinDir: defaultBinDir,
|
BinDir: &bin,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if cfg.BinDir == "" {
|
if *cfg.BinDir == "" || cfg.BinDir == nil {
|
||||||
|
bin := defaultBinDir
|
||||||
return &Config{
|
return &Config{
|
||||||
BinDir: defaultBinDir,
|
BinDir: &bin,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
func checkConfigSrc(cfg *GetSourceConfig) *GetSourceConfig {
|
||||||
|
if cfg == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case *cfg.PacketDir == "" || cfg.PacketDir == nil:
|
||||||
|
s := randStringBytes(12)
|
||||||
|
cfg.PacketDir = &s
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,14 +2,20 @@ package packet
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
|
"bytes"
|
||||||
|
"crypto/sha256"
|
||||||
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"net/http"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/klauspost/compress/zstd"
|
"github.com/klauspost/compress/zstd"
|
||||||
|
|
||||||
|
lua_utils "github.com/roboogg133/packets/internal/lua"
|
||||||
lua "github.com/yuin/gopher-lua"
|
lua "github.com/yuin/gopher-lua"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -28,12 +34,13 @@ type PacketLua struct {
|
|||||||
|
|
||||||
Build *lua.LFunction
|
Build *lua.LFunction
|
||||||
Install *lua.LFunction
|
Install *lua.LFunction
|
||||||
|
PreRemove *lua.LFunction
|
||||||
}
|
}
|
||||||
|
|
||||||
type Source struct {
|
type Source struct {
|
||||||
Method string
|
Method string
|
||||||
Url string
|
Url string
|
||||||
Specs interface{}
|
Specs any
|
||||||
}
|
}
|
||||||
|
|
||||||
type VersionConstraint string
|
type VersionConstraint string
|
||||||
@@ -70,6 +77,8 @@ type GETSpecs struct {
|
|||||||
var ErrCantFindPacketDotLua = errors.New("can't find Packet.lua in .tar.zst file")
|
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 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 ErrCannotFindPackageTable = errors.New("invalid Packet.lua format: can't find package table")
|
||||||
|
var ErrInstallFunctionDoesNotExist = errors.New("can not find instal()")
|
||||||
|
var ErrSha256Sum = errors.New("false checksum")
|
||||||
|
|
||||||
// ReadPacket read a Packet.lua and alredy set global vars
|
// ReadPacket read a Packet.lua and alredy set global vars
|
||||||
func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
|
func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
|
||||||
@@ -79,15 +88,19 @@ func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
|
|||||||
defer L.Close()
|
defer L.Close()
|
||||||
|
|
||||||
osObject := L.GetGlobal("os").(*lua.LTable)
|
osObject := L.GetGlobal("os").(*lua.LTable)
|
||||||
|
osObject.RawSetString("setenv", L.NewFunction(lua_utils.LSetEnv))
|
||||||
ioObject := L.GetGlobal("io").(*lua.LTable)
|
ioObject := L.GetGlobal("io").(*lua.LTable)
|
||||||
|
|
||||||
L.SetGlobal("os", lua.LNil)
|
L.SetGlobal("os", lua.LNil)
|
||||||
L.SetGlobal("io", lua.LNil)
|
L.SetGlobal("io", lua.LNil)
|
||||||
|
|
||||||
L.SetGlobal("BIN_DIR", lua.LString(cfg.BinDir))
|
L.SetGlobal("BIN_DIR", lua.LString(*cfg.BinDir))
|
||||||
L.SetGlobal("CURRENT_ARCH", lua.LString(runtime.GOARCH))
|
L.SetGlobal("CURRENT_ARCH", lua.LString(runtime.GOARCH))
|
||||||
|
L.SetGlobal("CURRENT_ARCH_NORMALIZED", lua.LString(normalizeArch(runtime.GOARCH)))
|
||||||
L.SetGlobal("CURRENT_PLATAFORM", lua.LString(runtime.GOOS))
|
L.SetGlobal("CURRENT_PLATAFORM", lua.LString(runtime.GOOS))
|
||||||
|
|
||||||
|
L.SetGlobal("pathjoin", L.NewFunction(lua_utils.Ljoin))
|
||||||
|
|
||||||
if err := L.DoString(string(f)); err != nil {
|
if err := L.DoString(string(f)); err != nil {
|
||||||
return PacketLua{}, err
|
return PacketLua{}, err
|
||||||
}
|
}
|
||||||
@@ -123,10 +136,11 @@ func ReadPacket(f []byte, cfg *Config) (PacketLua, error) {
|
|||||||
|
|
||||||
Build: getFunctionFromTable(table, "build"),
|
Build: getFunctionFromTable(table, "build"),
|
||||||
Install: getFunctionFromTable(table, "install"),
|
Install: getFunctionFromTable(table, "install"),
|
||||||
|
PreRemove: getFunctionFromTable(table, "pre_remove"),
|
||||||
}
|
}
|
||||||
|
|
||||||
if packetLua.Install == nil {
|
if packetLua.Install == nil {
|
||||||
return PacketLua{}, fmt.Errorf("install() does not exist")
|
return PacketLua{}, ErrInstallFunctionDoesNotExist
|
||||||
}
|
}
|
||||||
|
|
||||||
return *packetLua, nil
|
return *packetLua, nil
|
||||||
@@ -164,3 +178,90 @@ func ReadPacketFromZSTDF(file io.Reader, cfg *Config) (PacketLua, error) {
|
|||||||
}
|
}
|
||||||
return PacketLua{}, ErrCantFindPacketDotLua
|
return PacketLua{}, ErrCantFindPacketDotLua
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetSourceConfig struct {
|
||||||
|
PacketDir *string
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSource(url, method string, info any) ([]byte, error) {
|
||||||
|
|
||||||
|
switch method {
|
||||||
|
case "GET":
|
||||||
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
specs := info.(GETSpecs)
|
||||||
|
|
||||||
|
for k, v := range *specs.Headers {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
client := http.Client{Timeout: 5 * time.Minute}
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
data, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !verifySHA256(*specs.SHA256, data) {
|
||||||
|
return nil, ErrSha256Sum
|
||||||
|
}
|
||||||
|
|
||||||
|
return data, nil
|
||||||
|
case "POST":
|
||||||
|
specs := info.(POSTSpecs)
|
||||||
|
var body *bytes.Reader
|
||||||
|
|
||||||
|
if specs.Body != nil {
|
||||||
|
body = bytes.NewReader([]byte(*specs.Body))
|
||||||
|
} else {
|
||||||
|
body = nil
|
||||||
|
}
|
||||||
|
req, err := http.NewRequest("POST", url, body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range *specs.Headers {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
client := http.Client{Timeout: 5 * time.Minute}
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
data, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !verifySHA256(*specs.SHA256, data) {
|
||||||
|
return nil, ErrSha256Sum
|
||||||
|
}
|
||||||
|
|
||||||
|
return data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, fmt.Errorf("invalid method")
|
||||||
|
}
|
||||||
|
|
||||||
|
func verifySHA256(checksum string, src []byte) bool {
|
||||||
|
|
||||||
|
check := sha256.Sum256(src)
|
||||||
|
|
||||||
|
return hex.EncodeToString(check[:]) == checksum
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
package packet
|
package packet
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (pkg PacketLua) IsValid() bool {
|
func (pkg PacketLua) IsValid() bool {
|
||||||
|
|
||||||
var a, b int
|
var a, b int
|
||||||
@@ -15,8 +11,7 @@ func (pkg PacketLua) IsValid() bool {
|
|||||||
|
|
||||||
a += len(*pkg.GlobalSources)
|
a += len(*pkg.GlobalSources)
|
||||||
|
|
||||||
if a <= 0 || b <= 0 {
|
if a < 1 || len(*pkg.Plataforms) > b {
|
||||||
fmt.Println("invalid")
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +21,5 @@ func (pkg PacketLua) IsValid() bool {
|
|||||||
case pkg.Description == "" || pkg.Maintaner == "" || pkg.Name == "" || pkg.Version == "":
|
case pkg.Description == "" || pkg.Maintaner == "" || pkg.Name == "" || pkg.Version == "":
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("valid")
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
13
pkg/packet.lua.d/rand.go
Normal file
13
pkg/packet.lua.d/rand.go
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package packet
|
||||||
|
|
||||||
|
import "math/rand"
|
||||||
|
|
||||||
|
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$%!@%&*()-=+[]{}:;.,1234567890"
|
||||||
|
|
||||||
|
func randStringBytes(n int) string {
|
||||||
|
b := make([]byte, n)
|
||||||
|
for i := range b {
|
||||||
|
b[i] = letterBytes[rand.Intn(len(letterBytes))]
|
||||||
|
}
|
||||||
|
return string(b)
|
||||||
|
}
|
||||||
@@ -1,11 +1,3 @@
|
|||||||
local arch_map = {
|
|
||||||
amd64 = "x86_64",
|
|
||||||
aarch64 = "aarch64",
|
|
||||||
arm64 = "aarch64",
|
|
||||||
['386'] = "i686"
|
|
||||||
}
|
|
||||||
local srcarch = arch_map[CURRENT_ARCH]
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
package = {
|
package = {
|
||||||
name = "bat-bin", -- required
|
name = "bat-bin", -- required
|
||||||
@@ -19,7 +11,7 @@ return {
|
|||||||
arch = {"amd64"},
|
arch = {"amd64"},
|
||||||
sources = {
|
sources = {
|
||||||
{
|
{
|
||||||
url = "https://github.com/sharkdp/bat/releases/download/v0.26.0/bat-v0.26.0-" ..srcarch .."-pc-windows-msvc.zip",
|
url = "https://github.com/sharkdp/bat/releases/download/v0.26.0/bat-v0.26.0-" ..CURRENT_ARCH_NORMALIZED.."-pc-windows-msvc.zip",
|
||||||
method = "GET",
|
method = "GET",
|
||||||
sha256="a8a6862f14698b45e101b0932c69bc47a007f4c0456f3a129fdcef54d443d501"
|
sha256="a8a6862f14698b45e101b0932c69bc47a007f4c0456f3a129fdcef54d443d501"
|
||||||
}
|
}
|
||||||
@@ -34,7 +26,7 @@ return {
|
|||||||
arch = {"amd64"},
|
arch = {"amd64"},
|
||||||
sources = {
|
sources = {
|
||||||
{
|
{
|
||||||
url = "https://github.com/sharkdp/bat/releases/download/v0.26.0/bat-v0.26.0-".. srcarch .."-unknown-linux-gnu.tar.gz",
|
url = "https://github.com/sharkdp/bat/releases/download/v0.26.0/bat-v0.26.0-".. CURRENT_ARCH_NORMALIZED .."-unknown-linux-gnu.tar.gz",
|
||||||
method = "GET",
|
method = "GET",
|
||||||
sha256 = "7efed0c768fae36f18ddbbb4a38f5c4b64db7c55a170dfc89fd380805809a44b"
|
sha256 = "7efed0c768fae36f18ddbbb4a38f5c4b64db7c55a170dfc89fd380805809a44b"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user