PAK(1)                           User Commands                          PAK(1)

       pak - Embedthis Pak -- Package Manager

           --cache dir
           --dir dir
           --log file:level
           --name name
           --paks dir
           commands ...

           cache packages...
           cached packages...
           depend packages...
           edit key[=value]
           init [name [version]]
           install packages...
           list packages...
           profile [debug|release|...]
           prune packages...
           search packages...
           uninstall packages...
           update packages...
           upgrade packages...
           version [major|minor|patch|other]

       Pak is a package manager for application components.

       Existing  package managers like NPM are excellent, but they are heavily
       focussed the needs of NodeJS and not for non-Node applications or  gen-
       eral application components. Pak is agnostic to its environment and can
       be used to install components for any application.

       Pak has the following major features:

           . Install, list and uninstall packages into a local application
           . Manages a local cache of retrieved packages
           . Easy upgrading packages when new versions become available
           . Automatically retrieves and installs dependent packages
           . Supports the CommonJS package standard
           . Supports the SemVer package versioning standard
           . Supports using GitHub and NPM as the primary package repository

       While Pak has a strong feature set, there are some characteristics that
       make Pak particularly sweet.

           . Fast, fast, fast.
           . Local cache of packages supports fast offline use.
           . Catalog web portal to search published packages.
           . Package.json is compatible with nodejs.

       To install packages:
           pak install Endpoints...

       Where  an  ENDPOINT  can be the name of a package published in a GitHub
       account/repository or a path to a local package directory. For example:

           pak install jquery
           pak install embedthis/exp-js
           pak install
           pak install
           pak install ./my-source/graphics

       To uninstall
           pak uninstall Endpoints...

       To list installed packages
           pak list

       To display package dependencies
           pak depend

       To  show  what  packages are present in the cache and where they origi-
           pak cached

       To download and cache a package but not install in the local directory
           pak cache Name

       To prune old versions from the cache
           pak prune

       A package is described by a pak.json file (similar  to  the  NPM  pack-
       age.json file). This provides at a minimum the following properties.

                "name": "Package name - one word"
                "description": "Package description - one line"
                "version": "1.2.3",
                "keywords": [
                    "comms", "websockets", "sockets", "ssl",
                "author": {
                    "name": "Your name",
                    "email": "Your email",
                    "url": "Your web site"
                "bugs": {
                    "email": "",
                    "url": ""
                "license": "GPL",
                "dependencies": {
                    "name": "version"
                } }

       For more details, see:

       To  run  Pak  with  more  verbose  trace output, use the [-v] --verbose
       switch. To run with less trace, use the [-q] --quiet  switch.   To  run
       completely silently except for hard-errors, use --silent.

       On  startup,  Pak  reads  configuration  from  a  pakrc file. This file
       defines the operational configuration for Pak.

       The "catalogs" property defines sites that index and catalog packs. The
       "paks"  directory  is the name of the local directory in which to store
       packages. The "pakcache" directory defines where to cache  packages  on
       the local system.

       Pak locates a valid pakrc file by searching in order:

           pakrc, .pakrc, ../pakrc, ../.pakrc, /etc/pakrc, pak.json

       cache [packages...]
              Download and populate the cache with packages.

       cached [packages...]
              List packages in the cache.

       config Show the Pak configuration.

       depend [packages...]
              Display installed package dependencies.

       edit key[=value]...
              Edit a value in the pak.json package description file.

       help ...
              Display this Pak usage help.

       info packages...
              Display the README for a cached package.

       init [name [version]]
              Create a new pak.json.

       install packages...
              Install a package on the local system. The package name can be a
              name in an online catalog or it can be a GitHub endpoint URL  or
              of  the  form  'account/repositiory'.  Use the --write option to
              update the pak.json dependencies with the install  package.  Use
              with the --optional switch to update the optionalDependencies.

       list [packages...]
              List the installed packages.

              Lockdown   the  version  criteria  for  all  dependencies.  This
              rewrites the pak.json to define a compatible version  expression
              for all installed dependencies.

              Index in the profiles property. The selected property collection
              is copied up to the top level. This may  be  used  to  select  a
              "debug" or "release" configuration.

       prune [packages...]
              Prune named packages.

       search packages...
              Search for packages in the catalogs.

              Uninstall  an  installed package. Use --write to remove from the
              package dependencies.

       update [packages...]
              Update the pak cache with latest available version of the  pack-
              age.  This will check with catalogs to determine the most recent
              versions of a package and will download the package and save  in
              the cache.

       upgrade [packages...]
              Upgrade  installed packages with the latest version of the pack-
              age. This will update the cache if required.  Use --noupdate  to
              upgrade  only  from the local cache without downloading new ver-

       version [major|minor|patch|other]
              Update the version by incrementing the relevant major, minor  or
              patch  portion of the version string.  Alternatively, provide an
              exact version string to set. Without any argument, 'pak version'
              will print the current version.

       --all URI
              Show all versions of a package.

       --cache directory
              Specify  the directory to use for the paks cache. This overrides
              the values specified in the various pakrc or pak.json files.

       --details URI
              Show more package details. Useful with "pak list".

       --dir directory
              Change to the given directory before running.

              Force the command to continue. This  is  useful  to  install  or
              cache  a  package  when dependencies cannot be satisfied.  It is
              also useful to cache  or  install  an  already  cached/installed
              pack. Aliased as -f.

              --init  Initialize  the directory by creating a pak.json file if
              one does not already exist. The name of the application  is  set
              to the basename of the directory.

       --log logName[:logLevel]
              Specify  a file to log internal execution messages. Bit will log
              execution related trace to the log file. The log level specifies
              the  desired  verbosity  of output. Level 0 is the least verbose
              and level 9 is the most. The '-v' switch is an alias for  '--log

              Used to suppress installing or upgrading dependent packages.

              Used when installing packages to add them to the 'optionalDepen-
              dencies' list instead of as a hard dependency.

       --paks directory
              Specify the local "paks" directory in which to install packages.
              This  overrides  the  values  specified  in the various pakrc or
              pak.json files.

              Run in quiet mode with less verbose otuput. Aliased as -q.

              Run in silent mode suppressing all but hard errors.  Aliased  as

       --versions URI
              Show package version information.

       --write URI
              Write   installed   packages   to   pak.json  dependencies.  Use
              --optional to update optionalDependencies.   When  uninstalling,
              --write will remove the package from the dependencies and update
              the pak.json.

       Report bugs to

       Copyright (C) Embedthis Software. Bit and Ejscript are a trademarks  of
       Embedthis Software.


pak                               March 2014                            PAK(1)