using System;

namespace SourceGit.Commands
{
    public class Statistics : Command
    {
        public Statistics(string repo)
        {
            _statistics = new Models.Statistics();

            WorkingDirectory = repo;
            Context = repo;
            Args = $"log --date-order --branches --remotes --since=\"{_statistics.Since()}\" --pretty=format:\"%ct$%cn\"";
        }

        public Models.Statistics Result()
        {
            Exec();
            _statistics.Complete();
            return _statistics;
        }

        protected override void OnReadline(string line)
        {
            var dateEndIdx = line.IndexOf('$', StringComparison.Ordinal);
            if (dateEndIdx == -1)
                return;

            var dateStr = line.Substring(0, dateEndIdx);
            var date = 0.0;
            if (!double.TryParse(dateStr, out date))
                return;

            _statistics.AddCommit(line.Substring(dateEndIdx + 1), date);
        }

        private readonly Models.Statistics _statistics = null;
    }
}
