Make the self-updating function a bit more robust

This commit is contained in:
Ricardo Garcia 2011-01-12 21:07:56 +01:00
parent 0d8d9877ad
commit 0fe64c04f8

View file

@ -2296,20 +2296,26 @@ if __name__ == '__main__':
import getpass import getpass
import optparse import optparse
# Function to update the program file with the latest version from bitbucket.org # Function to update the program file with the latest version from the repository.
def update_self(downloader, filename): def update_self(downloader, filename):
# Note: downloader only used for options # Note: downloader only used for options
if not os.access(filename, os.W_OK): if not os.access(filename, os.W_OK):
sys.exit('ERROR: no write permissions on %s' % filename) sys.exit('ERROR: no write permissions on %s' % filename)
downloader.to_screen('Updating to latest stable version...') downloader.to_screen('Updating to latest stable version...')
try:
latest_url = 'http://github.com/rg3/youtube-dl/raw/master/LATEST_VERSION' latest_url = 'http://github.com/rg3/youtube-dl/raw/master/LATEST_VERSION'
latest_version = urllib.urlopen(latest_url).read().strip() latest_version = urllib.urlopen(latest_url).read().strip()
prog_url = 'http://github.com/rg3/youtube-dl/raw/%s/youtube-dl' % latest_version prog_url = 'http://github.com/rg3/youtube-dl/raw/%s/youtube-dl' % latest_version
newcontent = urllib.urlopen(prog_url).read() newcontent = urllib.urlopen(prog_url).read()
except (IOError, OSError), err:
sys.exit('ERROR: unable to download latest version')
try:
stream = open(filename, 'w') stream = open(filename, 'w')
stream.write(newcontent) stream.write(newcontent)
stream.close() stream.close()
except (IOError, OSError), err:
sys.exit('ERROR: unable to overwrite current version')
downloader.to_screen('Updated to version %s' % latest_version) downloader.to_screen('Updated to version %s' % latest_version)
# Parse command line # Parse command line