assets
API
assets
packageAPI reference for the assets
package.
Imports
(8)
S
struct
plugin
cmd/rfw/plugins/assets/assets.go:14-17
type plugin struct
Methods
Build
Method
Parameters
raw
json.RawMessage
Returns
error
func (*plugin) Build(raw json.RawMessage) error
{
cfg := struct {
Dir string `json:"dir"`
Dest string `json:"dest"`
}{
Dir: "assets",
Dest: "dist",
}
if len(raw) > 0 {
_ = json.Unmarshal(raw, &cfg)
}
p.src = cfg.Dir
p.dst = cfg.Dest
return filepath.Walk(cfg.Dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
rel, err := filepath.Rel(cfg.Dir, path)
if err != nil {
return err
}
target := filepath.Join(cfg.Dest, rel)
if err := os.MkdirAll(filepath.Dir(target), 0o755); err != nil {
return err
}
in, err := os.Open(path)
if err != nil {
return err
}
defer in.Close()
out, err := os.Create(target)
if err != nil {
return err
}
if _, err := io.Copy(out, in); err != nil {
out.Close()
return err
}
if err := out.Close(); err != nil {
return err
}
logging.Log.Info("copied file", logging.F("plugin", "assets"), logging.F("path", target))
return nil
})
}
ShouldRebuild
Method
Parameters
path
string
Returns
bool
func (*plugin) ShouldRebuild(path string) bool
{
return strings.HasPrefix(path, p.src)
}
Fields
| Name | Type | Description |
|---|---|---|
| src | string | |
| dst | string |
F
function
init
cmd/rfw/plugins/assets/assets.go:19-19
func init()
{ plugins.Register(&plugin{}) }
F
function
TestBuildAndShouldRebuild
TestBuildAndShouldRebuild verifies that the assets plugin copies files and
reports rebuild requirements for files within the source directory.
Parameters
t
cmd/rfw/plugins/assets/assets_test.go:12-46
func TestBuildAndShouldRebuild(t *testing.T)
{
p := &plugin{}
tmp := t.TempDir()
src := filepath.Join(tmp, "assets")
dest := filepath.Join(tmp, "dist")
if err := os.MkdirAll(filepath.Join(src, "img"), 0o755); err != nil {
t.Fatalf("mkdir: %v", err)
}
srcFile := filepath.Join(src, "img", "logo.png")
if err := os.WriteFile(srcFile, []byte("data"), 0o644); err != nil {
t.Fatalf("write src: %v", err)
}
cfg := struct {
Dir string `json:"dir"`
Dest string `json:"dest"`
}{Dir: src, Dest: dest}
raw, _ := json.Marshal(cfg)
if err := p.Build(raw); err != nil {
t.Fatalf("Build: %v", err)
}
copied := filepath.Join(dest, "img", "logo.png")
if data, err := os.ReadFile(copied); err != nil || string(data) != "data" {
t.Fatalf("expected copied file, got %v %q", err, data)
}
if !p.ShouldRebuild(srcFile) {
t.Fatalf("expected ShouldRebuild true for %s", srcFile)
}
if p.ShouldRebuild(filepath.Join(tmp, "other")) {
t.Fatalf("unexpected rebuild for unrelated file")
}
}