mirror of
https://github.com/wisplite/parchment.git
synced 2026-06-27 21:57:08 -05:00
initial commit
This commit is contained in:
+79
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"log"
|
||||
)
|
||||
|
||||
type PackageJSON struct {
|
||||
Pkg string `json:"pkg"`
|
||||
Name string `json:"name"`
|
||||
Version string `json:"version"`
|
||||
Description string `json:"description"`
|
||||
Author string `json:"author"`
|
||||
Icon string `json:"icon"`
|
||||
}
|
||||
|
||||
/*
|
||||
Packager is a class that helps create cpkg files and handle the upload process.
|
||||
*/
|
||||
|
||||
func loadPackageJSON(fsys fs.FS) (*PackageJSON, error) {
|
||||
packageJSON, err := fs.ReadFile(fsys, "package.json")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pkgData := &PackageJSON{}
|
||||
err = json.Unmarshal(packageJSON, pkgData)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return pkgData, nil
|
||||
}
|
||||
|
||||
func createCpkg(fsys fs.FS, pkgData *PackageJSON) (*cpkg, error) {
|
||||
pkg := NewCpkg(pkgData.Pkg)
|
||||
|
||||
// Walk through all directories recursively
|
||||
err := fs.WalkDir(fsys, ".", func(path string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Skip directories themselves (we only want files)
|
||||
if d.IsDir() {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Skip certain files
|
||||
fileName := d.Name()
|
||||
if fileName == "debug.log" || strings.HasSuffix(fileName, ".cpkg") {
|
||||
log.Println("Skipping file:", path)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Add file with full relative path
|
||||
log.Println("Adding file:", path)
|
||||
err = pkg.AddFile(fsys, path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
success, err := pkg.Create()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !success {
|
||||
return nil, err
|
||||
}
|
||||
return pkg, nil
|
||||
}
|
||||
Reference in New Issue
Block a user