Skip to content

Commit e825965

Browse files
committed
feat(modify): add unlock and lock ability for map files
1 parent ec255bf commit e825965

4 files changed

Lines changed: 43 additions & 1 deletion

File tree

sourcehold/__main__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from sourcehold.tool.argparsers.common import main_parser
1212
from sourcehold.tool.argparsers.services import services_parser, convert_parser
13+
from sourcehold.tool.modify.map import modify_map
1314

1415
file_input_output = argparse.ArgumentParser(add_help=False)
1516
file_input_output.add_argument("--in", help="files or folders to (un)pack", nargs='+', required=True)
@@ -77,7 +78,10 @@
7778
from .tool.convert.aiv import convert_aiv
7879

7980
def main():
80-
convert_aiv(args)
81+
if convert_aiv(args):
82+
return
83+
if modify_map(args):
84+
return
8185

8286
if args.service == "aiv":
8387
if args.method == "file":

sourcehold/tool/argparsers/services.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,10 @@
1111
convert_aiv_parser.add_argument('--to-format', required=False, default='')
1212

1313
memory_parser = services_parser.add_parser('memory')
14+
15+
modify_parser = services_parser.add_parser('modify')
16+
modify_subparser = modify_parser.add_subparsers(dest='type', required=True, title='type')
17+
18+
modify_map_parser = modify_subparser.add_parser('map', parents=[file_input_file_output])
19+
modify_map_parser.add_argument("--unlock", required=False, action='store_const', const=True)
20+
modify_map_parser.add_argument("--lock", required=False, action='store_const', const=True)

sourcehold/tool/modify/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import pathlib, sys
2+
3+
from sourcehold.maps.Map import Map
4+
5+
def modify_map(args):
6+
if args.service != "modify" or args.type != "map":
7+
return False
8+
inp = args.input
9+
if inp != '-' and not pathlib.Path(inp).exists():
10+
raise Exception(f"file does not exist: {inp}")
11+
m = Map().from_file(inp)
12+
print(args)
13+
if args.unlock:
14+
if m.u3.map_locked:
15+
print(f"map file was locked, is now unlocked", file=sys.stderr)
16+
m.u3.map_locked = 0
17+
else:
18+
print(f"map file was already locked", file=sys.stderr)
19+
if args.lock:
20+
if m.u3.map_locked:
21+
print(f"map file was already locked", file=sys.stderr)
22+
else:
23+
print(f"map file was unlocked, is now locked", file=sys.stderr)
24+
m.u3.map_locked = 1
25+
outp = args.output
26+
if not outp:
27+
outp = inp
28+
m.to_file(outp)
29+
return True

0 commit comments

Comments
 (0)