Skip to content

OSS Download

Gabe Stocco edited this page Jun 4, 2021 · 1 revision

OSS Download provides a shortcut to download a package. This can be useful in a few different scenarios:

  • You are operating across multiple package management ecosystems.
  • You don't have (or want) native tools installed, like NPM or Python/PIP.
  • You need to download many packages, and therefore cannot use a web-browser.

OSS Download takes a Package URL and calls a module specific to the package manager. For example, if an NPM package is requested, code will run to query the NPM registry for the project, searching for the correct binary. Once found, it downloads it, and by default, extracts it into a new directory.

Note that for GitHub projects, the git ls-remote command is currently needed to enumerate tags, which means that you need to have git installed and available on the path.

Usage information from --help

USAGE:
Download the given package:
  oss-download --download-directory . [options] package-url...

  -x, --download-directory        (Default: .) the directory to download the package to.
  -m, --download-metadata-only    (Default: false) download only the package metadata, not the package.
  -e, --extract                   (Default: false) Extract the package contents
  -c, --use-cache                 (Default: false) do not download the package if it is already present in the
                                  destination directory.
  --help                          Display this help screen.
  --version                       Display version information.

The package-url specifier is described at https://github.com/package-url/purl-spec:
  pkg:cargo/rand                The latest version of Rand (via crates.io)
  pkg:cocoapods/AFNetworking    The latest version of AFNetworking (via cocoapods.org)
  pkg:composer/Smarty/Smarty    The latest version of Smarty (via Composer/ Packagist)
  pkg:cpan/Apache-ACEProxy      The latest version of Apache::ACEProxy (via cpan.org)
  pkg:cran/ACNE@0.8.0           Version 0.8.0 of ACNE (via cran.r-project.org)
  pkg:gem/rubytree@*            All versions of RubyTree (via rubygems.org)
  pkg:golang/sigs.k8s.io/yaml   The latest version of sigs.k8s.io/yaml (via proxy.golang.org)
  pkg:github/Microsoft/DevSkim  The latest release of DevSkim (via GitHub)
  pkg:hackage/a50@*             All versions of a50 (via hackage.haskell.org)
  pkg:maven/org.apdplat/deep-qa The latest version of org.apdplat.deep-qa (via repo1.maven.org)
  pkg:npm/express               The latest version of Express (via npm.org)
  pkg:nuget/Newtonsoft.JSON     The latest version of Newtonsoft.JSON (via nuget.org)
  pkg:pypi/django@1.11.1        Version 1.11.1 fo Django (via pypi.org)
  pkg:ubuntu/zerofree           The latest version of zerofree from Ubuntu (via packages.ubuntu.com)
  pkg:vsm/MLNET/07              The latest version of MLNET.07 (from marketplace.visualstudio.com)
  pkg:url/foo@1.0?url=<URL>     The direct URL <URL>
Clone this wiki locally