@@ -132,6 +132,7 @@ def _setup_options(self, options: NTPOptions) -> bool:
132132 self ._author_name = options .author_name
133133 self ._version = options .version
134134 self ._location = options .location
135+ self ._license = options .license
135136 self ._category = options .category
136137 self ._custom_category = options .custom_category
137138 if options .menu_id in dir (bpy .types ):
@@ -176,11 +177,12 @@ def _create_header(self, name: str) -> None:
176177 """
177178
178179 self ._write ("bl_info = {" , "" )
180+ self ._name = name
179181 if self ._name_override and self ._name_override != "" :
180- name = self ._name_override
181- self ._write (f"\t \" name\" : { str_to_py_str (name )} ," , "" )
182+ self . _name = self ._name_override
183+ self ._write (f"\t \" name\" : { str_to_py_str (self . _name )} ," , "" )
182184 if self ._description and self ._description != "" :
183- self .write (f"\t \" description\" : { str_to_py_str (self ._description )} ," "" )
185+ self ._write (f"\t \" description\" : { str_to_py_str (self ._description )} ," "" )
184186 self ._write (f"\t \" author\" : { str_to_py_str (self ._author_name )} ," , "" )
185187 self ._write (f"\t \" version\" : { vec3_to_py_str (self ._version )} ," , "" )
186188 self ._write (f"\t \" blender\" : { bpy .app .version } ," , "" )
@@ -204,6 +206,7 @@ def _init_operator(self, idname: str, label: str) -> None:
204206 idname (str): name for the operator
205207 label (str): appearence inside Blender
206208 """
209+ self ._idname = idname
207210 self ._write (f"class { self ._class_name } (bpy.types.Operator):" , "" )
208211 self ._write (f"\t bl_idname = \" node.{ idname } \" " , "" )
209212 self ._write (f"\t bl_label = { str_to_py_str (label )} " , "" )
@@ -1375,6 +1378,25 @@ def _create_main_func(self) -> None:
13751378 self ._write ("if __name__ == \" __main__\" :" , "" )
13761379 self ._write ("register()" , "\t " )
13771380
1381+ if bpy .app .version >= (4 , 2 , 0 ):
1382+ def _create_manifest (self ) -> None :
1383+ manifest = open (f"{ self ._addon_dir } /blender_manifest.toml" , "w" )
1384+ manifest .write ("schema_version = \" 1.0.0\" \n \n " )
1385+ manifest .write (f"id = { str_to_py_str (self ._idname )} \n " )
1386+
1387+ manifest .write (f"version = { version_to_manifest_str (self ._version )} \n " )
1388+ manifest .write (f"name = { str_to_py_str (self ._name )} \n " )
1389+ manifest .write (f"tagline = { str_to_py_str (self ._description )} \n " )
1390+ manifest .write (f"maintainer = { str_to_py_str (self ._author_name )} \n " )
1391+ manifest .write ("type = \" add-on\" \n " )
1392+ manifest .write (f"blender_version_min = { version_to_manifest_str (bpy .app .version )} \n " )
1393+ if self ._license != 'OTHER' :
1394+ manifest .write (f"license = [{ str_to_py_str (self ._license )} ]\n " )
1395+ else :
1396+ self .report ({'WARNING' }, "No license selected. Please add a license to the manifest file" )
1397+
1398+ manifest .close ()
1399+
13781400 def _zip_addon (self ) -> None :
13791401 """
13801402 Zips up the addon and removes the directory
0 commit comments