Name
spvm - Executing SPVM programs
Description
The spvm command executes SPVM programs.
Usage
Usage: spvm [OPTIONS] SCRIPT_NAME
spvm myapp.spvm
Options:
-h, --help Shows this message
-v, --version Shows the version
-I DIRECTORY Adds a include directory
-B, --build-dir DIRECTORY Build diretory
-e SOURCE Executes a program source code in main method.
-c Check syntx only
-w Enables warning flag
-M CLASS_NAME Loads the SPVM class
-Mblib Same as "-Mblib" in perl
Details
spvm [OPTIONS] SCRIPT_NAME
The spvm command executes a SPVM program.
OPTIONS are options.
SCRIPT_NAME is a script path that contains an SPVM script.
# myapp.spvm
use Fn;
my $var = 1;
say $var;
Anon class that contains a bootstrap method is allowed as an SPVM script.
# myapp.spvm
class {
version "1.001";
our $FOO : int;
use Fn;
static method main : void () {
my $var = 1;
say $var;
}
}
The base name of SCRIPT_NAME must be a "Script Base Name". Otherwise an exception is thrown.
See Class Search Directories about default class search directories.
See SPVM::Document::EnvironmentVariables about available environment variables.
Script Base Name
A script base name ends with .spvm.
A script base name without .spvm consists of word characters and -.
It dose not contains __.
It dose not begin with 0-9.
It dose not begin with -.
It dose not end with -.
It dose not contains --.
Examples:
# Script Base Names
foo.spvm
foo_bar2.spvm
myapp-foo.spvm
# Invalid Script Base Names
2foo.spvm
foo__bar.spvm
-myapp.spvm
myapp-.spvm
myapp--foo.spvm
Options
--help
Outputs how to use the spvm command to standard output.
-h
-h
Same as "--help".
--version
Outputs the version of the spvm command to standard output. This version is the same as the version of SPVM.
-v
-v
Same as "--version".
-I
-I DIRECTORY
Prepends DIRECTORY to class search directories
This option can be specified multiple times.
-I dir1 -I dir2
In this case, class search directories becomes the following.
[dir1, dir2, default_dirs]
--build-dir
--build-dir DIRECTORY
Sets SPVM_BUILD_DIR environment variable to DIRECTORY.
-B
-B DIRECTORY
Same as "--build-dir".
-w
-w
Enables warning flag.
Implementation:
Sets CommandInfo#WARNING class variable to 1.
-Mblib
-Mblib
Uses Perl's blib module.
This is useful for testing a native module before it is installed.
When this option is specified, blib/lib and blib/arch are prepended to @INC and the library search paths.
-e
-e SOURCE
Executes a source code SOURCE in main method.
Examples:
spvm -e 'say "Hello World!";';
-c
-c
Checks syntax only.
-M
-M CLASS_NAME
Loads the SPVM class CLASS_NAME.
This is useful for pre-loading classes or ensuring that a class is compiled.
This option can be specified multiple times.
spvm -MFoo -MBar myapp.spvm
Implementation:
Calls "build_class" method for CLASS_NAME.
lib Directive
If the source code specified by SCRIPT_NAME, or -e option contains lib directives, The directories specified by lib directive is prepeneded to class search directories.
#lib "$FindBin::Bin/lib"
This directories specified by lib directive is placed after the directories specified by "-I" option.
Copyright & License
Copyright 2023 Yuki Kimoto. All Rights Reserved.
MIT License.