Packages

A package, as used here, is defined as a storage location for code, metadata and any other information necessary for describing an application. To access the contents of a package, you must define a KX_PACKAGE_PATH environment variable which is a relative or absolute path to the location where all packages are stored. Below are the details of the API used to load, list, and search for packages.

.kxi.packages.load

Load the contents of a package

.kxi.packages.load[package]
.kxi.packages.load[package;version]
.kxi.packages.load[package;version;.var.kwargs (!) . flip (
 (`version ; version);
 (`entry ; entry);
 (`path ; path);
 (`force ; force))]

Parameters:

name

type

description

default

package

string

Name of the package to be loaded.

Required

options:

name

type

description

default

version

string

Version of the package to be loaded. If undefined the latest semver x.y.z version will be loaded for the defined package.

::

entry

string

Name of the entrypoint used when loading the package. This is defined within the manifest.json under the entry entrypoints.<entry>.

"default"

path

string or ::

Path to the package to be loaded. If set to ::, the path is set to the current working directory.

::

force

boolean

Whether to load the package regardless of whether a package with the same name and entry point has previously been loaded.

0b

** Return:**

type

description

::

Null

Loads the entire content of a package based on a package entry point defined by the optional parameter entry.

Load a package called "ml" with version "2.0.0"

q).kxi.packages.list.all[]
name versions
-----------------------
"ml" "1.0.0"
"ml" "2.0.0"
"ml" "2.0.0_F32C80D9"
"test" "1.1.0"
"test" "1.2.0"
q).kxi.packages.load["ml";"2.0.0"]

Load the package "ml" with version "1.0.0" multiple times

q).kxi.packages.load["ml";"1.0.0";.var.kw[`force;1b]]
q).kxi.packages.load["ml";"1.0.0";.var.kw[`force;1b]]

.kxi.packages.file.load

Load a file within the current package relative to the package root.

.kxi.packages.file.load[path]

Parameters:

name

type

description

path

string

Path to the file being loaded relative to package root.

** Return:**

type

description

::

Null

Loads a file within a package relative to the root of the package.

q).kxi.packages.file.load["src/test.q"]

.kxi.packages.list.all

List all packages stored at KX_PACKAGE_PATH

.kxi.packages.list.all[]

Parameters:

name

type

description

x

UNUSED

Returns:

type

description

table

Table outlining the name and version of all packages stored in KX_PACKAGE_PATH.

This function will return a table providing information about all packages store at a path specified by the user within the environmental variable KX_PACKAGE_PATH. It is assumed that the packages are formatted in a structure $KX_PACKAGE_PATH/package/version where package and version are specified during installation.

List all the packages stored at KX_PACKAGE_PATH

q)setenv[`KX_PACKAGE_PATH;"test/test-packages"]
q).kxi.packages.list.all[]
name versions
-----------------------
"ml" "1.0.0"
"ml" "2.0.0"
"ml" "2.0.0_F32C80D9"
"test" "1.1.0"
"test" "1.2.0"

.kxi.packages.list.search

List all packages stored at KX_PACKAGE_PATH which meet a presented search criteria

.kxi.packages.list.search[package;version]

Parameters:

name

type

description

package

string or null

Regex filter string used to search for specific package name patterns. Can also be :: to include all package names.

version

string or null

Regex filter string used to search for specific package version patterns. Can also be :: to include all package versions.

Returns:

type

description

table

Table outlining the package name and version of all packages stored in KX_PACKAGE_PATH which meet the presented search criteria.

This function will return a table providing information about all packages store at a path specified by the user within the environmental variable KX_PACKAGE_PATH which meet the filter criteria provided. It is assumed that the packages are formatted in a structure $KX_PACKAGE_PATH/package/version where package and version are specified during installation.

List the packages stored at KX_PACKAGE_PATH under different search conditions

q)setenv[`KX_PACKAGE_PATH;"test/test-packages"]
// List all packages that are stored at the KX_PACKAGE_PATH
q).kxi.packages.list.all[]
name versions
-----------------------
"ml" "1.0.0"
"ml" "2.0.0"
"ml" "2.0.0_F32C80D9"
"test" "1.1.0"
"test" "1.2.0"
q)
// List all "ml" related packages
q).kxi.packages.list.search["*ml*";::]
name versions
-----------------------
"ml" "1.0.0"
"ml" "2.0.0"
"ml" "2.0.0_F32C80D9"
q)
// List all packages that are version 1.x
q).kxi.packages.list.search[::;"1.*"]
name versions
---------------
"ml" "1.0.0"
"test" "1.1.0"
"test" "1.2.0"

Parameters:

Name

Type

Description

package

version