diff --git a/repository/Grafoscopio/Documentation.class.st b/repository/Grafoscopio/Documentation.class.st deleted file mode 100644 index 52d1a7b..0000000 --- a/repository/Grafoscopio/Documentation.class.st +++ /dev/null @@ -1,48 +0,0 @@ -" -I model a documentation object for Grafoscopio. -Documents are stored in a fossil repository and have -relative paths to it. -" -Class { - #name : #Documentation, - #superclass : #Object, - #instVars : [ - 'repository', - 'documents' - ], - #category : #'Grafoscopio-Model' -} - -{ #category : #queries } -Documentation class >> grafoscopioDocumentation [ - "I model the important documents that belong to the Grafoscopio documentation. - When more documents become more mature and usable, I will include them." - - | gfcDocumentation | - gfcDocumentation := self new. - gfcDocumentation repository: (FossilRepo new url: 'http://mutabit.com/repos.fossil/grafoscopio'). - gfcDocumentation documents: (Dictionary new - at: 'Spanish Tutorial' put: 'Docs/Es/Tutoriales/tutorial.ston'; yourself). - ^ gfcDocumentation - -] - -{ #category : #accessing } -Documentation >> documents [ - ^ documents -] - -{ #category : #accessing } -Documentation >> documents: anObject [ - documents := anObject -] - -{ #category : #accessing } -Documentation >> repository [ - ^ repository -] - -{ #category : #accessing } -Documentation >> repository: anObject [ - repository := anObject -] diff --git a/repository/Grafoscopio/FossilRepo.class.st b/repository/Grafoscopio/FossilRepo.class.st index 91753d6..bed07d4 100644 --- a/repository/Grafoscopio/FossilRepo.class.st +++ b/repository/Grafoscopio/FossilRepo.class.st @@ -13,14 +13,14 @@ Class { } { #category : #querying } -FossilRepo >> checkinsFor: aFullFileName [ +FossilRepo >> checkinsFor: relativeFilePath [ "I get all histotical checkins information for a full file name, wich includes relative path in the repository (i.e: 'Doc/Es/Tutoriales/tutorial.ston' or 'index.html's)" - (self jsonDataFor: aFullFileName) at: 'payload' ifAbsent: [ + (self jsonDataFor: relativeFilePath) = self ifTrue: [ self inform: 'WARNING! Key not found, verify the file name you are looking in this repository'. ^ self ]. - ^ (((self jsonDataFor: aFullFileName) at: 'payload') at: 'checkins') + ^ (((self jsonDataFor: relativeFilePath) at: 'payload') at: 'checkins') ] { #category : #querying } diff --git a/repository/Grafoscopio/GrafoscopioDocumentation.class.st b/repository/Grafoscopio/GrafoscopioDocumentation.class.st new file mode 100644 index 0000000..2c6ccb8 --- /dev/null +++ b/repository/Grafoscopio/GrafoscopioDocumentation.class.st @@ -0,0 +1,79 @@ +" +I model a documentation object for Grafoscopio. +Documents are stored in a fossil repository and have +relative paths to it. +" +Class { + #name : #GrafoscopioDocumentation, + #superclass : #Object, + #instVars : [ + 'repository', + 'documents', + 'localPlace' + ], + #category : #'Grafoscopio-Model' +} + +{ #category : #queries } +GrafoscopioDocumentation class >> current [ + "I model the important documents that belong to the Grafoscopio documentation. + When more documents become more mature and usable, I will include them." + + | gfcDocumentation | + gfcDocumentation := self new. + gfcDocumentation repository: (FossilRepo new url: 'http://mutabit.com/repos.fossil/grafoscopio'). + gfcDocumentation documents add: 'Docs/Es/Tutoriales/tutorial.ston'. + gfcDocumentation localPlace. + ^ gfcDocumentation + +] + +{ #category : #updating } +GrafoscopioDocumentation class >> isUpdated [ + "I compare the cryptografic signatures of the local copy of aDocumentType and the remote one to see if the're the same, + in which case I return true or false in any other cases." + ^ ((self current documents collect: [ :doc | (self isUpdatedFor: doc) ]) includes: false) not +] + +{ #category : #updating } +GrafoscopioDocumentation class >> isUpdatedFor: relativeFilePath [ + "I compare if the local and remote copies of a relativeFilePath are updated for the current documentation and return + true if they are and false in any other case" + | localFile | + localFile := self current localPlace / relativeFilePath. + localFile exists + ifFalse: [ ^ false ] + ifTrue: [ ^ ExternalApp compareHashFor: localFile with: (self current repository lastHashNumberFor: relativeFilePath) ] +] + +{ #category : #accessing } +GrafoscopioDocumentation >> documents [ + ^ documents ifNil: [ documents := OrderedCollection new ] +] + +{ #category : #accessing } +GrafoscopioDocumentation >> documents: anObject [ + documents := anObject +] + +{ #category : #accessing } +GrafoscopioDocumentation >> localPlace [ + ^ localPlace ifNil: [ + localPlace := FileLocator documents asFileReference / 'Grafoscopio'. + self localPlace exists ifFalse: [ self localPlace ensureCreateDirectory ] ]. +] + +{ #category : #accessing } +GrafoscopioDocumentation >> localPlace: anObject [ + localPlace := anObject +] + +{ #category : #accessing } +GrafoscopioDocumentation >> repository [ + ^ repository +] + +{ #category : #accessing } +GrafoscopioDocumentation >> repository: anObject [ + repository := anObject +] diff --git a/repository/Grafoscopio/GrafoscopioGUI.class.st b/repository/Grafoscopio/GrafoscopioGUI.class.st index 308acc2..0b0e6d7 100644 --- a/repository/Grafoscopio/GrafoscopioGUI.class.st +++ b/repository/Grafoscopio/GrafoscopioGUI.class.st @@ -85,38 +85,6 @@ GrafoscopioGUI class >> docDataTutorial [ ] -{ #category : #updating } -GrafoscopioGUI class >> docDownloadFor: aDocumentType [ - "I download the interactive documentation in STON format, according to the document - type which can be: 'tutorial' or 'manual'. - If a the documentation is already present in the system I made a temporal backup and - download a new copy" - - | docInfo rootFolder localDoc temporalBackup remoteDoc | - - (aDocumentType = 'tutorial') ifTrue: [ docInfo := self docDataTutorial ]. - (aDocumentType = 'manual') ifTrue: [ docInfo := self docDataManual ]. - rootFolder := (FileLocator documents asFileReference / 'Grafoscopio'). - rootFolder exists ifFalse: [ - rootFolder ensureCreateDirectory. - OSProcess command: ('exec mkdir -p ', rootFolder fullName, '/', (docInfo at: 'relativePath')) - ]. - localDoc := rootFolder fullName, '/', (docInfo at: 'relativePath'), (docInfo at: 'filename'). - temporalBackup := rootFolder fullName, '/', (docInfo at: 'relativePath'), aDocumentType, '.temp.ston'. - remoteDoc := - (self docDataTutorial at: 'remoteRepo'), 'doc/tip/', - (self docDataTutorial at: 'relativePath'), (self docDataTutorial at: 'filename'). - localDoc asFileReference exists - ifTrue: [ - temporalBackup asFileReference exists ifTrue: [ temporalBackup asFileReference delete]. - localDoc asFileReference renameTo: aDocumentType, '.temp.ston' - ]. - self - downloadingFrom: remoteDoc - withMessage: 'Actualizando el ', aDocumentType,'...' - into: (rootFolder fullName, '/', (docInfo at: 'relativePath')). -] - { #category : #accessing } GrafoscopioGUI class >> dockingBar [ ^ dockingBar @@ -335,13 +303,13 @@ GrafoscopioGUI class >> initialize [ { #category : #updating } GrafoscopioGUI class >> isDocUpdatedFor: aDocumentType [ - "I compare the cryptografic signatures of the local copy of aDocumentType and the remote one to see if the're the same, - in which case I return True or False in any other cases. - aDocumentType is a string that can be 'tutorial' or 'manual' according to the type of document we're querying for. - Now documentation is mainly on Spanish. When support for multiple languages be enabled this method needs revision" - + "I compare the cryptografic signatures of the local copy of aDocumentType and the remote one to see if the're + the same, in which case I return True or False in any other cases. + aDocumentType is a string that can be 'tutorial' or 'manual' according to the type of document + we're querying for. + Now documentation is mainly on Spanish. When support for multiple languages be enabled this method needs + revision" | folderLastContents lastRemoteTutorial localTutorial docInfo | - (aDocumentType = 'tutorial') ifTrue: [ docInfo := self docDataTutorial ]. (aDocumentType = 'manual') ifTrue: [ docInfo := self docDataManual ]. localTutorial := FileLocator documents / 'Grafoscopio', (docInfo at: 'relativePath'), (docInfo at: 'filename'). @@ -356,7 +324,6 @@ GrafoscopioGUI class >> isDocUpdatedFor: aDocumentType [ lastRemoteTutorial := ((folderLastContents at: 'payload') at: 'entries') detect: [:entry | (entry at: 'name') = (docInfo at: 'filename') ]. ^ (lastRemoteTutorial at: 'uuid') = (SHA1 new hashMessage: (localTutorial asFileReference contents)) hex] - ] { #category : #'graphical interface' } @@ -578,24 +545,6 @@ GrafoscopioGUI class >> updateDatavizUI [ ifFalse: [self inform: 'Actualización del paquete dataviz no realizada']] ] -{ #category : #updating } -GrafoscopioGUI class >> updateDocumentation [ - "Updates documentation (manual, tutorials) from official repository" - - | docs | - - docs := #('tutorial' 'manual'). - docs do: [ :eachDoc | - (self isDocUpdatedFor: eachDoc) - ifFalse: [ self docDownloadFor: eachDoc] - ifTrue: [ - self inform: - 'NADA QUE ACTUALIZAR!', String cr, - 'El ', eachDoc,' ya se encuentra en su versión más reciente.' - ] - ] -] - { #category : #updating } GrafoscopioGUI class >> updateDocumentationUI [ "Updates documentation (manual, tutorials) from official repository" @@ -605,7 +554,7 @@ GrafoscopioGUI class >> updateDocumentationUI [ update := (UIManager default confirm: '¿Desea actualizar la documentación?' label: 'Actualizar documentación'). - update ifTrue: [self updateDocumentation] + update ifTrue: [GrafoscopioDocumentation update] ] { #category : #updating } @@ -732,8 +681,8 @@ GrafoscopioGUI class >> updateSystem [ ifTrue: [ self updateGrafoscopio; - updateDocumentation; updateDataviz. + GrafoscopioDocumentation update. ExternalApp installSQLite32Bits. self inform: 'Actualización de todo el sistema terminada.'] ] diff --git a/repository/Grafoscopio/ManifestGrafoscopio.class.st b/repository/Grafoscopio/ManifestGrafoscopio.class.st index 33df2f8..dc6f722 100644 --- a/repository/Grafoscopio/ManifestGrafoscopio.class.st +++ b/repository/Grafoscopio/ManifestGrafoscopio.class.st @@ -9,7 +9,7 @@ Class { { #category : #'code-critics' } ManifestGrafoscopio class >> ruleRBClassNameInSelectorRuleV1FalsePositive [ - ^ #(#(#(#RGMethodDefinition #(#'Documentation class' #grafoscopioDocumentation #true)) #'2016-10-07T19:39:23.013722-05:00') ) + ^ #(#(#(#RGMethodDefinition #(#'Documentation class' #current #true)) #'2016-10-07T19:39:23.013722-05:00') ) ] { #category : #'code-critics' }