示例#1
0
        // 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}");
        }
示例#2
0
        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);
            }
        }