MCStxMczWriter.st
author Claus Gittinger <cg@exept.de>
Thu, 28 Mar 2013 00:05:48 +0100
changeset 769 6a647dbd3630
parent 759 fc131485692e
child 771 cfb9eb763bc2
permissions -rw-r--r--
class: MCStxMczWriter changed: #writeBuildSupportFiles:for: #writeResourceFiles:for: proceed without resource files / startup class, if undefined.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCMczWriter subclass:#MCStxMczWriter
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
     7
	category:'SCM-Monticello-St/X Storing'
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!MCStxMczWriter class methodsFor:'documentation'!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
documentation
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    redefined to add some more stuff to the mcz archive:
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    - package pragma to the source code.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
    - stx subdirectory (optional), containing required support files for building
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
          plus resource files.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    - stx.bin subdirectory (optional), containing a precompiled binary dll as per architecture.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!MCStxMczWriter methodsFor:'accessing'!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
snapshotWriterClass
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
        ^ MCStxStWriter
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!MCStxMczWriter methodsFor:'visiting'!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
writeBuildSupportFiles:aVersion for:aProjectDefinition
769
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    32
    Error handle:[:ex |
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    33
        Dialog information:('Cannot write build support files because:\\',ex description,'\\Writing source files only.') withCRs.
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    34
        ^ self
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    35
    ] do:[
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    36
        aProjectDefinition forEachFileNameAndGeneratedContentsDo:[:file :contents |
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    37
            self addString: contents at: 'snapshot.stx/', file.
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    38
        ].
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    39
    ]
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
writeIndividualSourceFiles:aVersion for:aProjectDefinition
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    "individual source files for dll compilation"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    aProjectDefinition classNames do:[:eachClassName |
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
        |cls fileName source|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
        cls := Smalltalk classNamed:eachClassName.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
        cls isNil ifTrue:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
            Transcript showCR:'class missing: ',eachClassName
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        ] ifFalse:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
            cls autoload.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
            fileName := (Smalltalk fileNameForClass:cls),'.st'.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
            source := String streamContents:[:s | cls fileOutOn:s withTimeStamp:false].
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
    56
            self addString: source at: 'snapshot.stx/', fileName.                               
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        ]
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
writeResourceFiles:aVersion for:aProjectDefinition
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    "language translations kept in externalfiles"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    |dir rsrcDir|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
769
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    66
    dir := aProjectDefinition projectDirectory.
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    67
    dir isNil ifTrue:[
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    68
        "/ no directory - no resource files
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    69
        ^  self.
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    70
    ].
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
    71
    (rsrcDir := dir asFilename / 'resources') exists ifTrue:[
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
        rsrcDir recursiveDirectoryContentsDo:[:relFn |
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
            (rsrcDir construct:relFn) isDirectory ifFalse:[
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
    74
                self addString: ((rsrcDir construct:relFn) contentsOfEntireFile) at: 'snapshot.stx/resources/', relFn.
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
            ]            
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
        ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
759
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    80
writeSnapshot: aSnapshot  forVersion: aVersion
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    81
    |source|
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    82
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    83
    source := 
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    84
        ('"{ Package: ''%1'' }" !!\\' withCRs bindWith:aVersion package name)
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    85
        ,  (self serializeDefinitions: aSnapshot definitions).
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    86
fc131485692e class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
    87
    self addString: source at: 'snapshot/source.', self snapshotWriterClass extension.
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    "/ I whink, we can comment the following (or is it compatible?)
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    self addString: (self serializeInBinary: aSnapshot) at: 'snapshot.bin'
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
writeVersion: aVersion
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    |packageID prjDef|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
    95
    super writeVersion: aVersion.
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
    97
    aVersion snapshot includeExtrasForSTX ifTrue:[
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
    98
        "/ ST/X specific stuff here.
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
743
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   100
        packageID := aVersion package name.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   101
        prjDef := ProjectDefinition definitionClassForPackage:packageID.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   102
        prjDef isNil ifTrue:[
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   103
            "/ not a project definition mcz - simply skip
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   104
            Transcript show:'No projectDefinition for ',packageID, ' generated simple source only'.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   105
        ] ifFalse:[
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   106
            "/ additional support files for recompilation...
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   107
            self writeIndividualSourceFiles: aVersion for: prjDef.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   108
            self writeBuildSupportFiles: aVersion for: prjDef.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   109
            self writeResourceFiles: aVersion for: prjDef.
a43cc4d9b6dc option to save st/x extra stuff in the mcz
Claus Gittinger <cg@exept.de>
parents: 738
diff changeset
   110
        ]
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ]
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!MCStxMczWriter class methodsFor:'documentation'!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
version
769
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
   117
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStxMczWriter.st,v 1.4 2013-03-27 23:05:48 cg Exp $'
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
version_CVS
769
6a647dbd3630 class: MCStxMczWriter
Claus Gittinger <cg@exept.de>
parents: 759
diff changeset
   121
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStxMczWriter.st,v 1.4 2013-03-27 23:05:48 cg Exp $'
738
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123