From 06f59c71bed31a828cf9763b32e3c4fcca93f056 Mon Sep 17 00:00:00 2001 From: Offray Date: Sun, 14 Apr 2024 14:48:27 -0500 Subject: [PATCH] Starting Gitea repositories baseline loading implementation. --- src/ExoRepo/Gofer.extension.st | 14 ++++++++ src/ExoRepo/MCGiteabRepository.class.st | 32 +++++++++++++++++++ src/ExoRepo/MCGiteabRepository.extension.st | 6 ++++ .../MetacelloCommonMCSpecLoader.extension.st | 15 +++++++++ src/ExoRepo/MetacelloPlatform.extension.st | 8 +++++ 5 files changed, 75 insertions(+) create mode 100644 src/ExoRepo/Gofer.extension.st create mode 100644 src/ExoRepo/MCGiteabRepository.extension.st create mode 100644 src/ExoRepo/MetacelloCommonMCSpecLoader.extension.st diff --git a/src/ExoRepo/Gofer.extension.st b/src/ExoRepo/Gofer.extension.st new file mode 100644 index 0000000..634eecd --- /dev/null +++ b/src/ExoRepo/Gofer.extension.st @@ -0,0 +1,14 @@ +Extension { #name : #Gofer } + +{ #category : #'*ExoRepo' } +Gofer >> repositories [ + "Answer the configured monticello repositories." + + | result | + result := OrderedCollection withAll: repositories. + packageCacheRepository ifNotNil: [ result addFirst: packageCacheRepository ]. + ^ result asArray collect: [:each | + (each class = MCHttpRepository and: [each location beginsWith: 'gitea']) + ifTrue: [ MCRepository fromUrl: each location ] ifFalse: [ each ] + ]. +] diff --git a/src/ExoRepo/MCGiteabRepository.class.st b/src/ExoRepo/MCGiteabRepository.class.st index 00bb316..72e4b20 100644 --- a/src/ExoRepo/MCGiteabRepository.class.st +++ b/src/ExoRepo/MCGiteabRepository.class.st @@ -14,6 +14,21 @@ MCGiteabRepository class >> basicFromUrl: aZnUrl [ ^ self location: aZnUrl asString ] +{ #category : #'*ExoRepo' } +MCGiteabRepository class >> createRepositoryFromSpec: aMetacelloRepositorySpec on: anIceMetacelloPharoPlatform [ + ^ anIceMetacelloPharoPlatform createGiteaRepository: aMetacelloRepositorySpec +] + +{ #category : #accessing } +MCGiteabRepository class >> isAvailableFor: type [ + ^ type = 'gitea' +] + +{ #category : #private } +MCGiteabRepository class >> projectZipUrlFor: projectPath versionString: versionString [ + ^ 'https://' , projectPath , '/archive/' , versionString , '.zip' +] + { #category : #accessing } MCGiteabRepository class >> urlSchemes [ ^ #(gitea) @@ -39,6 +54,23 @@ MCGiteabRepository >> branches [ ^ response ] +{ #category : #accessing } +MCGiteabRepository >> calculateRepositoryDirectory [ + | directory | + + directory := self class + projectDirectoryFrom: self projectPath, '/', self repoPath + version: self projectVersion. + self repoPath isEmpty ifFalse: [ + directory := directory parent ]. + + ^ directory +] + +{ #category : #accessing } +MCGiteabRepository >> location: aString [ +] + { #category : #accessing } MCGiteabRepository >> projectVersion [ (projectVersion == nil or: [ projectVersion isEmpty ]) diff --git a/src/ExoRepo/MCGiteabRepository.extension.st b/src/ExoRepo/MCGiteabRepository.extension.st new file mode 100644 index 0000000..ea1e9b6 --- /dev/null +++ b/src/ExoRepo/MCGiteabRepository.extension.st @@ -0,0 +1,6 @@ +Extension { #name : #MCGiteabRepository } + +{ #category : #'*ExoRepo' } +MCGiteabRepository class >> createRepositoryFromSpec: aMetacelloRepositorySpec on: anIceMetacelloPharoPlatform [ + ^ anIceMetacelloPharoPlatform createGiteaRepository: aMetacelloRepositorySpec +] diff --git a/src/ExoRepo/MetacelloCommonMCSpecLoader.extension.st b/src/ExoRepo/MetacelloCommonMCSpecLoader.extension.st new file mode 100644 index 0000000..ed7302b --- /dev/null +++ b/src/ExoRepo/MetacelloCommonMCSpecLoader.extension.st @@ -0,0 +1,15 @@ +Extension { #name : #MetacelloCommonMCSpecLoader } + +{ #category : #'*ExoRepo' } +MetacelloCommonMCSpecLoader >> linearLoadPackageSpecs: packageSpecs repositories: repositories [ + + | gofer sanitizedRepos | + gofer := MetacelloGofer new. + sanitizedRepos := OrderedCollection withAll: repositories. + sanitizedRepos := sanitizedRepos collect: [:each | + (each class = MCHttpRepository and: [each location beginsWith: 'gitea']) + ifTrue: [ MCRepository fromUrl: each location ] ifFalse: [ each ] + ]. + sanitizedRepos do: [:repo | gofer repository: repo ]. + packageSpecs do: [:pkg | pkg loadUsing: self gofer: gofer ]. +] diff --git a/src/ExoRepo/MetacelloPlatform.extension.st b/src/ExoRepo/MetacelloPlatform.extension.st index e3c18fe..008ba3f 100644 --- a/src/ExoRepo/MetacelloPlatform.extension.st +++ b/src/ExoRepo/MetacelloPlatform.extension.st @@ -1,5 +1,13 @@ Extension { #name : #MetacelloPlatform } +{ #category : #'*ExoRepo' } +MetacelloPlatform >> createGiteaRepository: aRepositorySpec [ + | cl | + + cl := MCGiteabRepository. + ^ cl location: aRepositorySpec description +] + { #category : #'*ExoRepo' } MetacelloPlatform >> extractTypeFromDescription: description [ description == nil