Skip to content

Commit cc2cb64

Browse files
save file
1 parent 8e39ad9 commit cc2cb64

1 file changed

Lines changed: 101 additions & 0 deletions

File tree

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

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,58 @@
674674
term.writeln('');
675675
term.writeln.green('saving snapshot ...');
676676

677+
var snap = snapshot(cwd);
678+
var blob = to_blob(snap);
679+
680+
681+
async function snapshot(path){
682+
683+
var snap = {};
684+
var entries = await webcontainer.fs.readdir(path,{withFileTypes:true});
685+
686+
for(var item of entries){
687+
688+
var abs = path+item.name;
689+
690+
if(item.isFile()){
691+
snap[abs] = await wc.fs.readFile(abs);
692+
}
693+
694+
if(item.isDirectory()){
695+
var snap2 = await snapshot(abs+'/')
696+
Object.assign(snap,snap2);
697+
}
698+
699+
}//for
700+
701+
return snap;
702+
703+
}//snapshot
704+
705+
706+
function to_blob(snap){
707+
708+
var obj = {};
709+
710+
for(var [file,data] of Object.entries(snap)){
711+
712+
obj[file] = Array.from(data);
713+
714+
}//for
715+
716+
var json = JSON.stringify(obj);
717+
var blob = new Blob([json],{type:'application/json'});
718+
return blob;
719+
720+
}//to_blob
721+
722+
723+
724+
725+
726+
/*
727+
728+
677729
var err;
678730
try{
679731
@@ -693,6 +745,12 @@
693745
}
694746
console.log(str);
695747
var blob = new Blob([str]);
748+
749+
750+
751+
*/
752+
753+
696754
var file = {name:'snapshot.json',icon:snap_icon};
697755

698756
complete.load(file,blob);
@@ -728,6 +786,42 @@
728786

729787
var blob = cur.blob;
730788
console.log(blob);
789+
790+
var snap = to_snapshot(blob);
791+
792+
793+
for(var [file,data] of Object.entries(snap)){
794+
795+
var dir = file.split('/').slice(0,-1).join('/') || '/';
796+
797+
await wc.fs.mkdir(dir,{recursive:true});
798+
await wc.fs.writeFile(file,data);
799+
800+
}//for
801+
802+
803+
async function to_snapshot(blob) {
804+
805+
var text = await blob.text();
806+
var obj = JSON.parse(text);
807+
var snap = {};
808+
809+
for(var [file,arr] of Object.entries(obj)){
810+
811+
snap[file] = new Uint8Array(arr);
812+
813+
}//for
814+
815+
return snap;
816+
817+
}//to_snapshot
818+
819+
820+
821+
822+
823+
/*
824+
731825
var txt = await blob.text();
732826
console.log(txt);
733827
var data = JSON.parse(txt);
@@ -752,6 +846,13 @@
752846
return;
753847
}
754848
849+
*/
850+
851+
852+
853+
854+
855+
755856
term.writeln.green('ok.');
756857
await term.prompt();
757858

0 commit comments

Comments
 (0)