Refactoring for documentation support.
This commit is contained in:
parent
8ed0f0a4eb
commit
81bba96dae
@ -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
|
|
||||||
]
|
|
@ -13,14 +13,14 @@ Class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{ #category : #querying }
|
{ #category : #querying }
|
||||||
FossilRepo >> checkinsFor: aFullFileName [
|
FossilRepo >> checkinsFor: relativeFilePath [
|
||||||
"I get all histotical checkins information for a full file name, wich includes relative path
|
"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)"
|
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:
|
self inform:
|
||||||
'WARNING! Key not found, verify the file name you are looking in this repository'.
|
'WARNING! Key not found, verify the file name you are looking in this repository'.
|
||||||
^ self ].
|
^ self ].
|
||||||
^ (((self jsonDataFor: aFullFileName) at: 'payload') at: 'checkins')
|
^ (((self jsonDataFor: relativeFilePath) at: 'payload') at: 'checkins')
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #querying }
|
{ #category : #querying }
|
||||||
|
79
repository/Grafoscopio/GrafoscopioDocumentation.class.st
Normal file
79
repository/Grafoscopio/GrafoscopioDocumentation.class.st
Normal file
@ -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
|
||||||
|
]
|
@ -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 }
|
{ #category : #accessing }
|
||||||
GrafoscopioGUI class >> dockingBar [
|
GrafoscopioGUI class >> dockingBar [
|
||||||
^ dockingBar
|
^ dockingBar
|
||||||
@ -335,13 +303,13 @@ GrafoscopioGUI class >> initialize [
|
|||||||
|
|
||||||
{ #category : #updating }
|
{ #category : #updating }
|
||||||
GrafoscopioGUI class >> isDocUpdatedFor: aDocumentType [
|
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,
|
"I compare the cryptografic signatures of the local copy of aDocumentType and the remote one to see if the're
|
||||||
in which case I return True or False in any other cases.
|
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.
|
aDocumentType is a string that can be 'tutorial' or 'manual' according to the type of document
|
||||||
Now documentation is mainly on Spanish. When support for multiple languages be enabled this method needs revision"
|
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 |
|
| folderLastContents lastRemoteTutorial localTutorial docInfo |
|
||||||
|
|
||||||
(aDocumentType = 'tutorial') ifTrue: [ docInfo := self docDataTutorial ].
|
(aDocumentType = 'tutorial') ifTrue: [ docInfo := self docDataTutorial ].
|
||||||
(aDocumentType = 'manual') ifTrue: [ docInfo := self docDataManual ].
|
(aDocumentType = 'manual') ifTrue: [ docInfo := self docDataManual ].
|
||||||
localTutorial := FileLocator documents / 'Grafoscopio', (docInfo at: 'relativePath'), (docInfo at: 'filename').
|
localTutorial := FileLocator documents / 'Grafoscopio', (docInfo at: 'relativePath'), (docInfo at: 'filename').
|
||||||
@ -356,7 +324,6 @@ GrafoscopioGUI class >> isDocUpdatedFor: aDocumentType [
|
|||||||
lastRemoteTutorial := ((folderLastContents at: 'payload') at: 'entries')
|
lastRemoteTutorial := ((folderLastContents at: 'payload') at: 'entries')
|
||||||
detect: [:entry | (entry at: 'name') = (docInfo at: 'filename') ].
|
detect: [:entry | (entry at: 'name') = (docInfo at: 'filename') ].
|
||||||
^ (lastRemoteTutorial at: 'uuid') = (SHA1 new hashMessage: (localTutorial asFileReference contents)) hex]
|
^ (lastRemoteTutorial at: 'uuid') = (SHA1 new hashMessage: (localTutorial asFileReference contents)) hex]
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #'graphical interface' }
|
{ #category : #'graphical interface' }
|
||||||
@ -578,24 +545,6 @@ GrafoscopioGUI class >> updateDatavizUI [
|
|||||||
ifFalse: [self inform: 'Actualización del paquete dataviz no realizada']]
|
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 }
|
{ #category : #updating }
|
||||||
GrafoscopioGUI class >> updateDocumentationUI [
|
GrafoscopioGUI class >> updateDocumentationUI [
|
||||||
"Updates documentation (manual, tutorials) from official repository"
|
"Updates documentation (manual, tutorials) from official repository"
|
||||||
@ -605,7 +554,7 @@ GrafoscopioGUI class >> updateDocumentationUI [
|
|||||||
update := (UIManager default
|
update := (UIManager default
|
||||||
confirm: '¿Desea actualizar la documentación?'
|
confirm: '¿Desea actualizar la documentación?'
|
||||||
label: 'Actualizar documentación').
|
label: 'Actualizar documentación').
|
||||||
update ifTrue: [self updateDocumentation]
|
update ifTrue: [GrafoscopioDocumentation update]
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #updating }
|
{ #category : #updating }
|
||||||
@ -732,8 +681,8 @@ GrafoscopioGUI class >> updateSystem [
|
|||||||
ifTrue: [
|
ifTrue: [
|
||||||
self
|
self
|
||||||
updateGrafoscopio;
|
updateGrafoscopio;
|
||||||
updateDocumentation;
|
|
||||||
updateDataviz.
|
updateDataviz.
|
||||||
|
GrafoscopioDocumentation update.
|
||||||
ExternalApp installSQLite32Bits.
|
ExternalApp installSQLite32Bits.
|
||||||
self inform: 'Actualización de todo el sistema terminada.']
|
self inform: 'Actualización de todo el sistema terminada.']
|
||||||
]
|
]
|
||||||
|
@ -9,7 +9,7 @@ Class {
|
|||||||
|
|
||||||
{ #category : #'code-critics' }
|
{ #category : #'code-critics' }
|
||||||
ManifestGrafoscopio class >> ruleRBClassNameInSelectorRuleV1FalsePositive [
|
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' }
|
{ #category : #'code-critics' }
|
||||||
|
Loading…
Reference in New Issue
Block a user