#!/usr/bin/osascript -- format a number as a string with leading zero if needed to format(aNumber) set resultString to aNumber as text if length of resultString < 2 set resultString to "0" & resultString end if return resultString end format -- join a list with a delimiter to concatenation of aList given delimiter:aDelimiter set tid to AppleScript's text item delimiters set AppleScript's text item delimiters to { aDelimiter } set resultString to aList as text set AppleScript's text item delimiters to tid return resultString end join -- apply a handler to every item in a list, returning -- a list of the results to mapping of aList given function:aHandler set resultList to {} global h set h to aHandler repeat with anItem in aList set resultList to resultList & h(anItem) end repeat return resultList end mapping -- return an ISO-8601-formatted string representing the current date and time -- in UTC to iso8601() set { year:y, month:m, day:d, ¬ hours:hr, minutes:min, seconds:sec } to ¬ (current date) - (time to GMT) set ymdList to the mapping of { y, m as integer, d } given function:format set ymd to the concatenation of ymdList given delimiter:"-" set hmsList to the mapping of { hr, min, sec } given function:format set hms to the concatenation of hmsList given delimiter:":" set dateTime to the concatenation of {ymd, hms} given delimiter:"T" return dateTime & "Z" end iso8601 to exists(filePath) try filePath as alias return true on error return false end try end exists on run argv set curDir to (do shell script "pwd") set notesFile to POSIX file (curDir & "/NOTES.TXT") if (count argv) is 0 then if exists(notesFile) then set text item delimiters to {linefeed} return paragraphs of (read notesFile) as text else log "No notes here." return end if else try set fd to open for access notesFile with write permission write (iso8601() & linefeed & tab) to fd starting at eof set AppleScript's text item delimiters to {" "} write ((argv as text) & linefeed) to fd starting at eof close access fd return true on error errMsg number errNum try close access fd end try return "unable to open " & notesFile & ": " & errMsg end try end if end run