Mercurial > lcfOS
comparison python/hexutil.py @ 244:58155c7c4a8e
Add hexutil
author | Windel Bouwman |
---|---|
date | Wed, 24 Jul 2013 19:47:13 +0200 |
parents | |
children | f254b87258e6 |
comparison
equal
deleted
inserted
replaced
243:ef683881c64e | 244:58155c7c4a8e |
---|---|
1 #!/usr/bin/python | |
2 | |
3 import sys | |
4 import argparse | |
5 from hexfile import HexFile | |
6 | |
7 def hex2int(s): | |
8 if s.startswith('0x'): | |
9 s = s[2:] | |
10 return int(s, 16) | |
11 raise ValueError('Hexadecimal value must begin with 0x') | |
12 | |
13 parser = argparse.ArgumentParser( | |
14 description='hexfile manipulation tool by Windel Bouwman') | |
15 subparsers = parser.add_subparsers(title='commands', | |
16 description='possible commands', dest='command') | |
17 | |
18 p = subparsers.add_parser('info', help='dump info about hexfile') | |
19 p.add_argument('hexfile', type=argparse.FileType('r')) | |
20 | |
21 p = subparsers.add_parser('new', help='create empty hexfile') | |
22 p.add_argument('hexfile', type=argparse.FileType('x')) | |
23 | |
24 p = subparsers.add_parser('add', help='add binary data from file to hexfile') | |
25 p.add_argument('hexfile', type=argparse.FileType('r+'), help="the hexfile to add the data to") | |
26 p.add_argument('address', type=hex2int, help="hex address") | |
27 p.add_argument('datafile', type=argparse.FileType('rb'), help='binary file to add') | |
28 | |
29 def main(args): | |
30 if args.command == 'info': | |
31 hf = HexFile() | |
32 hf.load(args.hexfile) | |
33 print(hf) | |
34 for region in hf.regions: | |
35 print(region) | |
36 elif args.command == 'new': | |
37 hf = HexFile() | |
38 hf.save(args.hexfile) | |
39 elif args.command == 'add': | |
40 hf = HexFile() | |
41 hf.load(args.hexfile) | |
42 data = args.datafile.read() | |
43 hf.addRegion(args.address, data) | |
44 else: | |
45 raise NotImplementedError() | |
46 | |
47 if __name__ == '__main__': | |
48 args = parser.parse_args() | |
49 if not args.command: | |
50 parser.print_usage() | |
51 sys.exit(1) | |
52 main(args) | |
53 |