Browse Source

Update build tools

Sebastien L 2 years ago
parent
commit
24c69a70d2
1 changed files with 30 additions and 28 deletions
  1. 30 28
      docker/build_tools.py

+ 30 - 28
docker/build_tools.py

@@ -101,6 +101,11 @@ parser.add_argument('--cwd', type=str,help='Working directory', default=os.getcw
 parser.add_argument('--loglevel', type=str,choices={'CRITICAL','ERROR','WARNING','INFO','DEBUG','NOTSET'}, help='Logging level', default='INFO')
 subparsers = parser.add_subparsers( dest='command', required=True)
 
+parser_dir = subparsers.add_parser("list_files",
+                                      add_help=False,
+                                      description="List Files parser",
+                                      help="Display the content of the folder")
+
 parser_manifest = subparsers.add_parser("manifest",
                                       add_help=False,
                                       description="Manifest parser",
@@ -549,39 +554,32 @@ def delete_folder(path):
     os.chmod(path ,stat.S_IWRITE)
     logger.warning(f'Deleting Folder {path}')
     os.rmdir(path)
-
-def get_file_list(path)->list:
+def get_file_stats(path)->tuple[int,str,str]:
+  fstat:os.stat_result = pathlib.Path(path).stat()
+    # Convert file size to MB, KB or Bytes
+  mtime = time.strftime("%X %x", time.gmtime(fstat.st_mtime))
+  if (fstat.st_size > 1024 * 1024):
+      return math.ceil(fstat.st_size / (1024 * 1024)), "MB", mtime
+  elif (fstat.st_size > 1024):
+      return math.ceil(fstat.st_size / 1024), "KB", mtime
+  return fstat.st_size, "B", mtime
+
+def get_file_list(root_path, max_levels:int=2 )->list:
   outlist:list=[]
-  for root, dirs, files in os.walk(path,topdown=True):
-      for dir in dirs:
-        outlist.append(f'Content of {os.path.join(root, dir)}')
-        get_file_list(os.path.join(root, dir))
-      for fname in files:
-        full_name=os.path.join(root, fname)
-        fstat:os.stat_result = pathlib.Path(full_name).stat()
-          # Convert file size to MB, KB or Bytes
-        if (fstat.st_size > 1024 * 1024):
-            fsize = math.ceil(fstat.st_size / (1024 * 1024))
-            unit = "MB"
-        elif (fstat.st_size > 1024):
-            fsize = math.ceil(fstat.st_size / 1024)
-            unit = "KB"
-        else:
-            fsize = fstat.st_size
-            unit = "B"
-
-        mtime = time.strftime("%X %x", time.gmtime(fstat.st_mtime))
-        outlist.append('\t{:15.80s}{:8d} {:2s} {:18s}'.format(fname,fsize,unit,mtime))
-          
-  if os.path.exists(path):
-    outlist.append(path)
-  outlist.sort()
+  for root, dirs, files in os.walk(root_path):
+      path = root.split(os.sep)
+      if len(path) <= max_levels:
+        outlist.append(f'\n{root}')
+        for file in files:
+          full_name=os.path.join(root, file)
+          fsize,unit,mtime = get_file_stats(full_name)
+          outlist.append('{:s} {:8d} {:2s} {:18s}\t{:s}'.format(len(path) * "---",fsize,unit,mtime,file))
   return outlist
 def get_recursive_list(path)->list:
   outlist:list=[]
   for root, dirs, files in os.walk(path,topdown=True):
       for dir in dirs:
-        get_file_list(os.path.join(root, dir))
+        outlist.extend(get_recursive_list(os.path.join(root, dir)))
       for fname in files:
         outlist.append(fname)
   # if os.path.exists(path):
@@ -709,13 +707,16 @@ def extract_files_from_archive(url):
   z = zipfile.ZipFile(io.BytesIO(platform.content))
   z.extractall(tempfolder)
   return tempfolder
-
+def handle_list_files(args):
+  print(f'Content of {args.cwd}:')
+  print('\n'.join(get_file_list(args.cwd)))
 parser_environment.set_defaults(func=handle_environment, cmd='environment')
 parser_artifacts.set_defaults(func=handle_artifacts, cmd='artifacts')
 parser_manifest.set_defaults(func=handle_manifest, cmd='manifest')
 parser_pushinstaller.set_defaults(func=handle_pushinstaller, cmd='installer')
 parser_show.set_defaults(func=handle_show, cmd='show')    
 parser_build_flags.set_defaults(func=handle_build_flags, cmd='build_flags')    
+parser_dir.set_defaults(func=handle_list_files, cmd='list_files')
 
 
 def main():
@@ -733,3 +734,4 @@ def main():
 
 if __name__ == '__main__':
   main()
+