mercurial/HGMergeToolStartup.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 03 Dec 2021 11:40:55 +0000
changeset 934 84b7d3b8f3a6
parent 915 7e7ee5bfdc88
permissions -rw-r--r--
Add comment `HGWorkingCopy >> statusesOf:` ...to ease debugging when assertion fails.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
910
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     1
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     2
COPYRIGHT (c) 2020 LabWare
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     3
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     4
stx:libscm - a new source code management library for Smalltalk/X
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     5
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     6
This library is free software; you can redistribute it and/or
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     7
modify it under the terms of the GNU Lesser General Public
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     8
License as published by the Free Software Foundation; either
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     9
version 2.1 of the License. 
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    10
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    11
This library is distributed in the hope that it will be useful,
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    14
Lesser General Public License for more details.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    15
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    16
You should have received a copy of the GNU Lesser General Public
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    17
License along with this library; if not, write to the Free Software
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    19
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    20
"{ Package: 'stx:libscm/mercurial' }"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    21
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    22
"{ NameSpace: Smalltalk }"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    23
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    24
StandaloneStartup subclass:#HGMergeToolStartup
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    25
	instanceVariableNames:''
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    26
	classVariableNames:''
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    27
	poolDictionaries:''
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    28
	category:'SCM-Mercurial-StX-Tools'
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    29
!
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    30
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    31
!HGMergeToolStartup class methodsFor:'documentation'!
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    32
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    33
copyright
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    34
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    35
COPYRIGHT (c) 2020 LabWare
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    36
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    37
stx:libscm - a new source code management library for Smalltalk/X
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    38
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    39
This library is free software; you can redistribute it and/or
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    40
modify it under the terms of the GNU Lesser General Public
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    41
License as published by the Free Software Foundation; either
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    42
version 2.1 of the License. 
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    43
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    44
This library is distributed in the hope that it will be useful,
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    45
but WITHOUT ANY WARRANTY; without even the implied warranty of
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    46
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    47
Lesser General Public License for more details.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    48
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    49
You should have received a copy of the GNU Lesser General Public
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    50
License along with this library; if not, write to the Free Software
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    51
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    52
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    53
!
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    54
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    55
documentation
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    56
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    57
    documentation to be added.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    58
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    59
    [author:]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    60
        Jan Vrany <jan.vrany@labware.com>
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    61
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    62
    [instance variables:]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    63
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    64
    [class variables:]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    65
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    66
    [see also:]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    67
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    68
"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    69
! !
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    70
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    71
!HGMergeToolStartup class methodsFor:'startup'!
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    72
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    73
main: argv
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    74
    "Application entry point. `argv` is the array of command arguments (as Array of Strings)"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    75
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    76
    | optparser positional output rev |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    77
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    78
    rev := 'default'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    79
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    80
    optparser := CmdLineParser new.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    81
    optparser
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    82
          on: #('-o' '--output') do:[ :o | output := o asFilename ];
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    83
          on: #('-r' '--rev') do:[ :r | rev := r ];
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    84
          on: #('-h' '--help') do:[ self usage. Smalltalk exitIfStandalone:0 ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    85
    [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    86
        positional := optparser parse:argv.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    87
    ] on: CmdLineOptionError do:[:ex |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    88
        Stderr nextPutLine: 'ERROR: '; nextPutLine: ex description.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    89
        Smalltalk exitIfStandalone:0.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    90
    ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    91
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    92
    positional := positional collect: [:each | each asFilename ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    93
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    94
    positional size == 3 ifTrue: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    95
        "/ Assuming first invocation variant:
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    96
        "/ ... [ -o OUTPUT ] BASE LOCAL OTHER
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    97
        | base local other |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    98
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    99
        positional do: [:each | 
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   100
            each isRegularFile ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   101
                Stderr nextPutLine: 'ERROR: No such file: ', each pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   102
                Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   103
            ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   104
            each isReadable ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   105
                Stderr nextPutLine: 'ERROR: File not readable: ', each pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   106
                Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   107
            ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   108
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   109
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   110
        base := positional first.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   111
        local := positional second.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   112
        other := positional third.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   113
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   114
        output notNil ifTrue: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   115
            (output exists and:[output isWritable not]) ifTrue: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   116
                Stderr nextPutLine: 'ERROR: File not writable: ', output pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   117
                Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   118
            ] ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   119
                output directory isWritable ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   120
                    Stderr nextPutLine: 'ERROR: Directory not writable: ', output directory pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   121
                    Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   122
                ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   123
            ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   124
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   125
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   126
        [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   127
            (HGMergeTool new base: base local: local other: other output: output)
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   128
                ifTrue:[ Smalltalk exitIfStandalone:0 ]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   129
                ifFalse:[ Smalltalk exitIfStandalone:3 ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   130
        ] on: Error do: [:ex |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   131
            Stderr nextPutAll: 'ERROR: '; nextPutLine: ex description.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   132
            Smalltalk exitIfStandalone:4.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   133
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   134
        ^ self
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   135
    ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   136
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   137
    positional size == 1 ifTrue: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   138
        "/ Assuming second invocation variant:
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   139
        "/ ... [ -r REV ] FILE
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   140
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   141
        | file |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   142
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   143
        file := positional first.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   144
        file isRegularFile ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   145
            Stderr nextPutLine: 'ERROR: No such file: ', file pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   146
            Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   147
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   148
        file isReadable ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   149
            Stderr nextPutLine: 'ERROR: File not readable: ', file pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   150
            Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   151
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   152
        file isWritable ifFalse: [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   153
            Stderr nextPutLine: 'ERROR: File not writable: ', file pathName.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   154
            Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   155
        ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   156
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   157
        [
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   158
            (HGMergeTool new merge: file revision: rev)
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   159
                ifTrue:[ Smalltalk exitIfStandalone:0 ]
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   160
                ifFalse:[ Smalltalk exitIfStandalone:3 ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   161
        ] on: Error do: [:ex |
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   162
            Stderr nextPutAll: 'ERROR: '; nextPutLine: ex description.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   163
            Smalltalk exitIfStandalone:4.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   164
        ].  
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   165
        ^ self.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   166
    ].
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   167
    Stderr nextPutLine: 'ERROR: Invalid invocation (see --help)'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   168
    Smalltalk exitIfStandalone:2.        
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   169
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   170
    
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   171
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   172
    "
915
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   173
    HGMergeToolStartup main: #('-r' 'default' 'libbasic/String.st')
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   174
    HGMergeToolStartup main: #('-r' 'default' 'libwidg2/TerminalView.st')
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   175
    HGMergeToolStartup main: #('-r' 'default' 'libwidg2/VT100TerminalView.st')
910
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   176
    "
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   177
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   178
    "Modified: / 27-08-2020 / 10:13:19 / Jan Vrany <jan.vrany@labware.com>"
915
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   179
    "Modified (comment): / 26-10-2020 / 10:29:53 / Jan Vrany <jan.vrany@labware.com>"
910
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   180
!
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   181
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   182
usage
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   183
    "output some command-line usage infos on stderr"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   184
    
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   185
    Stderr nextPutLine:'usage: ',self applicationName,' [ -o OUTPUT] BASE LOCAL OTHER'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   186
    Stderr nextPutLine:'       ',self applicationName,' [ -r REV ] FILE'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   187
    Stderr nextPutLine:'  -h | --help .......... output this message'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   188
    Stderr nextPutLine:'  -o | --output OUTPUT . save merge to OUTPUT'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   189
    Stderr nextPutLine:'  -r | --rev REV ....... revision to merge FILE with'.
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   190
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   191
    "Modified: / 27-08-2020 / 09:42:00 / Jan Vrany <jan.vrany@labware.com>"
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   192
! !
d347b4bedf2b Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   193
915
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   194
!HGMergeToolStartup class methodsFor:'documentation'!
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   195
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   196
version_HG
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   197
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   198
    ^ '$Changeset: <not expanded> $'
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   199
! !
7e7ee5bfdc88 Correct method comment in `HGMergeToolStartup >> #main:`
Jan Vrany <jan.vrany@labware.com>
parents: 910
diff changeset
   200