summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2021-05-24 11:59:45 +0300
committerSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2021-05-24 17:26:55 +0300
commitadc19a08871964a23a27a20c384439776a52891f (patch)
treef2154128cef68ef68d27b9bd2a1d2509071c2af7
parentf0931133aa7960d56767578ed5d8c24f66920a60 (diff)
downloadlibmts-io-adc19a08871964a23a27a20c384439776a52891f.tar.gz
libmts-io-adc19a08871964a23a27a20c384439776a52891f.tar.bz2
libmts-io-adc19a08871964a23a27a20c384439776a52891f.zip
[GP-1111] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2
Extended `create-mcc-mnc-table.py` to support writing the resulting CPP code directly to the target file: - refactoring: renamed `print_cpp_mcc_mnc_table` to `print_cpp_mcc_mnc_create_table` to better represent its purpose - printing the body of `MccMncTable::createTable()`; - refactoring: grouped all the `print_cpp_*` functions to the single `print_cpp` function; - new feature: printing the code directly to the target file without using stdout; printing to stdout is used by default for compatibility reasons.
-rw-r--r--scripts/create-mcc-mnc-table.py41
1 files changed, 26 insertions, 15 deletions
diff --git a/scripts/create-mcc-mnc-table.py b/scripts/create-mcc-mnc-table.py
index fdc9833..c2aee14 100644
--- a/scripts/create-mcc-mnc-table.py
+++ b/scripts/create-mcc-mnc-table.py
@@ -16,7 +16,7 @@ import datetime
import csv
import argparse
-from typing import Iterable, Generator
+from typing import Iterable, Generator, Optional, TextIO
from collections import namedtuple
########################################################################################################################
@@ -117,15 +117,16 @@ def init_argparse() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description='Generate MCC/MNC table file from Website or CSV')
parser.add_argument('-w', '--website', action='store_true')
parser.add_argument('-c', '--csv', type=str)
+ parser.add_argument('-t', '--target', type=str, default='-')
return parser
-def print_cpp_preamble() -> None:
- print(PREAMBLE_TEMPLATE.format(today=datetime.date.today()))
+def print_cpp_preamble(*, target: Optional[TextIO] = None) -> None:
+ print(PREAMBLE_TEMPLATE.format(today=datetime.date.today()), file=target)
-def print_cpp_general_code() -> None:
- print(GENERAL_CODE)
+def print_cpp_general_code(*, target: Optional[TextIO] = None) -> None:
+ print(GENERAL_CODE, file=target)
def format_mcc_mnc_line(el: MccMncElement) -> str:
@@ -150,15 +151,21 @@ def format_mcc_mnc_line(el: MccMncElement) -> str:
)
-def print_cpp_mcc_mnc_table(data: Iterable[MccMncElement]) -> None:
- print("void MccMncTable::createTable() {")
- print(" std::string sData;")
+def print_cpp_mcc_mnc_create_table(source: Iterable[MccMncElement], *, target: Optional[TextIO] = None) -> None:
+ print("void MccMncTable::createTable() {", file=target)
+ print(" std::string sData;", file=target)
- for el in data:
- print(format_mcc_mnc_line(el))
+ for el in source:
+ print(format_mcc_mnc_line(el), file=target)
- print("}")
- print("")
+ print("}", file=target)
+ print("", file=target)
+
+
+def print_cpp(source: Iterable[MccMncElement], *, target: Optional[TextIO] = None) -> None:
+ print_cpp_preamble(target=target)
+ print_cpp_general_code(target=target)
+ print_cpp_mcc_mnc_create_table(source, target=target)
def mcc_to_mcc_int(src: str) -> str:
@@ -258,9 +265,13 @@ def main() -> int:
else:
source = mcc_mnc_from_csv(args.csv)
- print_cpp_preamble()
- print_cpp_general_code()
- print_cpp_mcc_mnc_table(source)
+ if args.target == '-':
+ # Print to stdout
+ print_cpp(source, target=None)
+ else:
+ # Print to file
+ with open(args.target, 'w') as f:
+ print_cpp(source, target=f)
return 0