From 866a6950c7c87a3310931e47db0f5b34284979c6 Mon Sep 17 00:00:00 2001
From: Attila Farkas <x394097@fi.muni.cz>
Date: Thu, 26 Mar 2020 11:45:36 +0100
Subject: [PATCH] parsing input arguments with argparse

---
 modules/input_argument_parser.py | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/modules/input_argument_parser.py b/modules/input_argument_parser.py
index 4156878..4d00ae0 100644
--- a/modules/input_argument_parser.py
+++ b/modules/input_argument_parser.py
@@ -1,5 +1,7 @@
 """ This module contains functions to parse input arguments. """
 
+import argparse
+
 def parse_input_args(argv, flags):
     """ 
     Parses the given input arguments for input file name and flags.
@@ -7,27 +9,20 @@ def parse_input_args(argv, flags):
     :param argv: input arguments (list of strings)
     :param flags: dictionary to write the parsed flags
     :returns: name of the input file
-    :raise AttributeError: invalid number of args or unknown flag
     """
 
     input_file_name = None
+    parser = argparse.ArgumentParser()
 
-    # TODO implement parsing args using an external module
+    parser.add_argument("definition_file", help="path to the input yaml definition")
+    parser.add_argument("--ansible_local", help="uses ansible_local for provisioning instead of ansible", action="store_true")
+    parser.add_argument("--verbose_vagrant", help="sets verbose output for vagrant", action="store_true")
+    parser.add_argument("--border_router", help="creates a border router with connection to all routers", action="store_true")
+    args = parser.parse_args()
 
-    if len(argv) == 3:
-        if str(argv[1]) == "-l":
-            flags["ansible_local"] = True
-            input_file_name = str(argv[2])
-        elif str(argv[2]) == "-l":
-            flags["ansible_local"] = True
-            input_file_name = str(argv[1])
-        else:
-            print("Error: Expecting a yml file and optionally a flag -l.")
-            raise AttributeError
-    elif len(argv) == 2:
-        input_file_name = str(argv[1])
-    else:
-        print("Error: Expecting a yml file and optionally a flag -l.")
-        raise AttributeError
+    input_file_name = args.definition_file
+    flags["ansible_local"] = args.ansible_local
+    flags["verbose_vagrant"] = args.verbose_vagrant
+    flags["border_router"] = args.border_router
 
     return input_file_name
-- 
GitLab