diff --git a/ripcd.py b/ripcd.py index e584f2e..64bb382 100755 --- a/ripcd.py +++ b/ripcd.py @@ -28,6 +28,13 @@ log = logging.getLogger('ripcd2') filesystemencoding = sys.getfilesystemencoding() +DATE_FMTS = [ + '%Y-%m-%d', + '%Y-%m', + '%Y', +] + + DRIVE_OFFSETS = { 'ASUS_BW-12B1ST_a': 6, 'ATAPI_iHES212_3': 702, @@ -254,6 +261,16 @@ def get_release_list_from_device(device): return res['release-list'] +def parse_date(datestr): + for fmt in DATE_FMTS: + try: + return datetime.datetime.strptime(datestr, fmt) + except ValueError: + continue + else: + raise ValueError('Could not parse date string "{}"'.format(datestr)) + + def prompt(text, validate=None): while True: try: @@ -299,7 +316,10 @@ def prompt_select_release(release_list): def release_year(release): - return datetime.datetime.strptime(release['date'], '%Y-%m-%d').year + try: + return parse_date(release['date']).year + except (KeyError, ValueError): + return None def safe_name(name):