dev/pbs #8

Merged
bquarkz merged 74 commits from dev/pbs into master 2026-02-03 15:28:31 +00:00
4 changed files with 30 additions and 10 deletions
Showing only changes of commit ada072805e - Show all commits

View File

@ -134,7 +134,7 @@ mod tests {
use crate::deps::resolver::{ProjectId, ResolvedEdge, ResolvedGraph, ResolvedNode};
use crate::manifest::Manifest;
use crate::sources::ProjectSources;
use std::collections::HashMap;
use std::collections::BTreeMap;
fn mock_node(name: &str, version: &str) -> ResolvedNode {
ResolvedNode {
@ -144,7 +144,7 @@ mod tests {
name: name.to_string(),
version: version.to_string(),
kind: crate::manifest::ManifestKind::Lib,
dependencies: HashMap::new(),
dependencies: BTreeMap::new(),
},
sources: ProjectSources {
main: None,

View File

@ -95,6 +95,10 @@ pub enum Commands {
Verify {
/// Path to the project root directory.
project_dir: PathBuf,
/// Whether to explain the dependency resolution process.
#[arg(long)]
explain_deps: bool,
},
}
@ -125,10 +129,10 @@ pub fn run() -> Result<()> {
let compilation_unit = compiler::compile_ext(&project_dir, explain_deps)?;
compilation_unit.export(&out, emit_disasm, emit_symbols)?;
}
Commands::Verify { project_dir } => {
Commands::Verify { project_dir, explain_deps } => {
println!("Verifying project at {:?}", project_dir);
compiler::compile(&project_dir)?;
compiler::compile_ext(&project_dir, explain_deps)?;
println!("Project is valid!");
}
}

View File

@ -1,5 +1,5 @@
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::collections::BTreeMap;
use std::fs;
use std::path::{Path, PathBuf};
@ -40,7 +40,7 @@ pub struct Manifest {
#[serde(default)]
pub kind: ManifestKind,
#[serde(default)]
pub dependencies: HashMap<Alias, DependencySpec>,
pub dependencies: BTreeMap<Alias, DependencySpec>,
}
#[derive(Debug)]

View File

@ -37,6 +37,10 @@ enum Commands {
Build {
/// Project source directory.
project_dir: String,
/// Whether to explain the dependency resolution process.
#[arg(long)]
explain_deps: bool,
},
/// Packages a cartridge directory into a distributable .pmc file.
Pack {
@ -56,6 +60,10 @@ enum VerifyCommands {
C {
/// Project directory
project_dir: String,
/// Whether to explain the dependency resolution process.
#[arg(long)]
explain_deps: bool,
},
/// Verifies a cartridge or PMC file
P {
@ -86,15 +94,23 @@ fn main() {
&["--debug", &cart, "--port", &port.to_string()],
);
}
Some(Commands::Build { project_dir }) => {
dispatch(&exe_dir, "prometeuc", &["build", &project_dir]);
Some(Commands::Build { project_dir, explain_deps }) => {
let mut args = vec!["build", &project_dir];
if explain_deps {
args.push("--explain-deps");
}
dispatch(&exe_dir, "prometeuc", &args);
}
Some(Commands::Pack { .. }) => {
not_implemented("pack", "prometeup");
}
Some(Commands::Verify { target }) => match target {
VerifyCommands::C { project_dir } => {
dispatch(&exe_dir, "prometeuc", &["verify", &project_dir]);
VerifyCommands::C { project_dir, explain_deps } => {
let mut args = vec!["verify", &project_dir];
if explain_deps {
args.push("--explain-deps");
}
dispatch(&exe_dir, "prometeuc", &args);
}
VerifyCommands::P { .. } => not_implemented("verify p", "prometeup"),
},