?? ?jà Package Manager

"Fetch and Run" philosophy - Download, compile, execute.

Overview

?jà (Yoruba for "Market") is the package manager for Ifá-Lang. It handles:

Manifest: Iwe.toml

?? Iwe.toml

Every Ifá-Lang project has an Iwe.toml manifest file:

[package]
name = "my-project"
version = "0.1.0"
description = "My Ifá-Lang project"
authors = ["Your Name"]

[dependencies]
crypto-utils = "1.0.0"
data-tools = { git = "https://github.com/org/data-tools.git" }
local-lib = { path = "../my-lib" }

[dev-dependencies]
test-utils = "0.5.0"

Commands

ifa oja init <name> --domain <type>

Initialize a new project with domain-specific template.

# Standard project
ifa oja init my-app

# Game development project
ifa oja init my-game --domain game

# ML/AI project
ifa oja init neural-net --domain ml

# Fullstack hybrid project
ifa oja init webapp --domain fusion

# IoT embedded project
ifa oja init sensor-hub --domain iot

# Monorepo workspace
ifa oja init my-workspace --domain workspace

Creates:

ifa oja fetch Audited

Download and compile all dependencies to native code.

ifa oja fetch

# Output:
# ?? Fetching dependencies...
#    - crypto-utils
#      ? Downloading: https://github.com/...
#      ?? Verifying GPG signature... PASSED
#      ? Compiled (a1b2c3d4)
# ? Ready to run.

Features:

ifa oja build

Build the project to native executable.

ifa oja build

# Output:
# ?? Building Package: my-app v0.1.0
#    ?? Parsing Ifá source...
#    ?? Transpiling to Rust...
#    ??? Compiling with Cargo...
#    ? Built: my-app.exe

Transpiles Ifá source to Rust, then compiles with Cargo.

ifa oja run [args...] Fast

Run the project (compiled binary or interpreted).

# Run compiled binary
ifa oja run

# Run with arguments
ifa oja run -- --input data.txt

# Falls back to interpreted mode if no binary

ifa oja test

Run project tests (Idanwo).

ifa oja test

# Runs all *_test.ifa and test_*.ifa files in src/

ifa oja add <url> [--as <alias>]

Add a dependency to the project.

ifa oja add https://github.com/ifa-lang/crypto-utils
ifa oja add https://github.com/ifa-lang/data-tools --as tools

ifa oja remove <name>

Remove a dependency.

ifa oja remove crypto-utils

ifa oja publish

Publish package to registry (Git-based).

ifa oja publish

# Output:
# ?? Publishing package...
#    Version: 1.0.0
#    ?? Checking git status...
#    ??? Creating tag: v1.0.0
#    ?? Pushing to remote...
# ? Published successfully!

Requires: Clean git working directory, remote configured.

ifa oja list

List all dependencies.

ifa oja list

# Dependencies:
#   - crypto-utils: "1.0.0"
#   - data-tools: { git: "..." }

ifa oja upgrade

Upgrade Ifá-Lang CLI to latest version.

Directory Structure

my-project/
+-- Iwe.toml           # Project manifest
+-- src/
¦   +-- main.ifa       # Entry point
+-- .oja/
¦   +-- lib/           # Downloaded packages
¦   +-- cache/         # Compiled artifacts (.cwasm)
¦   +-- audit.log      # Security audit log
+-- .gitignore

Workspace (Monorepo)

?jà supports monorepo workspaces:

# Initialize workspace
ifa oja init my-workspace --domain workspace

# Iwe.toml
[workspace]
members = ["backend", "frontend"]

# Build all members
ifa oja build