Scripting ideas

From GNUstepWiki


Shared Scripting Environment Process/Server

Scripting from an UNIX shell

Create a shared scripting environment process test

> stalk --create test

Execute some scripts in the environment called test

> echo "Transcript showLine:'Hello!'" | stalk test
> echo "name := 'StepTalk'" | stalk test
> echo "Transcript showLine:('Hello ', name, '!')" | stalk test

Kill the environment

> stalk --kill test

Scripting from an application

Create a shared scripting environment (stand-alone process)

server = [[STServer launchedServerWithEnvrionmentName:@"test"];

... or connect to an existing one:

server = [[STServer serverWithIdentifier:@"test" host:@"localhost"];

Create a new conversation with the server

conversaton = [[STServer createConversaion];

Create a transcript object, just in case the server will produce an output

transcript = [[STSimpleTranscript transcript];
[conversation setTranscript:transcript];

Run a script in the shared environment:

[[conversation runScriptFromString:@"Transcript showLine:'Hello!'"];

The environment is a process that sits in the system until killed. Connection to the environment should be analogous to a connection to a database server. Executing StepTalk scripts is analogous to executing SQL commands.

The scripting environment process/server is something like a gateway from an user to the system (either whole system or user environment only). Is should persistant per session or there should be some mechanisms to store environment state and restore it later, after reboot for example.

What to do

What is required to implement it? Implementation of distant conversation and stpetalk server process. It will require small changes in the STEnvironment and addition of contexts. Engines should use contexts instead of an environment, so we can have a one Transcript per conversation, for example. Moreover, conversation should not return an object by default - different handling of script result should be implemented. I have already few random notes and code pieces, so if you are interested, please contact the author.