From 7fdcb5ed7639508e05c9a3851704cf1de9f4476a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 5 Jul 2026 10:28:26 +0300 Subject: make options pattern more generic with dot imports a bit less boilerplate for the user --- examples/examples.go | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'examples') diff --git a/examples/examples.go b/examples/examples.go index 6b97ab3..b350576 100644 --- a/examples/examples.go +++ b/examples/examples.go @@ -6,42 +6,44 @@ import ( "codeberg.org/snonux/gonf/internal/resource/dir" "codeberg.org/snonux/gonf/internal/resource/file" "codeberg.org/snonux/gonf/internal/resource/link" + . "codeberg.org/snonux/gonf/internal/resource/opt" ) func Run() error { // 1. Regular file with content - file.Have("/tmp/gonf_hello.txt", file.WithContent("Hello World!")) + file.Have("/tmp/gonf_hello.txt", WithContent("Hello World!")) // 2. Regular file from a source template - file.Have("/tmp/gonf_example.conf", file.WithSource("assets/testfiles/test.tmpl")) + file.Have("/tmp/gonf_example.conf", WithSource("assets/testfiles/test.tmpl")) // 3. Regular file with specific mode and owner file.Have( "/tmp/gonf_secret.txt", - file.WithContent("top secret"), - file.WithMode(0o600), + WithContent("top secret"), + WithMode(0o600), ) // 4. A directory - dir.Have("/tmp/gonf_dir", dir.WithMode(0o755)) + dir.Have("/tmp/gonf_dir", WithMode(0o755)) // 5. A symlink - link.Have("/tmp/gonf_link", link.IsSymlink("/tmp/gonf_hello.txt")) + link.Have("/tmp/gonf_link", WithSymlink("/tmp/gonf_hello.txt")) // 6. A hardlink - link.Have("/tmp/gonf_hardlink", link.IsHardlink("/tmp/gonf_hello.txt")) + link.Have("/tmp/gonf_hardlink", WithHardlink("/tmp/gonf_hello.txt")) - // 7. Ensuring something is absent - file.Have("/tmp/gonf_old.txt", file.IsAbsent()) - file.Absent("/tmp/gonf_old.txt") // Alternative way + // 7. Ensuring something is absent (two equivalent styles; each resource + // path may only be declared once per run, so they use distinct paths) + file.Have("/tmp/gonf_old.txt", IsAbsent()) + file.Absent("/tmp/gonf_old_alt.txt") // Alternative way // 8. A directory tree copied from source, reconciled, with a distinct // file mode from the directory's own mode dir.Have( "/tmp/gonf_dir_from_source", - dir.WithSource("assets/testfiles"), - dir.WithPrune(), - dir.WithFileMode(0o644), + WithSource("assets/testfiles"), + WithPrune(), + WithFileMode(0o644), ) // 9. Recursively removing a directory tree. Each resource path can only @@ -49,21 +51,23 @@ func Run() error { // (rather than reusing #8's path) to give WithPrune's recursive removal // something real to demonstrate. _ = os.MkdirAll("/tmp/gonf_stale_dir/nested", 0o755) - dir.Have("/tmp/gonf_stale_dir", dir.IsAbsent(), dir.WithPrune()) - dir.Absent("/tmp/gonf_stale_dir", dir.WithPrune()) // Alternative way + dir.Have("/tmp/gonf_stale_dir", IsAbsent(), WithPrune()) + _ = os.MkdirAll("/tmp/gonf_stale_dir_alt/nested", 0o755) + dir.Absent("/tmp/gonf_stale_dir_alt", WithPrune()) // Alternative way // 10. Non-recursively removing an empty directory _ = os.Mkdir("/tmp/gonf_stale_empty_dir", 0o755) - dir.Have("/tmp/gonf_stale_empty_dir", dir.IsAbsent()) + dir.Have("/tmp/gonf_stale_empty_dir", IsAbsent()) // 11. Ensuring a symlink is absent _ = os.Symlink("/tmp/gonf_hello.txt", "/tmp/gonf_stale_link") - link.Have("/tmp/gonf_stale_link", link.IsAbsent()) - link.Absent("/tmp/gonf_stale_link") // Alternative way + link.Have("/tmp/gonf_stale_link", IsAbsent()) + _ = os.Symlink("/tmp/gonf_hello.txt", "/tmp/gonf_stale_link_alt") + link.Absent("/tmp/gonf_stale_link_alt") // Alternative way // 12. Ensuring a hardlink is absent _ = os.Link("/tmp/gonf_hello.txt", "/tmp/gonf_stale_hardlink") - link.Have("/tmp/gonf_stale_hardlink", link.IsAbsent()) + link.Have("/tmp/gonf_stale_hardlink", IsAbsent()) return nil } -- cgit v1.2.3