Beispiel #1
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
            }
        }