Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sepulworld/aptly_cli
Aptly client
https://github.com/sepulworld/aptly_cli
aptly aptly-server docker ruby
Last synced: about 1 month ago
JSON representation
Aptly client
- Host: GitHub
- URL: https://github.com/sepulworld/aptly_cli
- Owner: sepulworld
- License: mit
- Created: 2015-02-27T04:49:13.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2022-03-08T01:02:36.000Z (almost 3 years ago)
- Last Synced: 2024-05-01T20:14:13.778Z (9 months ago)
- Topics: aptly, aptly-server, docker, ruby
- Language: Ruby
- Homepage:
- Size: 401 KB
- Stars: 42
- Watchers: 4
- Forks: 14
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-repositories - sepulworld/aptly_cli - Aptly client (Ruby)
README
# AptlyCli
[![Build Status](https://travis-ci.org/sepulworld/aptly_cli.svg)](https://travis-ci.org/sepulworld/aptly_cli)
[![Gem Version](https://badge.fury.io/rb/aptly_cli.svg)](http://badge.fury.io/rb/aptly_cli)
[![Coverage Status](https://coveralls.io/repos/github/sepulworld/aptly_cli/badge.svg?branch=master)](https://coveralls.io/github/sepulworld/aptly_cli?branch=master)
[![](https://images.microbadger.com/badges/image/sepulworld/aptly-cli.svg)](http://microbadger.com/images/sepulworld/aptly-cli "Get your own image badge on microbadger.com")
[![](https://images.microbadger.com/badges/version/sepulworld/aptly-cli.svg)](http://microbadger.com/images/sepulworld/aptly-cli "Get your own version badge on microbadger.com")A command line interface to execute [Aptly](http://aptly.info) commands againts remote Aptly API servers. Aptly-cli will allow you to interact with the file, repo, snapshot, publish, packages, graph and version API endpoints of your Aptly server.
## Installation
### Install Gem:
$ gem install aptly_cli
or...
### Install and run aptly-cli from Docker:
# Optional: If you don't pull explicitly, `docker run` will do it for you
$ docker pull sepulworld/aptly-cli$ alias aptly-cli='\
docker run \
-v /etc/aptly-cli.conf:/etc/aptly-cli.conf \
-it --rm --name=aptly-cli \
sepulworld/aptly-cli'(Depending on how your system is set up, you might have to add `sudo` in front of the above `docker` commands or add your user to the `docker` group).
If you don't do the `docker pull`, the first time you run `aptly-cli`, the `docker run` command will automatically pull [the `sepulworld/aptly-cli` image on the Docker Hub](https://hub.docker.com/r/sepulworld/aptly-cli/). Subsequent runs will use a locally cached copy of the image and will not have to download anything.
Create a configuration file with aptly server and port, `/etc/aptly-cli.conf` (YAML syntax):
```yaml
---
:proto: http
:server: 127.0.0.1
:port: 8082
:debug: false
```If you use Basic Authentication to protect your API, add username and password:
```yaml
:username: api-user
:password: api-password
```The username and password can also be configured for prompt entry using
the following in `aptly-cli.conf`:```yaml
:username: ${PROMPT}
:password: ${PROMPT_PASSWORD}
```The tool will prompt for the specified values, where `${PROMPT}` results
in a regular prompt and `${PROMPT_PASSWORD}` results in a password
prompt where the input is replaced by asterisks, e.g.:$ aptly-cli version
Enter a value for username:
zane
Enter a value for password:
********Another possibility for storing passwords is `${KEYRING}`. To use this feature,
you must have the [`keyring` gem](https://github.com/jheiss/keyring) installed
and also have a system that is set up to use one of the backends that the
`keyring` gem supports, such as Mac OS X Keychain or GNOME 2 Keyring (Note:
Only Mac OS X Keychain has been tested thus far):$ gem install keyring
Then you can put something like this in `aptly-cli.conf`:
```yaml
:username: zane
:password: ${KEYRING}
```The first time you run an `aptly-cli` command, you will be prompted to enter a
password.$ aptly-cli version
Enter a value for password:
***************The entered password will be stored in your keyring so that future uses of
`aptly-cli` can get the password from your keyring:$ aptly-cli version
{"Version"=>"0.9.7"}Also make sure that your config file isn't world readable (```chmod o-rw /etc/aptly-cli.conf```)
If a configuration file is not found, the defaults in the example
configuration file above will be used.## Usage - available aptly-cli commands
The `--config` (`-c`) option allows specifying an alternative config file, e.g.:
$ aptly-cli -c ~/.config/aptly-cli/aptly-cli.conf repo_list
The `--server`, `--port`, `--username`, and `--password` options allow specifying
those things on the command-line and not even requiring a config file.$ aptly-cli --server 10.3.0.46 --port 9000 --username marca --password '${PROMPT_PASSWORD}' repo_list
Note that you can use `${PROMPT}`, `${PROMPT_PASSWORD}`, and `${KEYRING}` in
the values of these options, just as you can in a config file. Note that you
might have to quote them to prevent the shell from trying to expand them.$ aptly-cli --help
NAME:aptly-cli
DESCRIPTION:
Aptly repository API client (https://github.com/sepulworld/aptly_cli)
COMMANDS:
file_delete File delete
file_list List all directories
file_upload File upload
graph Download an svg or png graph of repository layout
help Display global or [command] help documentation
publish_drop Delete published repository
publish_list List published repositories
publish_repo Publish local repository or snapshot under specified prefix
publish_update Update published repository
repo_create Create a new repository, requires --name
repo_delete Delete a local repository, requires --name
repo_edit Edit a local repository metadata, requires --name
repo_list Show list of currently available local repositories
repo_package_add Add existing package to local repository
repo_package_delete Delete package from local repository
repo_package_query List all packages or search on repo contents, requires --name
repo_show Returns basic information about local repository
repo_upload Import packages from files
snapshot_create Create snapshot, require --name
snapshot_delete Delete snapshot, require --name
snapshot_diff Calculate difference between two snapshots
snapshot_list Return list of all snapshots created in the system
snapshot_search List all packages in snapshot or perform search
snapshot_show Get information about snapshot by name
snapshot_update Update snapshot’s description or name
version Display aptly server versionGLOBAL OPTIONS:
-c, --config FILE
Path to YAML config file
--no-config
Don't try to read YAML config file
-s, --server SERVER
Host name or IP address of Aptly API server-p, --port PORT
Port of Aptly API server
--username USERNAME
User name or '${PROMPT}'--password PASSWORD
Password or '${PROMPT_PASSWORD}' or '${KEYRING}'--debug
Enable debug output-h, --help
Display help documentation-v, --version
Display version information-t, --trace
Display backtrace when an error occurs### To see more options for each command
$ aptly-cli --help
## Development
### Measuring coverage locally
```
$ rake docker_pull
$ rake docker_run
$ bundle exec rake test
...
Coverage report generated for Unit Tests to /Users/marca/dev/git-repos/aptly_cli/coverage. 521 / 566 LOC (92.05%) covered.
[Coveralls] Outside the CI environment, not sending data.$ open coverage/index.html
```### Rubocop syntax and style check
```bash
$ bundle exec rake rubocop
Running RuboCop...
Inspecting 24 files
WCCCWC..CCCC.CCC.WCWCCCC
...
```To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
Ruby Minitest are implemented using a Docker container for functional tests.
Rake tasks available:
```bash
rake build # Build aptly_cli-.gem into the pkg directory
rake clean # Remove any temporary products
rake clobber # Remove any generated files
rake docker_build # Docker build image
rake docker_list_aptly # List Docker Aptly running containers
rake docker_pull # Pull Docker image to Docker Hub
rake docker_push # Push Docker image to Docker Hub
rake docker_restart # Restart Aptly docker container
rake docker_run # Start Aptly Docker container on port 8082
rake docker_show_logs # Show running Aptly process Docker stdout logs
rake docker_stop # Stop running Aptly Docker containers
rake install # Build and install aptly_cli-.gem into system gems
rake install:local # Build and install aptly_cli-.gem into system gems without network access
rake rubocop # Run RuboCop
rake rubocop:auto_correct # Auto-correct RuboCop offenses
rake test # Run tests
```## Contributing
1. Fork it ( https://github.com/[my-github-username]/aptly_cli/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request## Related
- [ruby-aptly](https://github.com/ryanuber/ruby-aptly) - Ruby client library
- [aptly-web-ui](https://github.com/sdumetz/aptly-web-ui) - Web interface for aptly (JavaScript, React, Redux)