Skip to content

Batch Mode

This refers to the non interactive mode where the user does not input anything and the terminal receives input from elsewhere.

Implementation

Suppose that you want the users to only have a readonly interface or you would like to take control from the user for awhile, here is how you can achieve that;

By default, the data event is triggered by the user input followed by Enter key. You can manually trigger the data event to mimic user interaction.

Example

js
// no user interactivity
term.pause();

// executes command
function handleInput(command) {
    switch (command) {
        case 'install':
            // ...
            console.log('installing...');
            // ...
            break;
        case 'commit':
            // ...
            console.log('commiting changes...');
            // ...
            break;
        case 'fetch':
            // ...
            console.log('fetching state...');
            // ...
        default:
            break;
    }
}

// register input callback
term.on('data', handleInput);

// demo shell script
const script = `
# install deps...
install

# save changes...
commit

# load state/resource...
fetch
`;

// run it
for (const line of script.split(/\n/)) {
    // skip empty lines and comments
    if (!line || line.startsWith("#")) continue;
    // execute line
    term.emit('data', line);
}