SPVMDEPS(1)

πŸ“¦ version 0.990125, in alpine 3.24

πŸŽ€ Name πŸŽ€

Welcome to SPVMDEPS(1), bestie β€” a page from User Contributed Perl Documentation. The main character is spvmdeps, aka the Class Dependencies Analyzer. πŸ’–

✨ Description ✨

spvmdeps is literally a class dependencies analyzer. That's the whole gig: it analyzes class deps for you, no cap. πŸ’…

πŸ’» Usage πŸ’»

okay so here's the whole usage menu, verbatim, because specs are sacred:

  Usage: spvmdeps [OPTIONS] SCRIPT_NAME

    spvmdeps myapp.spvm

    spvmdeps --with-version myapp.spvm

    spvmdeps --cpanm --with-version myapp.spvm

    spvmdeps --cpanfile --with-version myapp.spvm

  Options:
    -h, --help                      Shows this message
    -v, --version                   Shows the version
    -I, --include-dir DIRECTORY     Adds a include directory
    --json                          Prints JSON that contains all dependent class information.
    --cpanm                         Prints cpanm commands that contains dependent cpan modules
    --cpanfile                      Prints cpanfile that contains dependent cpan modules
    --with-version                  Output(default, --cpanm, --json) contains version information.
    --exclude CLASS_NAME            Excludes a class name. This option can be used repeatedly.
    --resource-info                 Shows config files of dependent resources

and those are the options. We're going to go through every single one below β€” every flag, every argument, every default. periodt. 🫢

πŸ” Details πŸ”

spvmdeps [OPTIONS] SCRIPT_NAME

The spvmdeps command prints class dependency information. It's giving dependency receipts. ✨

Output Examples:

  Sys
  Regex
  Foo
  Bar

  # --with-version
  Sys 1.201
  Regex 0.980
  Foo (version_from Sys)
  Bar

OPTIONS are options. Yes bestie, iconic but true. πŸ’…

SCRIPT_NAME is a script name that contains a bootstrap method in an anon class.

  class {
    static method main : void () {

    }
  }

For the default class search directories, see Class Search Directories.

For available environment variables, see SPVM::Document::EnvironmentVariables.

🌈 Options 🌈

Here we go β€” all the flags, no skipping. πŸŽ€

🌸 --help 🌸

Outputs how to use the spvmdeps command to standard output.

🌸 -h 🌸

  -h

Same as --help.

🌸 --version 🌸

Outputs the version of the spvmdeps command to standard output. This version is the same as the version of SPVM.

🌸 -v 🌸

  -v

Same as --version.

🌸 --include-dir 🌸

  --include-dir DIRECTORY

Prepends DIRECTORY to class search directories.

This option can be specified multiple times.

--include-dir dir1 --include-dir dir2

In this case, class search directories becomes the following.

[dir1, dir2, default_dirs]

🌸 -I 🌸

  -I DIRECTORY

Same as --include-dir.

🌸 --json 🌸

Prints JSON that contains all dependent class information.

Output Examples:

[
  {"class_name":"Address"},
  {"class_name":"Bool"},
  {"class_name":"Byte"},
  {"class_name":"CommandInfo"},
  {"class_name":"Double"},
  {"class_name":"Error"},
  {"class_name":"Error::Compile"},
  {"class_name":"Error::NotSupported"},
  {"class_name":"Error::System"},
  {"class_name":"Float"},
  {"class_name":"Int"},
  {"class_name":"Long"},
  {"class_name":"SPVM"},
  {"class_name":"Short"},
  {"class_name":"TestCase::NativeAPI2"},
  {"class_name":"TestCase::Precompile"}
]

# --with-version
[
  {"class_name":"Address","version_from":"SPVM"},
  {"class_name":"Bool","version_from":"SPVM"},
  {"class_name":"Byte","version_from":"SPVM"},
  {"class_name":"CommandInfo","version_from":"SPVM"},
  {"class_name":"Double","version_from":"SPVM"},
  {"class_name":"Error","version_from":"SPVM"},
  {"class_name":"Error::Compile","version_from":"SPVM"},
  {"class_name":"Error::NotSupported","version_from":"SPVM"},
  {"class_name":"Error::System","version_from":"SPVM"},
  {"class_name":"Float","version_from":"SPVM"},
  {"class_name":"Int","version_from":"SPVM"},
  {"class_name":"Long","version_from":"SPVM"},
  {"class_name":"SPVM","version":"0.990036"},
  {"class_name":"Short","version_from":"SPVM"},
  {"class_name":"TestCase::NativeAPI2","version":"1.002"},
  {"class_name":"TestCase::Precompile","version":"2.005"}
]

🌸 --cpanm 🌸

Prints cpanm commands that contains dependent CPAN modules. Classes whose version is specified are treated as dependent CPAN modules.

Output Examples:

cpanm SPVM
cpanm SPVM::Sys
cpanm SPVM::Regex

# --with-version
cpanm SPVM@1.001
cpanm SPVM::Sys@1.201
cpanm SPVM::Regex@0.980

🌸 --cpanfile 🌸

Prints cpanfile that contains dependent CPAN modules. Classes whose version is specified are treated as dependent CPAN modules.

Output Examples:

requires 'SPVM';
requires 'SPVM::Sys';
requires 'SPVM::Regex';

# --with-version
requires 'SPVM', '== 1.001';
requires 'SPVM::Sys', '== 1.201';
requires 'SPVM::Regex', '== 0.980';

🌸 --with-version 🌸

Output(default, "--cpanm", "--cpanfile", "--json") contains version information.

🌸 --exclude 🌸

  --exclude=<class_name>

Excludes a class name. This option can be used repeatedly.

Examples:

--exclude TestCase::Foo

Wildcard "*" can be used.

--exclude TestCase::*

🌸 --resource-info 🌸

Shows all config files loading resources.

πŸ“š lib Directive πŸ“š

If the source code specified by SCRIPT_NAME contains lib directives, the directories specified by the lib directive are prepended to class search directories.

#lib "$FindBin::Bin/lib"

class {

}
order check, bestie: those lib-directive directories are placed after the directories specified by the --include-dir option. Don't flip it. 🫢

Copyright 2023 Yuki Kimoto. All Rights Reserved.

MIT License.

okay bestie, that's the whole SPVMDEPS(1) manual page β€” signed off with perl v5.42.2 on 2026-02-03. Mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from