forked from logseq/logseq
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
3 changed files
with
89 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
(ns logseq.tasks.dev.publish | ||
(:require [promesa.core :as p] | ||
["path" :as path] | ||
["fs-extra$default" :as fs])) | ||
|
||
(defn- handle-export-publish-assets | ||
[html custom-css-path export-css-path repo-path asset-filenames output-path] | ||
(let [app-path "static" | ||
root-dir output-path | ||
static-dir (path/join root-dir "static") | ||
assets-from-dir (path/join repo-path "assets") | ||
assets-to-dir (path/join root-dir "assets") | ||
index-html-path (path/join root-dir "index.html")] | ||
(p/let [_ (. fs ensureDir static-dir) | ||
_ (. fs ensureDir assets-to-dir) | ||
_ (p/all (concat | ||
[(. fs writeFile index-html-path html) | ||
|
||
|
||
(. fs copy (path/join app-path "404.html") (path/join root-dir "404.html"))] | ||
|
||
(map | ||
(fn [filename] | ||
(-> (. fs copy (path/join assets-from-dir filename) (path/join assets-to-dir filename)) | ||
(p/catch | ||
(fn [e] | ||
;; TODO: Make into a callback | ||
(println "Failed to copy" | ||
(str {:from (path/join assets-from-dir filename) | ||
:to (path/join assets-to-dir filename)}) | ||
e))))) | ||
asset-filenames) | ||
|
||
(map | ||
(fn [part] | ||
(. fs copy (path/join app-path part) (path/join static-dir part))) | ||
["css" "fonts" "icons" "img" "js"]))) | ||
export-css (if (fs/existsSync export-css-path) (. fs readFile export-css-path) "") | ||
_ (. fs writeFile (path/join static-dir "css" "export.css") export-css) | ||
custom-css (if (fs/existsSync custom-css-path) (. fs readFile custom-css-path) "") | ||
_ (. fs writeFile (path/join static-dir "css" "custom.css") custom-css) | ||
js-files ["main.js" "code-editor.js" "excalidraw.js" "tldraw.js"] | ||
_ (p/all (map (fn [file] | ||
(. fs removeSync (path/join static-dir "js" file))) | ||
js-files)) | ||
_ (p/all (map (fn [file] | ||
(. fs moveSync | ||
(path/join static-dir "js" "publishing" file) | ||
(path/join static-dir "js" file))) | ||
js-files)) | ||
_ (. fs removeSync (path/join static-dir "js" "publishing")) | ||
;; remove source map files | ||
;; TODO: ugly, replace with ls-files and filter with ".map" | ||
_ (p/all (map (fn [file] | ||
(. fs removeSync (path/join static-dir "js" (str file ".map")))) | ||
["main.js" "code-editor.js" "excalidraw.js"]))] | ||
|
||
;; TODO: Make into a callback | ||
(println | ||
:notification | ||
{:type "success" | ||
:payload (str "Export public pages and publish assets to " root-dir " successfully 🎉")})))) | ||
|
||
(defn -main | ||
[args] | ||
(let [repo-path (or (first args) | ||
(throw (ex-info "GRAPH DIR required" {}))) | ||
output-path (or (second args) | ||
(throw (ex-info "OUT DIR required" {}))) | ||
html "WOOHOO" | ||
custom-css-path (path/join repo-path "logseq" "custom.css") | ||
export-css-path (path/join repo-path "logseq" "export.css") | ||
;; TODO: Read from repo-path | ||
asset-filenames []] | ||
(handle-export-publish-assets html custom-css-path export-css-path repo-path asset-filenames output-path))) | ||
|
||
(-main *command-line-args*) |