예제 #1
0
        /// <summary>
        /// Execute flubu internal command.
        /// </summary>
        /// <param name="line"></param>
        /// <returns>Return's true.</returns>
        public bool ExecuteInternalCommand(string commandLine)
        {
            if (commandLine.Trim().Equals(InternalCommands.Dir, StringComparison.OrdinalIgnoreCase))
            {
                DirectoryInfo objDirectoryInfo = new DirectoryInfo(@".");
                FileInfo[]    allFiles         = objDirectoryInfo.GetFiles("*.*", SearchOption.TopDirectoryOnly);
                var           directories      = objDirectoryInfo.GetDirectories("*.*");
                foreach (var directory in directories)
                {
                    Console.WriteLine($"{directory.LastWriteTime}    <DIR>          {directory.Name}");
                }

                var nfi = new NumberFormatInfo {
                    NumberGroupSeparator = "."
                };
                foreach (var entry in allFiles)
                {
                    Console.WriteLine($"{entry.LastWriteTime}            {entry.Length.ToString("#,##0", nfi)} {entry.Name}");
                }

                Console.WriteLine(string.Empty);
            }
            else if (commandLine.Equals(InternalCommands.CdBack, StringComparison.OrdinalIgnoreCase))
            {
                Directory.SetCurrentDirectory(Path.GetFullPath(".."));
            }
            else if (commandLine.Equals(InternalCommands.CdBackToDisk, StringComparison.OrdinalIgnoreCase))
            {
                Directory.SetCurrentDirectory(Path.GetPathRoot(Directory.GetCurrentDirectory()));
            }
            else if (commandLine.StartsWith(InternalCommands.Cd, StringComparison.OrdinalIgnoreCase))
            {
                var splitedLine = commandLine.Split(' ').ToList();
                if (splitedLine.Count > 1)
                {
                    var newPath = Path.GetFullPath(splitedLine[1]);
                    if (Directory.Exists(newPath))
                    {
                        Directory.SetCurrentDirectory(newPath);
                    }
                }
            }
            else if (commandLine.StartsWith(InternalCommands.Cls, StringComparison.OrdinalIgnoreCase))
            {
                Console.Clear();
                ConsoleUtils.WritePrompt(Directory.GetCurrentDirectory());
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        private static void ClearConsoleLines(int startline, int endline)
        {
            for (var i = startline; i <= endline; i++)
            {
                Console.SetCursorPosition(0, i);
                Console.Write(new string(' ', Console.WindowWidth));
            }

            Console.SetCursorPosition(0, startline);
            ConsoleUtils.WritePrompt();
        }
예제 #3
0
        private void ClearConsoleLines(int startline, int endline)
        {
            for (var i = startline; i <= endline; i++)
            {
                Console.SetCursorPosition(0, i);
                Console.Write(new string(' ', Console.WindowWidth));
            }

            Console.SetCursorPosition(0, startline);
            ConsoleUtils.WritePrompt(_currentDirectory);
            Console.SetCursorPosition(_currentDirectory.Length + 1, startline);
        }
예제 #4
0
        private void ClearConsoleLinesAndWriteInitialText(int startline, int endline)
        {
            ClearConsoleLines(startline, endline);
            var text = !string.IsNullOrEmpty(_options.InitialText) ? _options.InitialText : _currentDirectory;

            if (_options.WritePrompt)
            {
                ConsoleUtils.WritePrompt(text);
            }
            else
            {
                ConsoleUtils.Write(text, ConsoleColor.Green);
            }
        }