ExoRepo/src/ExoRepo/ExoRepo.class.st

75 lines
1.7 KiB
Smalltalk
Raw Normal View History

2021-07-24 14:35:29 +00:00
Class {
#name : #ExoRepo,
#superclass : #Object,
#instVars : [
2021-07-25 19:34:18 +00:00
'repository'
2021-07-24 14:35:29 +00:00
],
#category : #ExoRepo
}
{ #category : #accessing }
ExoRepo >> load [
2021-07-25 19:34:18 +00:00
"I load the configuration of this package using a external Gitea repository."
2021-07-24 14:35:29 +00:00
"While more Git independient providers are implemented in Monticello, I will
2021-07-25 19:34:18 +00:00
use Iceberg to download the repository and load it from a local directory"
| localRepo repoName count |
2021-07-24 14:35:29 +00:00
repoName := self repositoryName.
self local exists
ifFalse: [ (IceRepositoryCreator new
location: self local;
remote: (IceGitRemote url: self repository greaseString , '.git');
createRepository) register ].
localRepo := 'gitlocal://' , self local fullName.
count := 1.
[ true ]
whileTrue: [ [ ^ Metacello new
repository: localRepo;
baseline: repoName;
onConflictUseLoaded;
onWarningLog;
load ]
on: IceGenericError
do: [ :ex |
Notification
signal: (String with: Character cr) , ex description , (String with: Character cr)
, 'RETRYING ' , count greaseString.
(Delay forSeconds: 2) wait.
ex retry ].
count := count + 1 ]
2021-07-24 14:35:29 +00:00
]
{ #category : #accessing }
ExoRepo >> local [
^ FileLocator localDirectory / 'iceberg' / (self provider) / self repositoryName
]
2021-07-24 14:35:29 +00:00
{ #category : #accessing }
ExoRepo >> provider [
2021-07-25 19:34:18 +00:00
self repository ifNil: [ ^ nil ].
^ self repository segments first
2021-07-24 14:35:29 +00:00
]
{ #category : #accessing }
2021-07-25 19:34:18 +00:00
ExoRepo >> repository [
^ repository.
2021-07-24 14:35:29 +00:00
]
{ #category : #accessing }
2021-07-25 19:34:18 +00:00
ExoRepo >> repository: aString [
repository := aString asZnUrl
2021-07-24 14:35:29 +00:00
]
{ #category : #accessing }
2021-07-25 19:34:18 +00:00
ExoRepo >> repositoryName [
self repository ifNil: [ ^ self ].
^ self repository segments second
2021-07-24 14:35:29 +00:00
]
2022-07-26 01:42:17 +00:00
{ #category : #accessing }
ExoRepo >> wiki [
^ (self local / 'Wiki') ensureCreateDirectory.
]