@@ -74,19 +74,31 @@ const cmds = {
74
74
} ,
75
75
'help' : {
76
76
'description' : 'Show this message or show usage of the command =)' ,
77
- 'usage' : 'help <command>' ,
77
+ 'usage' : 'help <command> |OR| help |OR| help -p[=n] |OR| help --page[=n] ' ,
78
78
run ( _args , f , res ) {
79
79
let args = _args . trim ( ) ;
80
80
81
- if ( ! args ) {
82
- f . stdio . writeLine ( 'Commands list:' ) ;
81
+ if ( ! args || args . split ( / \s + / ) [ 0 ] . startsWith ( "-p" ) || args . split ( / \s + / ) [ 0 ] . startsWith ( "--page" ) ) {
82
+ var tmp_page = args . split ( / \s + / ) [ 0 ] . slice ( 3 + 4 * Number ( args . split ( / \s + / ) [ 0 ] . startsWith ( "--page" ) ) ) - 1 || 0 ;
83
+ if ( tmp_page == - 1 ) tmp_page = 0 ;
84
+ var list = Array . from ( processor . getCommands ( ) ) . sort ( ) ;
85
+ if ( tmp_page < 0 || tmp_page + 1 > Math . ceil ( list . length / ( vga . HEIGHT - 4 ) ) ) {
86
+ f . stdio . setColor ( 'red' ) ;
87
+ f . stdio . write ( "Invalid page!" ) ;
88
+ return res ( 1 ) ;
89
+ }
90
+
91
+ f . stdio . writeLine ( `Commands list (page ${ tmp_page + 1 } /${ Math . ceil ( list . length / ( vga . HEIGHT - 4 ) ) } ):` ) ;
83
92
// let out = 'Commands list:\n';
84
- for ( const i of processor . getCommands ( ) ) {
93
+
94
+ for ( var i = tmp_page * ( vga . HEIGHT - 4 ) ; i < ( tmp_page + 1 ) * ( vga . HEIGHT - 4 ) ; i ++ ) {
85
95
// out += `${i}: ${processor.getDescription(i)}\n`;
96
+ if ( i == list . length ) break ;
97
+ var _i = list [ i ] ;
86
98
f . stdio . setColor ( 'yellow' ) ;
87
- f . stdio . write ( i ) ;
99
+ f . stdio . write ( _i ) ;
88
100
f . stdio . setColor ( 'white' ) ;
89
- f . stdio . writeLine ( `: ${ processor . getDescription ( i ) } ` ) ;
101
+ f . stdio . writeLine ( `: ${ processor . getDescription ( _i ) } ` ) ;
90
102
}
91
103
// f.stdio.write(out);
92
104
} else {
@@ -153,17 +165,61 @@ const cmds = {
153
165
} ,
154
166
'install' : {
155
167
'description' : 'Install applications' ,
156
- 'usage' : 'install <app>' ,
168
+ 'usage' : 'install <app> |OR| install --list[=n] |OR| install -l[=n] ' ,
157
169
run ( app , f , res ) {
158
- if ( $$ . appman . install ( app . trim ( ) ) ) {
170
+ if ( app . trim ( ) . split ( / \s + / ) [ 0 ] . slice ( 0 , 2 ) == "-l" || app . trim ( ) . split ( / \s + / ) [ 0 ] . slice ( 0 , 6 ) == "--list" ) {
171
+ const fs = require ( 'fs' ) ;
172
+ fs . readdir ( "/system/js/apps/" , "utf-8" , ( err , list_ ) => {
173
+ if ( err ) {
174
+ f . stdio . writeError ( "Unknown error!" ) ;
175
+ debug ( error ) ;
176
+ return res ( 1 ) ;
177
+ }
178
+ var list = [ ] , ml = 1 ;
179
+ for ( var i = 0 ; i < list_ . length ; i ++ ) {
180
+ ml = Math . max ( ml , list_ [ i ] . length + 1 ) ;
181
+ }
182
+ for ( var i = 0 ; i < list_ . length ; i ++ ) {
183
+ list . push ( list_ [ i ] + " " . repeat ( ml - list_ [ i ] . length ) + "| " + fs . readFileSync ( "/system/js/apps/" + list_ [ i ] + "/description.txt" , "utf-8" ) ) ;
184
+ }
185
+ if ( app . trim ( ) . split ( / \s + / ) [ 0 ] == "-l" || app . trim ( ) . split ( / \s + / ) [ 0 ] == "--list" ) app = "-l=1" ;
186
+ var tmp_page = app . trim ( ) . slice ( Number ( app . trim ( ) . split ( / \s + / ) [ 0 ] . slice ( 0 , 6 ) == "--list" ) * 4 + 3 ) - 1 ;
187
+ if ( tmp_page + 1 > Math . ceil ( list . length / ( vga . HEIGHT - 12 ) ) ) {
188
+ f . stdio . setColor ( 'red' ) ;
189
+ f . stdio . writeLine ( "Invalid page!" ) ;
190
+ return res ( 1 ) ;
191
+ }
192
+ f . stdio . setColor ( 'magenta' ) ;
193
+ f . stdio . writeLine ( `Applications list (page: ${ tmp_page + 1 } /${ Math . ceil ( list . length / ( vga . HEIGHT - 12 ) ) } )
194
+ ` ) ;
195
+ f . stdio . setColor ( 'yellow' ) ;
196
+ for ( var i = tmp_page * ( vga . HEIGHT - 12 ) ; i < ( tmp_page + 1 ) * ( vga . HEIGHT - 12 ) ; i ++ ) {
197
+ if ( i == list . length ) break ;
198
+ f . stdio . writeLine ( list [ i ] ) ;
199
+ }
200
+ f . stdio . setColor ( 'cyan' ) ;
201
+ f . stdio . writeLine ( `
202
+ -----
203
+ Notice: when you are installing an app, it loads into RAM and uninstalls after rebooting.` ) ;
204
+ f . stdio . setColor ( 'blue' ) ;
205
+ f . stdio . writeLine ( `
206
+ To start an installed app, type:
207
+ start <app>` ) ;
208
+ } ) ;
209
+ return res ( 0 ) ;
210
+ }
211
+ if ( $$ . appman . install ( app . trim ( ) . split ( / \s + / ) [ 0 ] ) ) {
212
+
159
213
f . stdio . setColor ( 'green' ) ;
160
214
f . stdio . writeLine ( `App ${ app } installed successful!` ) ;
161
215
162
216
return res ( 0 ) ;
163
- }
164
- f . stdio . writeError ( `Error happened during ${ app } installation` ) ;
217
+
218
+ } else {
219
+ f . stdio . writeError ( `Error happened during ${ app } installation` ) ;
165
220
166
- return res ( 1 ) ;
221
+ return res ( 1 ) ;
222
+ }
167
223
} ,
168
224
} ,
169
225
'speaker' : {
0 commit comments