To help fight spam, I’ve disabled user account registration on this blog and deleted all subscribers. I apologize if anyone actually used that feature; if RSS isn’t enough for you, e-mail me and I’ll make you an account. Unless you try to sell me Viagra.
Category: Miscellania
Automatically get the latest Chromium snapshot with launchd
I’ve been checking out the snapshots of Chromium recently, and they’re coming quicker than you can say “multithreaded web browser.” To facilitate always having the latest version, I wrote a quick LaunchAgent that takes care of it on Mac OS X. First, I have a script named ~/bin/chromiupdate:
#!/bin/bash # Downloads the latest version of Chromium. remove_working_dir() { rm -rf "${WORKING_DIR}" exit 0 } USER_DIR=$(dscl . -read /Users/$(whoami) NFSHomeDirectory | awk '{ print $2 }') USER_APP_DIR="${USER_DIR}/Applications" CHROMIUM_DIR="${USER_APP_DIR}/Chromium.app" LATEST_URL="http://build.chromium.org/buildbot/snapshots/sub-rel-mac/LATEST" TMP_DIR="/private/tmp" WORKING_DIR="${TMP_DIR}/.chromium_launchd" URL_BEGIN="http://build.chromium.org/buildbot/snapshots/sub-rel-mac" if [ ! -d "${CHROMIUM_DIR}" ]; then mkdir -p "${CHROMIUM_DIR}" fi INSTALLED_VERSION="$(defaults read "${CHROMIUM_DIR}/Contents/Info" SVNRevision)" VERSION=$(curl "${LATEST_URL}") if [ "${VERSION}" != "${INSTALLED_VERSION}" ]; then logger Installed Chromium version \(${INSTALLED_VERSION}\) does not equal \ latest version \(${VERSION}\), updating now... mkdir "${WORKING_DIR}" || exit 1 trap remove_working_dir 1 2 3 6 15 cd "${WORKING_DIR}" || exit 1 curl -O "${URL_BEGIN}/${VERSION}/chrome-mac.zip" unzip chrome-mac.zip rsync -HavP --exclude="Contents/MacOS/chrome_debug.log" \ "${WORKING_DIR}/chrome-mac/Chromium.app/" "${CHROMIUM_DIR}/" if [ "$(ps -aef | grep -i chromium | grep -v grep)" != "" ]; then open "${USER_DIR}/Library/Scripts/Chromium Update Dialog.app" fi logger "Chromium update complete. Version ${VERSION} installed." remove_working_dir else logger Installed Chromium version \(${INSTALLED_VERSION}\) is up-to-date. \ No action needed. fi exit 0
Next, I have a property list named ~/Library/LaunchAgents/com.slaunchaman.chromium.plist:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd > <plist version="1.0"> <dict> <key>Label</key> <string>com.slaunchaman.chromium</string> <key>Program</key> <string>/Users/slauncha/bin/chromiupdate</string> <key>KeepAlive</key> <false/> <key>StartInterval</key> <integer>3600</integer> <key>RunAtLoad</key> <true/> <key>StandardOutPath</key> <string>/dev/null</string> <key>StandardErrorPath</key> <string>/dev/null</string> </dict> </plist>
Finally, I have an AppleScript at ~/Library/Scripts/Chromium Update Dialog.app:
display dialog "Chromium was just updated. You should restart it."
The LaunchAgent runs once an hour, checking to see if the installed version of Chromium is older than the latest snapshot. If so, it downloads it and uses rsync to copy the changes. The script places Chromium in ~/Applications, but it shouldn’t be hard to modify to put it into /Applications.
Take Me Home 1.0.1 Rejected
Apple rejected Take Me Home 1.0.1 for a small issue, so I’ll have to hurry up and finish 1.1 to get that issue fixed. Rest assured it’s being worked on.
Site Update
I’ve updated this site to WordPress 2.7. Wahoo! I also cleaned up some old posts, re-did some tags, and cleaned out old tags. Posts are also now sorted into categories.
Regularly Scheduled Programming
I’ve been busy, between wedding planning, work, and moving, but I’m back on the blogosphere!