add revision to the config file
This commit is contained in:
parent
db8dfa6655
commit
6e908aebdb
6 changed files with 25 additions and 12 deletions
|
@ -3,22 +3,17 @@
|
||||||
mod migrate;
|
mod migrate;
|
||||||
mod validate;
|
mod validate;
|
||||||
|
|
||||||
use clap::{Subcommand, ValueEnum};
|
use crate::config::Revision;
|
||||||
|
use clap::Subcommand;
|
||||||
|
|
||||||
#[derive(Subcommand)]
|
#[derive(Subcommand)]
|
||||||
pub(crate) enum Commands {
|
pub(crate) enum Commands {
|
||||||
/// Convert an old config file into the new format
|
/// Convert an old config file into the new format
|
||||||
Migrate { revision: ConfigRevision },
|
Migrate { revision: Revision },
|
||||||
/// Validate the config file
|
/// Validate the config file
|
||||||
Validate,
|
Validate,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, ValueEnum)]
|
|
||||||
pub(crate) enum ConfigRevision {
|
|
||||||
#[clap(name = "20240701")]
|
|
||||||
V20240701,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub(crate) enum Error {
|
pub(crate) enum Error {
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
mod v20240701;
|
mod v20240701;
|
||||||
|
|
||||||
use super::ConfigRevision;
|
use crate::config::Revision;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub(crate) enum MigrationError {
|
pub(crate) enum MigrationError {
|
||||||
|
@ -10,9 +10,9 @@ pub(crate) enum MigrationError {
|
||||||
V20240701(#[from] v20240701::Error),
|
V20240701(#[from] v20240701::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) async fn run(revision: ConfigRevision) -> Result<(), MigrationError> {
|
pub(super) async fn run(revision: Revision) -> Result<(), MigrationError> {
|
||||||
match revision {
|
match revision {
|
||||||
ConfigRevision::V20240701 => v20240701::run().await?,
|
Revision::V20240701 => v20240701::run().await?,
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//! `config migrate 20240701` subcommand
|
//! `config migrate 20240701` subcommand
|
||||||
//! <https://firefish.dev/firefish/firefish/-/issues/10947>
|
//! <https://firefish.dev/firefish/firefish/-/issues/10947>
|
||||||
|
|
||||||
use crate::config::{client, server};
|
use crate::config::{client, server, Revision};
|
||||||
use color_print::cprintln;
|
use color_print::cprintln;
|
||||||
use sqlx::{postgres::PgConnectOptions, ConnectOptions};
|
use sqlx::{postgres::PgConnectOptions, ConnectOptions};
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -272,6 +272,7 @@ fn create_new_server_config(
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut server_config = server::Config {
|
let mut server_config = server::Config {
|
||||||
|
config_revision: Revision::V20240701,
|
||||||
info: Some(server::Info {
|
info: Some(server::Info {
|
||||||
name: meta.name.to_owned(),
|
name: meta.name.to_owned(),
|
||||||
description: meta.description.to_owned(),
|
description: meta.description.to_owned(),
|
||||||
|
@ -392,6 +393,7 @@ fn create_new_server_config(
|
||||||
|
|
||||||
fn create_new_client_config(meta: Meta) -> Result<client::Config, Error> {
|
fn create_new_client_config(meta: Meta) -> Result<client::Config, Error> {
|
||||||
let mut config = client::Config {
|
let mut config = client::Config {
|
||||||
|
config_revision: Revision::V20240701,
|
||||||
theme: None,
|
theme: None,
|
||||||
image: None,
|
image: None,
|
||||||
pinned_links: None,
|
pinned_links: None,
|
||||||
|
|
|
@ -5,11 +5,13 @@
|
||||||
// Optional values are handled in the main Firefish program, and this tool
|
// Optional values are handled in the main Firefish program, and this tool
|
||||||
// does not take care of it.
|
// does not take care of it.
|
||||||
|
|
||||||
|
use super::Revision;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use validator::{Validate, ValidationError};
|
use validator::{Validate, ValidationError};
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Validate, Debug)]
|
#[derive(Deserialize, Serialize, Validate, Debug)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
|
pub config_revision: Revision,
|
||||||
#[validate(nested)]
|
#[validate(nested)]
|
||||||
pub theme: Option<Theme>,
|
pub theme: Option<Theme>,
|
||||||
#[validate(nested)]
|
#[validate(nested)]
|
||||||
|
|
|
@ -1,2 +1,14 @@
|
||||||
pub mod client;
|
pub mod client;
|
||||||
pub mod server;
|
pub mod server;
|
||||||
|
|
||||||
|
use clap::ValueEnum;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize, Clone, ValueEnum, Debug)]
|
||||||
|
pub enum Revision {
|
||||||
|
#[clap(name = "20240701")]
|
||||||
|
#[serde(rename = "20240701")]
|
||||||
|
V20240701,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const LATEST_REVISION: Revision = Revision::V20240701;
|
||||||
|
|
|
@ -5,11 +5,13 @@
|
||||||
// Optional values are handled in the main Firefish program, and this tool
|
// Optional values are handled in the main Firefish program, and this tool
|
||||||
// does not take care of it.
|
// does not take care of it.
|
||||||
|
|
||||||
|
use super::Revision;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Validate, Debug)]
|
#[derive(Deserialize, Serialize, Validate, Debug)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
|
pub config_revision: Revision,
|
||||||
#[validate(nested)]
|
#[validate(nested)]
|
||||||
pub info: Option<Info>,
|
pub info: Option<Info>,
|
||||||
#[validate(nested)]
|
#[validate(nested)]
|
||||||
|
|
Loading…
Reference in a new issue