From c086fe7ac491a7358553efe289c86a35e0ecfa22 Mon Sep 17 00:00:00 2001
From: Paul <paulmakles@gmail.com>
Date: Mon, 3 May 2021 15:03:30 +0100
Subject: [PATCH] Move versioning to source.

---
 Cargo.lock         | 2 +-
 Cargo.toml         | 5 ++++-
 publish.sh         | 6 ++----
 set_version.sh     | 3 +++
 src/main.rs        | 3 ++-
 src/routes/root.rs | 2 +-
 src/version.rs     | 1 +
 7 files changed, 14 insertions(+), 8 deletions(-)
 create mode 100755 set_version.sh
 create mode 100644 src/version.rs

diff --git a/Cargo.lock b/Cargo.lock
index 05168cc..6f366a9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2475,7 +2475,7 @@ dependencies = [
 
 [[package]]
 name = "revolt"
-version = "0.4.1-alpha.3"
+version = "0.0.0"
 dependencies = [
  "async-std",
  "async-tungstenite",
diff --git a/Cargo.toml b/Cargo.toml
index 9073c23..cbde4f2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,9 @@
 [package]
 name = "revolt"
-version = "0.4.1-alpha.3"
+# To help optimise CI and Docker builds.
+# Version here is left as 0.0.0, please
+# adjust and run ./set_version.sh instead.
+version = "0.0.0"
 authors = ["Paul Makles <paulmakles@gmail.com>"]
 edition = "2018"
 
diff --git a/publish.sh b/publish.sh
index 18bab40..227d0fa 100755
--- a/publish.sh
+++ b/publish.sh
@@ -1,7 +1,5 @@
 #!/bin/bash
-# Tip: for subsequent builds, don't update Cargo.toml
-# in order to not download all the crates again.
-# Update Cargo.toml on major release.
-version=0.4.1-alpha.4-patch.0
+source set_version.sh
+
 docker build -t revoltchat/server:${version} . &&
     docker push revoltchat/server:${version}
diff --git a/set_version.sh b/set_version.sh
new file mode 100755
index 0000000..be25d6d
--- /dev/null
+++ b/set_version.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+export version=0.4.1-alpha.6
+echo "pub const VERSION: String = \"${version}\";" > src/version.rs
diff --git a/src/main.rs b/src/main.rs
index 48acd2b..386e531 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -15,6 +15,7 @@ extern crate ctrlc;
 
 pub mod database;
 pub mod notifications;
+pub mod version;
 pub mod routes;
 pub mod util;
 
@@ -39,7 +40,7 @@ async fn main() {
     dotenv::dotenv().ok();
     env_logger::init_from_env(env_logger::Env::default().filter_or("RUST_LOG", "info"));
 
-    info!("Starting REVOLT server.");
+    info!("Starting REVOLT server [version {}].", crate::version::VERSION);
 
     util::variables::preflight_checks();
     database::connect().await;
diff --git a/src/routes/root.rs b/src/routes/root.rs
index c25862c..9ca42d6 100644
--- a/src/routes/root.rs
+++ b/src/routes/root.rs
@@ -9,7 +9,7 @@ use rocket_contrib::json::JsonValue;
 #[get("/")]
 pub async fn root() -> JsonValue {
     json!({
-        "revolt": "0.4.1-alpha.4",
+        "revolt": crate::version::VERSION,
         "features": {
             "registration": !*DISABLE_REGISTRATION,
             "captcha": {
diff --git a/src/version.rs b/src/version.rs
new file mode 100644
index 0000000..008c120
--- /dev/null
+++ b/src/version.rs
@@ -0,0 +1 @@
+pub const VERSION: &str = "0.4.1-alpha.6";
-- 
GitLab