Skip to content

Commit

Permalink
Make it compatible before and since Pharo 12
Browse files Browse the repository at this point in the history
  • Loading branch information
tinchodias committed Nov 18, 2024
1 parent 1609413 commit d90e7c0
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 39 deletions.
101 changes: 63 additions & 38 deletions BaselineBuilder-Core/BaselineBuilder.class.st
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Class {
#name : #BaselineBuilder,
#superclass : #Object,
#name : 'BaselineBuilder',
#superclass : 'Object',
#instVars : [
'projectName',
'packageNames',
Expand All @@ -10,10 +10,11 @@ Class {
'externalProjectNames',
'internalPackageNamesRegex'
],
#category : #'BaselineBuilder-Core'
#category : 'BaselineBuilder-Core',
#package : 'BaselineBuilder-Core'
}

{ #category : #examples }
{ #category : 'examples' }
BaselineBuilder class >> example0 [
self new
projectName: 'BaselineBuilder';
Expand All @@ -22,7 +23,7 @@ BaselineBuilder class >> example0 [
browseBuiltBaselineClass
]

{ #category : #examples }
{ #category : 'examples' }
BaselineBuilder class >> example1 [
self new
projectName: 'MongoClientMonitor';
Expand All @@ -31,7 +32,7 @@ BaselineBuilder class >> example1 [
browseBuiltBaselineClass
]

{ #category : #examples }
{ #category : 'examples' }
BaselineBuilder class >> example2 [
self new
projectName: 'Iceberg';
Expand All @@ -40,48 +41,48 @@ BaselineBuilder class >> example2 [
browseBuiltBaselineClass
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> baselineClass [
^ baselineClass
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> baselineClassName [
^ self baselinePackageName, 'Draft'
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> baselinePackageName [
^ 'BaselineOf', projectName
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> browseBuiltBaselineClass [
baselineClass browse
]

{ #category : #building }
{ #category : 'building' }
BaselineBuilder >> build [
self processDependencies.
self createBaselineClass.
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> copyToClipboardInstallMarkdownWith: urlString [

Clipboard
clipboardText: (self installMarkdownWith: urlString)
informing: 'Markdown fragment copied to clipboard'
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> createBaselineClass [
baselineClass := BaselineOf
subclass: self baselineClassName asSymbol
instanceVariableNames: ''
classVariableNames: ''
package: self baselinePackageName asString.

baselineClass :=
SystemVersion current major < 12
ifTrue: [ self newBaselineClassBeforePharo12 ]
ifFalse: [ self newBaselineClassSincePharo12 ].

baselineClass
compile: self sourceForBaselineMethod
classified: #baseline.
Expand All @@ -92,7 +93,7 @@ BaselineBuilder >> createBaselineClass [
classified: #'external projects' ]
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> ensureRequire: source to: target [
| sourcePackageName targetPackageName |
self
Expand All @@ -110,12 +111,12 @@ BaselineBuilder >> ensureRequire: source to: target [
(packageRequirements at: sourcePackageName) add: targetPackageName
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> externalProjectNames: aCollectionOfStrings [
externalProjectNames := aCollectionOfStrings
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> guessLocationForPackageNamed: aString [

IceRepository registry
Expand All @@ -128,7 +129,7 @@ BaselineBuilder >> guessLocationForPackageNamed: aString [

]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> guessLocationFromRemote: anIceRemote [

| type |
Expand All @@ -143,7 +144,7 @@ BaselineBuilder >> guessLocationFromRemote: anIceRemote [
anIceRemote localRepository project sourceDirectory }
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> installMarkdownWith: urlString [

^ '
Expand All @@ -158,7 +159,7 @@ Evaluate in Pharo:
self installScriptWith: urlString }
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> installScriptWith: urlString [

^ '
Expand All @@ -171,22 +172,45 @@ Metacello new
urlString }
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> internalPackageNamesPrefix: aString [
self internalPackageNamesRegex: (aString, '.*') asRegex
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> internalPackageNamesRegex: aRegex [
internalPackageNamesRegex := aRegex
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> isInternal: aPackageName [
^ internalPackageNamesRegex matches: aPackageName
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> newBaselineClassBeforePharo12 [

^ BaselineOf
subclass: self baselineClassName asSymbol
instanceVariableNames: ''
classVariableNames: ''
package: self baselinePackageName asString
]

{ #category : 'private' }
BaselineBuilder >> newBaselineClassSincePharo12 [

^ BaselineOf classInstaller make: [ :builder |
builder
superclass: BaselineOf;
name: self baselineClassName asSymbol;
slotsFromString: '';
sharedVariablesFromString: '';
package: self baselinePackageName asString;
environment: BaselineOf environment ]
]

{ #category : 'private' }
BaselineBuilder >> parseTarget: aPackageName ifInternal: internalPackageBlock ifExternalProject: externalProjectBlock ifNone: noneBlock [

(self isInternal: aPackageName) ifTrue: [
Expand All @@ -199,10 +223,11 @@ BaselineBuilder >> parseTarget: aPackageName ifInternal: internalPackageBlock if
^ noneBlock value
]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> processDependencies [

packageNames := Array streamContents: [ :stream |
RPackageOrganizer default packageNamesDo: [ :each |
self packageOrganizer packageNamesDo: [ :each |
(self isInternal: each) ifTrue: [
stream nextPut: each asString ] ] ].

Expand All @@ -218,23 +243,23 @@ BaselineBuilder >> processDependencies [

]

{ #category : #accessing }
{ #category : 'accessing' }
BaselineBuilder >> projectName: aString [
projectName := aString.
self internalPackageNamesPrefix: aString.
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> selectorForBaselineMethod [
^ 'baseline:'
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> selectorForExternalProject: aString [
^ 'declare{1}On:' format: {aString}
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> sourceForBaselineMethod [
^ '{1} spec
<baseline>
Expand All @@ -246,7 +271,7 @@ BaselineBuilder >> sourceForBaselineMethod [
self sourceForPackageDeclarations }
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> sourceForExternalProject: aString [

^ '{1} spec
Expand All @@ -259,7 +284,7 @@ BaselineBuilder >> sourceForExternalProject: aString [
(self guessLocationForPackageNamed: aString) printString }
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> sourceForExternalProjectDeclarations [
externalProjectNames ifEmpty: [ ^'' ].

Expand All @@ -274,7 +299,7 @@ BaselineBuilder >> sourceForExternalProjectDeclarations [
]
]

{ #category : #private }
{ #category : 'private' }
BaselineBuilder >> sourceForPackageDeclarations [
^ String streamContents: [ :stream |
stream cr; tab; tab; tab; << 'spec'; cr.
Expand Down
2 changes: 1 addition & 1 deletion BaselineBuilder-Core/package.st
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Package { #name : #'BaselineBuilder-Core' }
Package { #name : 'BaselineBuilder-Core' }

0 comments on commit d90e7c0

Please sign in to comment.