@@ -108,31 +108,56 @@ def library(library_path, output_directory, mpy_cross=None, example_bundle=False
108108 for filename in os .listdir (library_path ):
109109 full_path = os .path .join (library_path , filename )
110110 if os .path .isdir (full_path ):
111- files = os .listdir (full_path )
112- files = filter (lambda x : x .endswith (".py" ) or x .startswith ("font5x8.bin" ), files )
111+ path_walk = [names for names in os .walk (full_path )]
112+ #print("- '{}' walk: {}".format(filename, path_walk))
113+
114+ # iterate through path_walk, appending each file to
115+ # 'walked_files' while retaining subdirectory structure
116+ walked_files = []
117+ for path in path_walk :
118+ path_tail_idx = path [0 ].rfind ("/" ) + 1
119+ path_tail = path [0 ][path_tail_idx :]
120+ rel_path = ""
121+ # if this entry is the package top dir, keep it
122+ # empty so we don't double append the dir name
123+ if filename not in path_tail :
124+ rel_path = "{}/" .format (path_tail )
125+
126+ for path_files in path [2 ]:
127+ walked_files .append ("{}{}" .format (rel_path , path_files ))
128+ #print(" - expanded file walk: {}".format(walked_files))
129+
130+ files = filter (lambda x : x .endswith (".py" ) or x .startswith ("font5x8.bin" ), walked_files )
113131 files = map (lambda x : os .path .join (filename , x ), files )
132+
114133 if filename .startswith ("examples" ):
115134 example_files .extend (files )
116- #print(" - example files: {}".format(example_files))
135+ #print("- example files: {}".format(example_files))
117136 else :
118137 if pkg_folder_prefix :
119138 if (not example_bundle and
120139 not filename .startswith (pkg_folder_prefix )):
121- print ("skipped path: {}" .format (full_path ))
122- continue
140+ # print("skipped path: {}".format(full_path))
141+ continue
123142 if not example_bundle :
124143 package_files .extend (files )
125- #print(" - package files: {}".format(package_files))
144+ #print("- package files: {} | {} ".format(filename, package_files))
126145
127146 if (filename .endswith (".py" ) and
128147 filename not in IGNORE_PY and
129148 not example_bundle ):
130- py_files .append (filename )
149+ py_files .append (filename )
131150
132151 if len (py_files ) > 1 :
133152 raise ValueError ("Multiple top level py files not allowed. Please put them in a package "
134153 "or combine them into a single file." )
135154
155+ for fn in example_files :
156+ base_dir = os .path .join (output_directory .replace ("/lib" , "/" ), os .path .dirname (fn ))
157+ if not os .path .isdir (base_dir ):
158+ os .makedirs (base_dir )
159+ total_size += 512
160+
136161 for fn in package_files :
137162 base_dir = os .path .join (output_directory , os .path .dirname (fn ))
138163 if not os .path .isdir (base_dir ):
0 commit comments