{ "info": { "author": "Matt Wiens", "author_email": "mwiens91@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only" ], "description": "[![Build Status](https://travis-ci.com/mwiens91/jrnl.svg?branch=master)](https://travis-ci.com/mwiens91/jrnl)\n[![PyPI](https://img.shields.io/pypi/v/jrnl-mw.svg)](https://pypi.org/project/jrnl-mw/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/jrnl-mw.svg)](https://pypi.org/project/jrnl-mw/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n\n# jrnl\n\njrnl is a program to help manage a personal journal.\n\n## Usage\n\n### Setup\n\nSet up your journal by printing out a config file, like so:\n\n```\njrnl --setup\n```\n\nand fill out the path to the root of your journal.\n\n### Using jrnl\n\nOpen up today's journal entry with\n\n```\njrnl\n```\n\nwhich will open up today's journal entry in your favourite text editor.\n\n### Using jrnl grep\n\njrnl also comes with a grep wrapper which you can invoke as follows:\n\n```\njrnl grep [OPTIONS] PATTERN\n```\n\nwhere `OPTIONS` are normal [grep\noptions](http://man7.org/linux/man-pages/man1/grep.1.html).\n\n## Advanced usage\n\n### Timestamps\n\nYou can generate a timestamp before opening the entry by using the `-t` flag:\n\n```\njrnl -t\n```\n\nor you can have timestamps always written by specifying so in your config file.\n\n### Negative date offsets\n\nYou can open up another date's journal entry by specifying a date as an\nargument. One way of doing this is with negative date offsets: for\nexample, to open up yesterday's journal run\n\n```\njrnl -1\n```\n\n### Fuzzy dates\n\nAnother way to pass a date to jrnl is with a date string (wrapped in\nquotes if it contains spaces). jrnl uses\n[dateutil](https://github.com/dateutil/dateutil/)'s fuzzy date parser to\nparse the strings you pass in, which lets you specify dates like ``\"Nov\n7 2017\"``:\n\n```\njrnl \"Nov 7 2017\"\n```\n\ndateutil can do more: for example, specifying the 4th of the current\nmonth's date with\n\n```\njrnl 4\n```\n\n### Accessing the latest existing entry\n\nYou can open the latest existing journal entry with `HEAD` like so:\n\n```\njrnl HEAD\n```\n\nAliases for `HEAD` are `LAST` and `LATEST`\u2014all of which are case\ninsensitive.\n\n### Accessing an existing entry's ancestor\n\nYou can access the ancestor of an existing entry with suffixes `^` or\n`~N` (for the Nth ancestor). These work almost identically to the same\nsuffixes in `git`. For example, to find the fifth last existing journal\nenty, you can do\n\n```\njrnl HEAD~5\n```\n\nThese suffixes can be stacked and combined in any way you like.\n\n### Accessing the closest existing entry to a given date\n\nTo access the closest existing journal entry for a given date, add the\n`@` suffix to the date. For example, to find the closest entry to\n2017-01-01, you'd do\n\n```\njrnl @2017-01-01\n```\n\n### Opening multiple entries\n\nTo open up multiple entries simply pass in multiple date arguments. For\nexample,\n\n```\njrnl -7 \"Jan 01 2016\" 20180504\n```\n\nwill open entries for a week ago, 2018-01-01, and 2018-05-04.\n\n### Extending a date past midnight\n\nIf in your config file you have\n\n```yaml\nhours_past_midnight_included_in_date: N\n```\n\nwhere `N` is some postive integer; then for a given date, at 0`N`:00 or\nearlier, jrnl will open up the day before's journal entry.\n\n:confused: What? Here's the motivation:\n\nWhen it's 02:00, we're likely to refer this time as night, rather than\nmorning. Likewise, you might want a journal chunk (for lack of a better\nterm) written at 02:00 to be in the same entry as chunks from\n(technically) the previous day. If you do want such a thing, you can\nspecify a time in your config file. At any time before this specified time (inclusive),\njrnl will open up the day before's journal entry, as shown in the\nsnippet above.\n\n## Journal structure\n\nRight now you're constrained to having a journal structure like so:\n\n```\njournal_root/\njournal_root/2017/\njournal_root/2017/2017-07-05.txt\njournal_root/2017/2017-09-01.txt\n```\n\nand if you want to use all the features you're going to need to be okay\nwith ISO 8601-based timestamps:\n\n```\n2017-09-01\n21:06\n\nYou'd write stuff here.\n\n22:30\n\nAnd more stuff here.\n```\n\n## How do I install this?\n\n```\nsudo pip3 install jrnl-mw\n```\n\nor just run the [`run_jrnl.py`](run_jrnl.py) script directly.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mwiens91/jrnl", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jrnl-mw", "package_url": "https://pypi.org/project/jrnl-mw/", "platform": "", "project_url": "https://pypi.org/project/jrnl-mw/", "project_urls": { "Homepage": "https://github.com/mwiens91/jrnl" }, "release_url": "https://pypi.org/project/jrnl-mw/1.3.2/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Write a journal", "version": "1.3.2" }, "last_serial": 5185146, "releases": { "1.0.5": [ { "comment_text": "", "digests": { "md5": "34482d0338ca00def3486a3ff2fad0f3", "sha256": "9f5c1bf6752f1413d7d6753e38f98ba1ba20c65a64d66deb7784a672cace5e83" }, "downloads": -1, "filename": "jrnl-mw-1.0.5.tar.gz", "has_sig": false, "md5_digest": "34482d0338ca00def3486a3ff2fad0f3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8796, "upload_time": "2018-08-01T00:34:42", "url": "https://files.pythonhosted.org/packages/4a/96/3cbebc6eb0060a6dba8344f5b625018c0b35fdc9e74ef390dce01fe7b22b/jrnl-mw-1.0.5.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "4cbb9ee7f48b84c65e2186a35fdf825a", "sha256": "b318b43f1e48d0dca93b8f1d0cec5d3ab4fbfa4d7b83839a2d21736c92483df8" }, "downloads": -1, "filename": "jrnl-mw-1.0.7.tar.gz", "has_sig": false, "md5_digest": "4cbb9ee7f48b84c65e2186a35fdf825a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8913, "upload_time": "2018-08-21T00:24:42", "url": "https://files.pythonhosted.org/packages/fe/58/77360e2491074429f8e544c6d50399d189b9eb2a56bfb980b49e34ab6bf7/jrnl-mw-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "4cc7ae35838ee80103e45e1062e77a0a", "sha256": "ffcbb9bef07d1c613505a5bbf49b06fe686ea8e2376d30e402d05cab78805521" }, "downloads": -1, "filename": "jrnl-mw-1.0.8.tar.gz", "has_sig": false, "md5_digest": "4cc7ae35838ee80103e45e1062e77a0a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8954, "upload_time": "2018-09-01T01:34:14", "url": "https://files.pythonhosted.org/packages/ee/08/962d3ce78cc939e0bfc06dc849492884b2b3f7ba01836c90340ed525f7f8/jrnl-mw-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "0248a1801074a499917482447b15edb9", "sha256": "00c2372f02944d56e84cf7ac935fa6b7ab79ebb26d9383302303d2bdbf61b435" }, "downloads": -1, "filename": "jrnl-mw-1.0.9.tar.gz", "has_sig": false, "md5_digest": "0248a1801074a499917482447b15edb9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9539, "upload_time": "2018-12-29T09:20:39", "url": "https://files.pythonhosted.org/packages/74/27/bee51d9f97c0a5d73aa7fac24932467a3858de8a444cb8614bdb34c27e02/jrnl-mw-1.0.9.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b4d4c9a817092d4f9154bb277a135db6", "sha256": "bfc41d8cc3b999cfb188a917f8eb160c789c090876f2d7f478bb3eea3a6c638a" }, "downloads": -1, "filename": "jrnl-mw-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b4d4c9a817092d4f9154bb277a135db6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10157, "upload_time": "2018-12-30T09:15:30", "url": "https://files.pythonhosted.org/packages/4e/41/75ec661ecc705ba3cd5a978b6e12e539ca43f7462344d8630de0948e861b/jrnl-mw-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "aeaf7cffa0400986c763c5eeba06e690", "sha256": "2ddf2b8238fdee9946b3d6ee273ef609e9e8360664418df16e7321c198a124ec" }, "downloads": -1, "filename": "jrnl-mw-1.2.0.tar.gz", "has_sig": false, "md5_digest": "aeaf7cffa0400986c763c5eeba06e690", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11351, "upload_time": "2019-01-01T08:23:26", "url": "https://files.pythonhosted.org/packages/d3/70/7d8fadc75c21b2c15ae19d6089cbc8a3288ef19d9d2d216563db8ccb1309/jrnl-mw-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "20070eb77ca2f4a3540eb1bfa7945005", "sha256": "cc0343f9dcd877e82fff9060ea6bc7741a6bcbf51f828145fc14c3671fcede22" }, "downloads": -1, "filename": "jrnl-mw-1.3.0.tar.gz", "has_sig": false, "md5_digest": "20070eb77ca2f4a3540eb1bfa7945005", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12372, "upload_time": "2019-01-02T04:02:39", "url": "https://files.pythonhosted.org/packages/c0/ca/f79084d7f15a655c8661d2a6bf18e87b6524f4c19d407e4f508261f006be/jrnl-mw-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "c79f35c3ae4c99bbed9d589823407658", "sha256": "4a6aaf712ab6627cbc8c3aec6d63f27405c6d6eae1620508a4c751f8f5820304" }, "downloads": -1, "filename": "jrnl-mw-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c79f35c3ae4c99bbed9d589823407658", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12372, "upload_time": "2019-03-05T06:47:23", "url": "https://files.pythonhosted.org/packages/a5/f2/0f172a35707031c3eb9f82981a062a078372b73a44b98e5d384cd78c7c27/jrnl-mw-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "41554f4edc26168f658751d35b696558", "sha256": "59c3b30d52fa2602ddd6e35c03c46c7d1886298e139d9244928dba4fcb462fbf" }, "downloads": -1, "filename": "jrnl-mw-1.3.2.tar.gz", "has_sig": false, "md5_digest": "41554f4edc26168f658751d35b696558", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 14243, "upload_time": "2019-04-24T22:19:16", "url": "https://files.pythonhosted.org/packages/58/b9/18388a358bdee05ba538b50c3e43c0c5322ef0cb1c9015ac439b96205ca7/jrnl-mw-1.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "41554f4edc26168f658751d35b696558", "sha256": "59c3b30d52fa2602ddd6e35c03c46c7d1886298e139d9244928dba4fcb462fbf" }, "downloads": -1, "filename": "jrnl-mw-1.3.2.tar.gz", "has_sig": false, "md5_digest": "41554f4edc26168f658751d35b696558", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 14243, "upload_time": "2019-04-24T22:19:16", "url": "https://files.pythonhosted.org/packages/58/b9/18388a358bdee05ba538b50c3e43c0c5322ef0cb1c9015ac439b96205ca7/jrnl-mw-1.3.2.tar.gz" } ] }