Example #1
0
        /// <summary>
        /// Returns a list of entry point <see cref="Candidate"/>s in a directory.
        /// </summary>
        /// <param name="baseDirectory">The base directory to scan for entry points.</param>
        public static List<Candidate> ListCandidates(DirectoryInfo baseDirectory)
        {
            var candidates = new List<Candidate>();
            baseDirectory.Walk(fileAction: file =>
            {
                // Ignore uninstallers
                if (file.Name.ContainsIgnoreCase("uninstall") || file.Name.ContainsIgnoreCase("unins0")) return;

                var candidate = _candidateCreators.Select(x => x()).FirstOrDefault(x => x.Analyze(baseDirectory, file));
                if (candidate != null) candidates.Add(candidate);
            });
            return candidates;
        }
        private void archiveExtractPage_Initialize(object sender, WizardPageInitEventArgs e)
        {
            _archive = (Archive)_feedBuilder.RetrievalMethod;

            listBoxExtract.BeginUpdate();
            listBoxExtract.Items.Clear();

            var baseDirectory = new DirectoryInfo(_feedBuilder.TemporaryDirectory);
            baseDirectory.Walk(dir => listBoxExtract.Items.Add(dir.RelativeTo(baseDirectory)));
            listBoxExtract.SelectedItem = baseDirectory.WalkThroughPrefix().RelativeTo(baseDirectory);

            listBoxExtract.EndUpdate();
        }
Example #3
0
        private void buttonSearch_Click(object sender, EventArgs e)
        {
            DirectoryInfo searchDirectory;
            try
            {
                searchDirectory = new DirectoryInfo(textFolder.Text);
            }
                #region Error handling
            catch (ArgumentException ex)
            {
                Msg.Inform(this, ex.Message, MsgSeverity.Error);
                return;
            }
            #endregion

            if (!searchDirectory.Exists)
            {
                Msg.Inform(this, "Directory does not exist.", MsgSeverity.Warn);
                return;
            }
            Preferences.LastSearchDirectory = searchDirectory.FullName;

            var resultSet = new ResultSet();
            var checkedTags = tags.TreeView.CheckedEntries.Select(x => x.Name).ToList();
            try
            {
                var handler = new GuiTaskHandler(this);
                handler.RunTask(new SimpleTask("Searching", () =>
                    searchDirectory.Walk(fileAction: file =>
                    {
                        var fileTags = file.ReadTags();
                        if (checkedTags.All(fileTags.Contains)) resultSet.Add(file);
                    })));
                resultSet.Show();
            }
                #region Error handling
            catch (IOException ex)
            {
                Msg.Inform(this, ex.Message, MsgSeverity.Error);
            }
            catch (UnauthorizedAccessException ex)
            {
                Msg.Inform(this, ex.Message, MsgSeverity.Error);
            }
            catch (Win32Exception ex)
            {
                Msg.Inform(this, ex.Message, MsgSeverity.Error);
            }
            #endregion
        }
        private string[] GetFilesToWrite()
        {
            var paths = new List<string>();

            var source = new DirectoryInfo(Source);
            source.Walk(fileAction: file => paths.Add(Path.Combine(Target, file.RelativeTo(source))));

            return paths.ToArray();
        }
Example #5
0
        /// <inheritdoc/>
        protected override void Execute()
        {
            _source = new DirectoryInfo(SourcePath);
            _destination = new DirectoryInfo(DestinationPath);
            if (!_source.Exists) throw new DirectoryNotFoundException(Resources.SourceDirNotExist);
            if (_destination.Exists)
            { // Fail if overwrite is off but the target directory already exists and contains elements
                if (!Overwrite && _destination.GetFileSystemInfos().Length > 0)
                    throw new IOException(Resources.DestinationDirExist);
            }
            else _destination.Create();

            State = TaskState.Header;
            var sourceDirectories = new List<DirectoryInfo>();
            var sourceFiles = new List<FileInfo>();
            _source.Walk(sourceDirectories.Add, sourceFiles.Add);
            UnitsTotal = sourceFiles.Sum(file => file.Length);

            State = TaskState.Data;
            CopyDirectories(sourceDirectories);
            CopyFiles(sourceFiles);
            if (PreserveDirectoryTimestamps)
                CopyDirectoryTimestamps(sourceDirectories);
            State = TaskState.Complete;
        }