summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Ableitner <me@nutomic.com>2019-11-15 03:08:25 +0100
committerFelix Ableitner <me@nutomic.com>2019-11-16 01:31:41 +0100
commit4f116dc758684c8fca735bd6b30d93ab0bd3bc25 (patch)
treebc07f7c4d674062460535236d2a31f42249e77ca
parentfcf3252292a094b889dc07c470974e44fe6e7b00 (diff)
got it working
-rw-r--r--.gitignore2
-rwxr-xr-xdocker/dev/deploy.sh9
-rw-r--r--server/src/lib.rs2
-rw-r--r--server/src/main.rs55
-rw-r--r--server/src/nodeinfo.rs60
-rw-r--r--server/src/version.rs1
-rwxr-xr-xui/set_version.js11
7 files changed, 72 insertions, 68 deletions
diff --git a/.gitignore b/.gitignore
index 2feec03c..4cb8939f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
ansible/inventory
ansible/passwords/
+build/
+.idea/
diff --git a/docker/dev/deploy.sh b/docker/dev/deploy.sh
index 4784a742..64d815ad 100755
--- a/docker/dev/deploy.sh
+++ b/docker/dev/deploy.sh
@@ -6,10 +6,11 @@ new_tag="$1"
git tag $new_tag
# Setting the version on the front end
-pushd ../../ui/
-node set_version.js
-git add src/version.ts
-popd
+echo "export let version: string = '$(git describe --tags --long)';" > "ui/src/version.ts"
+git add "ui/src/version.ts"
+# Setting the version on the backend
+echo "pub const VERSION: &'static str = \"$(git describe --tags --long)\";" > "server/src/version.rs"
+git add "server/src/version.rs"
# Changing the docker-compose prod
sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml
diff --git a/server/src/lib.rs b/server/src/lib.rs
index 162d9578..b5c26762 100644
--- a/server/src/lib.rs
+++ b/server/src/lib.rs
@@ -27,6 +27,8 @@ pub mod apub;
pub mod db;
pub mod schema;
pub mod websocket;
+pub mod nodeinfo;
+pub mod version;
use chrono::{DateTime, NaiveDateTime, Utc};
use dotenv::dotenv;
diff --git a/server/src/main.rs b/server/src/main.rs
index 392b0bbb..f930f2ed 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -5,13 +5,12 @@ extern crate diesel_migrations;
use actix::prelude::*;
use actix_files::NamedFile;
use actix_web::*;
-use actix_web::web::Json;
use actix_web_actors::ws;
use lemmy_server::db::establish_connection;
use lemmy_server::websocket::server::*;
use std::env;
use std::time::{Duration, Instant};
-use serde::Serialize;
+use lemmy_server::nodeinfo;
embed_migrations!();
@@ -199,7 +198,7 @@ fn main() {
.service(web::resource("/").to(index))
// static resources
.service(actix_files::Files::new("/static", front_end_dir()))
- .route("/nodeinfo/2.0.json", web::get().to(node_info))
+ .route("/nodeinfo/2.0.json", web::get().to(nodeinfo::node_info))
})
.bind("0.0.0.0:8536")
.unwrap()
@@ -209,56 +208,6 @@ fn main() {
let _ = sys.run();
}
-#[derive(Serialize)]
-struct Software {
- name: String,
- version: String,
-}
-
-#[derive(Serialize)]
-struct Usage {
- users: Users,
- localPosts: i32,
- localComments: i32,
-}
-
-#[derive(Serialize)]
-struct Users {
- total: i32,
-}
-
-#[derive(Serialize)]
-struct NodeInfo {
- version: String,
- software: Software,
- protocols: [String; 0],
- usage: Usage,
- openRegistrations: bool,
-}
-
-fn node_info() -> Result<Json<NodeInfo>> {
- // TODO: get info from database
- // TODO: need to get lemmy version from somewhere else
- let conn = establish_connection();
- let userCount = User_::count(conn)
- let json = Json(NodeInfo {
- version: "2.0".to_string(),
- software: Software {
- name: "lemmy".to_string(),
- version: "0.1".to_string()
- },
- protocols: [], // TODO: activitypub once that is implemented
- usage: Usage {
- users: Users {
- total: 123,
- },
- localPosts: 123,
- localComments: 123,
- },
- openRegistrations: true });
- return Ok(json);
-}
-
fn index() -> Result<NamedFile, actix_web::error::Error> {
Ok(NamedFile::open(front_end_dir() + "/index.html")?)
}
diff --git a/server/src/nodeinfo.rs b/server/src/nodeinfo.rs
new file mode 100644
index 00000000..6790c042
--- /dev/null
+++ b/server/src/nodeinfo.rs
@@ -0,0 +1,60 @@
+use actix_web::web::Json;
+use serde::Serialize;
+use crate::db::establish_connection;
+use crate::db::community_view::SiteView;
+use actix_web::*;
+use failure::Error;
+use crate::version;
+
+#[derive(Serialize)]
+pub struct Software {
+ name: String,
+ version: String,
+}
+
+#[derive(Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Usage {
+ users: Users,
+ local_posts: i64,
+ local_comments: i64,
+}
+
+#[derive(Serialize)]
+pub struct Users {
+ total: i64,
+}
+
+#[derive(Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct NodeInfo {
+ version: String,
+ software: Software,
+ protocols: [String; 0],
+ usage: Usage,
+ open_registrations: bool,
+}
+
+pub fn node_info() -> Result<Json<NodeInfo>, Error> {
+ let conn = establish_connection();
+ let site_view = match SiteView::read(&conn) {
+ Ok(site_view) => site_view,
+ Err(_e) => return Err(_e)?,
+ };
+ let json = Json(NodeInfo {
+ version: "2.0".to_string(),
+ software: Software {
+ name: "lemmy".to_string(),
+ version: version::VERSION.to_string(),
+ },
+ protocols: [], // TODO: put 'activitypub' once that is implemented
+ usage: Usage {
+ users: Users {
+ total: site_view.number_of_users,
+ },
+ local_posts: site_view.number_of_posts,
+ local_comments: site_view.number_of_comments,
+ },
+ open_registrations: true });
+ return Ok(json);
+} \ No newline at end of file
diff --git a/server/src/version.rs b/server/src/version.rs
new file mode 100644
index 00000000..fe1bacb5
--- /dev/null
+++ b/server/src/version.rs
@@ -0,0 +1 @@
+pub const VERSION: &'static str = "v0.4.0-6-gd767e94";
diff --git a/ui/set_version.js b/ui/set_version.js
deleted file mode 100755
index 21893085..00000000
--- a/ui/set_version.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const fs = require('fs');
-
-exports.setVersion = function() {
- let revision = require('child_process')
- .execSync('git describe --tags --long')
- .toString().trim();
- let line = `export let version: string = "${revision}";`;
- fs.writeFileSync("./src/version.ts", line);
-}
-
-this.setVersion()