continuous-integration/drone/push Build is passing
Details
|
1 year ago | |
---|---|---|
cli | 2 years ago | |
doc | 2 years ago | |
sql | 2 years ago | |
test | 2 years ago | |
web | 1 year ago | |
.drone.yml | 2 years ago | |
.gitignore | 2 years ago | |
CONVENTIONS.md | 3 years ago | |
README.md | 2 years ago | |
fill-repository.sh | 2 years ago | |
oki-api.yaml | 2 years ago |
README.md
██████╗ ██╗ ██╗██╗ ██╔═══██╗██║ ██╔╝██║ ██║ ██║█████╔╝ ██║ ██║ ██║██╔═██╗ ██║ ╚██████╔╝██║ ██╗██║ ╚═════╝ ╚═╝ ╚═╝╚═╝
Open pacKage Installer
oki(1) is a package manager for C and C++ projects, focused on configuration simplicity.
Oki can download project's dependencies and provide an integration to the build process.
You can browse the staging instance at oki-pkg.dev.
Specifications
Oki implements a dependency manager and a package repository.
The command line interface allows you to:
- bootstrap a new project using
oki init
- search for packages to add with
oki list
- install new dependencies with
oki install
- make sure your dependencies are up-to-date using
oki update
- publish your librairies to a package repository (
oki publish
) - visualize your dependency graph (
oki tree
)
The package repository interface enables you to:
- look for newly published packages
- summarize package information
- access the package README
- view dependents packages
Conception (written in French)
Prerequisites
Database
A PostgreSQL server is recommended in production. For development purposes, you may instead want to use an SQLite database.
On Debian: apt install postgresql
/ apt install sqlite3
Web
The backend is written in PHP >= 7.4.
Depending on the database you have chosen, the appropriate PDO extensions are also required.
On Debian (versions may vary): apt install php7.4-cli php7.4-pgsql php7.4-sqlite3
Command Line Interface
A C++ 20 compiler like GCC is needed, with the nlohmann/json, curl, toml++, boost::program_options and minizip libraries. Unit tests are using doctest.
On Debian: apt install build-essential nlohmann-json3-dev libcurl4-openssl-dev libminizip-dev libboost-program-options-dev doctest-dev
Some commands also use some clang tools like clang-format
and gcovr
.
On Debian: apt install clang-format gcovr
Quick setup
cd cli
./configure.sh -d
make BUILD=release
sudo make install BUILD=release
Development
Create a sample database and run the server
cd sql && ./create_sqlite_db.sh && cd ..
php -S localhost:8000 -t web/public
Compile the cli
At home
cd cli && make
At the IUT
cd cli && ./make-in-vdn.sh && unset http_proxy
Inspiration
- Cargo, the Rust package manager for its manifest format and command organization
- npm, the JavaScript package manager for its lockfile handling and website presentation
- pub, the Dart package manager for its dependency resolution algorithm
- semver, semantic versioning in order to know if a version is compatible with another