|
|
@@ -0,0 +1,73 @@
|
|
|
+(ns logseq.tasks.dev.mobile
|
|
|
+ "Tasks for mobile development"
|
|
|
+ (:require [babashka.tasks :refer [shell]]
|
|
|
+ [babashka.fs :as fs]
|
|
|
+ [clojure.string :as string]
|
|
|
+ [logseq.tasks.util :as task-util]))
|
|
|
+
|
|
|
+(defn- open-dev-app
|
|
|
+ "Opens mobile app when watch process has built main.js"
|
|
|
+ [cmd]
|
|
|
+ (let [start-time (java.time.Instant/now)]
|
|
|
+ (loop [n 1000]
|
|
|
+ (if (and (fs/exists? "static/js/main.js")
|
|
|
+ (task-util/file-modified-later-than? "static/js/main.js" start-time))
|
|
|
+ (shell cmd)
|
|
|
+ (println "Waiting for app to build..."))
|
|
|
+ (Thread/sleep 1000)
|
|
|
+ (when-not (or (and (fs/exists? "ios/App/App/public/static/js/main.js")
|
|
|
+ (task-util/file-modified-later-than? "ios/App/App/public/static/js/main.js" start-time))
|
|
|
+ (and (fs/exists? "android/App/src/main/assets/public/static/js/main.js")
|
|
|
+ (task-util/file-modified-later-than? "android/App/src/main/assets/public/static/js/main.js" start-time)))
|
|
|
+ (recur (dec n))))))
|
|
|
+
|
|
|
+(defn- set-system-env
|
|
|
+ "Updates capacitor.config.ts serve url with IP from ifconfig"
|
|
|
+ []
|
|
|
+ (let [ip (string/trim (:out (shell {:out :string} "ipconfig getifaddr en0")))
|
|
|
+ logseq-app-server-url (format "%s://%s:%s" "http" ip "3001")]
|
|
|
+ (println "Server URL:" logseq-app-server-url)
|
|
|
+ (shell "git checkout capacitor.config.ts")
|
|
|
+ (let [new-body (-> (slurp "capacitor.config.ts")
|
|
|
+ (string/replace "// , server:" " , server:")
|
|
|
+ (string/replace "// url:" " url:")
|
|
|
+ (string/replace "process.env.LOGSEQ_APP_SERVER_URL"
|
|
|
+ (pr-str logseq-app-server-url))
|
|
|
+ (string/replace "// cleartext:" " cleartext:")
|
|
|
+ (string/replace "// }" " }"))]
|
|
|
+ (spit "capacitor.config.ts" new-body))))
|
|
|
+
|
|
|
+
|
|
|
+(defn app-watch
|
|
|
+ "Watches environment to reload cljs, css and other assets for mobile"
|
|
|
+ []
|
|
|
+ (println "set-system-env")
|
|
|
+ (set-system-env)
|
|
|
+ (doseq [cmd ["yarn clean"
|
|
|
+ "yarn app-watch"]]
|
|
|
+ (println cmd)
|
|
|
+ (shell cmd)))
|
|
|
+
|
|
|
+(defn npx-cap-run-ios
|
|
|
+ "Copy assets files to iOS build directory, and run app in Xcode"
|
|
|
+ []
|
|
|
+ (open-dev-app "npx cap sync ios")
|
|
|
+ (shell "npx cap open ios"))
|
|
|
+
|
|
|
+(defn npx-cap-run-android
|
|
|
+ "Copy assets files to Android build directory, and run app in Android Studio"
|
|
|
+ []
|
|
|
+ (open-dev-app "npx cap sync android")
|
|
|
+ (shell "npx cap open android"))
|
|
|
+
|
|
|
+(defn run-ios-release
|
|
|
+ "Build iOS app release"
|
|
|
+ []
|
|
|
+ (shell "git checkout capacitor.config.ts")
|
|
|
+ (shell "yarn run-ios-release"))
|
|
|
+
|
|
|
+(defn run-android-release
|
|
|
+ "Build Android app release"
|
|
|
+ []
|
|
|
+ (shell "git checkout capacitor.config.ts")
|
|
|
+ (shell "yarn run-android-release"))
|