* fix missed statement from last PR
* replace print statement for adding an entry to a journal
* clean up linting and format
* change print statement over to new print_msg function
* make print_msg always print to stderr
* change print statement over to new print_msg function
* update importer to use new message function
* update yaml format to use new message function
* code cleanup
* update yaml format to use new message function
* update yaml format to use new exception handling
* update Journal class to use new message function
* update install module to use new message function
* update config module to use new message function
* update upgrade module to properly use new message and exception handling
* fix typo
* update upgrade module to use new message handling
* update welcome message to use new handling
* update upgrade module to use new message handling
* update upgrade module journal summaries to use new message handling
* take out old code
* update upgrade module to use new message handling
* update upgrade module to use new message handling
* update more modules to use new message handling
* take out old comment
* update deprecated_cmd to use new message handling
* update text_exporter with new message handling, get rid of old color constants
* get rid of hardcoded text
* whitespace changes
* rework MsgType into MsgStyle so messages can have different styles
* add comment
* Move around code to separate concerns of each function a bit more
* update create_password and yesno prompt functions for new messaging
* fix missing newline for keyboard interrupts
* fix misc linting
* fix bug with panel titles always showing 'error' after one error
* fix missing import
* update debug output after uncaught exception
* update exception for new exception handling
* rewrite yesno function to use new centralized messages
* reduce the debug output slightly
* clean up print_msgs function
* clean up create_password function
* clean up misc linting
* rename screen_input to hide_input to be more clear
* update encrypted journal prompt to use new messaging functionality
* fix typo in message key
* move rich console into function so we can mock properly
* update password mock to use rich console instead of getpass
* add more helpful output to then step
* fix test by updating expected output
* update message to use new functionality
* rework mocks in test suite for new messaging functionality
* fix linting issue
* fix more tests
* fix more tests
* fix more tests
* fix more tests
* fix merge bug
* update prompt_action_entries to use new messaging functionality
* Add new input_method "type"
This does the same thing as input_method "pipe" but is more clear what
it's doing (typing text into the builtin composer)
* get rid of old commented code
* get rid of unused code
* move some files around
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Refactored path expansion calls into a new path.py file
This also fixed bugs with relative journal and template paths.
* Update tests for new path functions
Also, make the tests specific to Windows, Mac & Linux
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Added check for empty config file and if so, use default config
* Added check for empty config file and if so, use default config
* Fix and add tests for empty config file
* Exit program with message if config is empty.
bdd-test doesn't add version if file is (and should stay) empty.
* Exit program with message if config is empty.
* bdd-test doesn't add version if file is (and should stay) empty.
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Update and modularize exception handling
cc #1024#1141
- Stack traces are no longer shown to users unless the --debug flag is
being used
- Errors, warnings, and other messages contain color as needed
- Converted error messages to Enum
- Adds print_msg function to centralize output (this should replace all
other output in other modules)
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* format with black
* add message to catch-all exception block
* Unskip some tests (#1399)
* remove skip_editor test and tag
* remove useless test
* unskip blank input test
* formatting
* rename test so it doesn't overwrite other test
* unskip some dayone tests that now work
* Bump ipython from 7.28.0 to 7.31.1 (#1401)
Bumps [ipython](https://github.com/ipython/ipython) from 7.28.0 to 7.31.1.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](https://github.com/ipython/ipython/compare/7.28.0...7.31.1)
---
updated-dependencies:
- dependency-name: ipython
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Bump asteval from 0.9.25 to 0.9.26 (#1400)
Bumps [asteval](https://github.com/newville/asteval) from 0.9.25 to 0.9.26.
- [Release notes](https://github.com/newville/asteval/releases)
- [Commits](https://github.com/newville/asteval/compare/0.9.25...0.9.26)
---
updated-dependencies:
- dependency-name: asteval
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Bump black from 21.12b0 to 22.1.0 (#1404)
* Bump black from 21.12b0 to 22.1.0
Bumps [black](https://github.com/psf/black) from 21.12b0 to 22.1.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits/22.1.0)
---
updated-dependencies:
- dependency-name: black
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
* Run make format
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Update changelog [ci skip]
* Add reference documentation to docs site and separate out "Tips and Tricks" and "External Editors" from "Recipes" (#1332)
* First draft of command line reference, mostly pulled from help screen
* Add first draft of config file reference, mostly pulled from advanced.md
* Clean up config file doc for readability
* Add --config-file and remove examples from CLI reference
* Add warning about time zone in timeformat
* More small changes, and adding template config keyword
* Cleaning up and re-ordering config file reference
* Clean up reference and anything else from advanced documentation that can live elsewhere and linking to config file reference wherever config file is mentioned
* Fix syntax highlighting in command line reference, clean up content a bit, include --diagnostic
* Mention version config key
* Apply minor changes suggested in PR review
* Rename "recipes" to "Tips and Tricks", pull "External Editors" out of it into its own page, and redirect old recipes link to tips-and-tricks
* Revert broken mkdocs-redirects usage from last commit
* Update changelog [ci skip]
* Add --co alias for --config-override (#1397)
* Add hash as a default tag symbol (#1398)
* Update changelog [ci skip]
* Increment version to v2.8.4-beta2
* Update changelog [ci skip]
* Increment version to v2.8.4
* Update changelog [ci skip]
* Bump pytest from 6.2.5 to 7.0.0 (#1407)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 7.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...7.0.0)
---
updated-dependencies:
- dependency-name: pytest
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update changelog [ci skip]
* Drop support for Python 3.7 and 3.8 (#1412)
* Remove Python 3.7 and 3.8 from github actions workflows
* Update lockfile after running poetry update a couple times
* Update poetry lock
* Remove Python 3.7 and 3.8 from pyproject.toml and run poetry lock
* Update changelog [ci skip]
* Tidy up git ignore (#1414)
* cleaned gitignore and add comments
* removed colon for readbility
* alphabetize files in sections
Co-authored-by: nelnog <nel.nogales@gmail.com>
* fix behavior that was confusing pytest
* update test to match new message
* whitespace change
* clean up error for manually stopping the inline editor
* udpate error to use new exception handling
* move some exceptions and errors to the new exception handling
* add line breaks to keyboard interrupt so it looks more like other exceptions
* add handling for exceptions that happen earlier in the flow
* add new 'NothingToDelete' error to replace old behavior
* get rid of old exception
* add new exception handling to 'nothing saved to file' errors
* move exception for no editor configured into new handling
* move exception for no alt config to new handling
* get rid of old exception handling for encrypted journal
* Move error for too many wrong passwords into new handling
* fix merge errors
* replace sys.exit call with new exception handling
* replace sys.exit call with new exception handling
* replace sys.exit call with new exception handling
* reformat with black
* clean up old code
* clean up old code
* clean up linting issue
* update uncaught exception for new handling
* update test
* fix mangled lock file
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jrnl Bot <jrnl.bot@gmail.com>
Co-authored-by: Nelson <35701520+nelnog@users.noreply.github.com>
Co-authored-by: nelnog <nel.nogales@gmail.com>
* added new CLI argument option --config-file
* pass argument and fetch alt config file if specified
* argparse argument setting update
* argument alias --cf added
* documentation update - usage of CLI argument
* fixed name-clash + unit tests
* feature test added
* #1170-alternate-config-file: Auto stash before rebase of "refs/heads/#1170-alternate-config-file"
* Update docs/advanced.md
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
* BDD tests added
* Begin migrating/rewording --cf tests in pytest-bdd.
Uses current directory instead of deep directory structure, but requires a given for each config file referenced
* Fix issue where specifying a config-file that needs to be upgraded ended up upgrading the user config file instead
* Uncomment and rework remaining tests for pytest-bdd instead of behave
* Fix copytree for Python 3.7 (which doesn't support dirs_exist_ok)
* Minor fixes to alternative config examples
* Remove behave tests (behave is no longer in use)
* Move config file unit test to unit test dir and use pytext path fixture instead of current directory to find test data
* Use explicit "given the config exists" for copying config files instead of shoehorning in "given we use the config" twice
* Change when/when to when/and
* Clarify scenarios and fix indentation
* Confirm primary config file isn't modified when encrypting/decrypting a journal in an alternate config file
* Remove try/except on copytree since I'm no longer using the same
Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Moving configuration values and methods from install.py to config.py -- everything is broken right now
* Using context to store config path - still lots broken
* Use mocks and context.config_path to store test configs - many tests still broken though
* Update changelog [ci skip]
* Fix jrnl --ls crash
* Fix crash when no editor configured
* Attempt to patch config path with test data - doesn't appear to be working
* Properly use patched config path and add config given to scenario that wasn't using it
* Fix copypasta
* Fix editor test that needed patched config and trapping for system exit
* Add exception and handling for when configuration directory is actually a file
* Remove extraneous comment
* Use more generic JrnlError with messaging switchboard
* Format code a bit nicer
* Remove unnecessary given in diagnostic test
* Ensure full error message is output
* Remove unnecessary whitespace characters
* Update authors to "jrnl contributors" to comply with GPL3
* Include jrnl email address with contributors
* Include GPL notice in jrnl --version
* Apply consistent copyright and license to all Python files
* Add copyright and license to documentation
* Add copyright and license to docs theme
* Wiping poetry cache to try to resolve a test issue
* Testing with Python 3.9.0 in attempt to bypass GitHub Actions failure in 3.9.1
* make format
* Exclude Windows Python 3.9 build which is failing due to a GitHub Actions problem
* Modify testing to get around this 3.9 issue...
* Fix exclude
* Update version pin on pyxdg and run poetry update
* Update pytest pin and rerun poetry update
* Update black pin to latest version, poetry update, and make format
* More refactoring of cli.py
break up code from cli.py (now in jrnl.py) up into smaller functions
get rid of export mode
move --encrypt and --decrypt to commands.py
clean up the help screen even more
update flag name for import
* reorganize code, move around lots of functions
* clean up import statements
* move run function out of cli and into jrnl
* rename confusingly named function
* move editor function into editor file
* rename parse_args.py to args.py to make room for more args functions
* Fix error in test suite for windows
I accidentally flipped the conditional, so this fixes it.
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Update app description on help screen
Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
* Pretty print journal entry titles and dates.
Changes appearance of all jrnl viewing commands, such as $ jrnl --short and
$ jrnl -n {NUM}.
Fix#508
* Removed extra newline at end of title
* Use ansiwrap to properly wrap strings with ANSI escapes
* Add ansiwrap to pyproject.toml
* Allow configuration of colors
- Replaced raw escapes with colorama
- Added colors key to config
- Add checks for validity of color values
* Add color configuration documentation
* Fix broken tests due to config change
* Add tests for colors in configs
- Identifying invalid color configs
- Upgrading config from no colors -> colors
* Add colorama dependency for all platforms
* Allow users to disable colorization of output
* Update poetry.lock
* Add tag and body color customization options
* Fix colorization of tags in title and body
* Updated tests to use no color by default
* Change pass to continue in verify_config()
* Better style in Entry.py
* Reduce code duplication for tag highlighting
- Breaks "unreadable date" regression test for unknown reason
* Properly colorize tags and print body
* Reformatting and clean up
* Replace list comprehension with generator
* Handle invalid colors by not using a color
* Process ANSI escapes properly with behave
* Fixed the 'spaces after tags directly next to punctuation' bug
Broke processing of tags next to any punctuation at all
* Closer to working tag colorization but not perfect
* Add tests printing for multiline journals
Fix#717
* Correctly indent first line of multiline entry
* Add test for multiline entries with tags
* Remove redundant UNICODE flag
* Progress towards proper tag colorization and body formatting
* Fix newline colorization bug
Debug code left intact since there are more bugs to fix :/
* And now the space just ends up before the tag instead of after it
* Fix assertion syntax warning
* Moved tag test to tagging.feature file
* Strip out debug code and clean up
* Bold datetimes in title
* Bold all titles
Fix#720
* Remove PY2 and PY3 constants
* Fix regression in features/steps/core.py
* Fix tag_regex
* Remove redundant re.UNICODE flag
* Remove extraneous code
[Travis] add a linting stage (via `black`)
[Travis] update as per code review
Remove "Lint" as separate stage; have `black` check the output rather
than run the re-formmater
This commit should greatly simplify all password handling logic. No passwords are stored in the config dict anymore. Only the Encrypted Journals have any password related logic. I also had to remove some password fields from the test files, which shows how dangerous the previous approach was. A slight code change could've leaked passwords to the config file. However, I had to change the install progress a little bit to make this work. It will now not ask you for a password right away but rather if you want to encrypt or not. Only if you reply 'y' will it ask you for the password later on.
fstring wip
Run pyupgrade
fix broken pyupgrade fstring
run pyupgrade on plugin dir
fixup! remove py2 remnants and use mocks in tests
small print bugfix
The file=sys.stderr was part of the format(), so an error got printed to
stdout
Drop use of codecs package
Use builtins.open() instead
fixup! remove py2 remnants and use mocks in tests
[GH-632] raising exception in upgrade.py on fail
Handling it in install.py to prevent config from being overwritten when upgrade fails
[GH-632] removing unnecessary whitespace
[GH-632] removing unreachable return statement
[GH-632] adding call to action to report issue when upgrade fails
This change also hides the CONFIG_PATH state information entirely within
the install module. Therefore, the cli module does not have to care about
checking existence of files and paths.