/// <summary>
        /// Called when a build is completed.
        /// </summary>
        /// <param name="succeeded">true if no update actions failed.</param>
        /// <param name="modified">true if any update action succeeded.</param>
        /// <param name="cancelCommand">true if update actions were canceled.</param>
        /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns>
        public int UpdateSolution_Done(int succeeded, int modified, int cancelCommand)
        {
            _restoreTask.Dispose();
            _restoreTask = RestoreTask.None;

            return(VSConstants.S_OK);
        }
示例#2
0
        public void Restore_CanDownloadDatabaseBackup()
        {
            RestoreTask task = new RestoreTask(restoreConfig);
            string      path = task.DownloadBackup();

            Assert.IsTrue(File.Exists(path));
        }
        /// <summary>
        /// Called before any build actions have begun. This is the last chance to cancel the build before any building begins.
        /// </summary>
        /// <param name="cancelUpdate">Flag indicating cancel update.</param>
        /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns>
        public int UpdateSolution_Begin(ref int cancelUpdate)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            // Query build manager operation flag
            uint buildManagerOperation;

            ErrorHandler.ThrowOnFailure(
                _solutionBuildManager.QueryBuildManagerBusyEx(out buildManagerOperation));

            if (buildManagerOperation == (uint)VSSOLNBUILDUPDATEFLAGS.SBF_OPERATION_CLEAN)
            {
                // Clear the project.json restore cache on clean to ensure that the next build restores again
                SolutionRestoreWorker.Value.CleanCache();

                return(VSConstants.S_OK);
            }

            if (!ShouldRestoreOnBuild)
            {
                return(VSConstants.S_OK);
            }

            // start a restore task
            var forceRestore = buildManagerOperation == REBUILD_FLAG;

            _restoreTask = RestoreTask.Start(SolutionRestoreWorker.Value, forceRestore);

            return(VSConstants.S_OK);
        }
示例#4
0
        public void Restore_CanRestoreDatabase()
        {
            RestoreTask task = new RestoreTask(restoreConfig);
            string      path = task.DownloadBackup();

            task.RestoreDatabase(path);
        }
示例#5
0
        public static void testUnTarGZip()
        {
            Logger.init(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\temp\\scratch 2\\uncompress.log");
            Guid        myGuid      = Guid.NewGuid();
            string      archivePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\temp\\scratch 2\\01010101-0101-0101-0101-010101010101_123_0.tgz";
            string      outputDir   = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\temp\\scratch 2";
            RestoreTask rt          = new RestoreTask(archivePath, outputDir);

            rt.Add("cs 410 2012-12-09\\echo backup logo v1.png");
            StorageThread st = new StorageThread("", myGuid);

            st.EnqueueStorageTask(rt);
            Print("added task to storagethread");
            int x = 0;

            while (st.IsWorking())
            {
                x++;
                Thread.Sleep(1000);
                Print("waiting for storagethread to finish working " + x);
            }
            Print("storagethread done");
            st.RequestStop();
            Print("requested stop of storagethread");
            while (st.IsAlive())
            {
                x++;
                Thread.Sleep(1000);
                Print("waiting for storagethread to stop " + x);
            }
            Print("storagethread stopped");
            Console.WriteLine("press a key to continue");
            Console.ReadKey();
        }
示例#6
0
        private static void ExecuteRestore(DatabaseRestoreTargetConfigurationElement target)
        {
            try
            {
                RestoreTask task = new RestoreTask(target);
                task.DecompressComplete += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreDecompressComplete);
                task.DecompressStart    += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreDecompressStart);
                task.RestoreComplete    += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreComplete);
                task.RestoreStart       += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreStart);
                task.TransferComplete   += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferComplete);
                task.TransferProgress   += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferProgress);
                task.TransferStart      += new EventHandler <RestoreDatabaseTargetEventArgs>(RestoreTransferStart);

                var result = task.Execute();

                if (!result.Success)
                {
                    WriteError(result.Exception);
                }
            }
            catch (Exception ex)
            {
                WriteError(ex);
            }
        }
示例#7
0
        public void Setup()
        {
            _projectFolder = Path.Combine(Path.GetTempPath(), "LibraryManagerBuild");
            _buildEngine   = new MockEngine();
            string path = typeof(Manifest).GetTypeInfo().Assembly.Location;

            _task = new RestoreTask()
            {
                ProjectDirectory   = _projectFolder,
                FileName           = Path.Combine(_projectFolder, "libman.json"),
                BuildEngine        = _buildEngine,
                ProviderAssemblies = new[] { new TaskItem {
                                                 ItemSpec = path
                                             } }
            };

            Directory.CreateDirectory(_projectFolder);
        }
示例#8
0
        private void Restore(object sender, DoWorkEventArgs args)
        {
            //TODO: add a Try-Catch here
            Schedule s = m_wrapper.DataConnection.GetObjectById <Schedule>(m_wrapper.ScheduleID);

            RestoreTask task = new RestoreTask(s, m_wrapper.FullRestorePath, m_wrapper.RestoreFilter, m_wrapper.RestoreTime);
            Dictionary <string, string> options = new Dictionary <string, string>();
            string destination = task.GetConfiguration(options);

            if (options.ContainsKey("filter"))
            {
                options.Remove("filter");
            }

            using (Library.Main.Interface i = new Duplicati.Library.Main.Interface(destination, options))
            {
                i.OperationProgress += new Duplicati.Library.Main.OperationProgressEvent(i_OperationProgress);
                i.Restore(task.LocalPath.Split(System.IO.Path.PathSeparator));
            }
        }
示例#9
0
 public BackupResult RestorePortal(int tenantID, string demoID)
 {
     lock (tasks.SynchRoot)
     {
         IProgressItem task = tasks.GetItems().FirstOrDefault(t => (int)t.Id == tenantID);
         if (task != null && task.IsCompleted)
         {
             tasks.Remove(task);
             task = null;
         }
         if (task == null)
         {
             var config     = BackupConfigurationSection.GetSection();
             var demoPortal = config.DemoPortals.GetDemoPortal(demoID) ?? config.DemoPortals.Default;
             if (demoPortal == null)
             {
                 throw new FaultException("Can't find demo portal with id = " + demoID);
             }
             task = new RestoreTask(tenantID, demoPortal.DataPath);
             tasks.Add(task);
         }
         return(ToResult(task));
     }
 }
示例#10
0
 public BackupResult RestorePortal(int tenantID, string demoID)
 {
     lock (tasks.SynchRoot)
     {
         IProgressItem task = tasks.GetItems().FirstOrDefault(t => (int)t.Id == tenantID);
         if (task != null && task.IsCompleted)
         {
             tasks.Remove(task);
             task = null;
         }
         if (task == null)
         {
             var config = BackupConfigurationSection.GetSection();
             var demoPortal = config.DemoPortals.GetDemoPortal(demoID) ?? config.DemoPortals.Default;
             if (demoPortal == null)
                 throw new FaultException("Can't find demo portal with id = " + demoID);
             task = new RestoreTask(tenantID, demoPortal.DataPath);
             tasks.Add(task);
         }
         return ToResult(task);
     }
 }
示例#11
0
 private void BrowseBackupsControl_Restore(object sender, Restore.BackupFolder e)
 {
     viewModel.RestoreTask = RestoreTask.Run(viewModel.BackupDestFolder.FullName, e);
 }
示例#12
0
        private void Restore(object sender, DoWorkEventArgs args)
        {
            //TODO: add a Try-Catch here
            Schedule s = m_wrapper.DataConnection.GetObjectById<Schedule>(m_wrapper.ScheduleID);

            RestoreTask task = new RestoreTask(s, m_wrapper.FullRestorePath, m_wrapper.RestoreFilter, m_wrapper.RestoreTime);
            Dictionary<string, string> options = new Dictionary<string, string>();
            string destination = task.GetConfiguration(options);
            if (options.ContainsKey("filter"))
                options.Remove("filter");

            using (Library.Main.Interface i = new XervBackup.Library.Main.Interface(destination, options))
            {
                i.OperationProgress += new XervBackup.Library.Main.OperationProgressEvent(i_OperationProgress);
                i.Restore(task.LocalPath.Split(System.IO.Path.PathSeparator));
            }
        }
示例#13
0
        private static void ExecuteRestore(DatabaseRestoreTargetConfigurationElement target)
        {
            try
            {
                RestoreTask task = new RestoreTask(target);
                task.DecompressComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreDecompressComplete);
                task.DecompressStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreDecompressStart);
                task.RestoreComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreComplete);
                task.RestoreStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreStart);
                task.TransferComplete += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferComplete);
                task.TransferProgress += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferProgress);
                task.TransferStart += new EventHandler<RestoreDatabaseTargetEventArgs>(RestoreTransferStart);

                var result = task.Execute();

                if (!result.Success)
                {
                    WriteError(result.Exception);
                }
            }
            catch (Exception ex)
            {
                WriteError(ex);
            }
        }