Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+54
View File
@@ -0,0 +1,54 @@
// 测试 pack 的固定目标源码选择器;产品只运行签名 pack 提供的对应工具。
package main
import (
"encoding/json"
"fmt"
"go/build"
"io/fs"
"os"
"path/filepath"
"sort"
"strings"
)
func main() {
if err := selectPackage(); err != nil { fmt.Fprintln(os.Stderr, err); os.Exit(1) }
}
func selectPackage() error {
if len(os.Args) != 4 { return fmt.Errorf("expected OS architecture directory") }
context := build.Default
context.GOOS, context.GOARCH = os.Args[1], os.Args[2]
context.GOROOT, context.GOPATH = "", ""
context.CgoEnabled = true
directory := os.Args[3]
selected, err := context.ImportDir(directory, 0)
if err != nil { return err }
if len(selected.CgoFiles)+len(selected.CFiles)+len(selected.CXXFiles)+len(selected.SFiles)+len(selected.SysoFiles) != 0 {
return fmt.Errorf("cgo/assembly/native objects are unsupported")
}
embed := map[string][]string{}
for _, pattern := range selected.EmbedPatterns {
glob := strings.TrimPrefix(pattern, "all:")
if filepath.IsAbs(glob) || strings.Contains(glob, "..") { return fmt.Errorf("invalid embed pattern") }
matches, err := filepath.Glob(filepath.Join(directory, glob))
if err != nil || len(matches) == 0 { return fmt.Errorf("unmatched embed pattern") }
for _, match := range matches {
err = filepath.WalkDir(match, func(path string, entry fs.DirEntry, failure error) error {
if failure != nil { return failure }
if entry.Type()&os.ModeSymlink != 0 { return fmt.Errorf("embed link") }
if entry.IsDir() { return nil }
relative, err := filepath.Rel(directory, path)
if err != nil { return err }
embed[pattern] = append(embed[pattern], filepath.ToSlash(relative))
return nil
})
if err != nil { return err }
}
sort.Strings(embed[pattern])
}
imports := selected.Imports
if imports == nil { imports = []string{} }
return json.NewEncoder(os.Stdout).Encode(map[string]any{"name":selected.Name,"files":selected.GoFiles,"imports":imports,"embed":embed})
}