Nim's package manager, Nimble, moved from MiniDocs to ExoRepo.
This commit is contained in:
parent
089eb8c2eb
commit
ef982eb6a1
@ -1,89 +0,0 @@
|
|||||||
"
|
|
||||||
I'm a helper class modelling the common uses of the Nim's [Nimble package manager](https://github.com/nim-lang/nimble).
|
|
||||||
This was evolved in the context of the [Grafoscopio](mutabit.com/grafoscopio/en.html) community exploration and prototyping of interactive documentation.
|
|
||||||
"
|
|
||||||
Class {
|
|
||||||
#name : #Nimble,
|
|
||||||
#superclass : #Object,
|
|
||||||
#category : #'MiniDocs-External'
|
|
||||||
}
|
|
||||||
|
|
||||||
{ #category : #accessing }
|
|
||||||
Nimble class >> detect: packageName [
|
|
||||||
^ self installed
|
|
||||||
detect: [ :dependency | dependency beginsWith: packageName ]
|
|
||||||
ifFound: [ ^ true ]
|
|
||||||
ifNone: [ ^ false ]
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #accessing }
|
|
||||||
Nimble class >> install: packageName [
|
|
||||||
(self detect: packageName) ifTrue: [ ^ self ].
|
|
||||||
self installPackagesList.
|
|
||||||
Smalltalk os isWindows
|
|
||||||
ifTrue: [ ^ LibC runCommand: 'nimble install ', packageName ].
|
|
||||||
OSSUnixSubprocess new
|
|
||||||
command: 'nimble';
|
|
||||||
arguments: {'install'.
|
|
||||||
packageName};
|
|
||||||
redirectStdout;
|
|
||||||
redirectStderr;
|
|
||||||
runAndWaitOnExitDo: [ :process :outString :errString |
|
|
||||||
process isSuccess
|
|
||||||
ifTrue: [ Transcript show: 'Command exited correctly with output: ', outString. ]
|
|
||||||
ifFalse: [
|
|
||||||
^ 'Command exit with error status: ', process exitStatusInterpreter printString, String cr,
|
|
||||||
'Stderr contents: ', errString.
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #accessing }
|
|
||||||
Nimble class >> installPackagesList [
|
|
||||||
|
|
||||||
(FileLocator home / '.nimble' / 'packages_official.json') exists
|
|
||||||
ifTrue: [ ^ self ].
|
|
||||||
(Smalltalk os isUnix or: [ Smalltalk os isMacOS ])
|
|
||||||
ifTrue: [
|
|
||||||
OSSUnixSubprocess new
|
|
||||||
command: 'nimble';
|
|
||||||
arguments: #('refresh');
|
|
||||||
redirectStdout;
|
|
||||||
runAndWaitOnExitDo: [ :process :outString | ^ outString ].
|
|
||||||
].
|
|
||||||
Smalltalk os isWindows
|
|
||||||
ifTrue: [ ^ LibC resultOfCommand: 'nimble refresh' ]
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #accessing }
|
|
||||||
Nimble class >> installed [
|
|
||||||
|
|
||||||
Smalltalk os isWindows
|
|
||||||
ifTrue: [ | process |
|
|
||||||
process := GtExternalProcessBuilder new
|
|
||||||
command: 'nimble.exe';
|
|
||||||
args: #('list' '--installed');
|
|
||||||
output.
|
|
||||||
^ process stdout lines ].
|
|
||||||
|
|
||||||
OSSUnixSubprocess new
|
|
||||||
command: 'nimble';
|
|
||||||
arguments: #('list' '--installed');
|
|
||||||
redirectStdout;
|
|
||||||
redirectStderr;
|
|
||||||
runAndWaitOnExitDo: [ :process :outString :errString |
|
|
||||||
process isSuccess
|
|
||||||
ifTrue: [ ^ outString lines ];
|
|
||||||
ifFalse: [ ^ nil ]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #accessing }
|
|
||||||
Nimble class >> version [
|
|
||||||
|
|
||||||
OSSUnixSubprocess new
|
|
||||||
command: 'nimble';
|
|
||||||
arguments: #('--version');
|
|
||||||
redirectStdout;
|
|
||||||
runAndWaitOnExitDo: [ :process :outString | ^ outString ]
|
|
||||||
]
|
|
Loading…
Reference in New Issue
Block a user