#!/usr/bin/env python3
import argparse
import datetime
+import os
import getpass
import sys
parser.add_argument('-e', '--expires', default='9912', help='Date of expiration on card (Format: YYMM)')
parser.add_argument('-s', '--service', default='121', help='Service code of card (TODO: help for service code)')
parser.add_argument('-p', '--pan', default='', help='Primary account number of card (CAUTION: COMMAND LINE SAVED IN SHELL HISTORIES)')
+ parser.add_argument('-f', '--force', action=argparse.BooleanOptionalAction, default=False, help='Force file write even if exists')
+ parser.add_argument('-a', '--append', action=argparse.BooleanOptionalAction, default=False, help='Append to the file instead of overwriting it')
parser.add_argument('FILE')
args = parser.parse_args(args=argv[1:])
print(f'Primary account number is not numeric or is longer than 19 characters!')
exitcode |= 16
+ FILE = args.FILE
+ if not args.force and not args.append and os.path.exists(args.FILE):
+ print(f'File ({FILE}) exists (use -a to append or -f to overwrite)')
+ exitcode |= 32
+
if exitcode != 0:
return exitcode
T1 = f'%B{PAN}^{NAME}^{EXP}{SVC}^^^?'
T2 = f';{PAN}={EXP}{SVC}===?'
T3 = '+?'
- FILE = args.FILE
- with open(FILE, 'w') as fp:
+ with open(FILE, 'a' if args.append else 'w') as fp:
datestr = TODAY.strftime('%Y.%m.%d %H:%M:%S')
fp.write('\n'.join([datestr, T1, T2, T3, '', '']))
print(f'Magstripe track file "{FILE}" written!')