feat: add compiler version to aiken.toml
This commit is contained in:
@@ -2,6 +2,7 @@ use std::{fmt::Display, fs, io, path::Path};
|
||||
|
||||
use crate::{github::repo::LatestRelease, package_name::PackageName, paths, Error};
|
||||
use aiken_lang::ast::Span;
|
||||
use semver::Version;
|
||||
|
||||
use miette::NamedSource;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -12,6 +13,12 @@ pub use aiken_lang::plutus_version::PlutusVersion;
|
||||
pub struct Config {
|
||||
pub name: PackageName,
|
||||
pub version: String,
|
||||
#[serde(
|
||||
deserialize_with = "deserialize_version",
|
||||
serialize_with = "serialize_version",
|
||||
default = "default_version"
|
||||
)]
|
||||
pub compiler: Version,
|
||||
#[serde(default)]
|
||||
pub plutus: PlutusVersion,
|
||||
pub license: Option<String>,
|
||||
@@ -22,6 +29,28 @@ pub struct Config {
|
||||
pub dependencies: Vec<Dependency>,
|
||||
}
|
||||
|
||||
fn deserialize_version<'de, D>(deserializer: D) -> Result<Version, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let buf = String::deserialize(deserializer)?.replace('v', "");
|
||||
|
||||
Version::parse(&buf).map_err(serde::de::Error::custom)
|
||||
}
|
||||
|
||||
fn serialize_version<S>(version: &Version, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::Serializer,
|
||||
{
|
||||
let version = format!("v{}", version);
|
||||
|
||||
serializer.serialize_str(&version)
|
||||
}
|
||||
|
||||
fn default_version() -> Version {
|
||||
Version::parse(built_info::PKG_VERSION).unwrap()
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize, Clone, Debug)]
|
||||
pub struct Repository {
|
||||
pub user: String,
|
||||
@@ -59,6 +88,7 @@ impl Config {
|
||||
Config {
|
||||
name: name.clone(),
|
||||
version: "0.0.0".to_string(),
|
||||
compiler: default_version(),
|
||||
plutus: PlutusVersion::default(),
|
||||
license: Some("Apache-2.0".to_string()),
|
||||
description: format!("Aiken contracts for project '{name}'"),
|
||||
|
||||
Reference in New Issue
Block a user