Skip to main content

entrenar/config/cli/research/
init.rs

1//! Research init command arguments
2
3use clap::Parser;
4use std::path::PathBuf;
5
6use super::super::types::{ArtifactTypeArg, LicenseArg};
7
8/// Arguments for research init command
9#[derive(Parser, Debug, Clone, PartialEq)]
10pub struct ResearchInitArgs {
11    /// Artifact ID (unique identifier)
12    #[arg(long)]
13    pub id: String,
14
15    /// Artifact title
16    #[arg(long)]
17    pub title: String,
18
19    /// Artifact type
20    #[arg(long, default_value = "dataset")]
21    pub artifact_type: ArtifactTypeArg,
22
23    /// License (e.g., CC-BY-4.0, MIT, Apache-2.0)
24    #[arg(long, default_value = "cc-by-4.0")]
25    pub license: LicenseArg,
26
27    /// Output path for artifact YAML
28    #[arg(short, long, default_value = "artifact.yaml")]
29    pub output: PathBuf,
30
31    /// Author name
32    #[arg(long)]
33    pub author: Option<String>,
34
35    /// Author ORCID (format: 0000-0002-1825-0097)
36    #[arg(long)]
37    pub orcid: Option<String>,
38
39    /// Author affiliation
40    #[arg(long)]
41    pub affiliation: Option<String>,
42
43    /// Description of the artifact
44    #[arg(long)]
45    pub description: Option<String>,
46
47    /// Keywords (comma-separated)
48    #[arg(long)]
49    pub keywords: Option<String>,
50
51    /// DOI (if already assigned)
52    #[arg(long)]
53    pub doi: Option<String>,
54}