Example #1
0
        protected override void RunJournalCommand()
        {
            if (!string.IsNullOrWhiteSpace(Header))
            {
                HeaderValidator.ValidateOrThrow(Header);
            }

            if (!string.IsNullOrWhiteSpace(Header) && (Body == null || !Body.Any()))
            {
                throw new PSArgumentException("Header cannot be used without Body. Please specify a Body and try again.");
            }

            var entryDate = LocalDate.FromDateTime(Date).PlusDays(DateOffset);
            var hour      = Now.Time().Hour;

            if (hour >= 0 && hour <= 4)
            {
                var dayPrior = entryDate.Minus(Period.FromDays(1));
                var question = $"Edit entry for '{dayPrior}' or '{entryDate}'?";
                var result   = Choice("It's after midnight!", question, 0, dayPrior.DayOfWeek.ToChoiceString(), entryDate.DayOfWeek.ToChoiceString());
                if (result == 0)
                {
                    entryDate = dayPrior;
                }
            }

            Commit(GitCommitType.PreAppendJournalEntry);
            var journal = OpenJournal();

            journal.AppendEntryContent(entryDate, Body, Header, Tags);
            Commit(GitCommitType.PostAppendJournalEntry);
        }