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.