initial checkin
authorClaus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:13 +0200
changeset 1086 efc5221435a5
parent 1085 f86ba472fa45
child 1087 d37466310a6a
initial checkin
MCFileTreeFileSystemUtils.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCFileTreeFileSystemUtils.st	Sat Sep 01 17:32:13 2018 +0200
@@ -0,0 +1,101 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+"{ NameSpace: Smalltalk }"
+
+MCFileTreeFileUtils subclass:#MCFileTreeFileSystemUtils
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Monticello-FileTree-FileSystem-Utilities'
+!
+
+
+!MCFileTreeFileSystemUtils class methodsFor:'initialization'!
+
+initialize
+    "self initialize"
+
+    self install
+! !
+
+!MCFileTreeFileSystemUtils class methodsFor:'utilities'!
+
+default
+    ^ DiskStore activeClass createDefault defaultWorkingDirectory asFileReference
+!
+
+deleteAll: aDirectory
+    ^ aDirectory deleteAll
+!
+
+directoryExists: aDirectory
+    ^ aDirectory isDirectory
+!
+
+directoryFromEntry: directoryEntry
+    ^ directoryEntry asFileReference
+!
+
+directoryFromPath: directoryPath
+    ^ (AbsolutePath from: directoryPath delimiter: self pathNameDelimiter) asFileReference
+!
+
+directoryFromPath: directoryPath relativeTo: aDirectory
+    ^ aDirectory resolveString: directoryPath
+!
+
+directoryName: aDirectory
+    ^ aDirectory basename
+!
+
+directoryPathString: aDirectory
+    ^ aDirectory pathString
+!
+
+ensureDirectoryExists: aDirectory
+    aDirectory ensureCreateDirectory
+!
+
+ensureFilePathExists: fileNameOrPath relativeTo: aDirectory
+    (aDirectory resolveString: fileNameOrPath) parent ensureCreateDirectory
+!
+
+filePathExists: filePath relativeTo: aDirectory
+    ^ (aDirectory resolveString: filePath) isFile
+!
+
+parentDirectoryOf: aDirectory
+    ^ aDirectory parent
+!
+
+pathNameDelimiter
+    ^ DiskStore activeClass delimiter
+!
+
+readStreamFor: filePath in: aDirectory do: aBlock
+    "temporary hack for Pharo-1.4"
+
+    ^ (aDirectory resolveString: filePath)
+        readStreamDo: [ :fileStream | 
+            | stream |
+            stream := ReadStream on: fileStream contents asString.
+            stream reset.
+            aBlock value: stream ]
+!
+
+resolvePath: path in: aDirectory
+    ^ aDirectory resolveString: path
+!
+
+writeStreamFor: filePath in: aDirectory do: aBlock
+    (aDirectory resolveString: filePath) writeStreamDo: aBlock
+! !
+
+!MCFileTreeFileSystemUtils class methodsFor:'documentation'!
+
+version_CVS
+    ^ '$Header$'
+! !
+
+
+MCFileTreeFileSystemUtils initialize!