MCStxMczWriter.st
author Claus Gittinger <cg@exept.de>
Thu, 21 Mar 2013 17:40:03 +0100
changeset 738 85d0afcc16e3
child 743 a43cc4d9b6dc
permissions -rw-r--r--
initial checkin
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:''
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'SCM-Monticello-Storing-St/X'
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
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    aProjectDefinition forEachFileNameAndGeneratedContentsDo:[:file :contents |
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
        self addString: contents at: 'snapshot/stx/', file.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
writeIndividualSourceFiles:aVersion for:aProjectDefinition
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "individual source files for dll compilation"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    aProjectDefinition classNames do:[:eachClassName |
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
        |cls fileName source|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
        cls := Smalltalk classNamed:eachClassName.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
        cls isNil ifTrue:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
            Transcript showCR:'class missing: ',eachClassName
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
        ] ifFalse:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
            cls autoload.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
            fileName := (Smalltalk fileNameForClass:cls),'.st'.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
            source := String streamContents:[:s | cls fileOutOn:s withTimeStamp:false].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
            self addString: source at: 'snapshot/stx/', fileName.                               
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        ]
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
writeResourceFiles:aVersion for:aProjectDefinition
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    "language translations kept in externalfiles"
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    |dir rsrcDir|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    dir := aProjectDefinition projectDirectory asFilename.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    (rsrcDir := dir / 'resources') exists ifTrue:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        rsrcDir recursiveDirectoryContentsDo:[:relFn |
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
            (rsrcDir construct:relFn) isDirectory ifFalse:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
                self addString: ((rsrcDir construct:relFn) contentsOfEntireFile) at: 'snapshot/stx/resources/', relFn.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
            ]            
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
        ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    ].
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
writeSnapshot: aSnapshot
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    self addString: (self serializeDefinitions: aSnapshot definitions) at: 'snapshot/source.', self snapshotWriterClass extension.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    "/ I whink, we can comment the following (or is it compatible?)
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    self addString: (self serializeInBinary: aSnapshot) at: 'snapshot.bin'
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
writeVersion: aVersion
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    |packageID prjDef|
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self writeVersion: aVersion.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "/ ST/X specific stuff here.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    packageID := aVersion package name.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    prjDef := ProjectDefinition definitionClassForPackage:packageID.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    prjDef isNil ifTrue:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
        "/ not a project definition mcz - simply skip
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
        Transcript show:'No projectDefinition for ',packageID, ' generated simple source only'.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ] ifFalse:[
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        "/ additional support files for recompilation...
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        self writeIndividualSourceFiles: aVersion for: prjDef.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
        self writeBuildSupportFiles: aVersion for: prjDef.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
        self writeResourceFiles: aVersion for: prjDef.
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    ]
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!MCStxMczWriter class methodsFor:'documentation'!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
version
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStxMczWriter.st,v 1.1 2013-03-21 16:40:03 cg Exp $'
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
version_CVS
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStxMczWriter.st,v 1.1 2013-03-21 16:40:03 cg Exp $'
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
! !
85d0afcc16e3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106