Skip to content

Commit 9077c09

Browse files
committed
Issue #261: take care of shebang when writing out tonel format classes
1 parent 3d9d0d7 commit 9077c09

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

shared/repos/GsDevKit_launcher/rowan/scripts/gsdevkit_launcher-Scripts/GdkL_CopyScriptClasses.class.st

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,29 +35,35 @@ GdkL_CopyScriptClasses >> _projectDefinitionForUrl: rowanSpecUrl [
3535

3636
{ #category : 'main' }
3737
GdkL_CopyScriptClasses >> main [
38-
| projectDefinition_filetree projectDefinition_tonel packageName sourcePackageDef targetPackageDef |
38+
| shebang needsShebangProperty projectDefinition_filetree projectDefinition_tonel packageName sourcePackageDef targetPackageDef |
3939

4040
args isEmpty ifTrue: [ self error: 'Expected to find at least one class name on command line ' ].
4141

4242
projectDefinition_filetree := self _projectDefinitionForUrl: 'file:$GS_HOME/shared/repos/GsDevKit_launcher/rowan/specs/gsdevkit_launcher_filetree.ston'.
4343
projectDefinition_tonel := self _projectDefinitionForUrl: 'file:$GS_HOME/shared/repos/GsDevKit_launcher/rowan/specs/gsdevkit_launcher_tonel.ston'.
4444

45-
self halt.
46-
4745
packageName := 'gsdevkit_launcher-Scripts'.
46+
needsShebangProperty := false.
47+
shebang := '/usr/bin/env gsdevkit_launcher'.
48+
4849
write = 'filetree'
4950
ifTrue: [
5051
sourcePackageDef := projectDefinition_tonel packageNamed: packageName.
5152
targetPackageDef := projectDefinition_filetree packageNamed: packageName ]
5253
ifFalse: [
5354
targetPackageDef := projectDefinition_tonel packageNamed: packageName.
54-
sourcePackageDef := projectDefinition_filetree packageNamed: packageName ].
55+
sourcePackageDef := projectDefinition_filetree packageNamed: packageName.
56+
needsShebangProperty := true ].
5557

5658
args do: [:className |
59+
| classDef |
5760
targetPackageDef
5861
removeClassNamed: className
5962
ifAbsent: [ "No need to remove the class definition if is not present" ].
60-
targetPackageDef addClassDefinition: (sourcePackageDef classDefinitionNamed: className) ].
63+
classDef := sourcePackageDef classDefinitionNamed: className.
64+
needsShebangProperty
65+
ifTrue: [ classDef shebang: shebang ].
66+
targetPackageDef addClassDefinition: classDef ].
6167

6268
write = 'filetree'
6369
ifTrue: [ projectDefinition_filetree exportPackages ].

shared/repos/GsDevKit_launcher/rowan/src/gsdevkit_launcher-Scripts.package/GdkL_CopyScriptClasses.class/instance/main.st

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,34 @@
11
main
22
main
3-
| projectDefinition_filetree projectDefinition_tonel packageName sourcePackageDef targetPackageDef |
3+
| shebang needsShebangProperty projectDefinition_filetree projectDefinition_tonel packageName sourcePackageDef targetPackageDef |
44

55
args isEmpty ifTrue: [ self error: 'Expected to find at least one class name on command line ' ].
66

77
projectDefinition_filetree := self _projectDefinitionForUrl: 'file:$GS_HOME/shared/repos/GsDevKit_launcher/rowan/specs/gsdevkit_launcher_filetree.ston'.
88
projectDefinition_tonel := self _projectDefinitionForUrl: 'file:$GS_HOME/shared/repos/GsDevKit_launcher/rowan/specs/gsdevkit_launcher_tonel.ston'.
99

10-
self halt.
11-
1210
packageName := 'gsdevkit_launcher-Scripts'.
11+
needsShebangProperty := false.
12+
shebang := '/usr/bin/env gsdevkit_launcher'.
13+
1314
write = 'filetree'
1415
ifTrue: [
1516
sourcePackageDef := projectDefinition_tonel packageNamed: packageName.
1617
targetPackageDef := projectDefinition_filetree packageNamed: packageName ]
1718
ifFalse: [
1819
targetPackageDef := projectDefinition_tonel packageNamed: packageName.
19-
sourcePackageDef := projectDefinition_filetree packageNamed: packageName ].
20+
sourcePackageDef := projectDefinition_filetree packageNamed: packageName.
21+
needsShebangProperty := true ].
2022

2123
args do: [:className |
24+
| classDef |
2225
targetPackageDef
2326
removeClassNamed: className
2427
ifAbsent: [ "No need to remove the class definition if is not present" ].
25-
targetPackageDef addClassDefinition: (sourcePackageDef classDefinitionNamed: className) ].
28+
classDef := sourcePackageDef classDefinitionNamed: className.
29+
needsShebangProperty
30+
ifTrue: [ classDef shebang: shebang ].
31+
targetPackageDef addClassDefinition: classDef ].
2632

2733
write = 'filetree'
2834
ifTrue: [ projectDefinition_filetree exportPackages ].

0 commit comments

Comments
 (0)