mercurial/HGMergeToolStartup.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 19 Feb 2021 08:29:41 +0000
changeset 924 4d92f234f671
parent 915 7e7ee5bfdc88
permissions -rw-r--r--
Rework and fix HGSourceCodeManager >> #revisionLogOf:...directory:module:` This commit changes the logic in two ways: 1. #newestRevision is now the newest revision in the branch that *contains* given file (not necesarily modidfes it). If there are multiple heads in that branch, pretty much random one is returned. This changes old behavior and therefore this commit updates tests. 2. If a specific single revision is requested, i.e., both from and to revisions are the same, revision log with that single revision is returned no matter whether it modifies the file or even contains that file at all. This is essentially a workaround to fix issue #305. Moreover, this commit simplifies the code a lot by delegating all the changeset searching and filtering to mercurial using revset expressions. See https://swing.fit.cvut.cz/projects/stx-jv/ticket/305#comment:3
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