A few days ago, I wrote an article about how to create a service in Automator to copy the selected file's path to the clipboard while in the Finder.app.
I was playing around some more and thought it would be cool to be able to right click and convert a markdown file to HTML. This can be useful for lazy people who don't want to open and app or terminal just to convert.
Here is the trick, you need absolute paths to node and the target module (or bin entry js file) file you are trying to run
Here is the code:
-- setup some valid extensions for markdown files
property validExtensions : {"md", "markdown", "mdown"}
tell application "Finder"
set theFile to item 1 of (get selection)
-- check if the extension is correct
if (the name extension of theFile is in the validExtensions) then
set selectedItem to the selection as text
set thePath to POSIX path of selectedItem
-- created a quoted path in case there are special characters
set nicePath to quoted form of thePath
-- here is the trick, you need absolute paths to node and the target bin
-- just tack on the extension for html
do shell script "/usr/local/bin/node /usr/local/share/npm/bin/marked --gfm " & nicePath & " > " & nicePath & ".html"
-- find out what the new file is called
set outName to (do shell script "basename " & nicePath & ".html ") of result
-- since there is no progress, let me know when your done
display notification outName & " created successfully" with title "Markdown Conversion Finished"
-- allow time for the notification to show
delay 2
else
-- wrong file so show this
display dialog "the file is not a valid Markdown file" with title "Conversion Error"
-- allow time for the notification to show
delay 2
end if
end tell
Now this can be used in an Automator Service, which you can find out how to make in the previous article.
If you modify this for any other cool node tools, please let me know!
PS: Keep in mind that this doesn't iterate through multiple files. Only single files.