A package manager for C and C++ applications https://oki-pkg.dev
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Clément FRÉVILLE b479514382
continuous-integration/drone/push Build is passing Details
web: Émets des codes de statut HTTP plus détaillés
1 year ago
cli cli: Mets à jour l'adresse du proxy 2 years ago
doc doc: Ajoute des instructions pour PostgreSQL 15 2 years ago
sql Merge branch 'random-test' 2 years ago
test test: Refactor le générateur de paquets 2 years ago
web web: Émets des codes de statut HTTP plus détaillés 1 year ago
.drone.yml Mets à jour docdeployer 2 years ago
.gitignore web: Augmente le niveau de PHPStan 2 years ago
CONVENTIONS.md Met à jour la convention de style PHP 3 years ago
README.md Mets à jour docdeployer 2 years ago
fill-repository.sh Corrige une phrase 2 years ago
oki-api.yaml web(api): Débute les pages à 1 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