Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
JPM(1)			     General Commands Manual			  JPM(1)

NAME
     jpm - the Janet Project Manager, a build tool for Janet

SYNOPSIS
     jpm [--flag ...]  [--option=value ...]  command args...

DESCRIPTION
     jpm  is  used  for  building  Janet  projects, installing dependencies, in-
     stalling projects,  building  native  modules,  and  exporting  your  Janet
     project  to a standalone executable. Although not required for working with
     Janet, it removes much of the boilerplate with installing dependencies  and
     building  native  modules.  jpm requires only janet to run, and uses git to
     install dependencies (jpm will work without git installed).

DOCUMENTATION
     jpm has several subcommands, each used for managing either a  single  Janet
     project  or  all  Janet  modules  installed on the system. Global commands,
     those that manage modules at the system level, do things like  install  and
     uninstall	packages,  as well as clear the cache.	More interesting are the
     local commands. For more  information  on	jpm  usage,  see  https://janet-
     lang.org/docs/index.html

     For information on flags, see the usage documentation in the tool.

COMMANDS
     help   Shows the usage text and exits immediately.

     build  Builds all artifacts specified in the project.janet file in the cur-
	    rent directory. Artifacts will be created in the ./build/ directory.

     configure[path]
	    Create  a directory for out-of-tree builds, and also set project op-
	    tions. While jpm does not require an explicit configure  step,  this
	    can be used to avoid needing to set the same options repeatedly. Out
	    of tree builds are also a convenient way to have multiple configura-
	    tions at the same time, such as a relase build and a debug build.

     install [repo...]
	    When  run  with  no arguments, installs all installable artifacts in
	    the current project to the current	JANET_MODPATH  for  modules  and
	    JANET_BINPATH for executables and scripts. Can also take an optional
	    git repository URL and will install all artifacts in that repository
	    instead.  When run with an argument, install does not need to be run
	    from  a  jpm project directory. Will also install multiple dependen-
	    cies in one command.

     update-installed
	    Update to the latest version of all installed packges. Will do  this
	    by	reinstalling  from  source control with latest available tag for
	    each bundle. May overwrite any bundles that have been installed to a
	    specific tag.

     uninstall [name...]
	    Uninstall a project installed with install.  uninstall  expects  the
	    name of the project, not the repository url, path to installed file,
	    or executable name. The name of the project must be specified at the
	    top  of  the  project.janet  file in the declare-project form. If no
	    name is given, uninstalls the current  project  if	installed.  Will
	    also uninstall multiple packages in one command.

     clean  Remove  all  artifacts  created  by jpm. This just deletes the build
	    folder.

     test   Runs jpm tests. jpm will run all janet source files in the test  di-
	    rectory  as  tests.  A test is considered failing if it exits with a
	    non-zero exit code.

     deps   Install all dependencies that this project requires recursively. jpm
	    does not resolve dependency issues, like conflicting versions of the
	    same module are required, or different modules with the  same  name.
	    Dependencies  are  installed with git, so deps requires git to be on
	    the PATH.

     clear-cache
	    jpm caches git repositories that are needed to install modules  from
	    a remote source in a global cache ($JANET_PATH/.cache). If these de-
	    pendencies are out of date or too large, clear-cache will remove the
	    cache  and	jpm will rebuild it when needed. clear-cache is a global
	    command, so a project.janet is not required.

     list-installed
	    List all installed packages in the current syspath.

     list-pkgs [search]
	    List all package aliases in the current package listing that contain
	    the given search string.  If no search string is given,  prints  the
	    entire listing.

     clear-manifest
	    jpm  creates  a  manifest  directory that contains a list of all in-
	    stalled files.  By deleting this  directory,  jpm  will  think  that
	    nothing is installed and will try reinstalling everything on the jpm
	    deps or jpm load-lockfile commands. Be careful with this command, as
	    it may leave extra files on your system and shouldn't be needed most
	    of the time in a healthy install.

     run [rule]
	    Run a given rule defined in project.janet. Project definitions files
	    (project.janet)  usually  contain a few artifact declarations, which
	    set up rules that jpm can then resolve, or execute.  A project.janet
	    can also create custom rules to create arbitrary files or run  arbi-
	    trary  code,  much	like make. run will run a single rule or build a
	    single file.

     rules  List all rules that can be run via run. This is useful for exploring
	    rules in the project.

     rule-tree [root] [depth]
	    Show rule dependency tree in a pretty format. Optionally  provide  a
	    rule  to  use  as the tree root, as well as a max depth to print. By
	    default, prints the full tree for all rules. This can be quite long,
	    so it is recommended to give a root rule.

     show-paths
	    Show all of the paths used when installing and building artifacts.

     update-pkgs
	    Update the package listing by installing the 'pkgs' package. Same as
	    jpm install pkgs

     quickbin [entry] [executable]
	    Create a standalone,  statically  linked  executable  from	a  Janet
	    source file that contains a main function.	The main function is the
	    entry  point  of the program and will receive command line arguments
	    as function arguments. The entry file can import other modules,  in-
	    cluding native C modules, and jpm will attempt to include the depen-
	    dencies into the generated executable.

     repl   Run  a  repl in the same environment as the test environment. Allows
	    you to use built natives without installing them.

     debug-repl
	    Load the current project.janet file and start a repl in  it's  envi-
	    ronment.  This lets a user better debug the project file, as well as
	    run rules manually.

     make-lockfile [filename]
	    Create a lockfile. A lockfile is a record that describes what depen-
	    dencies were installed at the time of the lockfile's  creation,  in-
	    cluding  exact versions. A lockfile can then be later used to set up
	    that environment on a different machine via  load-lockfile.  By  de-
	    fault,  the  lockfile  is created at lockfile.jdn, although any path
	    can be used.

     load-lockfile [filename]
	    Install dependencies from a lockfile previously created  with  make-
	    lockfile.  By default, will look for a lockfile at lockfile.jdn, al-
	    though any path can be used.

     new-project [name]
	    Create a new Janet project interactively in a directory "name".

     new-c-project [name]
	    Create a new C+Janet project interactively in a directory "name".

     new-exe-project [name]
	    Create a new project for an executable in a directory "name".

ENVIRONMENT
     JANET_TREE
	    A convenient way to set the modpath, binpath, syspath,  and  manpath
	    all at once. This is equivalent to the --tree parameter to jpm.

     JANET_PATH
	    The  location to look for Janet libraries. This is the only environ-
	    ment variable Janet needs to find native and source code modules. If
	    no JANET_PATH is set, Janet will look in the default location set at
	    compile time, which can be determined with (dyn :syspath)

     JANET_MODPATH
	    The location that jpm will use to install libraries to. Defaults  to
	    JANET_PATH,  but  you could set this to a different directory if you
	    want to. Doing so would let you import Janet modules on  the  normal
	    system path (JANET_PATH or (dyn :syspath)), but install to a differ-
	    ent  directory.  It  is  also  a more reliable way to install.  This
	    variable is overwritten by the --modpath=/some/path if  it	is  pro-
	    vided.

     JANET_HEADERPATH
	    The  location that jpm will look for janet header files (janet.h and
	    janetconf.h) that are used to build native	modules  and  standalone
	    executables. If janet.h and janetconf.h are available as default in-
	    cludes  on your system, this value is not required. If not provided,
	    will default to <jpm script location>/../include/janet. The  --head-
	    erpath=/some/path option will override this variable.

     JANET_LIBPATH
	    Similar  to  JANET_HEADERPATH,  this path is where jpm will look for
	    libjanet.a for creating standalone executables. This does  not  need
	    to	be  set on a normal install.  If not provided, this will default
	    to <jpm script location>/../lib.   The  --libpath=/some/path  option
	    will override this variable.

     JANET_BINPATH
	    The  directory where jpm will install binary scripts and executables
	    to.  Defaults to (dyn :syspath)/bin  The  --binpath=/some/path  will
	    override this variable.

     JANET_BUILDPATH
	    The  directory  where  jpm will put intermediate files, object code,
	    and  compiled  executables.   Defaults  to	./build   The	--build-
	    path=/some/path  will  override  this variable. You should make that
	    directories above this directory exist before building.

     JANET_PKGLIST
	    The git repository URL that contains a listing of packages. This al-
	    lows installing packages with short names, which is mostly a  conve-
	    nience.  However,  package dependencies can use short names, package
	    listings can be used to choose a particular set of	dependency  ver-
	    sions for a whole project.

     JANET_GIT
	    An	optional  path to a git executable to use to clone git dependen-
	    cies. By default, uses "git" on the  current  $PATH.  You  shouldn't
	    need to set this if you have a normal install of git.

     JANET_JPM_CONFIG
	    An optional path to a config file to load. This option is overridden
	    by the --config-file command line option.

AUTHOR
     Written by Calvin Rose <calsrose@gmail.com>

									  JPM(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=jpm&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help