aboutsummaryrefslogtreecommitdiffstats
path: root/internal/wfs/osfs
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-04-10 07:50:41 -0700
committerRose Hogenson <rosehogenson@posteo.net>2025-04-10 10:51:03 -0700
commit89b48b3c0d4ed4eceebd76d4fd3d981b642d3824 (patch)
treebec39fb4e71c87ccd6c9b2b9d8aff3670056f3cd /internal/wfs/osfs
parentCopy recursive (diff)
downloadccp-89b48b3c0d4ed4eceebd76d4fd3d981b642d3824.tar.zst
Add support for SFTP remote file copies
Diffstat (limited to 'internal/wfs/osfs')
-rw-r--r--internal/wfs/osfs/osfs.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/internal/wfs/osfs/osfs.go b/internal/wfs/osfs/osfs.go
new file mode 100644
index 0000000..bf6951c
--- /dev/null
+++ b/internal/wfs/osfs/osfs.go
@@ -0,0 +1,58 @@
+package osfs
+
+import (
+ "io"
+ "io/fs"
+ "os"
+
+ "gitlab.com/rhogenson/ccp/internal/wfs"
+)
+
+var (
+ _ wfs.FS = FS{}
+ _ wfs.MkdirModeFS = FS{}
+ _ wfs.ReadLinkFS = FS{}
+ _ fs.StatFS = FS{}
+)
+
+type FS struct{}
+
+func (FS) Open(name string) (fs.File, error) {
+ return os.Open(name)
+}
+
+func (FS) Stat(name string) (fs.FileInfo, error) {
+ return os.Stat(name)
+}
+
+func (FS) Lstat(name string) (fs.FileInfo, error) {
+ return os.Lstat(name)
+}
+
+func (FS) ReadLink(name string) (string, error) {
+ return os.Readlink(name)
+}
+
+func (FS) Create(name string, perm fs.FileMode) (io.WriteCloser, error) {
+ return os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)
+}
+
+func (FS) Remove(name string) error {
+ return os.Remove(name)
+}
+
+func (FS) Mkdir(name string) error {
+ return os.Mkdir(name, 0700)
+}
+
+func (FS) MkdirMode(name string, mode fs.FileMode) error {
+ return os.Mkdir(name, mode)
+}
+
+func (FS) Symlink(oldname, newname string) error {
+ return os.Symlink(oldname, newname)
+}
+
+func (FS) Chmod(name string, mode fs.FileMode) error {
+ return os.Chmod(name, mode)
+}