// managing attachments ====================================================================================== // attach primary or given clone to revit version // @handled @logs public static void Attach(int revitYear, PyRevitClone clone, int engineVer, bool allUsers = false, bool force = false) { // make the addin manifest file var engine = clone.GetEngine(engineVer); if (engine.Runtime) { logger.Debug(string.Format("Attaching Clone \"{0}\" @ \"{1}\" to Revit {2}", clone.Name, clone.ClonePath, revitYear)); RevitAddons.CreateManifestFile(revitYear, PyRevitConsts.AddinFileName, PyRevitConsts.AddinName, engine.AssemblyPath, PyRevitConsts.AddinId, PyRevitConsts.AddinClassName, PyRevitConsts.VendorId, allusers: allUsers); } else { throw new PyRevitException(string.Format("Engine {0} can not be used as runtime.", engineVer)); } }
private static void ReDeployClone(PyRevitClone clone, GitInstallerCredentials credentials) { // grab clone arguments from inside of clone var cloneName = clone.Name; var clonePath = clone.ClonePath; var cloneDeployArgs = clone.DeploymentArgs; logger.Debug("Clone Name=\"{0}\", Path=\"{1}\" Args=> {2}", cloneName, clonePath, cloneDeployArgs); // delete existing clone Delete(clone); // re-deploy DeployFromImage( cloneName: cloneName, deploymentName: cloneDeployArgs.DeploymentName, branchName: cloneDeployArgs.BranchName, imagePath: cloneDeployArgs.Url, destPath: clonePath ); }
// return a list of installed extensions found under registered search paths // @handled @logs public static List <PyRevitExtension> GetShippedExtensions(PyRevitClone clone) => clone.GetExtensions();
public static PyRevitEngine GetEngineFromManifest(RevitAddonManifest manifest, PyRevitClone clone) { foreach (var engine in clone.GetEngines()) { if (manifest.Assembly.Contains(engine.Path)) { return(engine); } } return(null); }