Esempio n. 1
0
        public static async Task Main(string[] args)
        {
            try
            {
                if (TryGetRunInfo(args, out RunInfoBase runInfo))
                {
                    string     configFilePath = GetConfigFilePath(runInfo);
                    FfdbConfig config         = FileConfigResolver.FromFile(configFilePath);

                    DataRepoState dataRepoState = await GetDataRepoStateAsync();

                    FfdbEngine engine = EngineResolver.Resolve(config, runInfo, dataRepoState);

                    OutputCommandInfo(runInfo);

                    await new EngineRunner(engine).RunAsync(runInfo);
                }
            }
            catch (Exception ex)
            {
                CM.WriteError(ex.Message);
            }
            finally
            {
                WriteLine(Environment.NewLine + "Completed running command. Press any key to exit..");
                ReadKey();
            }
        }
Esempio n. 2
0
        internal static void OutputSqlCommand(string sqlCommand)
        {
            CM.WriteLineColored(
                Environment.NewLine + _sqlCommandBeginBorder + Environment.NewLine,
                ConsoleColor.Yellow);

            WriteLine(sqlCommand);

            CM.WriteLineColoredReset(
                Environment.NewLine + _sqlCommandEndBorder + Environment.NewLine,
                ConsoleColor.Yellow);
        }
Esempio n. 3
0
        private static void OutputCommandInfo(RunInfoBase runInfo)
        {
            CM.WriteLineColoredReset(@"
   _____ _____ ____  _____ 
  |   __|   __|    \| __  |
  |   __|   __|  |  | __ -|
  |__|  |__|  |____/|_____|", ConsoleColor.Cyan);

            CM.WriteLineColoredReset("             v1.0.0-alpha.1" + Environment.NewLine, ConsoleColor.White);

            Write("Running command: ");
            CM.WriteLineColoredReset(runInfo.CommandKey, ConsoleColor.Yellow);
            WriteLine(runInfo.Description + Environment.NewLine);
        }
Esempio n. 4
0
        private static async Task <DataRepoState> GetDataRepoStateAsync()
        {
            try
            {
                using (var client = new HttpClient())
                {
                    string uri = @"https://raw.githubusercontent.com/rushfive/FFDB.Data/master/state.json";

                    string response = await client.GetStringAsync(uri);

                    return(JsonConvert.DeserializeObject <DataRepoState>(response));
                }
            }
            catch (Exception ex)
            {
                CM.WriteError("Failed to fetch data repo state, this feature will be disabled."
                              + Environment.NewLine + ex);
                return(null);
            }
        }
Esempio n. 5
0
 public static void WriteColoredReset(string value, ConsoleColor color)
 {
     CM.WriteColored(value, color);
     ResetColor();
 }
Esempio n. 6
0
        private async Task RunViewStateAsync()
        {
            Task <WeekInfo>         latestWeekTask    = _engine.GetLatestWeekAsync();
            Task <DataRepoState>    dataRepoStateTask = _engine.GetDataRepoStateAsync();
            Task <List <WeekInfo> > updatedWeeksTask  = _engine.GetAllUpdatedWeeksAsync();

            await Task.WhenAll(
                latestWeekTask,
                dataRepoStateTask,
                updatedWeeksTask);

            var dataRepoState = dataRepoStateTask.Result;

            WriteLine("┌");

            if (dataRepoState.Enabled)
            {
                Write("│ Data Repository last updated: ");
                CM.WriteLineColoredReset($"{dataRepoState.Timestamp:d}", ConsoleColor.White);
                WriteLine("│ Will attempt fetching core data from the repo first.");
                WriteLine("│ If unavailable, falls back to fetching from the original sources.");
            }
            else
            {
                WriteLine("│ Data Repository is currently disabled. ");
                WriteLine("│ Will fetch all core data directly from the original sources. ");
            }

            WriteLine("│");
            Write("│ Latest available NFL week: ");
            CM.WriteLineColoredReset(latestWeekTask.Result.ToString(), ConsoleColor.White);
            WriteLine("│");

            List <WeekInfo> updatedWeeks = updatedWeeksTask.Result;

            if (!updatedWeeks.Any())
            {
                WriteLine("│ No weeks have been updated in your database.");
            }
            else
            {
                var groupsBySeason = updatedWeeks
                                     .GroupBy(w => w.Season)
                                     .OrderBy(g => g.Key)
                                     .ToList();

                var seasonUpdateLines = new List <string>();

                foreach (var group in groupsBySeason)
                {
                    var rangedWeeks = RangedListBuilder.Build(group.Select(w => w.Week).ToList());
                    seasonUpdateLines.Add($"{group.Key}: {string.Join(", ", rangedWeeks)}");
                }

                WriteLine("│ The following weeks have been updated in your database:");
                foreach (var seasonUpdates in seasonUpdateLines)
                {
                    WriteLine($"│ {seasonUpdates}");
                }
            }

            WriteLine("└");
        }