aiken new: Try to get the latest tag of stdlib
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use crate::{package_name::PackageName, paths, Error};
|
||||
use crate::{github::repo::LatestRelease, package_name::PackageName, paths, Error};
|
||||
use aiken_lang::ast::Span;
|
||||
use miette::NamedSource;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -65,7 +65,10 @@ impl Config {
|
||||
owner: "aiken-lang".to_string(),
|
||||
repo: "stdlib".to_string(),
|
||||
},
|
||||
version: "1.5.0".to_string(),
|
||||
version: match LatestRelease::of("aiken-lang/stdlib") {
|
||||
Ok(stdlib) => stdlib.tag_name,
|
||||
_ => "1.5.0".to_string(),
|
||||
},
|
||||
source: Platform::Github,
|
||||
}],
|
||||
}
|
||||
|
||||
1
crates/aiken-project/src/github/mod.rs
Normal file
1
crates/aiken-project/src/github/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod repo;
|
||||
22
crates/aiken-project/src/github/repo.rs
Normal file
22
crates/aiken-project/src/github/repo.rs
Normal file
@@ -0,0 +1,22 @@
|
||||
use reqwest::{blocking::Client, header::USER_AGENT, Error};
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct LatestRelease {
|
||||
pub tag_name: String,
|
||||
}
|
||||
|
||||
impl LatestRelease {
|
||||
pub fn of<Repo: AsRef<str>>(repo: Repo) -> Result<Self, Error> {
|
||||
Ok({
|
||||
Client::new()
|
||||
.get(format!(
|
||||
"https://api.github.com/repos/{}/releases/latest",
|
||||
repo.as_ref()
|
||||
))
|
||||
.header(USER_AGENT, "aiken")
|
||||
.send()?
|
||||
.json::<Self>()?
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ pub mod deps;
|
||||
pub mod docs;
|
||||
pub mod error;
|
||||
pub mod format;
|
||||
pub mod github;
|
||||
pub mod module;
|
||||
pub mod options;
|
||||
pub mod package_name;
|
||||
|
||||
Reference in New Issue
Block a user