/// <summary> /// Validate the package manager url and initialize the PackageManagerClient object /// </summary> public void Startup(StartupParams startupParams) { var path = this.GetType().Assembly.Location; var config = ConfigurationManager.OpenExeConfiguration(path); var key = config.AppSettings.Settings["packageManagerAddress"]; string url = null; if (key != null) { url = key.Value; } OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url)); if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url"); } this.packageLoader = new PackageLoader(startupParams.PathManager.PackagesDirectory); this.packageLoader.MessageLogged += OnMessageLogged; this.packageLoader.RequestLoadNodeLibrary += OnRequestLoadNodeLibrary; this.packageLoader.RequestLoadCustomNodeDirectory += (dir) => startupParams.CustomNodeManager .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, true); var dirBuilder = new PackageDirectoryBuilder( new MutatingFileSystem(), new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode)); var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor()); this.packageManagerClient = new PackageManagerClient(new GregClient(startupParams.AuthProvider, url), uploadBuilder, PackageLoader.RootPackagesDirectory); }
/// <summary> /// Validate the package manager url and initialize the PackageManagerClient object /// </summary> public void Startup(StartupParams startupParams) { var path = this.GetType().Assembly.Location; var config = ConfigurationManager.OpenExeConfiguration(path); var key = config.AppSettings.Settings["packageManagerAddress"]; string url = null; if (key != null) { url = key.Value; } OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url)); if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url"); } PackageLoader = new PackageLoader(startupParams.PathManager); PackageLoader.MessageLogged += OnMessageLogged; PackageLoader.PackgeLoaded += OnPackageLoaded; PackageLoader.PackageRemoved += OnPackageRemoved; RequestLoadNodeLibraryHandler = (startupParams.LibraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport; //TODO: Add LoadPackages to ILibraryLoader interface in 3.0 LoadPackagesHandler = (startupParams.LibraryLoader as ExtensionLibraryLoader).LoadPackages; customNodeManager = (startupParams.CustomNodeManager as Core.CustomNodeManager); //TODO - in 3.0 we can add the other overload of AddUninitializedCustomNodesInPath to the ICustomNodeManager interface. RequestLoadCustomNodeDirectoryHandler = (dir, pkgInfo) => customNodeManager .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, pkgInfo); //when the customNodeManager requests to know the owner of a customNode handle this query. customNodeManager.RequestCustomNodeOwner += handleCustomNodeOwnerQuery; //raise the public events on this extension when the package loader requests. PackageLoader.RequestLoadExtension += RequestLoadExtension; PackageLoader.RequestAddExtension += RequestAddExtension; PackageLoader.PackagesLoaded += LoadPackagesHandler; PackageLoader.RequestLoadNodeLibrary += RequestLoadNodeLibraryHandler; PackageLoader.RequestLoadCustomNodeDirectory += RequestLoadCustomNodeDirectoryHandler; var dirBuilder = new PackageDirectoryBuilder( new MutatingFileSystem(), new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode)); PackageUploadBuilder.SetEngineVersion(startupParams.DynamoVersion); var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor()); var packageUploadDirectory = startupParams.PathManager.DefaultPackagesDirectory; PackageManagerClient = new PackageManagerClient( new GregClient(startupParams.AuthProvider, url), uploadBuilder, packageUploadDirectory); LoadPackages(startupParams.Preferences, startupParams.PathManager); }
internal PackageUploadHandle PublishAsync(Package package, IEnumerable <string> files, bool isNewVersion) { var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(package)); Task.Factory.StartNew(() => { Publish(package, files, isNewVersion, packageUploadHandle); }); return(packageUploadHandle); }
private PackageUploadHandle PublishPackage(bool isNewVersion, Package l, List <string> files, PackageUploadHandle packageUploadHandle) { ThreadStart start = () => { try { int maxRetries = 5; int count = 0; ResponseBody ret = null; if (isNewVersion) { var pkg = PackageUploadBuilder.NewPackageVersion(l, files, packageUploadHandle); while (ret == null && count < maxRetries) { count++; ret = Client.ExecuteAndDeserialize(pkg); } } else { var pkg = PackageUploadBuilder.NewPackage(l, files, packageUploadHandle); while (ret == null && count < maxRetries) { count++; ret = Client.ExecuteAndDeserialize(pkg); } } if (ret == null) { packageUploadHandle.Error("Failed to submit. Try again later."); return; } if (ret != null && !ret.success) { packageUploadHandle.Error(ret.message); return; } packageUploadHandle.Done(null); } catch (Exception e) { packageUploadHandle.Error(e.GetType() + ": " + e.Message); } }; new Thread(start).Start(); return(packageUploadHandle); }
public Package(string directory, string name, string versionName, string license) { RootDirectory = directory; Name = name; License = license; VersionName = versionName; LoadedTypes = new ObservableCollection <Type>(); LoadedAssemblies = new ObservableCollection <PackageAssembly>(); Dependencies = new ObservableCollection <PackageDependency>(); LoadedCustomNodes = new ObservableCollection <CustomNodeInfo>(); AdditionalFiles = new ObservableCollection <PackageFileInfo>(); Header = PackageUploadBuilder.NewRequestBody(this); }
public PackageUploadHandle Publish(Package l, List <string> files, bool isNewVersion, bool isTestMode) { this.OnRequestAuthentication(); var nv = new ValidateAuth(); var pkgResponse = Client.ExecuteAndDeserialize(nv); if (pkgResponse == null) { throw new AuthenticationException( "It looks like you're not logged into Autodesk 360. Log in to submit a package."); } var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewPackageHeader(l)); return(PublishPackage(isNewVersion, l, files, packageUploadHandle, isTestMode)); }
private PackageUploadHandle PublishPackage(bool isNewVersion, Package l, List <string> files, PackageUploadHandle packageUploadHandle) { Task.Factory.StartNew(() => { try { ResponseBody ret = null; if (isNewVersion) { var pkg = PackageUploadBuilder.NewPackageVersion(this.dynamoModel, l, files, packageUploadHandle); packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading; ret = Client.ExecuteAndDeserialize(pkg); } else { var pkg = PackageUploadBuilder.NewPackage(this.dynamoModel, l, files, packageUploadHandle); packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading; ret = Client.ExecuteAndDeserialize(pkg); } if (ret == null) { packageUploadHandle.Error("Failed to submit. Try again later."); return; } if (ret != null && !ret.success) { packageUploadHandle.Error(ret.message); return; } packageUploadHandle.Done(null); } catch (Exception e) { packageUploadHandle.Error(e.GetType() + ": " + e.Message); } }); return(packageUploadHandle); }
private void WritePackageHeader(Package package, IDirectoryInfo rootDir) { var pkgHeader = PackageUploadBuilder.NewRequestBody(package); // build the package header json, which will be stored with the pkg var jsSer = new JsonSerializer(); var pkgHeaderStr = jsSer.Serialize(pkgHeader); // write the pkg header to the root directory of the pkg var headerPath = Path.Combine(rootDir.FullName, PackageJsonName); if (fileSystem.FileExists(headerPath)) { fileSystem.DeleteFile(headerPath); } fileSystem.WriteAllText(headerPath, pkgHeaderStr); }
/// <summary> /// Validate the package manager url and initialize the PackageManagerClient object /// </summary> public void Startup(StartupParams startupParams) { var path = this.GetType().Assembly.Location; var config = ConfigurationManager.OpenExeConfiguration(path); var key = config.AppSettings.Settings["packageManagerAddress"]; string url = null; if (key != null) { url = key.Value; } OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url)); if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url"); } PackageLoader = new PackageLoader(startupParams.PathManager.PackagesDirectories); PackageLoader.MessageLogged += OnMessageLogged; RequestLoadNodeLibraryHandler = startupParams.LibraryLoader.LoadNodeLibrary; RequestLoadCustomNodeDirectoryHandler = (dir) => startupParams.CustomNodeManager .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, true); PackageLoader.RequestLoadNodeLibrary += RequestLoadNodeLibraryHandler; PackageLoader.RequestLoadCustomNodeDirectory += RequestLoadCustomNodeDirectoryHandler; var dirBuilder = new PackageDirectoryBuilder( new MutatingFileSystem(), new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode)); var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor()); PackageManagerClient = new PackageManagerClient( new GregClient(startupParams.AuthProvider, url), uploadBuilder, PackageLoader.DefaultPackagesDirectory); }
internal PackageUploadHandle Publish(Package package, List <string> files, bool isNewVersion, bool isTestMode) { var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewPackageHeader(package)); return(PublishPackage(isNewVersion, package, files, packageUploadHandle, isTestMode)); }