mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 13:38:30 +00:00
feat: add package name validation to init and new commands
This commit is contained in:
Submodule packaging/aur/dcr-git updated: 12038a613e...2c5743a456
@@ -16,7 +16,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
use crate::config::FILE_MAIN_C;
|
use crate::config::FILE_MAIN_C;
|
||||||
use crate::core::config::Config;
|
use crate::core::config::{validate_package_name, Config};
|
||||||
use crate::utils::fs::check_dir;
|
use crate::utils::fs::check_dir;
|
||||||
use crate::utils::log::{error, warn};
|
use crate::utils::log::{error, warn};
|
||||||
use crate::utils::text::{BOLD_CYAN, BOLD_GREEN, colored, printc};
|
use crate::utils::text::{BOLD_CYAN, BOLD_GREEN, colored, printc};
|
||||||
@@ -41,6 +41,15 @@ pub fn init(args: &[String]) -> i32 {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Err(e) = validate_package_name(&project_name) {
|
||||||
|
error(&format!(
|
||||||
|
"Invalid project name `{}`: {}",
|
||||||
|
colored(&project_name, BOLD_CYAN),
|
||||||
|
e
|
||||||
|
));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
let cwd = std::env::current_dir()
|
let cwd = std::env::current_dir()
|
||||||
.map(|v| v.to_string_lossy().to_string())
|
.map(|v| v.to_string_lossy().to_string())
|
||||||
.unwrap_or_else(|_| ".".to_string());
|
.unwrap_or_else(|_| ".".to_string());
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
use crate::config::FILE_MAIN_C;
|
use crate::config::FILE_MAIN_C;
|
||||||
use crate::core::config::Config;
|
use crate::core::config::{validate_package_name, Config};
|
||||||
use crate::utils::fs::check_dir;
|
use crate::utils::fs::check_dir;
|
||||||
use crate::utils::log::{error, warn};
|
use crate::utils::log::{error, warn};
|
||||||
use crate::utils::text::{BOLD_CYAN, BOLD_GREEN, colored, printc};
|
use crate::utils::text::{BOLD_CYAN, BOLD_GREEN, colored, printc};
|
||||||
@@ -42,6 +42,15 @@ pub fn new(args: &[String]) -> i32 {
|
|||||||
colored(project_name, BOLD_CYAN)
|
colored(project_name, BOLD_CYAN)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if let Err(e) = validate_package_name(project_name) {
|
||||||
|
error(&format!(
|
||||||
|
"Invalid project name `{}`: {}",
|
||||||
|
colored(project_name, BOLD_CYAN),
|
||||||
|
e
|
||||||
|
));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if items.contains(project_name) {
|
if items.contains(project_name) {
|
||||||
error(&format!(
|
error(&format!(
|
||||||
"Directory `{}` already exists\n",
|
"Directory `{}` already exists\n",
|
||||||
|
|||||||
@@ -447,7 +447,7 @@ fn parse_typed_config(value: &Value) -> Result<DcrConfig, ConfigError> {
|
|||||||
value.clone().try_into().map_err(ConfigError::TomlDe)
|
value.clone().try_into().map_err(ConfigError::TomlDe)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn validate_package_name(name: &str) -> Result<(), ConfigError> {
|
pub fn validate_package_name(name: &str) -> Result<(), ConfigError> {
|
||||||
let trimmed = name.trim();
|
let trimmed = name.trim();
|
||||||
if trimmed != name {
|
if trimmed != name {
|
||||||
return Err(ConfigError::Invalid(
|
return Err(ConfigError::Invalid(
|
||||||
|
|||||||
Reference in New Issue
Block a user