MCFileTreeRepository.st
changeset 1094 55a945c18a3e
parent 1085 f86ba472fa45
equal deleted inserted replaced
1093:9ae1f3f8b1f4 1094:55a945c18a3e
       
     1 "{ Encoding: utf8 }"
       
     2 
     1 "{ Package: 'stx:goodies/monticello' }"
     3 "{ Package: 'stx:goodies/monticello' }"
     2 
     4 
     3 "{ NameSpace: Smalltalk }"
     5 "{ NameSpace: Smalltalk }"
     4 
     6 
     5 MCDirectoryRepository subclass:#MCFileTreeRepository
     7 MCDirectoryRepository subclass:#MCFileTreeRepository
    87 !
    89 !
    88 
    90 
    89 parseName: aString extension: extension
    91 parseName: aString extension: extension
    90     "picked up from GoferVersionReference>>parseName:"
    92     "picked up from GoferVersionReference>>parseName:"
    91 
    93 
    92     | info basicName package branch author versionNumber packageName |
    94     | "info" basicName package branch author versionNumber packageName |
    93     basicName := aString last isDigit
    95     basicName := aString last isDigit
    94         ifTrue: [ aString ]
    96         ifTrue: [ aString ]
    95         ifFalse: [ (aString copyUpToLast: $.) copyUpTo: $( ].
    97         ifFalse: [ (aString copyUpToLast: $.) copyUpTo: $( ].
    96     package := basicName copyUpToLast: $-.
    98     package := basicName copyUpToLast: $-.
    97     (package includes: $.)
    99     (package includes: $.)
   107     packageName := package , branch.
   109     packageName := package , branch.
   108     ^ {packageName.
   110     ^ {packageName.
   109     author.
   111     author.
   110     versionNumber.
   112     versionNumber.
   111     (packageName , extension)}
   113     (packageName , extension)}
       
   114 
       
   115     "Modified (comment): / 01-09-2018 / 17:33:38 / Claus Gittinger"
   112 !
   116 !
   113 
   117 
   114 urlAsFileReference: aZnUrl
   118 urlAsFileReference: aZnUrl
   115 	"Extracted from ZnUrl since the scheme is restricted.
   119 	"Extracted from ZnUrl since the scheme is restricted.
   116 	We need to keep host as a segment part."
   120 	We need to keep host as a segment part."
   149 !
   153 !
   150 
   154 
   151 repositoryBranchName
   155 repositoryBranchName
   152   "extract a branch name from the repository ... if possible"
   156   "extract a branch name from the repository ... if possible"
   153 
   157 
   154   (MetacelloPlatform current gitBranchNameFor: self directory fullName)
   158   |sha|
   155     ifNotNil: [ :sha | ^ sha ].
   159   
       
   160   (sha := MetacelloPlatform current gitBranchNameFor: self directory fullName)
       
   161     notNil ifTrue:[ ^ sha ].
   156   ^ super repositoryBranchName
   162   ^ super repositoryBranchName
       
   163 
       
   164     "Modified: / 01-09-2018 / 17:34:23 / Claus Gittinger"
   157 !
   165 !
   158 
   166 
   159 repositoryDescription
   167 repositoryDescription
   160   ^ self description , ' [' , self repositoryVersionString , ':'
   168   ^ self description , ' [' , self repositoryVersionString , ':'
   161     , self repositoryBranchName , ']'
   169     , self repositoryBranchName , ']'
   162 !
   170 !
   163 
   171 
   164 repositoryVersionString
   172 repositoryVersionString
   165   "extract a version string from the repository ... if possible"
   173   "extract a version string from the repository ... if possible"
   166 
   174 
   167   (MetacelloPlatform current gitCommitShaFor: self directory fullName)
   175   |sha|
   168     ifNotNil: [ :sha | ^ sha ].
   176   
       
   177   (sha := MetacelloPlatform current gitCommitShaFor: self directory fullName)
       
   178     notNil ifTrue: [^ sha ].
   169   ^ super repositoryVersionString
   179   ^ super repositoryVersionString
       
   180 
       
   181     "Modified: / 01-09-2018 / 17:34:51 / Claus Gittinger"
   170 ! !
   182 ! !
   171 
   183 
   172 !MCFileTreeRepository methodsFor:'*metacello-mc'!
   184 !MCFileTreeRepository methodsFor:'*metacello-mc'!
   173 
   185 
   174 versionInfoFromVersionNamed: aString
   186 versionInfoFromVersionNamed: aString
   233 readonly: anObject
   245 readonly: anObject
   234 	readonly := anObject
   246 	readonly := anObject
   235 !
   247 !
   236 
   248 
   237 repositoryProperties
   249 repositoryProperties
       
   250   |configEntry|
       
   251   
   238   repositoryProperties
   252   repositoryProperties
   239     ifNil: [ 
   253     ifNil: [ 
   240       repositoryProperties := Dictionary new.
   254       repositoryProperties := Dictionary new.
   241       (self fileUtils directoryExists: directory)
   255       (self fileUtils directoryExists: directory)
   242         ifFalse: [ 
   256         ifFalse: [ 
   244             error:
   258             error:
   245               'filetree:// repository '
   259               'filetree:// repository '
   246                 ,
   260                 ,
   247                   (self fileUtils directoryPathString: self directory) printString
   261                   (self fileUtils directoryPathString: self directory) printString
   248                 , ' does not exist.' ].
   262                 , ' does not exist.' ].
   249       (self directory entries
   263       (configEntry := self directory entries
   250         detect: [ :entry | entry name = '.filetree' ]
   264         detect: [ :entry | entry name = '.filetree' ]
   251         ifNone: [  ])
   265         ifNone: [  ])
   252         ifNil: [ 
   266         isNil ifTrue: [ 
   253           repositoryProperties := self defaultRepositoryProperties.
   267           repositoryProperties := self defaultRepositoryProperties.
   254           self writeRepositoryProperties ]
   268           self writeRepositoryProperties ]
   255         ifNotNil: [ :configEntry | 
   269         ifFalse: [ 
   256           configEntry
   270           configEntry
   257             readStreamDo: [ :fileStream | repositoryProperties := MCFileTreeJsonParser parseStream: fileStream ] ] ].
   271             readStreamDo: [ :fileStream | repositoryProperties := MCFileTreeJsonParser parseStream: fileStream ] ] ].
   258   ^ repositoryProperties
   272   ^ repositoryProperties
       
   273 
       
   274     "Modified: / 01-09-2018 / 17:35:33 / Claus Gittinger"
   259 !
   275 !
   260 
   276 
   261 versionFrom: aVersionReferenceString
   277 versionFrom: aVersionReferenceString
   262     "until we no longer find .tree directories in the wild"
   278     "until we no longer find .tree directories in the wild"
   263 
   279