6 Commits

6 changed files with 42 additions and 7 deletions

2
Cargo.lock generated
View File

@@ -155,7 +155,7 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "pallet"
version = "1.0.0"
version = "1.0.2"
dependencies = [
"clap",
"colored",

View File

@@ -1,6 +1,6 @@
[package]
name = "pallet"
version = "1.0.0"
version = "1.0.2"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
# Pallet
Pallet is a project manager and build system for C inspired by Cargo for Rust.
Pallet is a project manager and build system for C inspired by Rust's Cargo.
This is a toy project not meant to be taken very seriously.
@@ -10,6 +10,7 @@ This is a toy project not meant to be taken very seriously.
- `pallet init`: initializes a new project in the current directory
- `pallet run`: runs the local project
- `pallet build`: builds the local project
- `pallet clean`: cleans the local project's build artifacts
## Configuring
@@ -17,4 +18,31 @@ You can configure options by editing `Pallet.toml`
### Options
TBD
- `name`: the name of the output executable
- `default_build`: the name of the default build profile to use
Additionally, one can define one or more build profiles with the following parameters:
- `name`: the name of the build profile
- `args`: the args to supply to gcc when using this profile
For example:
```toml
name = "my-app"
default_build = "debug"
[[build]]
name = "debug"
args = [
"-g",
"-O0",
]
[[build]]
name = "release"
args = [
"-DNDEBUG",
"-O3",
]
```

View File

@@ -8,7 +8,7 @@ use colored::Colorize;
use glob::glob;
const MAIN_C: &str = include_str!("templates/main.c");
const GITIGNORE: &str = include_str!("templates/gitignoretemplate");
const GITIGNORE: &str = "target/";
#[derive(clap::Parser)]
#[clap(version)]
@@ -31,6 +31,7 @@ enum Subcommand {
/// The build mode to use
mode: Option<String>,
/// Arguments to pass to the project binary
#[arg(long, short)]
args: Option<Vec<String>>,
},
/// Build the local project

View File

@@ -1,9 +1,15 @@
#[derive(serde::Deserialize, serde::Serialize)]
#[derive(serde::Deserialize, serde::Serialize, Default)]
pub struct Config {
/// The name of the output binary
pub name: String,
/// The default build to use
pub default_build: String,
/// A brief description
pub description: Option<String>,
/// The version of the project
pub version: Option<String>,
/// The authors of the project
pub authors: Option<Vec<String>>,
/// Build configs
pub build: Vec<BuildConf>,
}
@@ -14,6 +20,7 @@ impl Config {
name: name.to_owned(),
default_build: "debug".to_owned(),
build: vec![BuildConf::debug(), BuildConf::release()],
..Default::default()
}
}

View File

@@ -1 +0,0 @@
target/