   store.rename 'update_progress', 'updates', {}
   store.modify 'updates', (updates) ->
     updates.settings ?= []
+    # Determine whether or not the user has just installed Template.
+    isNewInstall = updates.settings.length is 0
     # Check if the settings need updated for 0.1.0.0.
     if '0.1.0.0' not in updates.settings
       # Update the settings for 0.1.0.0.

  substring: 'Linux'
  title:     'Linux'
]
# List of URL shortener services supported by Template.
SHORTENERS        = [
  # Setup [bitly](http://bit.ly).

      req.setRequestHeader 'Content-Type', service.contentType
      # Setup the OAuth header, if required.
      if service.oauth and service.isOAuthEnabled()
        oauth = yes
        req.setRequestHeader 'Authorization',
          service.oauth.getAuthorizationHeader sUrl, service.method, params
      # Wait for the response and let the service handle it before passing the
      # result to `callback` via the runner.
      req.onreadystatechange = ->
        if req.readyState is 4
          if req.status is 200
            updateUrlShortenerUsage service.name, oauth
            runner.finish
              shortUrl:  service.output req.responseText
              shortener: title
              success:   yes
          else
            # Something went wrong so let's tell the user.
            runner.finish
              message:   i18n.get 'shortener_error', title
              shortener: title
              success:   no
      # Finally, send the HTTP request.
      req.send service.input url
    catch error
      # Aw snap! Notify the user via `callback`.
      log.error error
      runner.finish
        message:   i18n.get 'shortener_error', title
        shortener: title
        success:   no
  runner.run (result = {}) ->
    callback? result

# Retrieve the active URL shortener service.
getActiveUrlShortener = ->
