old_contents: #!/usr/bin/env python
  
  import argparse
  import errno
  import subprocess
  import sys
  import os
  
  from lib.util import *
  
  
  SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  NODE_VERSION = 'v0.10.15'
  NODE_DIST_URL = 'https://gh-contractor-zcbenz.s3.amazonaws.com/node/dist'
  IS_POSIX = (sys.platform != 'win32') and (sys.platform != 'cygwin')
  
  
  def main():
    os.chdir(SOURCE_ROOT)
  
    args = parse_args()
    if not node_needs_update(args.version):
      return 0
  
    url, filename = get_node_url(args.url, args.version)
    directory = tempdir(prefix='atom-shell-')
    path = os.path.join(directory, filename)
    download('Download node', url, path)
  
    if IS_POSIX:
      root_name = 'node-{0}-{1}-x86'.format(args.version, sys.platform)
      member = os.path.join(root_name, 'bin', 'node')
      extract_tarball(path, member, directory)
      node_path = os.path.join(directory, member)
  
    copy_node(node_path)
  
  
  def parse_args():
    parser = argparse.ArgumentParser(description='Update node binary')
    parser.add_argument('--version',
                        help='Version of node',
                        default=NODE_VERSION,
                        required=False)
    parser.add_argument('--url',
                        help='URL to download node',
                        default=NODE_DIST_URL,
                        required=False)
    return parser.parse_args()
  
  
  def node_needs_update(target_version):
    try:
      node = os.path.join('node', 'node')
      if not IS_POSIX:
        node += '.exe'
      version = subprocess.check_output([node, '--version'])
      return version.strip() != target_version
    except OSError as e:
      if e.errno != errno.ENOENT:
        raise
      return True
  
  
  def get_node_url(base_url, target_version):
    if IS_POSIX:
      distname = 'node-{0}-{1}-x86.tar.gz'.format(target_version, sys.platform)
    else:
      distname = 'node.exe'
    return '{0}/{1}/{2}'.format(base_url, target_version, distname), distname
  
  
  def copy_node(node_path):
    safe_mkdir('node')
    node = os.path.join('node', 'node')
    safe_unlink(node)
    os.rename(node_path, node)
  
  
  if __name__ == '__main__':
    sys.exit(main())
  
new_contents: #!/usr/bin/env python
  
  import argparse
  import errno
  import subprocess
  import stat
  import sys
  import os
  
  from lib.util import *
  
  
  SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  NODE_VERSION = 'v0.10.15'
  NODE_DIST_URL = 'https://gh-contractor-zcbenz.s3.amazonaws.com/node/dist'
  IS_POSIX = (sys.platform != 'win32') and (sys.platform != 'cygwin')
  
  
  def main():
    os.chdir(SOURCE_ROOT)
  
    args = parse_args()
    if not node_needs_update(args.version):
      return 0
  
    url, filename = get_node_url(args.url, args.version)
    directory = tempdir(prefix='atom-shell-')
    node_path = os.path.join(directory, filename)
    download('Download node', url, node_path)
  
    if IS_POSIX:
      root_name = 'node-{0}-{1}-x86'.format(args.version, sys.platform)
      member = os.path.join(root_name, 'bin', 'node')
      extract_tarball(node_path, member, directory)
      node_path = os.path.join(directory, member)
  
    copy_node(node_path)
  
  
  def parse_args():
    parser = argparse.ArgumentParser(description='Update node binary')
    parser.add_argument('--version',
                        help='Version of node',
                        default=NODE_VERSION,
                        required=False)
    parser.add_argument('--url',
                        help='URL to download node',
                        default=NODE_DIST_URL,
                        required=False)
    return parser.parse_args()
  
  
  def node_needs_update(target_version):
    try:
      node = os.path.join('node', 'node')
      if not IS_POSIX:
        node += '.exe'
      version = subprocess.check_output([node, '--version'])
      return version.strip() != target_version
    except OSError as e:
      if e.errno != errno.ENOENT:
        raise
      return True
  
  
  def get_node_url(base_url, target_version):
    if IS_POSIX:
      distname = 'node-{0}-{1}-x86.tar.gz'.format(target_version, sys.platform)
    else:
      distname = 'node.exe'
    return '{0}/{1}/{2}'.format(base_url, target_version, distname), distname
  
  
  def copy_node(node_path):
    safe_mkdir('node')
    node = os.path.join('node', 'node')
    if not IS_POSIX:
      node += '.exe'
    safe_unlink(node)
    os.rename(node_path, node)
  
    st = os.stat(node)
    os.chmod(node, st.st_mode | stat.S_IEXEC)
  
  
  if __name__ == '__main__':
    sys.exit(main())
  
subject: Fix the update-node script.