/// <summary> /// Delegate used to publish the element to a local folder</summary> private void PublishLocally() { var publishPath = GetPublishFolder(); if (string.IsNullOrEmpty(publishPath)) { return; } var files = BuildPackage(); try { UploadState = PackageUploadHandle.State.Copying; Uploading = true; // begin publishing to local directory var remapper = new CustomNodePathRemapper(DynamoViewModel.Model.CustomNodeManager, DynamoModel.IsTestMode); var builder = new PackageDirectoryBuilder(new MutatingFileSystem(), remapper); builder.BuildDirectory(Package, publishPath, files); UploadState = PackageUploadHandle.State.Uploaded; } catch (Exception e) { UploadState = PackageUploadHandle.State.Error; ErrorString = e.Message; dynamoViewModel.Model.Logger.Log(e); } finally { Uploading = false; } }
/// <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); }
/// <summary> /// Delegate used to publish the element to a local folder</summary> private void PublishLocally() { var publishPath = GetPublishFolder(); if (string.IsNullOrEmpty(publishPath)) { return; } var files = BuildPackage(); try { var unqualifiedFiles = GetAllUnqualifiedFiles(); // if the unqualified files are bigger than 0, error message is triggered. // At the same time, as unqualified files existed, // files returned from BuildPackage() is 0. // This is caused by the package file is not existed or it has already been in a package. if (files == null || unqualifiedFiles.Count() > 0) { string filesCannotBePublished = null; foreach (var file in unqualifiedFiles) { filesCannotBePublished = filesCannotBePublished + file + "\n"; } string FileNotPublishMessage = string.Format(Resources.FileNotPublishMessage, filesCannotBePublished); UploadState = PackageUploadHandle.State.Error; DialogResult response = System.Windows.Forms.MessageBox.Show(FileNotPublishMessage, Resources.FileNotPublishCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); if (response == DialogResult.OK) { this.ClearPackageContents(); UploadState = PackageUploadHandle.State.Ready; Uploading = false; } return; } UploadState = PackageUploadHandle.State.Copying; Uploading = true; // begin publishing to local directory var remapper = new CustomNodePathRemapper(DynamoViewModel.Model.CustomNodeManager, DynamoModel.IsTestMode); var builder = new PackageDirectoryBuilder(new MutatingFileSystem(), remapper); builder.BuildDirectory(Package, publishPath, files); UploadState = PackageUploadHandle.State.Uploaded; // Once upload is successful, a display message will appear to ask // whether user wants to continue uploading another file or not. if (UploadState == PackageUploadHandle.State.Uploaded) { DialogResult dialogResult = System.Windows.Forms.MessageBox.Show(Resources.PublishPackageMessage, Resources.PublishPackageDialogCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dialogResult == DialogResult.Yes) { this.ClearAllEntries(); Uploading = false; UploadState = PackageUploadHandle.State.Ready; } else { Uploading = true; System.Threading.Timer timer = null; timer = new System.Threading.Timer((obj) => { OnPublishSuccess(); timer.Dispose(); }, null, 1200, System.Threading.Timeout.Infinite); } } } catch (Exception e) { UploadState = PackageUploadHandle.State.Error; ErrorString = e.Message; dynamoViewModel.Model.Logger.Log(e); } }
/// <summary> /// Delegate used to publish the element to a local folder</summary> private void PublishLocally() { var publishPath = GetPublishFolder(); if (string.IsNullOrEmpty(publishPath)) return; var files = BuildPackage(); try { //if buildPackage() returns no files then the package //is empty so we should return if (files == null || files.Count() < 1) { return; } UploadState = PackageUploadHandle.State.Copying; Uploading = true; // begin publishing to local directory var remapper = new CustomNodePathRemapper(DynamoViewModel.Model.CustomNodeManager, DynamoModel.IsTestMode); var builder = new PackageDirectoryBuilder(new MutatingFileSystem(), remapper); builder.BuildDirectory(Package, publishPath, files); UploadState = PackageUploadHandle.State.Uploaded; } catch (Exception e) { UploadState = PackageUploadHandle.State.Error; ErrorString = e.Message; dynamoViewModel.Model.Logger.Log(e); } finally { Uploading = false; } }
/// <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); }
/// <summary> /// Delegate used to publish the element to a local folder</summary> private void PublishLocally() { var publishPath = GetPublishFolder(); if (string.IsNullOrEmpty(publishPath)) return; var files = BuildPackage(); try { var unqualifiedFiles = GetAllUnqualifiedFiles(); // if the unqualified files are bigger than 0, error message is triggered. // At the same time, as unqualified files existed, // files returned from BuildPackage() is 0. // This is caused by the package file is not existed or it has already been in a package. // files.Count() is also checking for the exception that was caught in BuildPackage(). // The scenario can be user trying to publish unsaved workspace. if (files == null || files.Count() < 1 || unqualifiedFiles.Count() > 0) { string filesCannotBePublished = null; foreach (var file in unqualifiedFiles) { filesCannotBePublished = filesCannotBePublished + file + "\n"; } string FileNotPublishMessage = string.Format(Resources.FileNotPublishMessage, filesCannotBePublished); UploadState = PackageUploadHandle.State.Error; DialogResult response = DynamoModel.IsTestMode ? DialogResult.OK : System.Windows.Forms.MessageBox.Show(FileNotPublishMessage, Resources.FileNotPublishCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); if (response == DialogResult.OK) { this.ClearPackageContents(); UploadState = PackageUploadHandle.State.Ready; Uploading = false; } return; } UploadState = PackageUploadHandle.State.Copying; Uploading = true; // begin publishing to local directory var remapper = new CustomNodePathRemapper(DynamoViewModel.Model.CustomNodeManager, DynamoModel.IsTestMode); var builder = new PackageDirectoryBuilder(new MutatingFileSystem(), remapper); builder.BuildDirectory(Package, publishPath, files); UploadState = PackageUploadHandle.State.Uploaded; // Once upload is successful, a display message will appear to ask // whether user wants to continue uploading another file or not. if (UploadState == PackageUploadHandle.State.Uploaded) { // For test mode, presume the dialog input to be No and proceed. DialogResult dialogResult = DynamoModel.IsTestMode ? DialogResult.No : System.Windows.Forms.MessageBox.Show(Resources.PublishPackageMessage, Resources.PublishPackageDialogCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Information); ; if (dialogResult == DialogResult.Yes) { this.ClearAllEntries(); Uploading = false; UploadState = PackageUploadHandle.State.Ready; } else { Uploading = true; System.Threading.Timer timer = null; timer = new System.Threading.Timer((obj) => { OnPublishSuccess(); timer.Dispose(); }, null, 1200, System.Threading.Timeout.Infinite); } } } catch (Exception e) { UploadState = PackageUploadHandle.State.Error; ErrorString = e.Message; dynamoViewModel.Model.Logger.Log(e); } }