DiffListUtility.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Jun 2018 22:19:39 +0100
branchjv
changeset 18227 d25a407ba86d
parent 15566 184cea584be5
permissions -rw-r--r--
Mini testrunner: show "green" if there's at least one pass and rest is pass or skip This is more meaningfull result then showing "gray" if there's at least one skip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9346
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     1
"
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     2
 COPYRIGHT (c) 2009 by eXept Software AG
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     3
              All Rights Reserved
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     4
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     5
 This software is furnished under a license and may be used
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     6
 only in accordance with the terms of that license and with the
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     8
 be provided or otherwise made available to, or used by, any
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
     9
 other person.  No title to or ownership of the software is
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    10
 hereby transferred.
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    11
"
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Object subclass:#DiffListUtility
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:'DiffCommandTemplate'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Views-Text'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!DiffListUtility class methodsFor:'documentation'!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
9346
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    23
copyright
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    24
"
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    25
 COPYRIGHT (c) 2009 by eXept Software AG
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    26
              All Rights Reserved
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    27
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    28
 This software is furnished under a license and may be used
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    29
 only in accordance with the terms of that license and with the
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    31
 be provided or otherwise made available to, or used by, any
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    32
 other person.  No title to or ownership of the software is
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    33
 hereby transferred.
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    34
"
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    35
!
4a0b3584f5aa added: #copyright
Claus Gittinger <cg@exept.de>
parents: 8933
diff changeset
    36
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    a utility to encapsulate access to the diff command
9494
bc6540ee3987 changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 9346
diff changeset
    40
    (may also be a facade to a smalltalk-diff algorithm, eventually)
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    [author:]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
        cg (cg@CG-PC)
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    [instance variables:]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    [class variables:]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    [see also:]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
! !
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!DiffListUtility class methodsFor:'defaults'!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
diffCommand
12358
a907159cf29e class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12082
diff changeset
    57
    "return the diff-command (with argument placeHolders).
a907159cf29e class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12082
diff changeset
    58
     By default, diff is used with windows, diff -b with Unix.
a907159cf29e class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12082
diff changeset
    59
     You can change this via the diffCommandTemplate"
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    DiffCommandTemplate notNil ifTrue:[ ^ DiffCommandTemplate ].
12358
a907159cf29e class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12082
diff changeset
    62
    ^ UserPreferences current externalDiffCommandTemplate
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
diffCommandTemplate:aCommandTemplateString
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    "set the diff-command template"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    DiffCommandTemplate := aCommandTemplateString
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
! !
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!DiffListUtility class methodsFor:'private'!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
saveForDiff:text as:filename
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    |stream|
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    [
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
        stream := filename writeStream.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
        text do:[:line |
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
            |lOut i|
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
            line notEmptyOrNil ifTrue:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                lOut := line.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                (line includes:Character return) ifTrue: [
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                    (line endsWith:Character return) ifTrue:[
12717
dcde1443a6bb Changed usage of deprecated #copyWithoutLast: to #copyButLast:
Stefan Vogel <sv@exept.de>
parents: 12384
diff changeset
    85
                        lOut := line copyButLast:1.
12384
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    86
                    ].
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    87
                ] ifFalse:[
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    88
                    (line endsWith:(String crlf)) ifTrue: [
12717
dcde1443a6bb Changed usage of deprecated #copyWithoutLast: to #copyButLast:
Stefan Vogel <sv@exept.de>
parents: 12384
diff changeset
    89
                        lOut := line copyButLast:2.
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
                    ]
12384
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    91
"/                        i := line indexOf:Character return.
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    92
"/                        (line at:i+1) == Character nl ifTrue:[
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    93
"/                            "/ crnl endings
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    94
"/                            lOut := line copyReplaceString:(String crlf) withString:(String lf).
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    95
"/                        ] ifFalse:[
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    96
"/                            "/ cr endings
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    97
"/                            lOut := line copyReplaceAll:(Character return) with:Character nl.
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    98
"/                        ].
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
    99
"/                    ]
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
                ].
12082
f5d2e51d6665 class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 9494
diff changeset
   101
                lOut isWideString ifTrue:[
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
                    (lOut first = (Character value:16rFEFF)) ifTrue:[
12082
f5d2e51d6665 class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 9494
diff changeset
   103
                        lOut := (lOut copyFrom:2) asSingleByteStringReplaceInvalidWith:(Character value:16rFF).
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
                    ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
                ].
13340
7a295f0992df class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 12717
diff changeset
   106
                lOut printOn:stream.
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
            ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
            stream cr
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
        ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    ] ensure:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
        stream close.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    "Modified: / 22-10-2008 / 17:52:52 / cg"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
! !
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!DiffListUtility class methodsFor:'utilities'!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
diffListFor:text1 and:text2
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    "execute DiffCommand to get a list of diffs."
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
     The returned list is in raw-diff output format, such as:
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
        1 : '1c1'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        2 : '< hello world'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
        3 : '---'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
        4 : '> Hello World'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
        5 : '2a3'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
        6 : '> line2'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
        7 : '4d4'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        8 : '< line4'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    |tmpFile1 tmpFile2 stream line 
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
     diffList diffTemplate diffCmd|
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    diffTemplate := self diffCommand.
14334
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   138
    diffTemplate isEmptyOrNil ifTrue:[
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
        "/ self warn:'no diff command available'.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
        ^ nil
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    text1 = text2 ifTrue:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
        "no diff"
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
        ^ #()
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
     save them texts in two temporary files ...
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    [
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
        self saveForDiff:text1 as:(tmpFile1 := Filename newTemporary).
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
        self saveForDiff:text2 as:(tmpFile2 := Filename newTemporary).
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
        "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
         start diff on it ...
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
        "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
        diffCmd := diffTemplate
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
                    bindWith:tmpFile1 asString
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
                    with:tmpFile2 asString.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
        stream := PipeStream readingFrom:diffCmd.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
        stream isNil ifTrue:[
14334
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   164
            "this code is not reached in win32.
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   165
             PipeStream starts a cmd.exe, which is always successful
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   166
             at the first place and fails later"
12384
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
   167
            stream := PipeStream readingFrom:('support' asFilename / diffCmd).
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
            stream isNil ifTrue:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
                self error:'cannot execute diff' mayProceed:true.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
                ^ nil.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
            ]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
        ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
        diffList := OrderedCollection new.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        (stream readWaitWithTimeout:10) ifTrue:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
            "/ timeout
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
            stream close.
14334
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   178
            (stream exitStatus notNil and:[stream exitStatus isError]) ifTrue:[
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   179
                self error:'cannot execute diff (command error)' mayProceed:true.
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   180
            ] ifFalse:[
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   181
                self error:'cannot execute diff (timeout)' mayProceed:true.
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   182
            ].
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
            ^ nil.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
        ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
        [stream atEnd] whileFalse:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
            line := stream nextLine.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
            line notNil ifTrue:[diffList add:line]
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
        ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
        stream close.
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    ] ensure:[
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
        tmpFile1 notNil ifTrue:[ tmpFile1 delete ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
        tmpFile2 notNil ifTrue:[ tmpFile2 delete ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    ].
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    ^ diffList
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
     self 
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
        diffListFor:#(
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
                        'hello world'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
                        'line1'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
                        'line3'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
                        'line4'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
                    )
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
        and:        #(
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
                        'Hello World'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
                        'line1'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
                        'line2'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
                        'line3'
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
                    )
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    "
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
! !
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
!DiffListUtility class methodsFor:'documentation'!
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
12384
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
   216
version
14334
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   217
    ^ '$Header: /cvs/stx/stx/libtool/DiffListUtility.st,v 1.9 2014-05-08 17:49:06 stefan Exp $'
12384
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
   218
!
60b956e6eb5f class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12358
diff changeset
   219
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
version_CVS
14334
e54a95bfa77b class: DiffListUtility
Stefan Vogel <sv@exept.de>
parents: 13340
diff changeset
   221
    ^ '$Header: /cvs/stx/stx/libtool/DiffListUtility.st,v 1.9 2014-05-08 17:49:06 stefan Exp $'
8933
94e708e9f812 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
! !
12358
a907159cf29e class: DiffListUtility
Claus Gittinger <cg@exept.de>
parents: 12082
diff changeset
   223