// Define the event handlers. private static void OnChanged(object source, FileSystemEventArgs e) { FileSystemWatcher watcher = source as FileSystemWatcher; // read in tracking file TimeTrackingFile timeTracking = TimeTrackingFile.toObject(File.ReadAllText(Program.TRACKING_FILE_PATH)); if (timeTracking.currentTracking == null) { timeTracking.currentTracking = new TimeTrackingFile.TimeTrackingInstance(); timeTracking.currentTracking.startTime = DateTime.Now; timeTracking.currentTracking.message = "Auto-generated based on file changes to " + watcher.Path; TimeTrackingFile.SaveToFile(timeTracking); } else if ((DateTime.Now - timeTracking.currentTracking.startTime).TotalMinutes >= 15) { timeTracking.currentTracking.endTime = DateTime.Now; timeTracking.currentTracking.totalHours = (timeTracking.currentTracking.endTime - timeTracking.currentTracking.startTime).TotalHours; timeTracking.currentTracking.message = "Auto-generated based on file changes to " + watcher.Path; // move current tracking to historicals timeTracking.previousTimes.Add(timeTracking.currentTracking); timeTracking.currentTracking = null; // save TimeTrackingFile.SaveToFile(timeTracking); } // Specify what is done when a file is changed, created, or deleted. // Console.WriteLine($"File: {e.FullPath} {e.ChangeType}"); }
public static int Run(StartOptions options, string[] args) { // read in tracking file TimeTrackingFile timeTracking = TimeTrackingFile.toObject(File.ReadAllText(Program.TRACKING_FILE_PATH)); if (timeTracking == null) { // write out error message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Encountered error generating kronos time."); Console.WriteLine("Open " + Program.TRACKING_FILE_PATH + " to view all times."); Console.WriteLine("Run kronos clean to fix and reset (note you will lose all previously logged times)."); Console.ForegroundColor = userDefaultColor; return(1); } // if not currently tracking anything, start new tracker if (timeTracking.currentTracking == null) { timeTracking.currentTracking = new TimeTrackingFile.TimeTrackingInstance(); timeTracking.currentTracking.startTime = DateTime.Now; TimeTrackingFile.SaveToFile(timeTracking); // write out success message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Successfully started work session."); Console.ForegroundColor = userDefaultColor; return(0); } // if currently tracking, send error because can't start another else { // write out error message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Work session already in progress."); if (timeTracking.currentTracking.message != null && timeTracking.currentTracking.message.Length > 0) { Console.WriteLine("Work session message: " + timeTracking.currentTracking.message + "\n"); } Console.WriteLine("Run kronos stop to finish the current work session."); Console.ForegroundColor = userDefaultColor; return(2); } }
public static int Run(LogOptions options, string[] args) { // read in tracking file and mark default console color TimeTrackingFile timeTracking = TimeTrackingFile.toObject(File.ReadAllText(Program.TRACKING_FILE_PATH)); ConsoleColor userDefaultColor = Console.ForegroundColor; if (timeTracking == null) { // write out error message Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Encountered error generating kronos time."); Console.WriteLine("Open " + Program.TRACKING_FILE_PATH + " to view all times."); Console.WriteLine("Run kronos clean to fix and reset (note you will lose all previously logged times."); Console.ForegroundColor = userDefaultColor; return(1); } DateTime startTime; if (options.Start.Length == 0) { // write out error message Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: No start time provided. Use --start to denote a start time."); Console.ForegroundColor = userDefaultColor; return(2); } if (!DateTime.TryParse(options.Start, out startTime)) { // write out error message Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Start time not formatted properly."); Console.ForegroundColor = userDefaultColor; return(3); } DateTime endTime; if (options.Stop.Length == 0) { // write out error message Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: No end time provided. Use --stop to denote an end time."); Console.ForegroundColor = userDefaultColor; return(2); } if (!DateTime.TryParse(options.Stop, out endTime)) { // write out error message Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: End time not formatted properly."); Console.ForegroundColor = userDefaultColor; return(3); } TimeTrackingFile.TimeTrackingInstance instance = new TimeTrackingFile.TimeTrackingInstance(); instance.startTime = startTime; instance.endTime = endTime; instance.message = options.Message; instance.totalHours = (endTime - startTime).TotalHours; // add to array of previous times and save timeTracking.previousTimes.Add(instance); TimeTrackingFile.SaveToFile(timeTracking); // write out success message Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Successfully logged work session."); Console.ForegroundColor = userDefaultColor; return(0); }
public static int Run(StopOptions options, string[] args) { // read in tracking file TimeTrackingFile timeTracking = TimeTrackingFile.toObject(File.ReadAllText(Program.TRACKING_FILE_PATH)); if (timeTracking == null) { // write out error message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Encountered error generating kronos time."); Console.WriteLine("Open " + Program.TRACKING_FILE_PATH + " to view all times."); Console.WriteLine("Run kronos clean to fix and reset (note you will lose all previously logged times."); Console.ForegroundColor = userDefaultColor; return(1); } // if not currently tracking anything, send error if (timeTracking.currentTracking == null) { // write out error message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: No work session in progress."); Console.WriteLine("Run kronos log to start a work session."); Console.ForegroundColor = userDefaultColor; return(2); } // if currently tracking, close out and save else { timeTracking.currentTracking.endTime = DateTime.Now; timeTracking.currentTracking.totalHours = (timeTracking.currentTracking.endTime - timeTracking.currentTracking.startTime).TotalHours; // figure out message List <string> trimmedArgs = new List <string>(args); trimmedArgs.RemoveAll(s => s.StartsWith("-") || s == "stop"); if (trimmedArgs.Count > 0) { timeTracking.currentTracking.message = trimmedArgs.ToArray()[0]; } // move current tracking to historicals timeTracking.previousTimes.Add(timeTracking.currentTracking); timeTracking.currentTracking = null; // save TimeTrackingFile.SaveToFile(timeTracking); // write out success message ConsoleColor userDefaultColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Successfully closed work session."); Console.ForegroundColor = userDefaultColor; return(0); } }