For now mblog only contains the mnote-html executable which takes a mime
message from a maildir and prints the equivalent HTML fragment to
stdout. It is intended to work with the mblaze(7) utilities,
i. e. mnote-html resolves all `object` tags to proper `img` inclusions
with the correct filename, so mshow(1)'s -x version can supply the
needed image files. A note created using Apple's Notes app (tested with
the iOS version) can be converted in a viewable HTML file like this:
    $ mnote-html path/to/msg > fragment.html
    $ mshow -x path/to/msg
    $ cat <(echo "<!DOCTYPE html>") fragment.html > document.html
    $ xdg-open document.html
Note that only the limited feature set of Apple Notes when using the
IMAP backend is supported. The iCloud-based one has more (quite neat)
features, but its notes can only accessed via an internal API as far as
I know.
This CLI is a bit impractical due to the big startup overhead of loading
the lisp image. mblog should be become a fully fletched static site
generator in the future, but this is a good starting point and providing
the mnote-html tool is certainly useful.
Change-Id: Iee6d1558e939b932da1e70ca2d2ae75638d855df
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3271
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
		
	
			
		
			
				
	
	
		
			17 lines
		
	
	
	
		
			665 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
	
		
			665 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
(in-package :mblog)
 | 
						|
(declaim (optimize (safety 3)))
 | 
						|
 | 
						|
(defparameter +synopsis+ "mnote-html FILE [FILE [ ... ]]")
 | 
						|
 | 
						|
;; TODO(sterni): handle relevant conditions
 | 
						|
(defun main ()
 | 
						|
  (let* ((args (uiop:command-line-arguments))
 | 
						|
         (help-p (or (not args)
 | 
						|
                     (find-if (lambda (x)
 | 
						|
                                (member x '("-h" "--help" "--usage")
 | 
						|
                                        :test #'string=))
 | 
						|
                              args))))
 | 
						|
    (if help-p (format *error-output* "Usage: ~A~%" +synopsis+)
 | 
						|
      (loop for arg in args
 | 
						|
            do (apple-note-html-fragment
 | 
						|
                (mime:mime-message (pathname arg)) *standard-output*)))))
 |