size_report: create a main() function

Refactor code and add main() function.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/footprint/size_report b/scripts/footprint/size_report
index 9c9027e..c229715 100755
--- a/scripts/footprint/size_report
+++ b/scripts/footprint/size_report
@@ -16,27 +16,6 @@
 import platform
 from pathlib import Path
 
-parser = OptionParser()
-parser.add_option("-d", "--depth", dest="depth", type="int",
-                  help="How deep should we go into the tree", metavar="DEPTH")
-parser.add_option("-o", "--outdir", dest="outdir",
-                  help="read files from directory OUT", metavar="OUT")
-parser.add_option("-k", "--kernel-name", dest="binary", default="zephyr",
-                  help="kernel binary name")
-parser.add_option("-r", "--ram",
-                  action="store_true", dest="ram", default=False,
-                  help="print RAM statistics")
-parser.add_option("-F", "--rom",
-                  action="store_true", dest="rom", default=False,
-                  help="print ROM statistics")
-parser.add_option("-s", "--objdump", type="string", dest="bin_objdump",
-                  help="Path to the GNU binary utility objdump")
-parser.add_option("-c", "--objcopy", type="string", dest="bin_objcopy",
-                  help="Path to the GNU binary utility objcopy")
-parser.add_option("-n", "--nm", type="string", dest="bin_nm",
-                  help="Path to the GNU binary utility nm")
-
-(options, args) = parser.parse_args()
 
 # Return a dict containing {
 #   symbol_name: {:,path/to/file}/symbol
@@ -408,26 +387,54 @@
     print('{:92d}'.format(total))
     return totp
 
-bin_file = os.path.join(options.outdir, options.binary + ".bin")
-stat_file = os.path.join(options.outdir, options.binary + ".stat")
-elf_file = os.path.join(options.outdir, options.binary + ".elf")
 
-if not os.path.exists(bin_file):
-    FNULL = open(os.devnull, 'w')
-    subprocess.call([options.bin_objcopy,"-S", "-Obinary", "-R", ".comment", "-R",
-                   "COMMON", "-R", ".eh_frame", elf_file, bin_file],
-                   stdout=FNULL, stderr=subprocess.STDOUT)
+def main():
+    parser = OptionParser()
+    parser.add_option("-d", "--depth", dest="depth", type="int",
+                      help="How deep should we go into the tree", metavar="DEPTH")
+    parser.add_option("-o", "--outdir", dest="outdir",
+                      help="read files from directory OUT", metavar="OUT")
+    parser.add_option("-k", "--kernel-name", dest="binary", default="zephyr",
+                      help="kernel binary name")
+    parser.add_option("-r", "--ram",
+                      action="store_true", dest="ram", default=False,
+                      help="print RAM statistics")
+    parser.add_option("-F", "--rom",
+                      action="store_true", dest="rom", default=False,
+                      help="print ROM statistics")
+    parser.add_option("-s", "--objdump", type="string", dest="bin_objdump",
+                      help="Path to the GNU binary utility objdump")
+    parser.add_option("-c", "--objcopy", type="string", dest="bin_objcopy",
+                      help="Path to the GNU binary utility objcopy")
+    parser.add_option("-n", "--nm", type="string", dest="bin_nm",
+                      help="Path to the GNU binary utility nm")
 
-if options.outdir and os.path.exists(elf_file):
-    fp = get_footprint_from_bin_and_statfile(bin_file, stat_file, 0, 0)
-    base = os.environ['ZEPHYR_BASE']
-    ram, data = generate_target_memory_section(
-        options.bin_objdump, options.bin_nm, options.outdir, options.binary,
-        base + '/', None)
-    if options.rom:
-        print_tree(data, fp['total_flash'], options.depth)
-    if options.ram:
-        print_tree(ram, fp['total_ram'], options.depth)
+    (options, args) = parser.parse_args()
 
-else:
-    print("%s does not exist." % (elf_file))
+    bin_file = os.path.join(options.outdir, options.binary + ".bin")
+    stat_file = os.path.join(options.outdir, options.binary + ".stat")
+    elf_file = os.path.join(options.outdir, options.binary + ".elf")
+
+    if not os.path.exists(bin_file):
+        FNULL = open(os.devnull, 'w')
+        subprocess.call([options.bin_objcopy,"-S", "-Obinary", "-R", ".comment", "-R",
+                       "COMMON", "-R", ".eh_frame", elf_file, bin_file],
+                       stdout=FNULL, stderr=subprocess.STDOUT)
+
+    if options.outdir and os.path.exists(elf_file):
+        fp = get_footprint_from_bin_and_statfile(bin_file, stat_file, 0, 0)
+        base = os.environ['ZEPHYR_BASE']
+        ram, data = generate_target_memory_section(
+            options.bin_objdump, options.bin_nm, options.outdir, options.binary,
+            base + '/', None)
+        if options.rom:
+            print_tree(data, fp['total_flash'], options.depth)
+        if options.ram:
+            print_tree(ram, fp['total_ram'], options.depth)
+
+    else:
+        print("%s does not exist." % (elf_file))
+
+
+if __name__ == "__main__":
+    main()