use super::*;
use crate::core::config::{
Language, NewAlefConfig, PrecommitConfig, PythonConfig, ResolvedCrateConfig, ScaffoldCargoTargets, ScaffoldConfig,
};
use crate::scaffold::languages::generate_pre_commit_config;
use std::path::{Path, PathBuf};
fn test_config() -> ResolvedCrateConfig {
test_config_from_toml("")
}
fn test_config_from_toml(extra_crate_config: &str) -> ResolvedCrateConfig {
let cfg: NewAlefConfig = toml::from_str(&format!(
r#"
[workspace]
languages = ["python", "node"]
[[crates]]
name = "my-lib"
sources = ["src/lib.rs"]
[crates.scaffold]
description = "Test library"
license = "MIT"
repository = "https://github.com/test/my-lib"
authors = ["Alice"]
keywords = ["test"]
{extra_crate_config}
"#,
))
.expect("valid toml");
cfg.resolve().expect("resolve ok").remove(0)
}
fn minimal_config_from_toml(extra_crate_config: &str) -> ResolvedCrateConfig {
let cfg: NewAlefConfig = toml::from_str(&format!(
r#"
[workspace]
languages = ["python", "node"]
[[crates]]
name = "my-lib"
sources = ["src/lib.rs"]
{extra_crate_config}
"#,
))
.expect("valid toml");
cfg.resolve().expect("resolve ok").remove(0)
}
fn test_api() -> ApiSurface {
ApiSurface {
crate_name: "my-lib".to_string(),
version: "0.1.0".to_string(),
types: vec![],
functions: vec![],
enums: vec![],
errors: vec![],
excluded_type_paths: ::std::collections::HashMap::new(),
excluded_trait_names: ::std::collections::HashSet::new(),
services: vec![],
handler_contracts: vec![],
unsupported_public_items: Vec::new(),
}
}
fn language_files(files: &[GeneratedFile]) -> Vec<&GeneratedFile> {
files
.iter()
.filter(|f| {
let p = f.path.to_string_lossy();
!p.ends_with(".pre-commit-config.yaml")
&& !p.ends_with(".typos.toml")
&& !p.ends_with("rust-toolchain.toml")
&& !p.ends_with(".cargo/config.toml")
&& p != ".gitattributes"
&& !p.ends_with("/LICENSE")
&& p != "LICENSE"
})
.collect()
}
mod cargo_config;
mod core_deps;
mod extra_deps;
mod ffi_go_java_ruby;
mod general;
mod language_elixir;
mod language_php_dart;
mod language_swift_kotlin_gleam_zig;
mod licenses;
mod precommit;
mod python_node;