-
Notifications
You must be signed in to change notification settings - Fork 1
/
commands.js
153 lines (129 loc) · 15.2 KB
/
commands.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
export const config = (ctx, core) => ({_}) => {
_.forEach(key => {
const value = JSON.stringify(core.config(key), null, 4);
ctx.writeln(`${key}: ${value}`);
});
};
export const windows = (ctx, core) => () => {
core.make('osjs/windows')
.list()
.forEach(w => ctx.writeln(JSON.stringify(w.getSession())));
};
export const run = (ctx, core) => (args) => {
if (args._.length) {
return core.run(args._[0], args);
}
return Promise.reject(new Error('No application name given'));
};
export const open = (ctx, core) => (args) => {
if (args._.length && args.mime) {
return core.open({
path: args._[0],
mime: args.mime
});
}
return Promise.reject(new Error('No filename or mime given'));
};
const wrapFS = (method) => (ctx, core) => (args) => {
const arg = args._[0];
if (arg) {
return core.make('osjs/vfs')[method](arg)
.then(result => ctx.writeln(`${method} ${arg}: ${result ? 'OK' : 'Fail'}`));
}
return Promise.reject(new Error('No filename given'));
};
export const rm = wrapFS('unlink');
export const mkdir = wrapFS('mkdir');
export const touch = wrapFS('touch');
export const cat = (ctx, core) => (args) => {
const arg = args._[0];
if (arg) {
return core.make('osjs/vfs')
.readfile(arg)
.then(contents => ctx.write(contents));
}
return Promise.reject(new Error('No filename given'));
};
export const ls = (ctx, core) => (args) => {
const path = args._[0] || 'osjs:/';
ctx.writeln('Listing directory ' + path);
return core.make('osjs/vfs')
.readdir(path)
.then(results => results.forEach(iter => {
const filename = iter.filename.substring(0, 40).padEnd(40, ' ');
const mime = (iter.mime || '').substring(0, 24).padEnd(24, ' ');
const type = iter.isDirectory ? 'D' : 'F';
const size = `${String(iter.size || 0)}B`.padEnd(12, ' ');
ctx.writeln(`${filename} ${type} ${size} ${mime}`);
}));
};
export const clear = (ctx) => () => Promise.resolve(ctx.clear());
export const exec = (ctx, core, xterm) => (args, input) => {
const [name, ...argv] = input.split(' ');
core.make('osjs/proc')
.pty(name, ...argv)
.then(p => {
p.attachXterm(xterm);
p.on('exit', () => ctx.close());
p.on('error', err => ctx.close(err));
})
.catch(err => ctx.close(err));
};
export const help = (ctx) => () => {
const str = `Available commands:
help: This command
clear: Clear screen
banner: Display nammer
ls <dir>: Lists a directory
rm <dir>: Removes a file or directory
cat <filename>: Prints or concatenates files
mkdir <dir>: Creates a directory
touch <filename>: Creates a file
run <name> [--args]: Starts application
open <filename> --mime MIME: Opens given file
windows: Lists all windows
config <key>: Prints a configuration option
exec ...: Executes a PTY process on host
`;
str.split('\n').forEach(l => ctx.writeln(l));
return Promise.resolve();
};
export const banner = (ctx) => () => {
const str = `
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;0m [48;5;0m [0m
[48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [0m
[48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [0m
[48;5;238m [48;5;60m [48;5;238m [48;5;239m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;239m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;60m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;60m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;60m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;238m [48;5;60m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [0m
[48;5;238m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;236m [0m
[48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [0m
[48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;61m [48;5;61m [48;5;60m [48;5;237m [48;5;24m [48;5;24m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;60m [48;5;60m [48;5;237m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
[48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;236m [48;5;237m [48;5;236m [48;5;235m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [48;5;0m [0m
`;
str.split('\n').forEach(l => ctx.writeln(l));
ctx.writeln('OS.js Shell 0.1 - Type \'help\' for a list of commands');
return Promise.resolve();
};