Add creation template for `MCDirectoryRepository`
... therefore also for and `TonelRepository`
"
COPYRIGHT (c) 2020-2021 LabWare
"
"{ Package: 'stx:goodies/monticello' }"
"{ NameSpace: Smalltalk }"
MCFileBasedRepository subclass:#MCDirectoryRepository
instanceVariableNames:'directory'
classVariableNames:''
poolDictionaries:''
category:'SCM-Monticello-Repositories'
!
!MCDirectoryRepository class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2020-2021 LabWare
"
! !
!MCDirectoryRepository class methodsFor:'initialization'!
new
^self basicNew initialize
! !
!MCDirectoryRepository class methodsFor:'instance creation'!
directory: aStringOrFileDirectory
^self new directory: aStringOrFileDirectory
"Created: / 16-09-2010 / 14:51:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-09-2010 / 15:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
morphicConfigure
| directory |
^ (directory := UIManager default chooseDirectory) ifNotNil:
[
self new directory: directory]
! !
!MCDirectoryRepository class methodsFor:'as yet unclassified'!
fillInTheBlankRequest
"superclass MCRepository class says that I am responsible to implement this method"
^ self shouldImplement
! !
!MCDirectoryRepository class methodsFor:'queries'!
creationTemplate
"superclass MCRepository class says that I am responsible to implement this method"
^ self creationTemplateDirectory: (Filename currentDirectory asAbsoluteFilename / 'package-cache') asString
"
MCDirectoryRepository creationTemplate
(TonelRepository directory:'/tmp') asCreationTemplate
"
"Modified: / 16-09-2010 / 14:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 01-12-2011 / 20:31:31 / cg"
"Modified (comment): / 03-05-2021 / 22:02:22 / Jan Vrany <jan.vrany@labware.com>"
!
creationTemplateDirectory: directory
"superclass MCRepository class says that I am responsible to implement this method"
^'%1 directory: ''%2''' bindWith: self name with: directory
"Created: / 03-05-2021 / 21:21:19 / Jan Vrany <jan.vrany@labware.com>"
!
description
^ 'directory'
! !
!MCDirectoryRepository methodsFor:'accessing'!
description
^ directory pathName
!
directory
^ directory
!
directory: aStringOrFilename
self assert: (aStringOrFilename isString or: [ aStringOrFilename isFilename ]).
directory := aStringOrFilename asFilename
"Modified: / 16-09-2010 / 15:58:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 25-08-2020 / 10:00:58 / Jan Vrany <jan.vrany@labware.com>"
! !
!MCDirectoryRepository methodsFor:'as yet unclassified'!
asCreationTemplate
self creationTemplate isNil ifTrue: [
^ self class creationTemplateDirectory: directory pathName.
].
^ super asCreationTemplate
"Created: / 03-05-2021 / 21:19:21 / Jan Vrany <jan.vrany@labware.com>"
!
isValid
^directory exists
!
literalArrayEncoding
^Array
with: self class name asSymbol
with: #directory:
with: directory pathName "directoryName"
"
(MCDirectoryRepository directory: '/tmp')
literalArrayEncoding decodeAsLiteralArray
"
"Created: / 16-09-2010 / 16:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 01-12-2011 / 21:01:25 / cg"
!
readStreamForFileNamed: aString do: aBlock
^ (directory / aString) readingFileDo: aBlock
"Modified: / 25-08-2020 / 10:10:34 / Jan Vrany <jan.vrany@labware.com>"
!
writeStreamForFileNamed: aString replace: aBoolean do: aBlock
| file |
file := directory / aString.
(aBoolean not and: [ file exists ]) ifTrue: [
self error: ('File already exists: %1' bindWith: file pathName)
].
^ file writingFileDo: aBlock
"Modified: / 25-08-2020 / 10:10:39 / Jan Vrany <jan.vrany@labware.com>"
! !
!MCDirectoryRepository methodsFor:'comparing'!
hash
^ directory pathName hash
! !
!MCDirectoryRepository methodsFor:'displaying'!
displayString
^directory pathName "/ directoryName
"Created: / 14-09-2010 / 23:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 01-12-2011 / 21:00:33 / cg"
! !
!MCDirectoryRepository methodsFor:'initialization'!
initialize
super initialize.
directory := Filename currentDirectory
"Modified: / 25-08-2020 / 10:05:44 / Jan Vrany <jan.vrany@labware.com>"
! !
!MCDirectoryRepository methodsFor:'queries'!
allFileNames
^ (directory directoryContentsAsFilenames asArray sortBy: [:a :b | a modificationTime >= b modificationTime]) collect: [:ea | ea baseName]
"Modified: / 03-07-2020 / 20:30:51 / Jan Vrany <jan.vrany@labware.com>"
! !
!MCDirectoryRepository class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.7 2014-02-12 14:53:38 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/monticello/MCDirectoryRepository.st,v 1.7 2014-02-12 14:53:38 cg Exp $'
!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '$Id: MCDirectoryRepository.st,v 1.7 2014-02-12 14:53:38 cg Exp $'
! !