Exemplo n.º 1
0
        private void LsCommandHandler(CommandLineApplication lsCmd)
        {
            lsCmd.Description = "List directory";
            var sortByTime = lsCmd.Option("-t", "Sort by modified time", CommandOptionType.NoValue);
            var filter     = lsCmd.Argument("filter", "Regular expression to filter by");

            lsCmd.OnExecuteAsync(async token =>
            {
                var contents = await _client.ListDirectory(_location, _workingDirectory.AbsolutePath);

                if (!string.IsNullOrEmpty(filter.Value))
                {
                    var filterRegex = new Regex(filter.Value);
                    contents        = contents.Where(f => filterRegex.IsMatch(f.Filename)).ToList();
                }

                contents = sortByTime.HasValue()
                    ? contents.OrderByDescending(f => f.LastModifiedDate).ToList()
                    : contents.OrderBy(f => f.Filename).ToList();

                foreach (var file in contents)
                {
                    _console.Write($"{file.LastModifiedDate:s}\t");
                    _console.Write($"{file.Length,10}\t");
                    if (file.IsDirectory)
                    {
                        _console.Blue($"{file.Filename}");
                    }
                    else
                    {
                        _console.WriteLine($"{file.Filename}");
                    }
                }

                return(0);
            });
        }