From 293b845fec09d862be039c8d7e700e0d01233d51 Mon Sep 17 00:00:00 2001 From: Offray Luna Date: Sat, 24 Jul 2021 09:35:29 -0500 Subject: [PATCH] Starting sync. --- .project | 3 ++ src/.properties | 3 ++ src/ExoRepo/ExoRepo.class.st | 58 ++++++++++++++++++++++++++++++++++++ src/ExoRepo/package.st | 1 + 4 files changed, 65 insertions(+) create mode 100644 .project create mode 100644 src/.properties create mode 100644 src/ExoRepo/ExoRepo.class.st create mode 100644 src/ExoRepo/package.st diff --git a/.project b/.project new file mode 100644 index 0000000..81083cc --- /dev/null +++ b/.project @@ -0,0 +1,3 @@ +{ + 'srcDirectory' : 'src' +} \ No newline at end of file diff --git a/src/.properties b/src/.properties new file mode 100644 index 0000000..ad0471d --- /dev/null +++ b/src/.properties @@ -0,0 +1,3 @@ +{ + #format : #tonel +} \ No newline at end of file diff --git a/src/ExoRepo/ExoRepo.class.st b/src/ExoRepo/ExoRepo.class.st new file mode 100644 index 0000000..4ee7ce5 --- /dev/null +++ b/src/ExoRepo/ExoRepo.class.st @@ -0,0 +1,58 @@ +Class { + #name : #ExoRepo, + #superclass : #Object, + #instVars : [ + 'url' + ], + #category : #ExoRepo +} + +{ #category : #accessing } +ExoRepo >> load [ + "I load the configuration of this package using a external Gitea repository." + "While more Git independient providers are implemented in Monticello, I will + use Iceberg to download the repository and load it from a local directory" + | location localRepo repoName packageName | + + "Sometimes repoName and packageName are different, following Pharo's conventions. + For example the repoName can be MyPackage, while packageName can be My-Package" + repoName := self repositoryName. + + "Local and remote repo definition" + location := FileLocator localDirectory / 'iceberg' / (self provider) / repoName. + location exists ifFalse: [ + (IceRepositoryCreator new + location: location; + remote: (IceGitRemote url: self url asString, '.git'); + createRepository) + register + ]. + "Package loading" + localRepo := 'gitlocal://', location fullName. + Metacello new + repository: localRepo; + baseline: repoName; + load. +] + +{ #category : #accessing } +ExoRepo >> provider [ + self url ifNil: [ ^ nil ]. + ^ self url segments first +] + +{ #category : #accessing } +ExoRepo >> repositoryName [ + self url ifNil: [ ^ self ]. + ^ self url segments last +] + +{ #category : #accessing } +ExoRepo >> url [ + ^ url. +] + +{ #category : #accessing } +ExoRepo >> url: aString [ + url := aString asZnUrl +] diff --git a/src/ExoRepo/package.st b/src/ExoRepo/package.st new file mode 100644 index 0000000..6c76baf --- /dev/null +++ b/src/ExoRepo/package.st @@ -0,0 +1 @@ +Package { #name : #ExoRepo }