system: unexport Op implementations

None of these are valid with their zero value, and the implementations assume they are created by the builder methods. They are by all means an implementation detail and exporting them makes no sense.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-09-06 16:16:03 +09:00
parent ac81cfbedc
commit e68db7fbfc
12 changed files with 157 additions and 157 deletions

View File

@@ -9,33 +9,33 @@ import (
"hakurei.app/system/acl"
)
// UpdatePerm appends [ACLUpdateOp] to [I] with the [Process] criteria.
// UpdatePerm calls UpdatePermType with the [Process] criteria.
func (sys *I) UpdatePerm(path string, perms ...acl.Perm) *I {
sys.UpdatePermType(Process, path, perms...)
return sys
}
// UpdatePermType appends [ACLUpdateOp] to [I].
// UpdatePermType maintains [acl.Perms] on a file until its [Enablement] is no longer satisfied.
func (sys *I) UpdatePermType(et Enablement, path string, perms ...acl.Perm) *I {
sys.ops = append(sys.ops, &ACLUpdateOp{et, path, perms})
sys.ops = append(sys.ops, &aclUpdateOp{et, path, perms})
return sys
}
// ACLUpdateOp maintains [acl.Perms] on a file until its [Enablement] is no longer satisfied.
type ACLUpdateOp struct {
// aclUpdateOp implements [I.UpdatePermType].
type aclUpdateOp struct {
et Enablement
path string
perms acl.Perms
}
func (a *ACLUpdateOp) Type() Enablement { return a.et }
func (a *aclUpdateOp) Type() Enablement { return a.et }
func (a *ACLUpdateOp) apply(sys *I) error {
func (a *aclUpdateOp) apply(sys *I) error {
sys.verbose("applying ACL", a)
return newOpError("acl", sys.aclUpdate(a.path, sys.uid, a.perms...), false)
}
func (a *ACLUpdateOp) revert(sys *I, ec *Criteria) error {
func (a *aclUpdateOp) revert(sys *I, ec *Criteria) error {
if ec.hasType(a.Type()) {
sys.verbose("stripping ACL", a)
err := sys.aclUpdate(a.path, sys.uid)
@@ -51,17 +51,17 @@ func (a *ACLUpdateOp) revert(sys *I, ec *Criteria) error {
}
}
func (a *ACLUpdateOp) Is(o Op) bool {
target, ok := o.(*ACLUpdateOp)
func (a *aclUpdateOp) Is(o Op) bool {
target, ok := o.(*aclUpdateOp)
return ok && a != nil && target != nil &&
a.et == target.et &&
a.path == target.path &&
slices.Equal(a.perms, target.perms)
}
func (a *ACLUpdateOp) Path() string { return a.path }
func (a *aclUpdateOp) Path() string { return a.path }
func (a *ACLUpdateOp) String() string {
func (a *aclUpdateOp) String() string {
return fmt.Sprintf("%s type: %s path: %q",
a.perms, TypeString(a.et), a.path)
}