diff --git a/repository/Grafoscopio/ExternalApp.class.st b/repository/Grafoscopio/ExternalApp.class.st index 6c376af..0586574 100644 --- a/repository/Grafoscopio/ExternalApp.class.st +++ b/repository/Grafoscopio/ExternalApp.class.st @@ -17,6 +17,14 @@ Class { #category : #'Grafoscopio-Model' } +{ #category : #installation } +ExternalApp class >> compareHashFor: aFileName with: aSHAString [ + + aSHAString = (SHA1 new hashMessage: aFileName asFileReference binaryReadStream contents) hex + ifFalse: [ ^ false ] + ifTrue: [ ^ true ]. +] + { #category : #configuration } ExternalApp class >> configureFossil [ "Stablish where is located pandoc according to the operative system and/or the input of the user" @@ -41,14 +49,6 @@ ExternalApp class >> configurePandoc [ ] -{ #category : #installation } -ExternalApp class >> file: aFileName hasHash: aSHAString [ - - aSHAString = (SHA1 new hashMessage: aFileName asFileReference binaryReadStream contents) hex - ifFalse: [ ^ false ] - ifTrue: [ ^ true ]. -] - { #category : #installation } ExternalApp class >> installSQLite32Bits [ "I dowload the SQLite binary for the hosting platform, uncompress it and made it available as with the name diff --git a/repository/Grafoscopio/FossilRepo.class.st b/repository/Grafoscopio/FossilRepo.class.st new file mode 100644 index 0000000..9369fdd --- /dev/null +++ b/repository/Grafoscopio/FossilRepo.class.st @@ -0,0 +1,42 @@ +" +I model a fossil repository. For details about fossil see: + +http://fossil-scm.org/ +" +Class { + #name : #FossilRepo, + #superclass : #Object, + #instVars : [ + 'url' + ], + #category : #'Grafoscopio-Model' +} + +{ #category : #'as yet unclassified' } +FossilRepo >> jsonDataFor: aFileName [ + ^ NeoJSONReader fromString: (self jsonStringFor: aFileName) +] + +{ #category : #'as yet unclassified' } +FossilRepo >> jsonStringFor: aFileName [ + | queryForJSONData | + queryForJSONData := self url addPathSegments: #('json' 'finfo'). + queryForJSONData queryAt: 'name' put: aFileName. + ^ (ZnEasy get: queryForJSONData) contents. +] + +{ #category : #'as yet unclassified' } +FossilRepo >> lastHashNumberFor: aFileName [ + (self jsonDataFor: aFileName) at: 'payload' ifAbsent: [ self inform: 'Key not found, verify the file name you are looking in this repository'. ^ self ]. + ^ (((self jsonDataFor: aFileName) at: 'payload') at: 'checkins') first at: 'uuid' +] + +{ #category : #accessing } +FossilRepo >> url [ + ^ url +] + +{ #category : #accessing } +FossilRepo >> url: aString [ + url := aString asUrl +]