Browse Source

feat: add aero for configuration

Miguel Ángel Moreno 4 days ago
parent
commit
185a248494
5 changed files with 35 additions and 3 deletions
  1. 2 1
      deps.edn
  2. 6 0
      resources/config.edn
  3. 3 1
      src/backend/tubo/core.clj
  4. 2 1
      src/backend/tubo/http.clj
  5. 22 0
      src/shared/tubo/config.cljc

+ 2 - 1
deps.edn

@@ -1,4 +1,5 @@
-{:deps {com.github.TeamNewPipe/NewpipeExtractor {:mvn/version "0.24.4"}
+{:deps {aero/aero                               {:mvn/version "1.1.6"}
+        com.github.TeamNewPipe/NewpipeExtractor {:mvn/version "0.24.5"}
         com.squareup.okhttp3/okhttp             {:mvn/version "4.10.0"}
         http-kit/http-kit                       {:mvn/version "2.7.0-alpha1"}
         metosin/reitit-core                     {:mvn/version "0.5.18"}

+ 6 - 0
resources/config.edn

@@ -0,0 +1,6 @@
+{:backend
+ {:port #or [#env BACKEND_PORT 3000]
+  :bg-helper-url
+  #or
+   [#env BG_HELPER_URL #join ["http://localhost:" #ref [:bg-helper :port]]]}
+ :bg-helper {:port #or [#env BG_HELPER_PORT 3005]}}

+ 3 - 1
src/backend/tubo/core.clj

@@ -3,6 +3,8 @@
   (:require
    [tubo.http :as http]))
 
-(defn -main [& _] (http/start-server!))
+(defn -main
+  [& _]
+  (http/start-server!))
 
 (defn reset [] (http/stop-server!))

+ 2 - 1
src/backend/tubo/http.clj

@@ -1,6 +1,7 @@
 (ns tubo.http
   (:require
    [org.httpkit.server :refer [run-server]]
+   [tubo.config :as config]
    [tubo.downloader :as downloader]
    [tubo.router :as router])
   (:import
@@ -10,7 +11,7 @@
 (defonce server (atom nil))
 
 (defn start-server!
-  ([] (start-server! 3000))
+  ([] (start-server! (config/backend-port (config/config))))
   ([port]
    (NewPipe/init (downloader/create-downloader-impl) (Localization. "en" "US"))
    (reset! server (run-server #'router/app {:port port}))

+ 22 - 0
src/shared/tubo/config.cljc

@@ -0,0 +1,22 @@
+(ns tubo.config
+  (:require
+   [aero.core :refer [read-config]]
+   #?@(:clj [[clojure.java.io :refer [resource]]]
+       :node [["path" :as path]])))
+
+(defn config
+  []
+  (read-config #?(:clj (resource "config.edn")
+                  :node (path/resolve "./resources/config.edn"))))
+
+(defn bg-helper-url
+  [config]
+  (get-in config [:backend :bg-helper-url]))
+
+(defn bg-helper-port
+  [config]
+  (get-in config [:bg-helper :port]))
+
+(defn backend-port
+  [config]
+  (get-in config [:backend :port]))