"Fetch and Run" philosophy - Download, compile, execute.
?jà (Yoruba for "Market") is the package manager for Ifá-Lang. It handles:
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"
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:
Iwe.toml - Project manifestsrc/main.ifa - Entry point.oja/ - Cache directory.gitignoreDownload 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:
.oja/audit.logBuild 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.
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
Run project tests (Idanwo).
ifa oja test
# Runs all *_test.ifa and test_*.ifa files in src/
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
Remove a dependency.
ifa oja remove crypto-utils
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.
List all dependencies.
ifa oja list
# Dependencies:
# - crypto-utils: "1.0.0"
# - data-tools: { git: "..." }
Upgrade Ifá-Lang CLI to latest version.
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
?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