From 0c80847ea55213b4bcf0f810f5e76fba29f2bb30 Mon Sep 17 00:00:00 2001 From: Dale Henrichs Date: Sun, 11 Oct 2020 09:24:44 -0700 Subject: [PATCH] do filetree conversion on this project ... --- filetree/.filetree | 3 + .../.filetree | 4 ++ .../properties.json | 2 + .../T2F2T-Conversion-Core.package/.filetree | 4 ++ .../T2F2TConversion.class/README.md | 5 ++ .../class/_projectName.st | 3 + .../class/executeCommandLine.st | 5 ++ .../instance/_copyPackagesFrom.to..st | 9 +++ ...f2tDir.packageDir.componentName.format..st | 27 ++++++++ .../instance/_manPagePath.st | 3 + .../instance/_message.to..st | 7 +++ .../convertTo.packagesUsing.stdout..st | 29 +++++++++ .../convertToFiletreePackagesUsing.stdout..st | 3 + .../convertToTonelPackagesUsing.stdout..st | 3 + ...componentName.packageConvention.stdout..st | 31 +++++++++ ...ForProject.t2f2t.tonel.filetree.stdout..st | 11 ++++ .../T2F2TConversion.class/instance/debug..st | 3 + .../T2F2TConversion.class/instance/debug.st | 3 + .../instance/error.to..st | 5 ++ .../instance/processCommandLine..st | 63 +++++++++++++++++++ .../instance/usageMessage..st | 10 +++ .../T2F2TConversion.class/properties.json | 14 +++++ .../properties.json | 2 + filetree/properties.st | 4 ++ rowan/filetree.ston | 2 +- .../T2F2TConversion.class.st | 3 + 26 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 filetree/.filetree create mode 100644 filetree/BaselineOfT2F2TConversion.package/.filetree create mode 100644 filetree/BaselineOfT2F2TConversion.package/properties.json create mode 100644 filetree/T2F2T-Conversion-Core.package/.filetree create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/README.md create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/_projectName.st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/executeCommandLine.st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_copyPackagesFrom.to..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_createProject.packageConvention.root.t2f2tDir.packageDir.componentName.format..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_manPagePath.st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_message.to..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertTo.packagesUsing.stdout..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToFiletreePackagesUsing.stdout..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToTonelPackagesUsing.stdout..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.projectName.componentName.packageConvention.stdout..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.stdout..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug.st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/error.to..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/processCommandLine..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/usageMessage..st create mode 100644 filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/properties.json create mode 100644 filetree/T2F2T-Conversion-Core.package/properties.json create mode 100644 filetree/properties.st diff --git a/filetree/.filetree b/filetree/.filetree new file mode 100644 index 0000000..6535e4d --- /dev/null +++ b/filetree/.filetree @@ -0,0 +1,3 @@ +{ + "packageExtension" : ".package", + "Metadata" : "false" } diff --git a/filetree/BaselineOfT2F2TConversion.package/.filetree b/filetree/BaselineOfT2F2TConversion.package/.filetree new file mode 100644 index 0000000..8998102 --- /dev/null +++ b/filetree/BaselineOfT2F2TConversion.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/filetree/BaselineOfT2F2TConversion.package/properties.json b/filetree/BaselineOfT2F2TConversion.package/properties.json new file mode 100644 index 0000000..a097c63 --- /dev/null +++ b/filetree/BaselineOfT2F2TConversion.package/properties.json @@ -0,0 +1,2 @@ +{ + } \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/.filetree b/filetree/T2F2T-Conversion-Core.package/.filetree new file mode 100644 index 0000000..8998102 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/README.md b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/README.md new file mode 100644 index 0000000..2c8b5ce --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/README.md @@ -0,0 +1,5 @@ +Rowan-based scripts for converting package repositories from Tonel to Filetree and Filetree to Tonel format . + +See project readme (https://github.com/GsDevKit/T2F2T-Conversion#t2f2t-conversion) and shell script man page (https://github.com/GsDevKit/T2F2T-Conversion/blob/master/docs/man.txt) for additional details. + +test "quoted strings" in a comment \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/_projectName.st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/_projectName.st new file mode 100644 index 0000000..5080ce1 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/_projectName.st @@ -0,0 +1,3 @@ +private +_projectName + ^ 'T2F2T-Conversion' \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/executeCommandLine.st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/executeCommandLine.st new file mode 100644 index 0000000..d4a3712 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/class/executeCommandLine.st @@ -0,0 +1,5 @@ +command-line +executeCommandLine + | stdout | + stdout := GsFile stdout. + self new processCommandLine: GsFile stdout \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_copyPackagesFrom.to..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_copyPackagesFrom.to..st new file mode 100644 index 0000000..b1b943b --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_copyPackagesFrom.to..st @@ -0,0 +1,9 @@ +filetree/tonel commands +_copyPackagesFrom: sourceProject to: targetProject + sourceProject + readPackageNamesBlock: [ :packageName | + "read all of the packages" + true ]. + targetProject packagesRoot ensureCreateDirectory. + targetProject packages: sourceProject packages. + targetProject exportPackages \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_createProject.packageConvention.root.t2f2tDir.packageDir.componentName.format..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_createProject.packageConvention.root.t2f2tDir.packageDir.componentName.format..st new file mode 100644 index 0000000..01b7595 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_createProject.packageConvention.root.t2f2tDir.packageDir.componentName.format..st @@ -0,0 +1,27 @@ +create command +_createProject: projectName packageConvention: packageConvention root: root t2f2tDir: t2f2tDir packageDir: packageDir componentName: componentName format: format + | project resolvedProject | + project := (Rowan newProjectNamed: projectName) + packageConvention: packageConvention; + packageFormat: format; + diskUrl: 'file://' , root pathString; + projectSpecFile: t2f2tDir , '/' , format , '.ston'; + specName: format; + componentsPath: t2f2tDir , '/components'; + packagesPath: packageDir; + projectsPath: t2f2tDir , '/projects'; + specsPath: t2f2tDir , '/specs'; + projectSpecPath: t2f2tDir; + projectSpecName: format; + yourself. + + project addTopLevelComponentNamed: componentName. + + resolvedProject := project resolve. + Rowan projectTools createV2 + createResolvedProjectRepository: resolvedProject repository. + resolvedProject + exportProjectSpecification; + exportProjects; + exportComponents; + exportLoadSpecification \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_manPagePath.st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_manPagePath.st new file mode 100644 index 0000000..9646d1e --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_manPagePath.st @@ -0,0 +1,3 @@ +private +_manPagePath + ^ 'docs/man.txt' \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_message.to..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_message.to..st new file mode 100644 index 0000000..d9dfd0d --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/_message.to..st @@ -0,0 +1,7 @@ +private +_message: message to: stdout + stdout + lf; + nextPutAll: message; + nextPutAll: '. See help (t2t2t.sh --help) for details'; + lf \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertTo.packagesUsing.stdout..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertTo.packagesUsing.stdout..st new file mode 100644 index 0000000..7bd0097 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertTo.packagesUsing.stdout..st @@ -0,0 +1,29 @@ +filetree/tonel commands +convertTo: targetFormat packagesUsing: t2f2tPath stdout: stdout + | t2f2tRoot tonelProject filetreeProject targetProject sourceProject | + t2f2tRoot := t2f2tPath asFileReference. + t2f2tRoot exists + ifFalse: [ + ^ self + error: + 'The t2f2t metadata directory ' , t2f2tRoot printString , ' does not exist.' + to: stdout ]. + tonelProject := Rowan + projectFromUrl: 'file://' , (t2f2tRoot / 'specs' / 'tonel.ston') pathString. + filetreeProject := Rowan + projectFromUrl: 'file://' , (t2f2tRoot / 'specs' / 'filetree.ston') pathString. + targetFormat = 'tonel' + ifTrue: [ + targetProject := tonelProject. + sourceProject := filetreeProject ] + ifFalse: [ + targetFormat = 'filetree' + ifTrue: [ + targetProject := filetreeProject. + sourceProject := tonelProject ] + ifFalse: [ + self + error: + 'unknown format ' , targetFormat printString , '. Should be [ tonel | filetree]' + to: stdout ] ]. + self _copyPackagesFrom: sourceProject to: targetProject \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToFiletreePackagesUsing.stdout..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToFiletreePackagesUsing.stdout..st new file mode 100644 index 0000000..eeae607 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToFiletreePackagesUsing.stdout..st @@ -0,0 +1,3 @@ +filetree/tonel commands +convertToFiletreePackagesUsing: t2f2tPath stdout: stdout + ^ self convertTo: 'filetree' packagesUsing: t2f2tPath stdout: stdout \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToTonelPackagesUsing.stdout..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToTonelPackagesUsing.stdout..st new file mode 100644 index 0000000..e44ac37 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/convertToTonelPackagesUsing.stdout..st @@ -0,0 +1,3 @@ +filetree/tonel commands +convertToTonelPackagesUsing: t2f2tPath stdout: stdout + ^ self convertTo: 'tonel' packagesUsing: t2f2tPath stdout: stdout \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.projectName.componentName.packageConvention.stdout..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.projectName.componentName.packageConvention.stdout..st new file mode 100644 index 0000000..31e3884 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.projectName.componentName.packageConvention.stdout..st @@ -0,0 +1,31 @@ +create command +createForProject: projectRootPath t2f2t: t2f2tDir tonel: tonelPackageDir filetree: filetreePackageDir projectName: projectName componentName: componentName packageConvention: packageConvention stdout: stdout + | projectRoot t2f2tRoot | + projectRoot := projectRootPath asFileReference. + projectRoot exists + ifFalse: [ + ^ self + error: + 'The project directory ' , projectRootPath printString , ' does not exist.' + to: stdout ]. + t2f2tRoot := projectRoot. + + (projectRoot / tonelPackageDir) ensureCreateDirectory. + self + _createProject: projectName + packageConvention: packageConvention + root: t2f2tRoot + t2f2tDir: t2f2tDir + packageDir: tonelPackageDir + componentName: componentName + format: 'tonel'. + + (projectRoot / filetreePackageDir) ensureCreateDirectory. + self + _createProject: projectName + packageConvention: packageConvention + root: t2f2tRoot + t2f2tDir: t2f2tDir + packageDir: filetreePackageDir + componentName: componentName + format: 'filetree' \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.stdout..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.stdout..st new file mode 100644 index 0000000..a3fd18a --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/createForProject.t2f2t.tonel.filetree.stdout..st @@ -0,0 +1,11 @@ +create command +createForProject: projectRootPath t2f2t: t2f2tDir tonel: tonelPackageDir filetree: filePackageDir stdout: stdout + ^ self + createForProject: projectRootPath + t2f2t: t2f2tDir + tonel: tonelPackageDir + filetree: filePackageDir + projectName: 't2f2tMeta' + componentName: 'Core' + packageConvention: 'Monticello' + stdout: stdout \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug..st new file mode 100644 index 0000000..6e63ffe --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug..st @@ -0,0 +1,3 @@ +accessing +debug: object + debug := object \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug.st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug.st new file mode 100644 index 0000000..98394f3 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/debug.st @@ -0,0 +1,3 @@ +accessing +debug + ^ debug ifNil: [ false ] \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/error.to..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/error.to..st new file mode 100644 index 0000000..40f0f98 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/error.to..st @@ -0,0 +1,5 @@ +error handling +error: errorMessage to: stdout + self debug + ifTrue: [ ^ super error: errorMessage ]. + self _message: errorMessage to: stdout \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/processCommandLine..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/processCommandLine..st new file mode 100644 index 0000000..2058975 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/processCommandLine..st @@ -0,0 +1,63 @@ +command-line support +processCommandLine: stdout + | args scriptArgStart command commandArgs argIndex argsSize | + args := System commandLineArguments. + scriptArgStart := args indexOf: '--'. + commandArgs := {}. + command := nil. + scriptArgStart = 0 + ifTrue: [ + ^ self + error: + 'topaz solo launched without '' -- '', so it is not possible to process command line arguments' + to: stdout ]. + + argIndex := scriptArgStart + 1. "arg after initial --" + argsSize := args size. + [ argIndex <= argsSize ] + whileTrue: [ + | arg | + arg := args at: argIndex. + argIndex := argIndex + 1. + arg = '--help' | (arg = '-h') + ifTrue: [ ^ self usageMessage: stdout ]. + command + ifNil: [ + (#('create' 'filetree' 'tonel' '--debug') includes: arg) + ifFalse: [ + ^ self + error: + 'UNKNOWN command ' , arg printString + , '. Command should be one of [create | filetree | tonel ]' + to: stdout ]. + arg = '--debug' + ifTrue: [ self debug: true ] + ifFalse: [ command := arg ] ] + ifNotNil: [ commandArgs add: arg ] ]. + command = 'create' + ifTrue: [ + commandArgs size ~= 4 + ifTrue: [ + ^ self + error: + 'expected 4 positional arguments for create command (project-root, t2f2t-data-dir, tonel-pkg-dir, and filetree-pkg-dir), got ' + , commandArgs size printString + to: stdout ]. + ^ self + createForProject: (commandArgs at: 1) + t2f2t: (commandArgs at: 2) + tonel: (commandArgs at: 3) + filetree: (commandArgs at: 4) + stdout: stdout ]. + commandArgs size ~= 1 + ifTrue: [ + ^ self + error: + 'expected 1 positional arguments for ' , command + , ' command (t2f2t-data-dir), got ' , commandArgs size printString + to: stdout ]. + + command = 'filetree' + ifTrue: [ ^ self convertToFiletreePackagesUsing: (commandArgs at: 1) stdout: stdout ]. + command = 'tonel' + ifTrue: [ ^ self convertToTonelPackagesUsing: (commandArgs at: 1) stdout: stdout ] \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/usageMessage..st b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/usageMessage..st new file mode 100644 index 0000000..22ad49d --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/instance/usageMessage..st @@ -0,0 +1,10 @@ +command-line support +usageMessage: stdout + | root read | + root := (Rowan projectNamed: self class _projectName) repositoryRoot. + read := ReadStreamPortable on: (root / self _manPagePath) contents. + [ read atEnd ] + whileFalse: [ + stdout + nextPutAll: read nextLine; + lf ] \ No newline at end of file diff --git a/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/properties.json b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/properties.json new file mode 100644 index 0000000..848ea50 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/T2F2TConversion.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "T2F2T-Conversion-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "debug" ], + "name" : "T2F2TConversion", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/filetree/T2F2T-Conversion-Core.package/properties.json b/filetree/T2F2T-Conversion-Core.package/properties.json new file mode 100644 index 0000000..a097c63 --- /dev/null +++ b/filetree/T2F2T-Conversion-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } \ No newline at end of file diff --git a/filetree/properties.st b/filetree/properties.st new file mode 100644 index 0000000..9d048ce --- /dev/null +++ b/filetree/properties.st @@ -0,0 +1,4 @@ +{ + #format : 'filetree', + #convention : 'RowanHybrid' +} diff --git a/rowan/filetree.ston b/rowan/filetree.ston index 0719935..2ed0235 100644 --- a/rowan/filetree.ston +++ b/rowan/filetree.ston @@ -2,7 +2,7 @@ RwProjectSpecificationV2 { #specName : 'filetree', #projectSpecPath : 'rowan', #componentsPath : 'rowan/components', - #packagesPath : 'tonel', + #packagesPath : 'filetree', #projectsPath : 'rowan/projects', #specsPath : 'rowan/specs', #packageFormat : 'filetree', diff --git a/tonel/T2F2T-Conversion-Core/T2F2TConversion.class.st b/tonel/T2F2T-Conversion-Core/T2F2TConversion.class.st index 615d69f..a74456b 100644 --- a/tonel/T2F2T-Conversion-Core/T2F2TConversion.class.st +++ b/tonel/T2F2T-Conversion-Core/T2F2TConversion.class.st @@ -2,6 +2,8 @@ Rowan-based scripts for converting package repositories from Tonel to Filetree and Filetree to Tonel format . See project readme (https://github.com/GsDevKit/T2F2T-Conversion#t2f2t-conversion) and shell script man page (https://github.com/GsDevKit/T2F2T-Conversion/blob/master/docs/man.txt) for additional details. + +test ""quoted strings"" in a comment " Class { #name : 'T2F2TConversion', @@ -30,6 +32,7 @@ T2F2TConversion >> _copyPackagesFrom: sourceProject to: targetProject [ readPackageNamesBlock: [ :packageName | "read all of the packages" true ]. + targetProject packagesRoot ensureCreateDirectory. targetProject packages: sourceProject packages. targetProject exportPackages ]