mercurial/HGInstaller.st
author Patrik Svestka <patrik.svestka@gmail.com>
Mon, 10 Jan 2022 14:21:17 +0100
changeset 938 2bb53758015c
parent 515 d460ef249979
permissions -rw-r--r--
Enable support for Mercurial 6.x
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     2
 COPYRIGHT (c) 2012-2013 by Jan Vrany
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     3
              All Rights Reserved
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     5
 This software is furnished under a license and may be used
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     6
 only in accordance with the terms of that license and with the
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     8
 be provided or otherwise made available to, or used by, any
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
     9
 other person.  No title to or ownership of the software is
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    10
 hereby transferred.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libscm/mercurial' }"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
515
d460ef249979 Added support for custom build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 410
diff changeset
    14
"{ NameSpace: Smalltalk }"
d460ef249979 Added support for custom build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 410
diff changeset
    15
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
StandaloneStartup subclass:#HGInstaller
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:'version destination archive'
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    18
	classVariableNames:'URLs RunningStandalone SeverityError SeverityWarning SeverityInfo'
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'SCM-Mercurial-StX-Installer'
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!HGInstaller class methodsFor:'documentation'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
copyright
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    27
 COPYRIGHT (c) 2012-2013 by Jan Vrany
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    28
              All Rights Reserved
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    30
 This software is furnished under a license and may be used
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    31
 only in accordance with the terms of that license and with the
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    33
 be provided or otherwise made available to, or used by, any
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    34
 other person.  No title to or ownership of the software is
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    35
 hereby transferred.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
documentation
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    A simple standalone installer for Mercurial support. It downloads
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    and installs Mercurial support into Smalltalk/X IDE.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    Usage (command line):
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
        # install latest stable version
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
        stx --execute HGInstaller.st 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
        # install latest development version                             
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
        stx --execute HGInstaller.st --version default
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
        # install Mercurial for manually downloaded archive
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
        stx --execute HGInstaller.st --archive downloaded-archive.zip
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    Usage (workspace)
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
        # install latest stable version
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        HGInstaller install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        # install latest development version                             
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
        HGInstaller install: #default
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
   [author:]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
        Jan Vrany <jan.vrany@fit.cvut.cz>
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    [instance variables:]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    [class variables:]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    [see also:]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!HGInstaller class methodsFor:'initialization'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
initialize
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    "Invoked at system start or when the class is dynamically loaded."
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    77
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    78
    Smalltalk loadPackage:#'stx:goodies/communication'.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    79
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    80
    self initializeURLs.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    81
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    SeverityError := #error.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    SeverityWarning := #warning.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    SeverityInfo := #info.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    (RunningStandalone := Smalltalk commandName endsWith: (self name , '.st')) ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
        self start 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    91
    "Modified: / 09-07-2013 / 01:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    92
!
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    93
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    94
initializeURLs
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    95
    URLs := Array
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    96
                "/ Primary repository
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    97
                with: 'https://bitbucket.org/janvrany/stx-libscm/get' asURI     
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    98
                "/ Mirros
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    99
                with: 'http://swing.fit.cvut.cz/hg/stx.libscm/archive' asURI
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   100
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   101
    "Created: / 09-07-2013 / 00:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
!HGInstaller class methodsFor:'instance creation'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
new
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    "return an initialized instance"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    ^ self basicNew initialize.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
!HGInstaller class methodsFor:'defaults'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   114
allowCoverageMeasurementOption
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   115
    "enable/disable the --measureCoverage startup options.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   116
     The default is false, so standAlone apps do not support coverage measurements by default.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   117
     Can be redefined in subclasses to enable it 
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   118
     (but will need the libcomp and possibly the programming/oom packages to be present)"
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   119
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   120
    ^ false
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   121
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   122
    "Created: / 11-07-2013 / 01:37:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   123
!
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   124
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
allowDebugOption
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    "enable/disable the --debug startup option.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
     Can be redefined in subclasses to enable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    ^ true
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    "Created: / 07-07-2013 / 18:46:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
allowScriptingOption
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    "enable/disable the --scripting startup option.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
     Can be redefined in subclasses to enable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    ^ true
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    "Created: / 07-07-2013 / 18:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
suppressRCFileReading
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    "enable/disable the rc-file reading (and also the --rcFileName option).
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
     If suppressed, there is no chance to interfere with the startup.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
     Can be redefined in subclasses to disable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    ^ true
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    "Created: / 07-07-2013 / 18:46:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
!HGInstaller class methodsFor:'helpers'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
printInfo:msg
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    Transcript 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
        show:'[INFO]: ';
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
        showCR:msg
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    "Created: / 07-07-2013 / 18:48:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
!HGInstaller class methodsFor:'installer API'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    "Installs latest 'default' version of Mercurial support"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    ^self new install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    "Created: / 07-07-2013 / 10:56:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
install: rev
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Installs given revision of Mercurial support"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
    ^self new install: rev
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    "Created: / 07-07-2013 / 10:56:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
!HGInstaller class methodsFor:'startup'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
main:argv
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    "superclass StandaloneStartup class says that I am responsible to implement this method"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
    ^self new main: argv
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
    "Modified: / 07-07-2013 / 18:26:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
    "Modified (format): / 07-07-2013 / 22:00:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   191
!
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   192
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   193
usage
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   194
    Stderr nextPutLine:'stx:libscm installation script'; cr.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   195
    Stderr nextPutLine:'usage: stx --execute HGInstaller.st [options...]'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   196
    Stderr nextPutLine:'  --version REV ........... specifies which version to install. REV can be'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   197
    Stderr nextPutLine:'                            branch, tag or commit id.'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   198
    Stderr nextPutLine:'  --archive FILE .......... specifies an archive file to install. If ommited'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   199
    Stderr nextPutLine:'                            archive is donwloaded'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   200
    Stderr nextPutLine:'  --help .................. output this message'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   201
"/    Stderr nextPutLine:'  --verbose ............... verbose startup'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   202
"/    Stderr nextPutLine:'  --noBanner .............. no splash screen'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   203
"/    Stderr nextPutLine:'  --newAppInstance ........ start as its own application process (do not reuse a running instance)'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   204
"/    self allowScriptingOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   205
"/        Stderr nextPutLine:'  --scripting portNr ...... enable scripting via port (or stdin/stdOut, if 0)'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   206
"/    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   207
    self allowDebugOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   208
        Stderr nextPutLine:'  --debug ................. enable Debugger'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   209
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   210
    self allowCoverageMeasurementOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   211
        Stderr nextPutLine:'  --coverage .............. turn on coverage measurement'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   212
        Stderr nextPutLine:'     [+/-]package: pattern ...  - include/exclude packages'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   213
        Stderr nextPutLine:'     [+/-]class: pattern ...    - include/exclude classes'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   214
        Stderr nextPutLine:'     [+/-]method: cls#sel ...   - include/exclude methods'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   215
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   216
    self suppressRCFileReading ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   217
        Stderr nextPutLine:'  --rcFileName file ....... execute code from file on startup (default: ',self startupFilename,')'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   218
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   219
    Stderr cr.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   220
    Stderr nextPutLine:'For more information see wiki:'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   221
    Stderr nextPutLine:'  https://bitbucket.org/janvrany/stx-libscm/wiki/Installation'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   222
    Stderr cr.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   223
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   224
    Smalltalk exit: 0
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   225
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   226
    "Created: / 11-07-2013 / 01:36:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
!HGInstaller class methodsFor:'startup-private'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
applicationRegistryPath
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    "the key under which this application stores its process ID in the registry
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
     as a collection of path-components.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
     i.e. if #('foo' 'bar' 'baz') is returned here, the current applications ID will be stored
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
     in HKEY_CURRENT_USER\Software\foo\bar\baz\CurrentID.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
     (would also be used as a relative path for a temporary lock file under unix).
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
     Used to detect if another instance of this application is already running."
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    ^ #(libscm mercurial installer)
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
    "Modified: / 07-07-2013 / 18:24:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
applicationUUID
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    "answer an application-specific unique uuid.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
     This is used as the name of some exclusive OS-resource, which is used to find out,
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
     if another instance of this application is already running.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
     Under win32, a mutex is used; under unix, an exclusive file in the tempDir could be used.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
     If redefined, please return a real UUID (i.e. UUID fromString:'.....') and not a string or
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
     similar possibly conflicting identifier.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
     You can paste a fresh worldwide unique id via the editor's more-misc-paste UUID menuFunction."
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    ^ UUID fromString:'132746c0-e72a-11e2-85f0-606720e43e2c'
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    "Modified: / 07-07-2013 / 18:24:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
!HGInstaller methodsFor:'initialization'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
initialize
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
    "Invoked when a new instance is created."
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    "/ please change as required (and remove this comment)
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
    version := 'default'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    "/ super initialize.   -- commented since inherited method does nothing
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    "Modified: / 07-07-2013 / 11:11:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
!HGInstaller methodsFor:'installation'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    self doPrepare.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    self doDownload.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
    self doExtract.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
    self doCompile.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    self doConfigure.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
    "Created: / 07-07-2013 / 11:07:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    "Modified: / 07-07-2013 / 19:06:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
install: ver
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
    version := ver.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
    self install.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    "Created: / 07-07-2013 / 11:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
!HGInstaller methodsFor:'installation-private'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
doCompile
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
    | cmd |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    cmd := OperatingSystem isMSWINDOWSlike ifTrue:[ 'bmake.bat'] ifFalse:['make'].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    ( destination directory / 'stc' ) exists ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
        | log |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
        log := Filename newTemporaryIn: Filename tempDirectory nameTemplate:'compile-%1-%2.log'.            
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
        log writingFileDo:[:logs|
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   301
            Transcript nextPutAll: 'Compiling...'; cr.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
            (OperatingSystem executeCommand: cmd outputTo: logs errorTo: logs inDirectory: destination pathName) ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
                self log: 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
                        'Compilation failed' 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
                     details:
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
                        'This is not fatal, but the package will be loaded from source
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
                         instead of from binary class library, which is slower. 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
                         You may want to check the compilation log in:
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
                         ', log pathName
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   311
                    severity: SeverityWarning.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   312
            ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   313
            (OperatingSystem executeCommand: (cmd , ' clean') outputTo: logs errorTo: logs inDirectory: destination pathName) ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   314
                self log: 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   315
                        'Compilation failed' 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   316
                     details:
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   317
                        'This is not fatal, but the package will be loaded from source
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   318
                         instead of from binary class library, which is slower. 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   319
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   320
                         You may want to check the compilation log in:
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   321
                         ', log pathName
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   322
                    severity: SeverityWarning.    
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
             ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
        
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
        ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    "Created: / 07-07-2013 / 18:50:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   329
    "Modified: / 09-07-2013 / 01:30:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
doConfigure
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    | top rcd |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   335
    Transcript nextPutLine: 'Configuring...'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    top := (Smalltalk getPackageDirectoryForPackage: Object package) directory directory.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
    rcd := top / 'stx'/ 'projects' / 'smalltalk' / 'rc.d'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    rcd isDirectory ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
        (rcd / '50_mercurial.rc') writingFileDo:[:s|
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
            s nextPutLine:'"/ Load Mercurial support'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
            top = destination directory directory ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
                s nextPutLine: ('Smalltalk packagePath: (Smalltalk packagePath: %1).' bindWith: destination directory directory pathName).        
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
            ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
            s nextPutAll:'Smalltalk loadPackage: ''stx:libscm/mercurial''.'.    
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
        ].            
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    ] ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
        
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   348
    ].
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    "Created: / 07-07-2013 / 11:19:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   351
    "Modified: / 11-07-2013 / 01:41:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
doDownload
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   355
    | urls1 urls2 |
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    archive notNil ifTrue:[ ^ self ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
    archive := Filename newTemporary.
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   360
    Transcript nextPutAll:'Downloading...'; cr.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   361
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   362
    urls1 := URLs select: [:url|url scheme = 'http'].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   363
    urls2 := URLs reject: [:url|url scheme = 'http'].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   364
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   365
    (( urls1 , urls2 )  anySatisfy:[:base|
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   366
        | downloaded url|
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   367
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   368
        url := base / (version , '.zip').
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   369
        Transcript nextPutAll:'  '; nextPutAll: url asString; nextPutAll: '...'.
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   370
        downloaded := self doDownload: url.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   371
        Transcript nextPutAll: (downloaded ifTrue:['OK'] ifFalse:['FAILED']); cr.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   372
        downloaded                        
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   373
    ]) ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   374
        self error:'Failed to download archive!!'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
    ].
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   376
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
    (ZipArchive isZipArchive: archive) ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
        self error: ('Downloaded file (%1) is not a .zip archive!!' bindWith: archive pathName).
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    ].  
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
    "/    ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    "Created: / 07-07-2013 / 11:19:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   384
    "Modified: / 11-07-2013 / 01:40:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   385
!
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   386
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   387
doDownload: url
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   388
    "Download a given file and save it into `archive` 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   389
     Return true, if the file has been downloaded, false otherwise"
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   390
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   391
    (url scheme = 'http' and:[HTTPInterface notNil]) ifTrue:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   392
        | client response |
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   393
        client := HTTPInterface connectTo: url host port: (url port ? 80).
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   394
        client destinationFile: archive.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   395
        response := client requestGET: url asString.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   396
        ^response isErrorResponse not 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   397
            and:[response isFileErrorResponse not 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   398
            and:[response isMovedResponse not]]
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   399
                        
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   400
    ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   401
    
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   402
    (url scheme = 'https' or:[HTTPInterface isNil]) ifTrue:[    
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   403
        | cmd |
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   404
        (OperatingSystem canExecuteCommand:'curl') ifTrue:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   405
            cmd := 'curl -s -o %1 %2' bindWith:archive pathName with:url.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   406
        ] ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   407
            (OperatingSystem canExecuteCommand:'wget') ifTrue:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   408
                cmd := 'wget -s -o %1 %2' bindWith:archive pathName with:url.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   409
            ] ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   410
                ^false.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   411
            ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   412
        ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   413
        ^ OperatingSystem executeCommand:cmd
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   414
    ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   415
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   416
    ^false "Unssuported protocol"
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   417
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   418
    "Created: / 09-07-2013 / 00:23:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
doExtract
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
    | zar |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
342
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   424
    Transcript nextPutLine:'Extracting...'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
    [
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
        destination recursiveMakeDirectory.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
    ] on:Error
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
            do:[:ex | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
        self 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
            error:'Cannot make destination directory ' , destination pathName , ': ' 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
                    , ex description
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
    
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
    zar := ZipArchive oldFileNamed:archive pathName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
    zar members do:[:zmemb | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
        | i  src  dst  dstd skipIt |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
        src := zmemb fileName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
        i := src indexOf:$/.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
        i ~~ 0 ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
            src := src copyFrom:i + 1.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
        ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
        
342
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   444
        skipIt := (src startsWith:'git') 
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   445
                        or:[src startsWith: 'mercurial/docs'].
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   446
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
        skipIt ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
           dst := OperatingSystem isMSWINDOWSlike 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
                   ifTrue:[destination / (src copyReplaceAll:$/ with:Filename separator)]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
                   ifFalse:[destination / src].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
           (dstd := dst directory) exists ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
               dstd recursiveMakeDirectory
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
           ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
           dst writingFileDo:[:f | 
342
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   455
               Transcript nextPutAll: '  '; nextPutLine: src.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
               zar extract:zmemb fileName intoStream:f 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
           ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
        ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
    "Created: / 07-07-2013 / 11:19:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   462
    "Modified: / 07-07-2013 / 19:22:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a4b76932414 Added HG2CVS tool for naive synchronization of CVS from Mercuriual repo.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 338
diff changeset
   463
    "Modified (format): / 07-07-2013 / 20:51:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
doPrepare
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
    | pp |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
    pp := Smalltalk getPackageDirectoryForPackage:'stx:libscm'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    pp isNil ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
        pp := Smalltalk getPackageDirectoryForPackage:'stx:libbasic'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    destination := pp directory isWritable 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
                    ifTrue:[pp directory / 'libscm']
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
                    ifFalse:[Filename homeDirectory / '.stx' / 'packages' / 'stx' / 'libscm'].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    Transcript nextPutLine: 'Installing version ', version , ' to ', destination pathName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
    "Created: / 07-07-2013 / 19:06:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
!HGInstaller methodsFor:'logging'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
log:message details: details severity:severity 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
    | stream |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
    (severity == SeverityInfo and:[Verbose not]) ifTrue:[ ^ self ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    stream := RunningStandalone ifTrue:[Stderr] ifFalse:[Transcript].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    stream
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
        nextPut:$[;
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
        nextPutAll:severity asUppercase;
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
        nextPutAll:']: ';
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
        nextPutLine:message.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    details notNil ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
        details asStringCollection do:[:line | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
            stream
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
                nextPutAll:'  ';
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
                nextPutLine:line trimSeparators.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
        ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
    severity == SeverityError ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
        RunningStandalone ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
            Smalltalk exit:1.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
        ] ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
            self error:message
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
        ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
    "Created: / 07-07-2013 / 23:23:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
    "Modified: / 08-07-2013 / 00:27:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
log:message severity:severity 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
    self log:message details: nil severity:severity
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
    "Created: / 07-07-2013 / 23:34:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
!HGInstaller methodsFor:'running'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
main: argv
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
    "Run the installer. This is called when the installer
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
     is called from a command line as:
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
        stx --execute HGInstaller.st
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
    "
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
    | i |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   532
    [
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   533
        (Smalltalk getPackageDirectoryForPackage: Object package) isNil ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   534
            | cmd root |
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   535
            cmd := OperatingSystem pathOfSTXExecutable asFilename asAbsoluteFilename.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   536
            root := cmd directory directory directory directory.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   537
            root infoPrintCR.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   538
            (root / 'stx' / 'libbasic') isDirectory ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   539
                self log: 'Cannot determine package path' severity: SeverityError.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
            ].
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   541
            Smalltalk packagePath: (Smalltalk packagePath copyWith: root pathName).
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
        ].
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   543
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   544
        i := 1.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   545
        [ i <= argv size ] whileTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   546
            | a |
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   548
            a := argv at: i.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   549
            a = '--version' ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   550
                i = argv size ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   551
                    self error: '--version requires an argument!!'
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   552
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   553
                version := argv at: i + 1.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   554
                i := i + 2.            
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   555
            ] ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   556
            a = '--archive' ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   557
                i = argv size ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   558
                    self log: '--archive requires an argument!!' severity: SeverityError
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   559
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   560
                archive := (argv at: i + 1) asFilename.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   561
                archive exists ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   562
                    self log: ('Archive %1 does not exist' bindWith: archive pathName) severity: SeverityError
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   563
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   564
                archive isReadable ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   565
                    self log: ('Archive %1 is not readable!!' bindWith: archive pathName) severity: SeverityError
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   566
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   567
                (ZipArchive isZipArchive: archive) ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   568
                    self log: ('Archive %1 does not seem to be a valid .zip archive!!' bindWith: archive pathName) severity: SeverityError
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   569
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   570
                i := i + 2.            
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   571
            ] ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   572
                self log: ('Unknown option ''',a,'''') severity: SeverityError.              
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   573
            ]]
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   574
        ].
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
        self install.
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   576
        Smalltalk exit: 0.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
    ] on: Error do:[:ex|
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
        self log: 'Unexpected error: ', ex description severity: SeverityError
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
    ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
    "Created: / 07-07-2013 / 18:30:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   582
    "Modified: / 11-07-2013 / 01:45:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
HGInstaller initialize!