SVN__WCEntry.st
author fm
Mon, 19 Oct 2009 14:23:25 +0200
changeset 438 830e69dc6812
parent 342 b9aa6e69af3e
child 711 f731cabd8efd
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
438
830e69dc6812 *** empty log message ***
fm
parents: 342
diff changeset
     1
"{ Package: 'stx:libsvn' }"
40
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     2
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     3
"{ NameSpace: SVN }"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     4
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     5
Entry subclass:#WCEntry
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     6
	instanceVariableNames:'wc status'
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     7
	classVariableNames:''
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     8
	poolDictionaries:''
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
     9
	category:'SVN-Working copy'
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    10
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    11
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    12
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    13
!WCEntry class methodsFor:'instance creation'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    14
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    15
path: aString
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    16
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    17
    ^self new
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    18
        path: aString;
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    19
        yourself
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    20
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    21
    "Created: / 27-08-2009 / 08:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    22
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    23
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    24
readFromXml: aXMLNode
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    25
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    26
    self assert: (aXMLNode isKindOf: XML::Node).
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    27
    ^self new readFromXml: aXMLNode
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    28
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    29
    "Created: / 18-08-2009 / 14:27:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    30
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    31
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    32
!WCEntry methodsFor:'accessing'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    33
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    34
readStream
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    35
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    36
    ^self asFilename readStream
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    37
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    38
    "Created: / 27-08-2009 / 09:52:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    39
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    40
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    41
status
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    42
    ^ status
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    43
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    44
    "Created: / 17-08-2009 / 17:39:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    45
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    46
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    47
wc
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    48
    ^ wc
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    49
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    50
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    51
wc:aSVNWorkingCopy
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    52
    wc := aSVNWorkingCopy.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    53
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    54
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    55
!WCEntry methodsFor:'conversion'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    56
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    57
asFilename
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    58
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    59
    ^wc path / path
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    60
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    61
    "Created: / 27-08-2009 / 09:52:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    62
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    63
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    64
!WCEntry methodsFor:'initialization'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    65
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    66
readFromXml: xmlNode
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    67
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    68
    path := xmlNode @ 'path'.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    69
    status := Status withName: (xmlNode / 'wc-status' @ 'item').
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    70
    (status isUnversioned or:[status isAdded]) ifFalse:
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    71
        [| commitNode |
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    72
        commitNode := xmlNode / 'wc-status' / 'commit'.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    73
        revision := (commitNode first
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    74
                        valueOfAttribute: 'revision' 
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    75
                        ifAbsent:[self error:'No revision attribute!!']) asNumber.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    76
        author := (commitNode / 'author') characterData.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    77
        date := Timestamp readISO8601From: (commitNode / 'date') characterData]
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    78
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    79
    "Modified: / 06-04-2008 / 21:36:51 / janfrog"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    80
    "Created: / 18-08-2009 / 14:28:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    81
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    82
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    83
!WCEntry methodsFor:'presentation'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    84
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    85
pathText
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    86
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    87
    ^status isNormal
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    88
        ifTrue:[path]
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    89
        ifFalse:[path asText allBold]
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    90
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    91
    "Created: / 11-04-2008 / 11:28:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    92
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    93
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    94
statusIcon
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    95
    ^ status icon
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    96
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    97
    "Created: / 17-08-2009 / 17:40:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    98
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
    99
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   100
!WCEntry methodsFor:'printing & storing'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   101
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   102
printOn: stream
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   103
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   104
    stream 
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   105
        space; nextPutAll: 'path:     '; nextPutAll: path; cr;
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   106
        space; nextPutAll: 'status:   '; nextPutAll: status printString; cr.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   107
    status isUnversioned ifFalse:[
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   108
        stream
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   109
        space; nextPutAll: 'revision: '; nextPutAll: revision printString; cr;        
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   110
        space; nextPutAll: 'author:   '; nextPutAll: author ? '<unknown>'; cr;            
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   111
        space; nextPutAll: 'date:     '; nextPutAll: date printString; cr]
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   112
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   113
    "Created: / 16-03-2008 / 08:18:05 / janfrog"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   114
    "Modified: / 11-04-2008 / 09:47:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   115
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   116
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   117
!WCEntry methodsFor:'queries'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   118
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   119
sourceClassName
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   120
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   121
    "Guess name of the class contained in this source. Guess is based only
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   122
     on file name"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   123
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   124
    | name |
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   125
    name := path copyFrom:(path lastIndexOf: $/) + 1 to: (path size - self sourceLanguage sourceFileSuffix size) - 1.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   126
    name := name replaceAll:$_ with: $:.
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   127
    ^name asSymbol
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   128
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   129
    "Created: / 27-08-2009 / 08:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   130
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   131
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   132
sourceLanguage
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   133
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   134
    "Guess language of source, nil if not language guessed. Current 
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   135
     implementation is bit stupid - guess language by file suffix"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   136
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   137
    ProgrammingLanguage allDo:
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   138
        [:lang|(path endsWith: lang sourceFileSuffix) ifTrue:[^lang]].
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   139
    ^nil
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   140
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   141
    "Created: / 27-08-2009 / 08:42:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   142
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   143
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   144
!WCEntry methodsFor:'testing'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   145
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   146
isDirEntry
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   147
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   148
    ^kind isDir
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   149
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   150
    "Created: / 27-08-2009 / 08:38:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   151
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   152
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   153
isFileEntry
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   154
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   155
    ^kind isFile
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   156
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   157
    "Created: / 27-08-2009 / 08:26:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   158
!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   159
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   160
isSourceFileEntry
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   161
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   162
    ^self isFile and: [self sourceLanguage notNil]
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   163
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   164
    "Created: / 27-08-2009 / 08:38:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   165
! !
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   166
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   167
!WCEntry class methodsFor:'documentation'!
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   168
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   169
version
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   170
    ^ '$Header$'
168
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   171
!
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   172
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   173
version_CVS
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   174
    ^ '$Header$'
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   175
!
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   176
71c57efc3d43 changed: #version_SVN
fm
parents: 40
diff changeset
   177
version_SVN
342
b9aa6e69af3e update #version_SVN with § as keyword expansion character
fm
parents: 168
diff changeset
   178
    ^'§Id: SVN__WCEntry.st 113 2009-08-28 11:43:01Z vranyj1 §'
40
aacce9a6ec9d initial checkin
fm
parents:
diff changeset
   179
! !