summaryrefslogtreecommitdiff
path: root/pysquaredeal.py
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2024-01-16 23:49:53 +0100
committeremkael <emkael@tlen.pl>2024-01-16 23:49:53 +0100
commit1c4d342e281ab8641486d42d4a916cc2c47c8671 (patch)
tree5d51c27ca178ab246cf86e3c408ee787f4b87460 /pysquaredeal.py
parente5a1d0bf6f62cface6ef751c318f2d4733a56970 (diff)
Generating deals
Diffstat (limited to 'pysquaredeal.py')
-rw-r--r--pysquaredeal.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/pysquaredeal.py b/pysquaredeal.py
index 246e2c6..ccfc23a 100644
--- a/pysquaredeal.py
+++ b/pysquaredeal.py
@@ -1,4 +1,4 @@
-import argparse, sys
+import argparse, os, sys
from squaredeal import SquareDeal, SquareDealError
@@ -7,6 +7,8 @@ argparser = argparse.ArgumentParser(prog='pysquaredeal.py')
argparser.add_argument('sqd_file', metavar='SQD_FILE', help='path to SQD file')
argparser.add_argument('--sqk-file', metavar='SQK_FILE', help='path to SQK file, if not provided, deduced from SQD file', required=False)
+argparser.add_argument('--encoding', required=False, default='utf-8', metavar='ENCODING', help='SQD/SQK input file encoding, defaults to UTF-8, output is always UTF-8')
+argparser.add_argument('--bigdealx-path', required=False, metavar='BIGDEALX_PATH', help='path to bigdealx executable, defaults to BIGDEALX_PATH environment variable')
subparsers = argparser.add_subparsers(title='command-specific arguments', metavar='COMMAND', dest='command')
@@ -24,10 +26,14 @@ argparser_phase = subparsers.add_parser('add_phase', help='add event phase')
argparser_phase.add_argument('sessions', metavar='NO_SESSIONS', help='number of sessions in phase', type=int)
argparser_phase.add_argument('boards', metavar='NO_BOARDS', help='number of boards in each session', type=int)
argparser_phase.add_argument('prefix', metavar='PREFIX', help='ouput file prefix ("#" will be replaced by session number)')
-argparser_phase.add_argument('--description', required=False, metavar='DESCRIPTION', help='phase description')
+argparser_phase.add_argument('description', nargs='?', metavar='DESCRIPTION', help='phase description')
argparser_publish = subparsers.add_parser('publish', help='mark SQD as published')
+argparser_generate = subparsers.add_parser('generate', help='generate PBN')
+argparser_generate.add_argument('phase', nargs='?', type=int, metavar='PHASE', help='phase number, if empty, all phases will be generated')
+argparser_generate.add_argument('session', nargs='?', type=int, metavar='SESSION', help='session number, if empty, all sessions will be generated')
+
arguments = argparser.parse_args()
if arguments.command == 'create':
@@ -65,3 +71,12 @@ elif arguments.command == 'add_phase':
raise SquareDealError('Cannot add phase: event already published')
sd.add_phase(arguments.sessions, arguments.boards, arguments.prefix, description=arguments.description)
sd.tofile(arguments.sqd_file, sqkpath=arguments.sqk_file)
+elif arguments.command == 'generate':
+ if arguments.bigdealx_path is None:
+ arguments.bigdealx_path = os.environ.get('BIGDEALX_PATH', None)
+ SquareDeal.BIGDEALX_PATH = arguments.bigdealx_path
+ sd = SquareDeal()
+ sd.fromfile(arguments.sqd_file, sqkpath=arguments.sqk_file)
+ if not sd.published:
+ raise SquareDealError('Cannot generate PBN files: event info is not marked as published')
+ sd.generate(arguments.phase, arguments.session)