]> Untitled Git - lemmy.git/commitdiff
got it working
authorFelix Ableitner <me@nutomic.com>
Fri, 15 Nov 2019 02:08:25 +0000 (03:08 +0100)
committerFelix Ableitner <me@nutomic.com>
Sat, 16 Nov 2019 00:31:41 +0000 (01:31 +0100)
.gitignore
docker/dev/deploy.sh
server/src/lib.rs
server/src/main.rs
server/src/nodeinfo.rs [new file with mode: 0644]
server/src/version.rs [new file with mode: 0644]
ui/set_version.js [deleted file]

index 2feec03c144427d3b1bdc0cce2411e44372bfe40..4cb8939f5f67c82a2011fa209332ca0f4b444ffe 100644 (file)
@@ -1,2 +1,4 @@
 ansible/inventory
 ansible/passwords/
+build/
+.idea/
index 4784a742765ad27aa149dfa8ff9edb099f097da0..64d815ade133af36a9d0ed2978bd932fab8a9475 100755 (executable)
@@ -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
index 162d957861e047b7a03b1518db160248851c6232..b5c26762f7aaa620a51e694293a1b00454169f4e 100644 (file)
@@ -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;
index 392b0bbb9d5595acc46c37edfa360c1976ed0eda..f930f2eda26dfb5bf4595dcbe621279c0189e032 100644 (file)
@@ -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 (file)
index 0000000..6790c04
--- /dev/null
@@ -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 (file)
index 0000000..fe1bacb
--- /dev/null
@@ -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 (executable)
index 2189308..0000000
+++ /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()