Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ static-files = "0.2.1"
cargo_toml = "0.12.4"
ureq = "2.5.0"
sha1_smol = { version = "1.0.0", features = ["std"] }
vergen = { version = "7.4.2", features = ["build", "git"] }
vergen = { version = "7.4.2", features = ["build", "git", "cargo"] }
zip = { version = "0.6.3", default_features = false, features = ["deflate"] }

[dev-dependencies]
Expand Down
7 changes: 5 additions & 2 deletions server/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@
*
*/

use vergen::{vergen, Config};
use vergen::{vergen, Config, ShaKind};

fn main() {
// Init vergen
if let Err(e) = vergen(Config::default()) {
let mut config = Config::default();
*config.git_mut().sha_kind_mut() = ShaKind::Short;

if let Err(e) = vergen(config) {
println!(
"cargo:warning=initializing vergen failed due to error: {}",
e
Expand Down
24 changes: 15 additions & 9 deletions server/src/banner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ pub mod version {
// print current version
let current = current();

match current {
match current.0 {
ParseableVersion::Version(current_version) => {
// not eprintln because if it is old release then time passed with be displayed beside it
eprint!(
Expand Down Expand Up @@ -118,24 +118,30 @@ pub mod version {
}
}

pub fn current() -> ParseableVersion {
pub fn current() -> (ParseableVersion, String) {
let build_semver = env!("VERGEN_BUILD_SEMVER");

let sha_hash = env!("VERGEN_GIT_SHA_SHORT");
let mut git_semver = env!("VERGEN_GIT_SEMVER");

if &git_semver[..1] == "v" {
git_semver = &git_semver[1..];
}

if build_semver == git_semver {
ParseableVersion::Version(
semver::Version::parse(build_semver)
.expect("VERGEN_BUILD_SEMVER is always valid semver"),
(
ParseableVersion::Version(
semver::Version::parse(build_semver)
.expect("VERGEN_BUILD_SEMVER is always valid semver"),
),
sha_hash.to_string(),
)
} else {
ParseableVersion::Prerelease(
semver::Prerelease::new(git_semver)
.expect("VERGEN_GIT_SEMVER is always valid semver"),
(
ParseableVersion::Prerelease(
semver::Prerelease::new(git_semver)
.expect("VERGEN_GIT_SEMVER is always valid semver"),
),
sha_hash.to_string(),
)
}
}
Expand Down
17 changes: 9 additions & 8 deletions server/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ pub mod header_parsing {
pub enum ParseHeaderError {
#[error("Too many headers received. Limit is of 5 headers")]
MaxHeadersLimitExceeded,
#[error("A value passed in header is not formattable to plain visible ASCII")]
#[error("A value passed in header can't be formatted to plain visible ASCII")]
InvalidValue,
#[error("Invalid Key was passed which terminated just after the end of prefix")]
Emptykey,
Expand Down Expand Up @@ -154,13 +154,14 @@ pub mod update {
"Native".to_string()
}

// User Agent for Github API call
// Format: Parseable/<version> (OS; Platform)
// User Agent for Download API call
// Format: Parseable/<version>/<commit_hash> (OS; Platform)
fn user_agent() -> String {
let info = os_info::get();
format!(
"Parseable/{} ({}; {})",
current(),
"Parseable/{}/{} ({}; {})",
current().0,
current().1,
info.os_type(),
is_docker()
)
Expand All @@ -170,19 +171,19 @@ pub mod update {
let agent = ureq::builder().user_agent(user_agent().as_str()).build();

let json: serde_json::Value = agent
.get("https://api.github.com/repos/parseablehq/parseable/releases/latest")
.get("https://download.parseable.io/latest-version")
.call()?
.into_json()?;

let version = json["tag_name"]
.as_str()
.and_then(|ver| ver.strip_prefix('v'))
.and_then(|ver| semver::Version::parse(ver).ok())
.ok_or_else(|| anyhow!("Bad parse when parsing verison"))?;
.ok_or_else(|| anyhow!("Failed parsing version"))?;

let date = json["published_at"]
.as_str()
.ok_or_else(|| anyhow!("Bad parse when parsing published date"))?;
.ok_or_else(|| anyhow!("Failed parsing published date"))?;

let date = chrono::DateTime::parse_from_rfc3339(date)
.expect("date-time from github is in rfc3339 format")
Expand Down