aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/system
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-10-23 12:34:16 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-10-23 12:34:16 +0900
commit20195ece478a28b2bc7abc78cd220f900958eb35 (patch)
tree8e996029a43c58ddfd15b6be9b5e285effeddbea /internal/system
parentcafed5f23468daf2765655325ebe7d879acdde24 (diff)
system: return sys in queueing methods
This enables building an instance in a single statement. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'internal/system')
-rw-r--r--internal/system/acl.go8
-rw-r--r--internal/system/mkdir.go8
-rw-r--r--internal/system/tmpfiles.go24
-rw-r--r--internal/system/xhost.go4
4 files changed, 30 insertions, 14 deletions
diff --git a/internal/system/acl.go b/internal/system/acl.go
index f8f1dc68..efc48842 100644
--- a/internal/system/acl.go
+++ b/internal/system/acl.go
@@ -9,16 +9,20 @@ import (
)
// UpdatePerm appends an ephemeral acl update Op.
-func (sys *I) UpdatePerm(path string, perms ...acl.Perm) {
+func (sys *I) UpdatePerm(path string, perms ...acl.Perm) *I {
sys.UpdatePermType(Process, path, perms...)
+
+ return sys
}
// UpdatePermType appends an acl update Op.
-func (sys *I) UpdatePermType(et Enablement, path string, perms ...acl.Perm) {
+func (sys *I) UpdatePermType(et Enablement, path string, perms ...acl.Perm) *I {
sys.lock.Lock()
defer sys.lock.Unlock()
sys.ops = append(sys.ops, &ACL{et, path, perms})
+
+ return sys
}
type ACL struct {
diff --git a/internal/system/mkdir.go b/internal/system/mkdir.go
index 0f3787f6..c868bee3 100644
--- a/internal/system/mkdir.go
+++ b/internal/system/mkdir.go
@@ -9,19 +9,23 @@ import (
)
// Ensure the existence and mode of a directory.
-func (sys *I) Ensure(name string, perm os.FileMode) {
+func (sys *I) Ensure(name string, perm os.FileMode) *I {
sys.lock.Lock()
defer sys.lock.Unlock()
sys.ops = append(sys.ops, &Mkdir{User, name, perm, false})
+
+ return sys
}
// Ephemeral ensures the temporary existence and mode of a directory through the life of et.
-func (sys *I) Ephemeral(et Enablement, name string, perm os.FileMode) {
+func (sys *I) Ephemeral(et Enablement, name string, perm os.FileMode) *I {
sys.lock.Lock()
defer sys.lock.Unlock()
sys.ops = append(sys.ops, &Mkdir{et, name, perm, true})
+
+ return sys
}
type Mkdir struct {
diff --git a/internal/system/tmpfiles.go b/internal/system/tmpfiles.go
index 9215bd33..7300f30a 100644
--- a/internal/system/tmpfiles.go
+++ b/internal/system/tmpfiles.go
@@ -12,44 +12,50 @@ import (
)
// CopyFile registers an Op that copies path dst from src.
-func (sys *I) CopyFile(dst, src string) {
- sys.CopyFileType(Process, dst, src)
+func (sys *I) CopyFile(dst, src string) *I {
+ return sys.CopyFileType(Process, dst, src)
}
// CopyFileType registers a file copying Op labelled with type et.
-func (sys *I) CopyFileType(et Enablement, dst, src string) {
+func (sys *I) CopyFileType(et Enablement, dst, src string) *I {
sys.lock.Lock()
sys.ops = append(sys.ops, &Tmpfile{et, tmpfileCopy, dst, src})
sys.lock.Unlock()
sys.UpdatePermType(et, dst, acl.Read)
+
+ return sys
}
// Link registers an Op that links dst to src.
-func (sys *I) Link(oldname, newname string) {
- sys.LinkFileType(Process, oldname, newname)
+func (sys *I) Link(oldname, newname string) *I {
+ return sys.LinkFileType(Process, oldname, newname)
}
// LinkFileType registers a file linking Op labelled with type et.
-func (sys *I) LinkFileType(et Enablement, oldname, newname string) {
+func (sys *I) LinkFileType(et Enablement, oldname, newname string) *I {
sys.lock.Lock()
defer sys.lock.Unlock()
sys.ops = append(sys.ops, &Tmpfile{et, tmpfileLink, newname, oldname})
+
+ return sys
}
// Write registers an Op that writes dst with the contents of src.
-func (sys *I) Write(dst, src string) {
- sys.WriteType(Process, dst, src)
+func (sys *I) Write(dst, src string) *I {
+ return sys.WriteType(Process, dst, src)
}
// WriteType registers a file writing Op labelled with type et.
-func (sys *I) WriteType(et Enablement, dst, src string) {
+func (sys *I) WriteType(et Enablement, dst, src string) *I {
sys.lock.Lock()
sys.ops = append(sys.ops, &Tmpfile{et, tmpfileWrite, dst, src})
sys.lock.Unlock()
sys.UpdatePermType(et, dst, acl.Read)
+
+ return sys
}
const (
diff --git a/internal/system/xhost.go b/internal/system/xhost.go
index 51c8d24f..30463940 100644
--- a/internal/system/xhost.go
+++ b/internal/system/xhost.go
@@ -8,11 +8,13 @@ import (
)
// ChangeHosts appends an X11 ChangeHosts command Op.
-func (sys *I) ChangeHosts(username string) {
+func (sys *I) ChangeHosts(username string) *I {
sys.lock.Lock()
defer sys.lock.Unlock()
sys.ops = append(sys.ops, XHost(username))
+
+ return sys
}
type XHost string