InitExtension(bool ui, bool lib, bool run, string extensionName, string templatesDir, bool useTemplate) { PyRevitExtensionTypes extType = PyRevitExtensionTypes.Unknown; if (ui) { extType = PyRevitExtensionTypes.UIExtension; } else if (lib) { extType = PyRevitExtensionTypes.LibraryExtension; } else if (run) { extType = PyRevitExtensionTypes.RunnerExtension; } var extDirPostfix = PyRevitExtension.GetExtensionDirExt(extType); if (extensionName != null) { var pwd = Directory.GetCurrentDirectory(); if (CommonUtils.EnsureFileNameIsUnique(pwd, extensionName)) { var extDir = Path.Combine( pwd, string.Format("{0}{1}", extensionName, extDirPostfix) ); var extTemplateDir = GetExtensionTemplate(extType, templatesDir: templatesDir); if (useTemplate && extTemplateDir != null) { CommonUtils.CopyDirectory(extTemplateDir, extDir); Console.WriteLine( string.Format("Extension directory created from template: \"{0}\"", extDir) ); } else { if (!Directory.Exists(extDir)) { var dinfo = Directory.CreateDirectory(extDir); Console.WriteLine(string.Format("{0} directory created: \"{1}\"", extType, extDir)); } else { throw new pyRevitException("Directory already exists."); } } } else { throw new pyRevitException( string.Format("Another extension with name \"{0}\" already exists.", extensionName) ); } } }
// private extensions and bundles private static string GetExtensionTemplate(PyRevitExtensionTypes extType, string templatesDir = null) { templatesDir = templatesDir != null ? templatesDir : PyRevitCLIAppCmds.GetTemplatesPath(); if (CommonUtils.VerifyPath(templatesDir)) { var extTempPath = Path.Combine(templatesDir, "template" + PyRevitExtension.GetExtensionDirExt(extType)); if (CommonUtils.VerifyPath(extTempPath)) { return(extTempPath); } } else { throw new pyRevitException( string.Format("Templates directory does not exist at \"{0}\"", templatesDir) ); } return(null); }