Skip to main content

_bver/
schema.rs

1use serde::{Deserialize, Serialize};
2use std::path::PathBuf;
3
4#[derive(Debug, Deserialize, Serialize, Default)]
5#[serde(rename_all = "kebab-case")]
6pub struct Config {
7    pub current_version: Option<String>,
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    pub context_lines: Option<usize>,
10    #[serde(default)]
11    pub default_kind: FileKind,
12    #[serde(default)]
13    pub on_invalid_version: OnInvalidVersion,
14    #[serde(default)]
15    pub git: GitConfig,
16    #[serde(default, rename = "file")]
17    pub files: Vec<FileConfig>,
18}
19
20#[derive(Debug, Deserialize, Serialize, Default)]
21#[serde(rename_all = "kebab-case")]
22pub struct GitConfig {
23    #[serde(default)]
24    pub action: GitAction,
25    #[serde(default)]
26    pub run_pre_commit: RunPreCommit,
27    #[serde(default = "default_tag_template")]
28    pub tag_template: String,
29    #[serde(default = "default_commit_template")]
30    pub commit_template: String,
31}
32
33fn default_tag_template() -> String {
34    "{new-version}".to_string()
35}
36
37fn default_commit_template() -> String {
38    "Bump version from {current-version} to {new-version}".to_string()
39}
40
41#[derive(Debug, Deserialize, Serialize)]
42pub struct FileConfig {
43    pub src: PathBuf,
44    #[serde(default, skip_serializing_if = "Option::is_none")]
45    pub kind: Option<FileKind>,
46}
47
48#[derive(Debug, Deserialize, Serialize, Default, Clone, Copy, PartialEq, Eq)]
49#[serde(rename_all = "lowercase")]
50pub enum FileKind {
51    #[default]
52    Any,
53    Simple,
54    Python,
55    Semver,
56}
57
58#[derive(Debug, Deserialize, Serialize, Default, Clone, Copy, PartialEq, Eq)]
59#[serde(rename_all = "lowercase")]
60pub enum OnInvalidVersion {
61    #[default]
62    Error,
63    Cast,
64}
65
66#[derive(Debug, Deserialize, Serialize, Default, Clone, Copy, PartialEq, Eq)]
67#[serde(rename_all = "kebab-case")]
68pub enum RunPreCommit {
69    Enabled,
70    Disabled,
71    #[default]
72    WhenPresent,
73}
74
75#[derive(Debug, Deserialize, Serialize, Default, Clone, Copy, PartialEq, Eq)]
76#[serde(rename_all = "kebab-case")]
77pub enum GitAction {
78    Disabled,
79    Commit,
80    #[default]
81    CommitAndTag,
82    CommitTagAndPush,
83}