mercurial/HGInstaller.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 01 Aug 2013 14:51:50 +0100
changeset 338 665342670130
parent 335 7e19ab19148b
child 342 3a4b76932414
permissions -rw-r--r--
Fix endless loop in HGInstaller. When compilation fails, it clean's up the working copy. The make clean also cleans documentation, which was not extracted. Borland make then run into an endless loop. As a quick workaround, extract doc directory.
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
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
StandaloneStartup subclass:#HGInstaller
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	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
    16
	classVariableNames:'URLs RunningStandalone SeverityError SeverityWarning SeverityInfo'
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'SCM-Mercurial-StX-Installer'
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!HGInstaller class methodsFor:'documentation'!
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
copyright
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    25
 COPYRIGHT (c) 2012-2013 by Jan Vrany
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    26
              All Rights Reserved
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
    28
 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
    29
 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
    30
 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
    31
 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
    32
 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
    33
 hereby transferred.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!
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
documentation
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
    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
    40
    and installs Mercurial support into Smalltalk/X IDE.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    Usage (command line):
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
        # install latest stable version
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
        stx --execute HGInstaller.st 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
        # install latest development version                             
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
        stx --execute HGInstaller.st --version default
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
        # install Mercurial for manually downloaded archive
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
        stx --execute HGInstaller.st --archive downloaded-archive.zip
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    Usage (workspace)
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
        # install latest stable version
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
        HGInstaller install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        # install latest development version                             
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        HGInstaller install: #default
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
   [author:]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
        Jan Vrany <jan.vrany@fit.cvut.cz>
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    [instance variables:]
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
    [class 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
    [see also:]
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
"
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
!HGInstaller class methodsFor:'initialization'!
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
initialize
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "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
    75
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    76
    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
    77
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    78
    self initializeURLs.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    79
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    SeverityError := #error.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    SeverityWarning := #warning.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    SeverityInfo := #info.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    (RunningStandalone := Smalltalk commandName endsWith: (self name , '.st')) ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
        self start 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    89
    "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
    90
!
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    91
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    92
initializeURLs
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    93
    URLs := Array
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    94
                "/ Primary repository
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    95
                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
    96
                "/ Mirros
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    97
                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
    98
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
    99
    "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
   100
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!HGInstaller class methodsFor:'instance creation'!
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
new
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    "return an initialized instance"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ^ self basicNew initialize.
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
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!HGInstaller class methodsFor:'defaults'!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   112
allowCoverageMeasurementOption
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   113
    "enable/disable the --measureCoverage startup options.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   114
     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
   115
     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
   116
     (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
   117
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   118
    ^ false
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
    "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
   121
!
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   122
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
allowDebugOption
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    "enable/disable the --debug startup option.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
     Can be redefined in subclasses to enable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    ^ true
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
    "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
   130
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
allowScriptingOption
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    "enable/disable the --scripting startup option.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
     Can be redefined in subclasses to enable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    ^ true
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
    "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
   139
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
suppressRCFileReading
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "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
   143
     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
   144
     Can be redefined in subclasses to disable it"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    ^ true
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
    "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
   149
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
!HGInstaller class methodsFor:'helpers'!
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
printInfo:msg
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    Transcript 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
        show:'[INFO]: ';
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        showCR:msg
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    "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
   159
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
!HGInstaller class methodsFor:'installer API'!
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
install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    "Installs latest 'default' version of Mercurial support"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    ^self new install
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
    "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
   169
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
install: rev
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    "Installs given revision of Mercurial support"
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    ^self new install: rev
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
    "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
   177
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
!HGInstaller class methodsFor:'startup'!
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
main:argv
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    "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
   183
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    ^self new main: argv
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
    "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
   188
    "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
   189
!
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   190
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   191
usage
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   192
    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
   193
    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
   194
    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
   195
    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
   196
    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
   197
    Stderr nextPutLine:'                            archive is donwloaded'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   198
    Stderr nextPutLine:'  --help .................. output this message'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   199
"/    Stderr nextPutLine:'  --verbose ............... verbose startup'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   200
"/    Stderr nextPutLine:'  --noBanner .............. no splash screen'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   201
"/    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
   202
"/    self allowScriptingOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   203
"/        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
   204
"/    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   205
    self allowDebugOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   206
        Stderr nextPutLine:'  --debug ................. enable Debugger'.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   207
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   208
    self allowCoverageMeasurementOption ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   209
        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
   210
        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
   211
        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
   212
        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
   213
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   214
    self suppressRCFileReading ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   215
        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
   216
    ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   217
    Stderr cr.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   218
    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
   219
    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
   220
    Stderr cr.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   221
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   222
    Smalltalk exit: 0
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
    "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
   225
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
!HGInstaller class methodsFor:'startup-private'!
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
applicationRegistryPath
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
    "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
   231
     as a collection of path-components.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
     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
   233
     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
   234
     (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
   235
     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
   236
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    ^ #(libscm mercurial installer)
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
    "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
   240
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
applicationUUID
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    "answer an application-specific unique uuid.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
     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
   245
     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
   246
     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
   247
     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
   248
     similar possibly conflicting identifier.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
     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
   250
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    ^ UUID fromString:'132746c0-e72a-11e2-85f0-606720e43e2c'
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
    "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
   254
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
!HGInstaller methodsFor:'initialization'!
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
initialize
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
    "Invoked when a new instance is created."
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
    "/ please change as required (and remove this comment)
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
    version := 'default'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
    "/ super initialize.   -- commented since inherited method does nothing
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
    "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
   267
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
!HGInstaller methodsFor:'installation'!
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
install
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
    self doPrepare.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    self doDownload.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    self doExtract.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    self doCompile.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
    self doConfigure.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    "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
   279
    "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
   280
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
install: ver
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
    version := ver.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    self install.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
    "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
   287
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
!HGInstaller methodsFor:'installation-private'!
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
doCompile
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    | cmd |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
    cmd := OperatingSystem isMSWINDOWSlike ifTrue:[ 'bmake.bat'] ifFalse:['make'].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
    ( destination directory / 'stc' ) exists ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
        | log |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
        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
   298
        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
   299
            Transcript nextPutAll: 'Compiling...'; cr.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
            (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
   301
                self log: 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
                        'Compilation failed' 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
                     details:
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
                        '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
   305
                         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
   306
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
                         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
   308
                         ', log pathName
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   309
                    severity: SeverityWarning.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   310
            ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   311
            (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
   312
                self log: 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   313
                        'Compilation failed' 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   314
                     details:
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   315
                        '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
   316
                         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
   317
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   318
                         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
   319
                         ', log pathName
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   320
                    severity: SeverityWarning.    
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
             ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
        
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
    "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
   327
    "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
   328
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
doConfigure
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    | top rcd |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   333
    Transcript nextPutLine: 'Configuring...'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    top := (Smalltalk getPackageDirectoryForPackage: Object package) directory directory.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
    rcd := top / 'stx'/ 'projects' / 'smalltalk' / 'rc.d'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    rcd isDirectory ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
        (rcd / '50_mercurial.rc') writingFileDo:[:s|
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
            s nextPutLine:'"/ Load Mercurial support'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
            top = destination directory directory ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
                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
   341
            ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
            s nextPutAll:'Smalltalk loadPackage: ''stx:libscm/mercurial''.'.    
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
    ] ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
        
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   346
    ].
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    "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
   349
    "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
   350
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
doDownload
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   353
    | urls1 urls2 |
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    archive notNil ifTrue:[ ^ self ].
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 := Filename newTemporary.
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   358
    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
   359
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   360
    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
   361
    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
   362
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   363
    (( 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
   364
        | downloaded url|
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   365
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   366
        url := base / (version , '.zip').
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   367
        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
   368
        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
   369
        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
   370
        downloaded                        
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   371
    ]) ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   372
        self error:'Failed to download archive!!'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    ].
325
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   374
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
    (ZipArchive isZipArchive: archive) ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
        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
   377
    ].  
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
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
    "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
   382
    "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
   383
!
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   384
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   385
doDownload: url
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   386
    "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
   387
     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
   388
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   389
    (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
   390
        | client response |
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   391
        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
   392
        client destinationFile: archive.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   393
        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
   394
        ^response isErrorResponse not 
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   395
            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
   396
            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
   397
                        
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   398
    ].
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
    (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
   401
        | cmd |
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   402
        (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
   403
            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
   404
        ] ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   405
            (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
   406
                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
   407
            ] ifFalse:[
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   408
                ^false.
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   409
            ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   410
        ].
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   411
        ^ OperatingSystem executeCommand:cmd
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
b34e5451604d HGInstaller improved to use HTTP mirror to download package...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 323
diff changeset
   414
    ^false "Unssuported protocol"
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
    "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
   417
!
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
doExtract
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
    | zar |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   422
    Transcript nextPutAll:'Extracting...'; cr.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
    [
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
        destination recursiveMakeDirectory.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
    ] on:Error
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
            do:[:ex | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
        self 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
            error:'Cannot make destination directory ' , destination pathName , ': ' 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
                    , ex description
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
    
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
    zar := ZipArchive oldFileNamed:archive pathName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
    zar members do:[:zmemb | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
        | i  src  dst  dstd skipIt |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
        src := zmemb fileName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
        i := src indexOf:$/.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
        i ~~ 0 ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
            src := src copyFrom:i + 1.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
        ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
        
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   442
        skipIt := src startsWith:'git'.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
        skipIt ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
           dst := OperatingSystem isMSWINDOWSlike 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
                   ifTrue:[destination / (src copyReplaceAll:$/ with:Filename separator)]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
                   ifFalse:[destination / src].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
           (dstd := dst directory) exists ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
               dstd recursiveMakeDirectory
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
           ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
           dst writingFileDo:[:f | 
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   451
               Transcript nextPutAll: '  '; nextPutAll: src; cr.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
               zar extract:zmemb fileName intoStream:f 
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
        ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    "Created: / 07-07-2013 / 11:19:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   458
    "Modified: / 01-08-2013 / 14:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
320
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
doPrepare
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
    | pp |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
    pp := Smalltalk getPackageDirectoryForPackage:'stx:libscm'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
    pp isNil ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
        pp := Smalltalk getPackageDirectoryForPackage:'stx:libbasic'.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
    destination := pp directory isWritable 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
                    ifTrue:[pp directory / 'libscm']
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
                    ifFalse:[Filename homeDirectory / '.stx' / 'packages' / 'stx' / 'libscm'].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    Transcript nextPutLine: 'Installing version ', version , ' to ', destination pathName.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
    "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
   475
! !
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
!HGInstaller methodsFor:'logging'!
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
log:message details: details severity:severity 
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
    | stream |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
    (severity == SeverityInfo and:[Verbose not]) ifTrue:[ ^ self ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
    stream := RunningStandalone ifTrue:[Stderr] ifFalse:[Transcript].
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
        nextPut:$[;
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
        nextPutAll:severity asUppercase;
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
        nextPutAll:']: ';
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
        nextPutLine:message.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    details notNil ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
        details asStringCollection do:[:line | 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
            stream
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:line trimSeparators.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
        ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    severity == SeverityError ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
        RunningStandalone ifTrue:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
            Smalltalk exit:1.
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
        ] ifFalse:[
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
            self error:message
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
        ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    ].
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
    "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
   507
    "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
   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
log:message severity:severity 
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
    self log:message details: nil severity:severity
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
    "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
   514
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
!HGInstaller methodsFor:'running'!
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
main: argv
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    "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
   520
     is called from a command line as:
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
        stx --execute HGInstaller.st
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
    "
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
    | i |
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   527
    [
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   528
        (Smalltalk getPackageDirectoryForPackage: Object package) isNil ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   529
            | cmd root |
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   530
            cmd := OperatingSystem pathOfSTXExecutable asFilename asAbsoluteFilename.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   531
            root := cmd directory directory directory directory.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   532
            root infoPrintCR.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   533
            (root / 'stx' / 'libbasic') isDirectory ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   534
                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
   535
            ].
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   536
            Smalltalk packagePath: (Smalltalk packagePath copyWith: root pathName).
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
        ].
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   538
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   539
        i := 1.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   540
        [ i <= argv size ] whileTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   541
            | a |
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
            a := argv at: i.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   544
            a = '--version' ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   545
                i = argv size ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   546
                    self error: '--version requires an argument!!'
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   547
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   548
                version := argv at: i + 1.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   549
                i := i + 2.            
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   550
            ] ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   551
            a = '--archive' ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   552
                i = argv size ifTrue:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   553
                    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
   554
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   555
                archive := (argv at: i + 1) asFilename.
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   556
                archive exists ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   557
                    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
   558
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   559
                archive isReadable ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   560
                    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
   561
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   562
                (ZipArchive isZipArchive: archive) ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   563
                    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
   564
                ].
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   565
                i := i + 2.            
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   566
            ] ifFalse:[
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   567
                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
   568
            ]]
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   569
        ].
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
        self install.
332
fba502c3fe50 Fix in argument parsing in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 325
diff changeset
   571
        Smalltalk exit: 0.
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
    ] on: Error do:[:ex|
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
        self log: 'Unexpected error: ', ex description severity: SeverityError
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
    ]
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
    "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
   577
    "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
   578
! !
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
338
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   580
!HGInstaller class methodsFor:'documentation'!
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   581
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   582
version_HG
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   583
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   584
    ^ '$Changeset: <not expanded> $'
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   585
! !
665342670130 Fix endless loop in HGInstaller.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 335
diff changeset
   586
320
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
71293a1b6616 Initial version of HGInstaller.st...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
HGInstaller initialize!