pkgcloud

command module
v0.0.0-...-e7631cd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2018 License: Apache-2.0 Imports: 1 Imported by: 0

README

Installation

Setup a Go Environment if you don't have one already

Then go get the pkgcloud

go get github.com/edwarnicke/pkgcloud/

You should now find:

ls ${GOPATH}/bin/pkgcloud

Client Usage

Get all packages in a repo

pkgcloud all <user/repo>

Get all packages with Custom Template

pkgcloud all <user/repo> -t <template>

The template is in Go template format

The following fields are available:

Template Description Example
{{.Name}} The name of the package "jake"
{{.CreatedAt}} When the package was uploaded "2017-03-13T02:49:29.000Z"
{{.Epoch}} The epoch of the package (if available) 0
{{.Scope}} The scope of the package (if available) null
{{.Private}} Whether or not the package is in a private repository false
{{.UploaderName}} The name of the uploader for the package. "test_user"
{{.Indexed}} Whether or not this package has been indexed. false
{{.RepositoryHTMLURL}} The HTML url of the repository. "/test_user/test_repo"
{{.DownloadDetailsURL}} The url to get access log details for package downloads. "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/detail.json"
{{.DownloadSeriesURL}} The url to get time series data for package downloads. "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/series/daily.json"
{{.DownloadCountURL}} The url to get the total number of package downloads. "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6/stats/downloads/count.json"
{{.PromoteURL}} The url for promoting this to another repository. "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm/promote.json"
{{.DestroyURL}} The url for the HTTP DELETE request to destroy this package "/api/v1/repos/test_user/test_repo/fedora/22/jake-1.0-1.el6.x86_64.rpm"
{{.Filename}} The filename of the package. "jake-1.0-1.el6.x86_64.rpm"
{{.DistroVersion}} The distro_version for the package. "fedora/22"
{{.Version}} The version of the package. "1.0"
{{.Release}} The release of the package (if available) "1.el6"
{{.Type}} The type of package ("deb", "gem", or "rpm"). "rpm"
{{.PackageURL}} The API url for this package "/api/v1/repos/test_user/test_repo/package/rpm/fedora/22/jake/x86_64/1.0/1.el6.json"
{{.PackageHTMLURL }} The HTML url for this package "/test_user/test_repo/packages/fedora/22/jake-1.0-1.el6.x86_64.rpm"

In addition, some 'methods' are provided:

Method Description
{{.DaysOld}} Number of days since the package has been uploaded. Derived from {{.CreatedAt}}
{{.Promote "user/repo"}} Promote the package to the named repo. Note: Does have side effects to packagecloud.io unless you use -d or --dry-run flags.
{{.Destroy}} Destroy the package. Note: Does have side effects to packagecloud.io unless you use -d or --dry-run flags.
Example: Filter for only packages with {{.Release}} equal "release"
pkgcloud all fdio/1710 -t $'{{if eq .Release "release"}}{{.PackageHTMLURL}}\n{{end}}' 

which produces output:

/fdio/1710/packages/ubuntu/xenial/vpp-api-java_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-api-lua_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-dbg_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-dev_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-lib_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-plugins_17.10-release_amd64.deb
/fdio/1710/packages/ubuntu/xenial/vpp-api-python_17.10-release_amd64.deb
/fdio/1710/packages/el/7/vpp-lib-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-devel-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-plugins-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-api-lua-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-api-java-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-api-python-17.10-release.x86_64.rpm
/fdio/1710/packages/el/7/vpp-17.10-release.x86_64.rpm

Lets break down some things about the commandline. First $'string\n' escapes the string so that newlines can be represented with \n. Second {{if eq .Release "release"}}...{{end}} is an if statement the body of which is only evaluated if Release == "release" Third {{.PackageHTMLURL}}\n outputs the package html url for any packages that match the if statement

Example: Promote packages with {{.Release}} equal "release" to "fdio/staging"
pkgcloud all fdio/1804 -t $'{{if eq .Release "release"}}{{.Promote "fdio/staging" }}\n{{end}}' -d

{{.Promote "fdio/staging" }} Promotes any packages that that passthe if statement to repo "fdio/staging".

-d causes this to be a 'dry run'... meaning it doesn't actually promote, just tells you what it would do to promote.

Example: Filter for only packages older than 415 days
pkgcloud all fdio/1707 -t $'{{if gt .DaysOld 415}}{{.PackageHTMLURL}}: {{.DaysOld}}\n{{end}}'

Which outputs:

/fdio/1707/packages/ubuntu/xenial/vpp_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-plugins_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-api-python_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-dbg_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-dev_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-lib_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-api-lua_17.07-rc1~b2_amd64.deb: 416
/fdio/1707/packages/ubuntu/xenial/vpp-dpdk-dkms_17.05-vpp5_amd64.deb: 416
/fdio/1707/packages/el/7/vpp-dpdk-devel-17.05-vpp5.x86_64.rpm: 416
Example: Filter for only packages older than 415 days and promote them to repo "fdio/backup"
pkgcloud all fdio/1707 -t $'{{if gt .DaysOld 415}}{{.Promote "fdio/backup"}}\n{{end}}' -d

In this command, {{.Promote "fdio/backup"}} promotes the packages that pass the filter of {{if gt .DaysOld 415}} to the repo "fdio/backup". Note the -d, which causes this to be a dry run. If you really want to perform the promote, remove the -d

Example: Filter for only packages older than 475 days and delete them:
pkgcloud all fdio/backup -t $'{{if gt .DaysOld 475}}{{.Destroy}}\n{{end}}' -d

In this command, {{.Destroy}} deletes the packages that pass the filter of {{if gt .DaysOld 415}}. Note the -d, which causes this to be a dry run. If you really want to perform the delete, remove the -d

Pushing packages

pkgcloud push user/repo/distro/version/ filename

There are two optional flags for pkgcloud push:

  • -d or --dry-run: which will tell you what would be done for pushing the package, but will not in fact push it, or delete if used in conjunction with -f
  • -f or --force: If and only if the package to-be-pushed already exists in packagecloud.io, delete it and then push.

Acknowledgement

This is based on the wonderful golang pkgcloud package provided by Mathias Lafeldt.

Documentation

Overview

Copyright (c) 2018 Cisco and/or its affiliates.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
Package pkgcloud allows you to talk to the packagecloud API.
Package pkgcloud allows you to talk to the packagecloud API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL