diff --git a/scripts/generate_scap.py b/scripts/generate_scap.py index 654fd8fd..0f299044 100644 --- a/scripts/generate_scap.py +++ b/scripts/generate_scap.py @@ -1,142 +1,23 @@ #!/usr/bin/env python -# filename: generate_baseline.py +# filename: scripts/generate_scap.py -import argparse +# Standard python modules import sys -import platform -from mscp.common_utils import set_logger -from mscp.generate import ( - generate_scap, - -) -from mscp.cli import Customparser, validate_file +from pathlib import Path -def get_macos_version() -> float: - version_str, _, _ = platform.mac_ver() - if version_str: - major = int(version_str.split(".")[0]) - return float(major) +# Add the project root to sys.path +sys.path.append(str(Path(__file__).resolve().parents[1])) -def main() -> None: - logger = set_logger() - logger.enable("mscp") - logger.info("=== Logging Initialized ===") - logger.info("LOGGING LEVEL: ERROR") - - parser = Customparser( - description="CLI tool for generating scap content from MSCP.", - ) - - parser.set_defaults(func=generate_scap) - parser.add_argument( - "-b", - "--baseline", - default="all_rules", - help="Choose a baseline to generate an xml file for, if none is specified it will generate for every rule found.", - type=str - ) - parser.add_argument( - "-x", - "--xccdf", - default=None, - help="Generate an xccdf file.", - action="store_true", - ) - parser.add_argument( - "--oval", - default=None, - help="Generate an oval file of the checks.", - action="store_true", - ) - parser.add_argument( - "-l", - "--list_tags", - default=None, - help="List the available keyword tags to search for.", - action="store_true", - ) - - # Platform options - parser.add_argument( - "-O", - "--os_name", - type=str, - choices=["macos", "ios", "visionos"], - default="macos", - help="Target operating system for the baseline (default: macOS)." - ) - parser.add_argument( - "--list-platforms", - action="store_true", - help="List all available platforms and their OS versions." - ) - parser.add_argument( - "-o", - "--os_version", - default=get_macos_version(), - type=float, - help="Operating system version (eg: 14.0, 15.0).", - ) - - parser.add_argument( - "-D", - "--debug", - required=False, - help="Enable debug output.", - action="store_true", - ) - - parser.add_argument( - "--output-dir", - type=str, - default=None, - help="Directory to write the baseline file (default: ../build/scap/)" - ) - - parser.add_argument( - "-v", - "--verbose", - required=False, - help="Increase verbosity level (e.g., -v, -vv, -vvv)", - action="count", - default=0, - ) - - try: - args = parser.parse_args() - - except argparse.ArgumentError as e: - logger.error("Argument Error: {}", e) - parser.print_help() - sys.exit() - - if args.verbose == 1: - logger = set_logger(verbosity=1) - logger.info("=== Logging level changed ===") - logger.info("LOGGING LEVEL: WARNING") - elif args.verbose == 2: - logger = set_logger(verbosity=2) - logger.info("=== Logging level changed ===") - logger.info("LOGGING LEVEL: INFO") - elif args.verbose > 2 or args.debug: - logger = set_logger(debug=True) - logger.info("=== Logging level changed ===") - logger.info("LOGGING LEVEL: DEBUG") - - - if args.os_name == "ios" and args.os_version < 16: - logger.warning( - "iOS/iPadOS 16 and below is not supported, please use mSCP version 1.0." - ) - sys.exit() - - if args.os_name == "macos" and args.os_version < 13: - logger.warning( - "macOS 13 and below is not supported, please use mSCP version 1.0." - ) - sys.exit() - - args.func(args) +# Local python modules +from src.mscp.cli import parse_cli +from src.mscp.common_utils.logger_instance import logger +from src.mscp.common_utils.logging_config import set_logger if __name__ == "__main__": - sys.exit(main()) \ No newline at end of file + logger.enable("mscp") + logger = set_logger() + logger.info("=== Logging Initialized ===") + logger.info("LOGGING LEVEL: INFO") + + sys.argv.insert(1, Path(__file__).stem.split("_")[1]) + sys.exit(parse_cli()) diff --git a/scripts/mscp b/scripts/mscp deleted file mode 120000 index a5107213..00000000 --- a/scripts/mscp +++ /dev/null @@ -1 +0,0 @@ -../src/mscp \ No newline at end of file