diff --git a/auger/funcs.go b/auger/funcs.go index beb0103..0ff1152 100644 --- a/auger/funcs.go +++ b/auger/funcs.go @@ -4,8 +4,42 @@ import ( `io/fs` `os` `strings` + + `honnef.co/go/augeas` ) +/* + NewAuger returns an auger.Aug. + + See: + https://pkg.go.dev/honnef.co/go/augeas#readme-examples + https://pkg.go.dev/honnef.co/go/augeas#New + for the `root` and `loadPath` parameters + (and, by extension, the `flags` paraemter; note that the `flags` + is an auger.AugFlags, not an augeas.Flag!). + + `flags` may be nil. +*/ +func NewAuger(root, loadPath string, flags *AugFlags) (aug *Aug, err error) { + + aug = new(Aug) + + if aug.aug, err = augeas.New(root, loadPath, flags.Eval()); err != nil { + return + } + + return +} + +// NewAugerFromAugeas returns a wrapped auger.Aug from a (honnef.co/go/augeas).Augeas. +func NewAugerFromAugeas(orig augeas.Augeas) (aug *Aug) { + + aug = new(Aug) + aug.aug = orig + + return +} + /* AugpathToFspath returns the filesystem path from an Augeas path. diff --git a/auger/funcs_augflags.go b/auger/funcs_augflags.go index 19e74ce..a22d72b 100644 --- a/auger/funcs_augflags.go +++ b/auger/funcs_augflags.go @@ -7,6 +7,10 @@ import ( // Eval returns an evaluated set of flags. func (a *AugFlags) Eval() (augFlags augeas.Flag) { + if a == nil { + return + } + augFlags = augeas.None if a.Backup != nil && *a.Backup { diff --git a/auger/funcs_test.go b/auger/funcs_test.go new file mode 100644 index 0000000..2bb11b0 --- /dev/null +++ b/auger/funcs_test.go @@ -0,0 +1,24 @@ +package auger + +import ( + "testing" + + `honnef.co/go/augeas` +) + +func TestNewAuger(t *testing.T) { + + var aug *Aug + var augUnder augeas.Augeas + var err error + + if aug, err = NewAuger("/", "", nil); err != nil { + t.Fatal(err) + } + + augUnder = aug.aug + + aug = NewAugerFromAugeas(augUnder) + + _ = aug +} diff --git a/go.mod b/go.mod index 37623a1..c35b175 100644 --- a/go.mod +++ b/go.mod @@ -3,24 +3,13 @@ module r00t2.io/sysutils/v2 go 1.23.2 require ( - github.com/Luzifer/go-dhparam v1.2.0 github.com/davecgh/go-spew v1.1.1 github.com/g0rbe/go-chattr v1.0.1 - github.com/go-playground/validator/v10 v10.22.0 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 golang.org/x/sys v0.19.0 honnef.co/go/augeas v0.0.0-20161110001225-ca62e35ed6b8 r00t2.io/goutils v1.6.0 -) - -require ( - github.com/gabriel-vasile/mimetype v1.4.3 // indirect - github.com/go-playground/locales v0.14.1 // indirect - github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/leodido/go-urn v1.4.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/text v0.14.0 // indirect + r00t2.io/sysutils v1.7.1 ) // Pending https://github.com/g0rbe/go-chattr/pull/3 diff --git a/go.sum b/go.sum index f748db6..c273f32 100644 --- a/go.sum +++ b/go.sum @@ -1,42 +1,18 @@ -github.com/Luzifer/go-dhparam v1.2.0 h1:YwDf15FTsVriTynCv1qF+1Inh6E8Dg1+28tPEA3pvFo= -github.com/Luzifer/go-dhparam v1.2.0/go.mod h1:hnazoxBTsXnRvGXAosio70Tb1lWowquyhVdvsXdlIPc= github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= -github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= -github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= -github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/johnnybubonic/go-chattr v0.0.0-20240126141003-459f46177b13 h1:tgEbuE4bNVjaCWWIB1u9lDzGqH/ZdBTg33+4vNW2rjg= github.com/johnnybubonic/go-chattr v0.0.0-20240126141003-459f46177b13/go.mod h1:yQc6VPJfpDDC1g+W2t47+yYmzBNioax/GLiyJ25/IOs= -github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= -github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/augeas v0.0.0-20161110001225-ca62e35ed6b8 h1:FW42yWB1sGClqswyHIB68wo0+oPrav1IuQ+Tdy8Qp8E= honnef.co/go/augeas v0.0.0-20161110001225-ca62e35ed6b8/go.mod h1:44w9OfBSQ9l3o59rc2w3AnABtE44bmtNnRMNC7z+oKE= r00t2.io/goutils v1.6.0 h1:oBC6PgBv0y/fdHeCmWgORHpBiU8uWw7IfFQJX5rIuzY= r00t2.io/goutils v1.6.0/go.mod h1:9ObJI9S71wDLTOahwoOPs19DhZVYrOh4LEHmQ8SW4Lk= r00t2.io/sysutils v1.1.1/go.mod h1:Wlfi1rrJpoKBOjWiYM9rw2FaiZqraD6VpXyiHgoDo/o= +r00t2.io/sysutils v1.7.1 h1:OXvzcpGC+WCHusDKCZqsDqUYr73qBbWqt6mM/qY/OHs= +r00t2.io/sysutils v1.7.1/go.mod h1:Sk/7riJp9fteeW9STkdQ/k22huL1J6r05n6wLh5byHY=