The Agda Package Manager
Project description
agda-pkg
The Agda package manager that we all have been waiting for. This
tool do not modify Agda
at all, it will just manage systematically the directory
.agda
and its files: .agda/defaults
and .agda/libraries
.
For more information about how the Agda package system works, read
the official documentation here.
Table of contents
Quick Start
To install agda-pkg
, you must have installed Python 3.6+
or a latter version
on your machine. In addition, the python package manager pip 18.0+
.
We have tested agda-pkg
with Agda v2.5.4+
.
Installing using pip
:
$ pip install agda-pkg
Now, we can run the package manager using the command agda-pkg
or even
shorter just apkg
.
Usage
Initialisation of the package index
The easiest way to get some libraries s by using the package index. We will use this index to download and to install
the libraries. In addition, agda-pkg
use a local database to
maintain a register of all libraries available in your system. To initialise the index and the database run the following command:
$ apkg init
Indexing libraries from https://github.com/apkgbot/package-index.git
Help command
Check all the options of a command or subcommand by using the flag --help
.
$ apkg --help
Upgrade the package index
Recall updating the index every once in a while
$ apkg upgrade
Updating Agda-Pkg from https://github.com/apkgbot/package-index.git
If you want to index your library make a PR in the package index
List all the packages available
To see all the package available run the following command:
$ apkg list
This command also has the flag --short
to display a short version of the
same list. For instance,
$ apkg list --short
Name Last version Description
-----------------------------------------------------
agda-metis v0.2.1 Missing.
agda-prelude 4e0caf0 Missing.
agda-prop v0.1.2 Missing.
agdarsec v0.1.1 Missing.
alga-theory 0fdb96c Missing.
fotc apia-1.0.2 Missing.
hott-core 937e227 Missing.
hott-theorems 937e227 Missing.
standard-library v0.16.1 Missing.
Installation of packages
Install a library is now easy. We have multiple ways to install a package.
- from the package-index
$ apkg install standard-library
- from a local directory
$ apkg install .
- from a github repository
$ apkg install --github agda/agda-stdlib --version v0.16
- from a git repository
$ apkg install http://github.com/jonaprieto/agda-prop.git
- from a tar ball file (coming soon).
Installation of multiple packages at once
We may want to install multiple libraries at once, so we have two options:
- Using the inline method
$ apkg install standard-library agda-prop agda-metis
- Using a requirement file:
Generate a requirement file using apkg freeze
:
$ apkg freeze > requirements.txt
$ cat requirements.txt
agda-metis==0.1
agda-prop==0.1.1
Now, use the flag -r
to install all the listed libraries
in this file:
$ apkg install -r requirements.txt
Lastly, to see all the options, pleasee check out the help information:
$ apkg install --help
Uninstalling a package
Uninstall a package by default, just hide the library for Agda but no remove the sources:
$ apkg uninstall standard-library
If you want to remove completely the source and everything, use remove-cache flag.
$ apkg uninstall standard-library --remove-cache
See packages installed
$ apkg freeze
Useful to save the versions used for each library:
$ apkg freeze > requirements.txt
You may want to install from the requirements file:
$ apkg install < requirements.txt
Approximate search of packages
We make a search (approximate) by using keywords and title of the packages in the index. To perform such a search, see the following example:
$ apkg search metis
1 result in 0.0026731969992397353seg
matches: {'name': [b'agda-metis']}
agda-metis
==========
url: https://github.com/jonaprieto/test-agdapkgbot.git
Get all the information of a package
$ apkg info agda-prop
library: agda-prop
sha: 6b2ea8e099ac6968004ec57d96f19b46bcb081ff
Creating a library for Agda-Pkg
Directory structure of an agda library
A common Agda library has the following structure:
$ tree -L 1 mylibrary/
mylibrary/
├── LICENSE
├── README.md
├── mylibrary.agda-lib
├── mylibrary.agda-pkg
├── src
└── test
2 directories, 3 files
.agda-lib library file
$ cat mylibrary.agda-lib
name: mylibrary -- Comment
depend: LIB1 LIB2
LIB3
LIB4
include: PATH1
PATH2
PATH3
.agda-pkg library file
This file only works for agda-pkg
. The idea of
this file is to provide more information about the
package, pretty similar to the cabal files in Haskell.
This file has priority over its version .agda-lib
.
$ cat mylibrary.agda-pkg
name: mylibrary
version: 0.0.1
author: AuthorName
category: [ classic, logic, theorems ]
homepage: http://github.com/user/mylibrary
license: MIT
license-file: LICENSE.md
source-repository: http://github.com/user/mylibrary.git
tested-with: 2.5.6
description: Put here a description.
include:
- PATH1
- PATH2
- PATH3
depend:
- LIB1
- LIB2
- LIB3
- LIB4
About
This is a proof of concept of an Agda Package Manager. The Haskell version is in a very early stage.
Any contribution or feedback to improve this work is very welcomed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for agda_pkg-0.1.23-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24049227a69e1030a4ef02677c9b32a7c6d4993e46c714b523812f14b46cd64b |
|
MD5 | 562ee6d81ab5f2b51b8c1962e785e40d |
|
BLAKE2b-256 | 2b63ad0dbb99a43f8fc3457f187f926b79339fa17158d9393b13f431c3471f25 |