View in color | License | Download script | History | Other scripts by: nicolasv |
30-Apr 16:00 UTC
[0.064] 12.131k
[0.064] 12.131k
rem.rREBOL [
name: "rem"
title: "rem REBOL External Modules"
purpose: "rem REBOL External Modules management, like gem in Ruby"
author: "RedChronicle"
url: http://www.red-chronicle.com
file: %rem.r
date: 08/07/2011
version: 0.1.1
history: [
0.1.1 08/07/2011 {
Turn into module and console.
>> do %rem.r => just load the module
>> rem => launch console
Thanks to Didec
}
0.1.0 07/07/2011 "Creation of the program"
]
scripts: [http://www.rebol.org/library/public/lds-local.r]
]
foreach script system/script/header/scripts [do script]
rem-ctx: context [
debug: true
version: system/script/header/version
modules: [
"LDAP" ["LDAP protocol" "Softinnov" 'Web http://softinnov.org/dl/ldap-protocol.r %ldap-protocol.r]
"SQL-PROTOCOL" ["SQL protocol" "Marco" 'LDS "sql-protocol.r" %sql-protocol.r]
]
emit: func [msg] [
print msg
]
console-help: {
REBOL External Modules
How to use it ?
Launch rem console, type rem in REBOL Console
>> rem
Welcome to rem REBOL External Modules
rem>> help
Display this help
Help:
help : display Help
list : display REBOL external modules list
install : install an external module
}
list-modules: does [
forskip modules 2 [
emit rejoin [tab modules/1 tab " {" modules/2/1 "}"]
]
]
install-module: func [module-name [string!]] [
if none? module: select modules module-name [
emit rejoin ["Module " module-name " not found !" newline "Please use : rem/list to get available modules."]
]
switch module/3 [
'LDS [
probe module/4
s: lds/send-server 'get-script reduce [module/4]
write module/5 s/data/script
do module/5
]
'Web [
write module/5 read module/4
do module/5
]
]
emit rejoin [module-name " has been installed."]
]
rules: [
'install set value [string! | word!] (install-module to-string value) |
'exit (break) |
'quit (break) |
'help (emit console-help) |
'list (list-modules)
]
execute: func [cmd [string!] /local res] [
res: parse to-block cmd rules
if not res [emit "Unknown command. Please type help to get some help about rem console."]
]
run-console: does [
emit join "rem Console - version " version
forever [
set/any 'err try [
execute ask "rem>> "
]
if error? get/any 'err [
if debug [emit mold disarm err]
]
]
]
]
; la fonction de lancement
set 'rem does [
rem-ctx/run-console
] |