summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2023-10-15 21:40:46 -0400
committerSacha Chua <sacha@sachachua.com>2023-10-15 21:40:46 -0400
commit92983544ea1448c06c57bdbe014c08aa9a41cfe9 (patch)
tree9b2f86b36b53a95a03d3ffbe69c27d8c80c0caf2
parent1fd8e1de812399fc0fa617dcc0513e15ca9378f2 (diff)
downloademacsconf-el-92983544ea1448c06c57bdbe014c08aa9a41cfe9.tar.xz
emacsconf-el-92983544ea1448c06c57bdbe014c08aa9a41cfe9.zip
move json publishing to emacsconf-publish
Diffstat (limited to '')
-rw-r--r--emacsconf-publish.el29
-rw-r--r--emacsconf.el51
2 files changed, 52 insertions, 28 deletions
diff --git a/emacsconf-publish.el b/emacsconf-publish.el
index 9d311b7..a142fd7 100644
--- a/emacsconf-publish.el
+++ b/emacsconf-publish.el
@@ -1209,7 +1209,6 @@ Entries are sorted chronologically, with different tracks interleaved."
(interactive)
(setq filename (or filename (expand-file-name "index.html" emacsconf-backstage-dir)))
(let ((info (or emacsconf-schedule-draft (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))
- (default-directory emacsconf-cache-dir)
(emacsconf-main-extensions (append emacsconf-main-extensions emacsconf-publish-backstage-extensions)))
(with-temp-file filename
(let* ((talks
@@ -1533,6 +1532,32 @@ answers without needing to listen to everything again. You can see <a href=\"htt
(and (file-exists-p file) file)))
extensions)))))
+(defun emacsconf-publish-talks-json ()
+ "Return JSON format with a subset of talk information."
+ (json-encode
+ (list
+ :talks
+ (mapcar
+ (lambda (o)
+ (apply
+ 'list
+ (cons :start-time (format-time-string "%FT%T%z" (plist-get o :start-time) t))
+ (cons :end-time (format-time-string "%FT%T%z" (plist-get o :end-time) t))
+ (mapcar
+ (lambda (field)
+ (cons field (plist-get o field)))
+ '(:slug :title :speakers :pronouns :pronunciation :url :track :file-prefix))))
+ (emacsconf-filter-talks (emacsconf-get-talk-info))))))
+
+(defun emacsconf-publish-talks-json-to-files ()
+ "Export talk information as JSON so that we can use it in shell scripts."
+ (interactive)
+ (mapc (lambda (dir)
+ (when (and dir (file-directory-p dir))
+ (with-temp-file (expand-file-name "talks.json" dir)
+ (insert (emacsconf-talks-json)))))
+ (list emacsconf-res-dir emacsconf-ansible-directory)))
+
(defun emacsconf-talks-csv ()
"Make a CSV of the talks.
Columns are: slug,title,speakers,talk page url,video url,duration,sha."
@@ -1595,7 +1620,7 @@ answers without needing to listen to everything again. You can see <a href=\"htt
(emacsconf-public-talks (emacsconf-get-talk-info))))))
(insert (orgtbl-to-csv
(cons '("Conference" "Slug" "Title" "Speakers" "Talk page URL" "Video URL" "Date" "Duration" "SHA" "Youtube URL" "Toobnix URL")
- results)
+ results)
nil)))))
(defun emacsconf-generate-pad-template (emacsconf-info)
diff --git a/emacsconf.el b/emacsconf.el
index 3d3dc6f..7839688 100644
--- a/emacsconf.el
+++ b/emacsconf.el
@@ -257,6 +257,31 @@ Return the list of new filenames."
t))
(emacsconf-rename-files talk)))
+(defun emacsconf-rename-and-upload-to-res-cache (talk &optional filename)
+ "Rename marked files or the current file, then upload to res cache."
+ (interactive (list (emacsconf-complete-talk-info)))
+ (mapc
+ (lambda (file)
+ (copy-file
+ file
+ (expand-file-name
+ (file-name-nondirectory file)
+ (expand-file-name "cache"
+ emacsconf-res-dir))
+ t))
+ (emacsconf-rename-files talk)))
+
+(defun emacsconf-copy-to-cache-and-backstage ()
+ "Copy current file to cache and backstage."
+ (interactive)
+ (let ((file (buffer-file-name)))
+ (dolist (dir (list emacsconf-cache-dir emacsconf-backstage-dir))
+ (copy-file
+ file
+ (expand-file-name (file-name-nondirectory file)
+ dir)
+ t))))
+
(defun emacsconf-upload-copy-from-json (talk key filename)
"Parse PsiTransfer JSON files and copy the uploaded file to the backstage directory.
The file is associated with TALK. KEY identifies the file in a multi-file upload.
@@ -1194,32 +1219,6 @@ The subheading should match `emacsconf-abstract-heading-regexp'."
(message "Missing %s" (mapconcat #'symbol-name missing ", "))
(format "Missing %s" (mapconcat #'symbol-name missing ", "))))))
-(defun emacsconf-talks-json ()
- "Return JSON format with a subset of talk information."
- (json-encode
- (list
- :talks
- (mapcar
- (lambda (o)
- (apply
- 'list
- (cons :start-time (format-time-string "%FT%T%z" (plist-get o :start-time) t))
- (cons :end-time (format-time-string "%FT%T%z" (plist-get o :end-time) t))
- (mapcar
- (lambda (field)
- (cons field (plist-get o field)))
- '(:slug :title :speakers :pronouns :pronunciation :url :track :file-prefix))))
- (emacsconf-filter-talks (emacsconf-get-talk-info))))))
-
-(defun emacsconf-export-talks-json ()
- (interactive)
- "Export talk information as JSON so that we can use it in shell scripts."
- (mapc (lambda (dir)
- (when (and dir (file-directory-p dir))
- (with-temp-file (expand-file-name "talks.json" dir)
- (insert (emacsconf-talks-json)))))
- (list emacsconf-res-dir emacsconf-ansible-directory)))
-
(defun emacsconf-ansible-load-vars (file)
(interactive (list (read-file-name "File: " emacsconf-ansible-directory)))
(with-temp-buffer