Prompt to include colors in config when first running jrnl (#1687)

* Add prompt to ask user if entries should be formatted with colors when installing jrnl
* Use magenta instead of black for default date color
* Use other default colors and alphabetize color list
* Update tests
* Delete test file
* update lock file
* fix failing test after merge conflict

---------

Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
This commit is contained in:
Micah Jerome Ellison 2023-02-25 15:30:25 -08:00 committed by GitHub
parent fecd696b2a
commit e6804f1627
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 1365 additions and 1311 deletions

View file

@ -107,14 +107,23 @@ def get_default_config() -> dict[str, Any]:
"linewrap": 79,
"indent_character": "|",
"colors": {
"date": "none",
"title": "none",
"body": "none",
"date": "none",
"tags": "none",
"title": "none",
},
}
def get_default_colors() -> dict[str, Any]:
return {
"body": "none",
"date": "black",
"tags": "yellow",
"title": "cyan",
}
def get_default_journal_path() -> str:
journal_data_path = xdg.BaseDirectory.save_data_path(XDG_RESOURCE) or home_dir()
return os.path.join(journal_data_path, DEFAULT_JOURNAL_NAME)

View file

@ -12,6 +12,7 @@ from rich.pretty import pretty_repr
from jrnl import __version__
from jrnl.config import DEFAULT_JOURNAL_KEY
from jrnl.config import get_config_path
from jrnl.config import get_default_colors
from jrnl.config import get_default_config
from jrnl.config import get_default_journal_path
from jrnl.config import load_config
@ -147,6 +148,11 @@ def install() -> dict:
default_config["encrypt"] = True
print_msg(Message(MsgText.JournalEncrypted, MsgStyle.NORMAL))
# Use colors?
use_colors = yesno(Message(MsgText.UseColorsQuestion), default=True)
if use_colors:
default_config["colors"] = get_default_colors()
save_config(default_config)
return default_config

View file

@ -37,6 +37,9 @@ class MsgText(Enum):
EncryptJournalQuestion = """
Do you want to encrypt your journal? (You can always change this later)
"""
UseColorsQuestion = """
Do you want jrnl to use colors when displaying entries? (You can always change this later)
"""
YesOrNoPromptDefaultYes = "[Y/n]"
YesOrNoPromptDefaultNo = "[y/N]"
ContinueUpgrade = "Continue upgrading jrnl?"

2612
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -57,6 +57,7 @@ Feature: Journals iteracting with the file system in a way that users can see
When we run "jrnl hello world" and enter
test.txt
n
\n
Then the output should contain "Journal 'default' created"
When we change directory to "subfolder"
And we run "jrnl -n 1"

View file

@ -5,6 +5,7 @@ Feature: Installing jrnl
When we run "jrnl hello world" and enter
\n
\n
\n
Then the output should contain "Journal 'default' created"
And the default journal "journal.txt" should be in the "." directory
And the config should contain "encrypt: false"
@ -15,6 +16,7 @@ Feature: Installing jrnl
When we run "jrnl hello world" and enter
default/custom.txt
n
\n
Then the output should contain "Journal 'default' created"
And the default journal "custom.txt" should be in the "default" directory
And the config should contain "encrypt: false"
@ -26,6 +28,7 @@ Feature: Installing jrnl
When we run "jrnl hello world" and enter
~/custom.txt
n
\n
Then the output should contain "Journal 'default' created"
And the default journal "custom.txt" should be in the "home" directory
And the config should contain "encrypt: false"
@ -36,25 +39,57 @@ Feature: Installing jrnl
When we run "jrnl hello world" and enter
encrypted.txt
y
\n
Then the output should contain "Journal will be encrypted"
And the default journal "encrypted.txt" should be in the "." directory
And the config should contain "encrypt: true"
And the version in the config file should be up-to-date
When we run "jrnl"
Then we should be prompted for a password
Scenario: Install jrnl with colors by default
Given we use no config
When we run "jrnl hello world" and enter
\n
\n
\n
Then the output should contain "Journal 'default' created"
And the config should contain
colors:
body: none
date: black
tags: yellow
title: cyan
Scenario: Install jrnl without colors
Given we use no config
When we run "jrnl hello world" and enter
\n
\n
N
Then the output should contain "Journal 'default' created"
And the config should contain
colors:
body: none
date: none
tags: none
title: none
Scenario: Install jrnl with encrypted default journal with no entries
Given we use no config
And we use the password "test" if prompted
When we run "jrnl -1" and enter
encrypted.txt
y
n
test
test
n
Then the error output should contain "Journal will be encrypted"
And the default journal "encrypted.txt" should be in the "." directory
And the config should contain "encrypt: true"
And the version in the config file should be up-to-date
When we run "jrnl -1"
When we run "jrnl -1" and enter
test
Then we should be prompted for a password
And the error output should contain "no entries found"
And the error output should not contain "Wrong password, try again"