feat: add compiler version to aiken.toml

This commit is contained in:
rvcas
2024-05-22 15:35:54 -04:00
parent d6cc450ce4
commit c3ad52b50f
3 changed files with 41 additions and 0 deletions

View File

@@ -48,6 +48,7 @@ cryptoxide = "0.4.4"
vec1 = "1.10.1"
patricia_tree = "0.8.0"
ciborium = "0.2.2"
semver = { version = "1.0.23", features = ["serde"] }
[dev-dependencies]
blst = "0.3.11"

View File

@@ -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}'"),