Skip to content
This repository has been archived by the owner on Apr 6, 2023. It is now read-only.

New coapp command line interface

fearthecowboy edited this page Aug 23, 2011 · 15 revisions

CoApp Command line client interface

The CoApp command line client has a simple, yet flexible interface.

When redirecting or piping the results of a CoApp command, the tool will suppress cosmetic formatting and simply list the results of the given command (very useful for chaining the results of one execution into another).

General Usage:

CoApp [options] <command> <parameters>

Commands

All commands are in the form verb-noun (similar to powershell cmdlets) and can be followed by zero or more parameters.

Any commands that takes parameters after the command will accept a list of packages on the command line or via stdin.

List Packages
list-package <pkg-spec>...

Lists all packages that meet the criteria.

Get Package Information
get-packageinfo <pkg-spec>...

Returns extended package information for all packages that meet the criteria.

Install Package
install-package <pkg-spec>...

Installs all packages that meet the criteria.

Options for installing packages
Option Description
--upgrade:fail Returns an error message if a the user attempts to install a package that isn't the most recent version.
--upgrade:true Default Automatically upgrades packages to the most recent version that can be installed.
--upgrade:false Forces the package manager to install the version specified.
--force:true Forces the package manager to install the package even if the dependencies can not be resolved or installed.
Remove Package
remove-package <pkg-spec>...

Removes all packages that meet the criteria.

Update Package
update-package <pkg-spec>...

Updates all packages that meet the criteria to the latest version.

Trim unused packages
trim 

Removes all unrequested and unnessary packages.

set package to active
activate-package <pkg-spec>...

Marks a given package as the 'active' one (likely, makes it the default in the path).

Block a package from upgrading
block-package <pkg-spec>...

Marks a package so that it can't be updated or removed .

Unblock a package
unblock-package <pkg-spec>...

Marks a package so that it can be updated or removed.

Mark a package as 'user requested'
mark-package <pkg-spec>...

Marks a package as 'user requested'--so that a trim function will not remove it.

Unmark a package as 'user requested'
unmark-package <pkg-spec>...

Unmarks a package as 'user requested'--may be removed if the package isn't a dependency of another package

List Package Feeds
list-feed

Lists all the package feeds known

Add Package Feed
add-feed <feed-location>...

Adds a package feed to the system.

Remove Package Feed
remove-feed <feed-location>...

Removes a package feed from the system.

Parameters

Specifying packages
<pkg-spec>...

Packages have a canonical name (in the form packagename-##.##.##.##-arch-publickeytoken) which uniquely identifies it apart from other packages. Commands expecting a package name will always take the full canonical name or alternatively, the user can provide a partial name and CoApp will attempt to determine what the user is requesting.

Generally there are three types of inputs that can be specified for the package:

  • a canonical package name (or partial canonical name)

If a wildcard * is present in the given name, that will match against the rest of the name.

If there isn't a wildcard specfied, and the given value isn't a complete canonical name, the package manager will add a wildcard, in one of two ways:

  • if the given name contains a dash (-), a * will be appended to the end of the given name.
  • if the given name doesn't contain a dash (-), a -* will be appended to the end of the given name.

Examples:

Matching an exact package:

    firefox-1.2.3.4-x86-1234123412341234 

Matching a given version from any publisher:

    firefox-1.2.3.4-x86
    firefox-1.2.3.4-x86*
    firefox-1.2.3.4-x86-*

Matching a version (will attempt to get the platform that is currently running)

    firefox-1.2.3.4-*

Match a partial version:

    firefox-1.
    firefox-1.* 

Or just the package name:

    firefox                                   
    firefox-*

Or, all packages starting with firefox

    firefox*
  • a local path (to either a package file or a package directory for use as a package feed ) Examples:
    (single file examples)
    c:\desktop\myprogram-1.0.0.0-any.msi 

    (package feed examples)
    c:\users\garrett\downloads\packages
    c:\users\garrett\downloads\packages\special\*.msi
    c:\users\garrett\downloads\packages
  • a URL (to either a remote package file, or a package atom feed for use as a package feed )
    (single file examples)
    http://coapp.org/repository/coapp.tools-1.2.3.4-any.msi 

    (package feed examples)
    http://coapp.org/feed
    http://www.somecompany.com/packages.xml

Options for filtering packages

There are several options that can be used to filter the list of packages:

Option Description
--name=<text> filters the list of packages by the given name. may contain Wildcard
--min-version=<text> filters the list of packages by packages of at least the given version
--max-version=<text> filters the list of packages by packages of at most the given version
--arch=<value> filters the list of packages by the given archetecture { x86, x64, any, all }
--public-key-token=<text> filters the list of packages by the given public key token (this lets you choose packages by a particular publisher)
--installed=<value> filters based on if the package is installed { true,false,all }
--active=<value> filters based on if the package is the currently active version { true,false,all }
--required=<value> filters based on if the package is required by the user (or as a dependency of a required package) { true,false,all }
--blocked=<value> filters based on if the package is blocked { true,false,all }
--latest=<value> filters to just the highest version { true,false,all }
Specifying package feed locations
<feed-location>...

Generally there are two types of inputs that can be specified for package feeds:

  • a local path (either a package directory, or a file mask for use as a package feed)

Examples:

    c:\users\garrett\downloads\packages
    c:\users\garrett\downloads\packages\special\*.msi
    c:\users\garrett\downloads\packages
  • a URL (a package atom feed for use as a package feed )

Examples:

    http://coapp.org/feed
    http://www.somecompany.com/packages.xml

Options

General options

Forces feeds to be rescanned to find updated package information:

--force-scan 
installing
Clone this wiki locally