Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
util:jsexec [2010/04/15 14:23] – Links to custom:js changed to custom:javascript digitalmanutil:jsexec [2021/01/30 11:43] – [Command Line] Now with '-r' support digital man
Line 16: Line 16:
  
 <file> <file>
-usage: jsexec [-opts] [path]module[.js] [args]+usage: jsexec [-opts] [[path/]module[.js] or -r js-expression] [args]
  
 available opts: available opts:
  
-        -c<ctrl_dir>   specify path to Synchronet CTRL directory +    -c<ctrl_dir>   specify path to Synchronet CTRL directory 
-        -m<bytes>      set maximum heap size (default=8388608 bytes+    -C             do not change the current working directory (to CTRL dir
-        -s<bytes>      set context stack size (default=16384 bytes+    -d             run in background (daemonize
-        -S<bytes>      set thread stack limit (default=262144, 0=unlimited+    -m<bytes>      set maximum heap size (default=16777216 bytes
-        -b<limit>      set branch limit (default=99999999, 0=unlimited) +    -t<limit>      set time limit (default=864000, 0=unlimited) 
-        -y<interval>   set yield interval (default=10000, 0=never) +    -y<interval>   set yield interval (default=10000, 0=never) 
-        -g<interval>   set garbage collection interval (default=100, 0=never) +    -g<interval>   set garbage collection interval (default=100, 0=never) 
-        -h[hostname]   use local or specified host name (instead of SCFG value) +    -h[hostname]   use local or specified host name (instead of SCFG value) 
-        -u<mask>       set file creation permissions mask (in octal) +    -u<mask>       set file creation permissions mask (in octal) 
-        -L<level>      set log level (default=7+    -L<level>      set log level (default=6
-        -E<level>      set error log level threshold (default=4) +    -E<level>      set error log level threshold (default=4) 
-        -i<path_list>  set load() comma-sep search path list (default="load"+    -i<path_list>  set load() comma-sep search path list (default="load"
-        -f             use non-buffered stream for console messages +    -f             use non-buffered stream for console messages 
-        -a             append instead of overwriting message output files +    -a             append instead of overwriting message output files 
-        -e<filename>   send error messages to file in addition to stderr +    -A             send all message to stdout 
-        -o<filename>   send console messages to file instead of stdout +    -A<filename>   send all message to file instead of stdout/stderr 
-        -n             send status messages to NUL instead of stderr +    -e<filename>   send error messages to file in addition to stderr 
-        -q             send console messages to NUL instead of stdout +    -o<filename>   send console messages to file instead of stdout 
-        -v             display version details and exit +    -S<filename>   send status messages to file instead of stderr 
-        -x             disable auto-termination on local abort signal +    -S             send status messages to stdout 
-        -l             loop until intentionally terminated +    -n             send status messages to /dev/null instead of stderr 
-        -p             wait for keypress (pause) on exit +    -q             send console messages to /dev/null instead of stdout 
-        -!             wait for keypress (pause) on error+    -v             display version details and exit 
 +    -x             disable auto-termination on local abort signal 
 +    -l             loop until intentionally terminated 
 +    -p             wait for keypress (pause) on exit 
 +    -!             wait for keypress (pause) on error 
 +    -D             debugs the script
 </file> </file>
  
Line 48: Line 53:
 The ''module'' argument is optional if the standard input stream (''stdin'') is not a console (''tty''), allowing for [[#shebang]] support on Unix-like operating systems. The ''module'' argument is optional if the standard input stream (''stdin'') is not a console (''tty''), allowing for [[#shebang]] support on Unix-like operating systems.
  
 +**Note:**
 +When JSexec starts up, it changes its **current working directory** to the Synchronet ''[[dir:ctrl]]'' directory. If you pass filenames on the command-line to a module, the paths must be full/absolute paths or relative to the Synchronet ''[[dir:ctrl]]'' directory.
 ===== Additional Properties ===== ===== Additional Properties =====
  
 Additional properties available to JavaScript scripts running from JSexec: Additional properties available to JavaScript scripts running from JSexec:
  
-^Property  ^Type     ^Description^+^Property   ^ Type     ^Description^
 |''jsexec_revision'' |string|[[dev:CVS]] revision of JSexec (example: ''%%"1.135"%%'')| |''jsexec_revision'' |string|[[dev:CVS]] revision of JSexec (example: ''%%"1.135"%%'')|
 |''jsexec_revision_detail'' |string |Verbose details about the JSexec build (example: ''%%"JSexec 1.136 Debug  Compiled Mar 15 2010 11:13:53 with GCC 3.4.2"%%'')| |''jsexec_revision_detail'' |string |Verbose details about the JSexec build (example: ''%%"JSexec 1.136 Debug  Compiled Mar 15 2010 11:13:53 with GCC 3.4.2"%%'')|
-|''env'' |string[] |Associative array of system environment variables (example: ''%%env["shell"]="/bin/bash"%%'')|+|''env''    Object |Associative array of system environment variables (example: ''%%env["shell"]="/bin/bash"%%'')
 +|''stdin''  | File   |Standard input stream | 
 +|''stdout'' | File   |Standard output stream | 
 +|''stderr'' | File   |Standard error output stream |
  
 +===== Additional Functions =====
 +
 +The following global methods (functions) are also available to JavaScript scripts running from JSexec:
 +
 +^Function     ^ Return Value ^ Description ^
 +|''log''      | String       | Log a message   |
 +|''read''     | String       | Read from stdin |
 +|''readln''   | String       | Read line from stdin |
 +|''write''    | String       | Write a string to stdout |
 +|''print''    | String       | Write a line to stdout (a.k.a. ''writeln'') |
 +|''printf''   | String       | Write a formatted string to stdout |
 +|''alert''    | String       | Print an alert message on the console |
 +|''prompt''   | String       | Prompt for user input |
 +|''confirm''  | String       | Get a yes/no confirmation |
 +|''deny''     | String       | Get a no/yes confirmation |
 +|''chdir''    | String       | Change the current working directory |
 +|''putenv''   | String       | Add or change an environment variable |
 ===== conio ===== ===== conio =====
 JSexec includes an instance of a special Console Input/Output class called ''conio''. JSexec includes an instance of a special Console Input/Output class called ''conio''.
Line 65: Line 92:
 JSexec includes an instance of a special User Interface class called ''uifc''. JSexec includes an instance of a special User Interface class called ''uifc''.
  
-FIXME+See the [[ref:UIFC]] reference page for more details.
  
 ===== shebang ===== ===== shebang =====
Line 76: Line 103:
 This allows JSexec scripts to be executed easily via [[:howto:apache|CGI]] as well as other command-line conveniences on Unix-like operating systems. This allows JSexec scripts to be executed easily via [[:howto:apache|CGI]] as well as other command-line conveniences on Unix-like operating systems.
  
 +===== Output =====
 +
 +JSexec supports multiple output methods and streams:
 +
 +  - **Error** (default stream: ''stderr'')\\ JS ''log()'' messages with log-levels of ''LOG_ERR'' or lower
 +  - **Status** (default stream: ''stderr'')\\ JS ''log()'' messages with log-levels higher than ''LOG_ERR''\\ JSexec startup/compile/shutdown progress messages
 +  - **Console** (default stream: ''stdout'')\\ JS ''write()'' ''writeln()'' ''printf()'' ''alert()'' and ''prompt()'' messages
 +
 +==== syslog ====
 +
 +When JSexec is executed on *nix operating systems with the ''-d'' (Daemonize) option, all JS ''log()'' messages are directed to ''syslog''.
 +
 +==== Suppression ====
 +  * **Status** output is suppressed by default when JSexec is run without a controlling TTY. This behavior can be overridden with the ''-A'' and ''-S'' command-line options.
 +  * **Status** output can be manually suppressed with the ''-n'' (Null) command-line option.
 +  * **Console** output can be suppressed with the ''-q'' (Quiet) command-line option. 
 +
 +==== Redirection ====
 +  * The output streams may be redirected to specific filenames via command-line options.
 +  * **Error** output can be forked to both ''stderr'' and a specified filename via the ''-e'' command-line option.
 ===== See Also ===== ===== See Also =====
   * [[custom:javascript|JavaScript]]   * [[custom:javascript|JavaScript]]
 +  * [[:config:jsexec.ini]]
   * [[:howto:apache|How To Use Apache HTTP Server with Synchronet]]   * [[:howto:apache|How To Use Apache HTTP Server with Synchronet]]
   * [[:util:|Utilities]]   * [[:util:|Utilities]]
  
 {{tag>javascript jsexec customization}} {{tag>javascript jsexec customization}}