Initial
This commit is contained in:
commit
dc6331e5fc
10
.idea/.gitignore
generated
vendored
Normal file
10
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
14
.idea/discord.xml
generated
Normal file
14
.idea/discord.xml
generated
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="ASK" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
<option name="applicationTheme" value="default" />
|
||||||
|
<option name="iconsTheme" value="default" />
|
||||||
|
<option name="button1Title" value="" />
|
||||||
|
<option name="button1Url" value="" />
|
||||||
|
<option name="button2Title" value="" />
|
||||||
|
<option name="button2Url" value="" />
|
||||||
|
<option name="customApplicationId" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="IncorrectFormatting" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
10
.idea/misc.xml
generated
Normal file
10
.idea/misc.xml
generated
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MaterialThemeProjectNewConfig">
|
||||||
|
<option name="metadata">
|
||||||
|
<MTProjectMetadataState>
|
||||||
|
<option name="userId" value="-4c3c6a73:19b0b3d1327:-7fff" />
|
||||||
|
</MTProjectMetadataState>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/workspace-template.iml" filepath="$PROJECT_DIR$/.idea/workspace-template.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/workspace-template.iml
generated
Normal file
8
.idea/workspace-template.iml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="EMPTY_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
25
cargo-generate.toml
Normal file
25
cargo-generate.toml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[template]
|
||||||
|
cargo_generate_version = ">=0.18.0"
|
||||||
|
|
||||||
|
[hooks]
|
||||||
|
post = ["post-generate.rhai"]
|
||||||
|
|
||||||
|
[placeholders.project-name]
|
||||||
|
type = "string"
|
||||||
|
prompt = "Project name?"
|
||||||
|
regex = "^[a-zA-Z][a-zA-Z0-9_-]*$"
|
||||||
|
|
||||||
|
[placeholders.crates]
|
||||||
|
type = "string"
|
||||||
|
prompt = "Crate names (comma-separated, e.g. 'core,cli,macros')?"
|
||||||
|
default = "core"
|
||||||
|
|
||||||
|
[placeholders.author]
|
||||||
|
type = "string"
|
||||||
|
prompt = "Author?"
|
||||||
|
default = ""
|
||||||
|
|
||||||
|
[placeholders.license]
|
||||||
|
type = "string"
|
||||||
|
prompt = "License?"
|
||||||
|
default = "MIT"
|
||||||
77
post-generate.rhai
Normal file
77
post-generate.rhai
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Post-generation hook: creates crates based on user input
|
||||||
|
|
||||||
|
let crates_input = variable::get("crates");
|
||||||
|
let project_name = variable::get("project-name");
|
||||||
|
let author = variable::get("author");
|
||||||
|
let license = variable::get("license");
|
||||||
|
|
||||||
|
// Parse comma-separated crate names
|
||||||
|
let crate_names = crates_input.split(",");
|
||||||
|
|
||||||
|
for crate_name in crate_names {
|
||||||
|
let crate_name = crate_name.trim();
|
||||||
|
if crate_name.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let crate_dir = `crates/${crate_name}`;
|
||||||
|
let src_dir = `${crate_dir}/src`;
|
||||||
|
|
||||||
|
// Create directories
|
||||||
|
file::create_dir(crate_dir);
|
||||||
|
file::create_dir(src_dir);
|
||||||
|
|
||||||
|
// Determine if this looks like a binary crate
|
||||||
|
let is_bin = crate_name.contains("cli") || crate_name.contains("bin") || crate_name == "app";
|
||||||
|
|
||||||
|
// Create Cargo.toml
|
||||||
|
let cargo_toml = `[package]
|
||||||
|
name = "${project_name}-${crate_name}"
|
||||||
|
version.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
authors.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
description = ""
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
`;
|
||||||
|
|
||||||
|
if is_bin {
|
||||||
|
cargo_toml = `[package]
|
||||||
|
name = "${project_name}-${crate_name}"
|
||||||
|
version.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
authors.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
description = ""
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "${project_name}"
|
||||||
|
path = "src/main.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
file::write(`${crate_dir}/Cargo.toml`, cargo_toml);
|
||||||
|
|
||||||
|
// Create src/lib.rs or src/main.rs
|
||||||
|
if is_bin {
|
||||||
|
file::write(`${src_dir}/main.rs`, `fn main() {
|
||||||
|
println!("Hello from ${project_name}!");
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
} else {
|
||||||
|
file::write(`${src_dir}/lib.rs`, `//! ${crate_name} crate for ${project_name}.
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up the placeholder .gitkeep directory
|
||||||
|
file::delete("crates/.gitkeep");
|
||||||
1
{{project-name}}/.gitignore
vendored
Normal file
1
{{project-name}}/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/
|
||||||
18
{{project-name}}/Cargo.toml
Normal file
18
{{project-name}}/Cargo.toml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[workspace]
|
||||||
|
resolver = "3"
|
||||||
|
members = ["crates/*"]
|
||||||
|
|
||||||
|
[workspace.package]
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
authors = [{% if author %}"{{author}}"{% endif %}]
|
||||||
|
license = "{{license}}"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
|
||||||
|
[workspace.lints.rust]
|
||||||
|
unsafe_code = "warn"
|
||||||
|
|
||||||
|
[workspace.lints.clippy]
|
||||||
|
all = "warn"
|
||||||
|
pedantic = "warn"
|
||||||
Loading…
x
Reference in New Issue
Block a user