Skip to content

Commit c984d94

Browse files
save file
1 parent 4484751 commit c984d94

1 file changed

Lines changed: 90 additions & 31 deletions

File tree

utils/misc/nodejs-terminal/v2.0/nodejs-terminal-v2.0.html

Lines changed: 90 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -849,8 +849,18 @@
849849
term.pause = false;
850850

851851
}//resume
852-
853-
852+
term.write.xy = (x,y,txt)=>{
853+
854+
term.write('\x1b[s'); // Save current spot
855+
term.write(`\x1b[${y};${x}H`); // Jump to top left
856+
term.write(txt);
857+
term.write('\x1b[u'); // Jump back to where we were
858+
859+
}//xy
860+
861+
862+
863+
854864
for(let key in colors){
855865

856866
if (key === 'reset') continue;
@@ -890,32 +900,57 @@
890900
term.loadAddon(fitAddon);
891901
term.open(terminal);
892902
fitAddon.fit();
903+
893904
term.write('booting container ... ')
894905
webcontainer = await WebContainer.boot();
895-
term.writeln.green('ok');
906+
term.writeln.green('ok'); //24
896907

897908
mod.stack.complete;
898909

899910

911+
var phase = {};
912+
phase.ct = 1;
913+
phase.p1 = result=>{
914+
915+
var str = '??';
916+
if(result.code==0)str = result.output;
917+
term.write.xy(30,1,'node '+str)
918+
phase.ct = 2
919+
phase.p2()
920+
921+
}//p1
922+
phase.p2 = result=>{
923+
924+
if(result)phase.p2.result = result;
925+
if(phase.ct!=2)return;
926+
if(!phase.p2.result)return;
927+
var str = '??';
928+
if(phase.p2.result.code==0)str = phase.p2.result.output;
929+
term.write.xy(50,1,'npm '+str);
930+
phase.ct = 3;
931+
phase.p3();
932+
933+
}//p2
934+
phase.p3 = result=>{console.log('phase.p3',!!result);
935+
936+
if(result)shell = result;
937+
if(phase.ct!=3)return;
938+
if(!shell)return;
939+
shell.output.pipeTo(output);
940+
input = shell.input.getWriter();
941+
term.onData(data=>input.write(data));
942+
//term.resize();
943+
term.focus();
944+
945+
}//p3
946+
947+
948+
spawn('node -v',true).then(phase.p1);
949+
spawn('npm -v',true).then(phase.p2);
950+
webcontainer.spawn('jsh').then(phase.p3);
951+
900952

901-
var [result1,result2] = await Promise.all([spawn('node -v',{output:true}),spawn('npm -v',{output:true})]);
902-
if(result1.code==0){
903-
term.write('node '+result1.output);
904-
}
905-
if(result2.code==0){
906-
term.write('npm '+result2.output);
907-
}
908953

909-
webcontainer.on('server-ready',(port,url)=>{
910-
console.log('server-ready',url,port);
911-
term.writeln('server-ready :'+url+' --- '+port);
912-
913-
});
914-
webcontainer.on('port',(port,type,url)=>{
915-
console.log(port,type,url)
916-
term.writeln('port :'+type+' --- '+url+' --- '+port);
917-
918-
});
919954

920955

921956
if(0){
@@ -926,9 +961,9 @@
926961

927962

928963

929-
term.write('spawn jsh ... ')
930-
shell = await webcontainer.spawn('jsh');
931-
term.writeln.green('ok');
964+
//term.write('spawn jsh ... ')
965+
//shell = await webcontainer.spawn('jsh');
966+
//term.writeln.green('ok');
932967
output = new WritableStream({
933968
write(data){
934969
//console.log(data);
@@ -981,8 +1016,8 @@
9811016
});
9821017

9831018

984-
if(term.pause){
985-
term.buffer.push(data);
1019+
if(output.pause){
1020+
output.buffer.push(data);
9861021
}else{
9871022
term.write(data);
9881023
}
@@ -1008,22 +1043,46 @@
10081043

10091044
}//resume
10101045

1011-
shell.output.pipeTo(output);
1012-
1013-
input = shell.input.getWriter();
1014-
term.onData(data=>input.write(data));
1015-
1046+
10161047
//term.resize();
10171048
term.focus();
10181049

1050+
1051+
1052+
1053+
1054+
1055+
webcontainer.on('server-ready',(port,url)=>{
1056+
console.log('server-ready',url,port);
1057+
term.writeln('server-ready :'+url+' --- '+port);
1058+
1059+
});
1060+
webcontainer.on('port',(port,type,url)=>{
1061+
console.log(port,type,url)
1062+
term.writeln('port :'+type+' --- '+url+' --- '+port);
1063+
1064+
});
1065+
1066+
10191067
})();
10201068

10211069

10221070
//:
10231071

10241072

1025-
async function spawn(cmdline,{output}={}){
1073+
async function spawn(cmdline,opts){
10261074

1075+
if(opts===undefined){
1076+
opts = {};
1077+
}
1078+
var output;
1079+
if(typeof opts=='boolean'){
1080+
output = opts;
1081+
}else{
1082+
({output} = opts);
1083+
}
1084+
1085+
10271086
var args = cmdline.split(' ');
10281087
var cmd = args.shift();
10291088
var process = await webcontainer.spawn(cmd,args,{cwd,output:true});

0 commit comments

Comments
 (0)