{"id":21572064,"url":"https://github.com/zingale/pyjournal2","last_synced_at":"2025-07-16T18:32:03.774Z","repository":{"id":43422531,"uuid":"155109214","full_name":"zingale/pyjournal2","owner":"zingale","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-18T00:43:21.000Z","size":1597,"stargazers_count":2,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-18T04:34:54.700Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zingale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-10-28T19:48:33.000Z","updated_at":"2024-09-18T00:43:24.000Z","dependencies_parsed_at":"2023-02-09T05:00:16.792Z","dependency_job_id":"8bd5405f-a008-4b67-929f-78e935d81f32","html_url":"https://github.com/zingale/pyjournal2","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fpyjournal2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fpyjournal2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fpyjournal2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fpyjournal2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zingale","download_url":"https://codeload.github.com/zingale/pyjournal2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226154746,"owners_count":17582017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T11:18:05.085Z","updated_at":"2025-07-16T18:32:03.767Z","avatar_url":"https://github.com/zingale.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyjournal2\n\npyjournal2 is a commandline script written in python to create and\nmanage a Sphinx ReST-based scientific journal.  The journal is\ndistributed (via `git`) so that we can access it from any machine we\nwork on.  It is commandline driven to make the barrier-to-entry for\ncreating a short entry minimal.  Entries are grouped into topics and\nshown in date-order.\n\nThe basic idea is that you have one research journal with a number of\ntopics to organize ideas.  Each topic appears as a chapter in the\nSphinx web navigation bar, allowing you to easily switch between them.\nWithin a topic, entries are ordered chronologically, with one `.rst`\nfile per day.  Images and links to files can easily be added (and the\nfiles are copied to the git repo so they are permanently part of the\njournal).\n\nNote: pyjournal2 requires python 3.7 or later\n\n* Installing:\n\n  ```\n  pip install .\n  ```\n\n  This will put the\n  `pyjournal` executable script in you system's path.\n\n  You should set your `EDITOR` environment variable.  This has been tested\n  with emacs and vi.  For emacs, should should launch it in a terminal, e.g.,\n  by setting\n\n  ```\n  export EDITOR=\"emacs -nw\"\n  ```\n\n* Command help:\n\n  pyjournal2 uses a number of subcommands to create, edit, and build a\n  journal.  Doing:\n  ```\n  pyjournal --help\n  ```\n  will list all the commands.  Additional help for each of the commands\n  can be found by doing\n  ```\n  pyjournal command --help\n  ```\n  for the command `command`.\n\n* Starting:\n\n  - `pyjournal init nickname username master-path [working-path]`\n\n    this initializes a bare git repo that will hold the journal data,\n    creates the initial directory structure to hold the journal\n    entries, and copies in the Sphinx source hierarchy to get things\n    started. It will also create a `.pyjournal2rc` file\n    with an entry for this journal name (nickname).\n\n    `master-path/` should be an existing directory.  The journal\n\tmaster repo will be created as a subdirectory under `master-path/`\n\tas a bare git repo.  The working clone that we interact with is\n\tplaced there too, unless we specify the optional `working-path`\n\targument.\n\n    `usename` and journal `nickname` are needed only for the styling\n    of the Sphinx output.\n\n    The `git` operations that take place under the hood are:\n\n      - Creating a bare repo for others to clone to/from:\n\n        ```\n        mkdir path/nickname.git\n        cd path/nickname.git\n        git init --bare\n        ```\n\n      - Creating the working directory that we will interact with:\n\n        ```\n        cd working-path/\n        git clone path/nicknmae\n        ```\n\n\n  - `pyjournal connect remote-machine:/git-path/journal-nickname.git working-path`\n\n    If you already established a journal on another machine (using the\n    `init` action), then `connect` is used to create a clone of that\n    journal on your local machine (if you are only working on a single\n    machine, then you don't need to do this).\n\n    Note that for the remote git repo is specified in the same way you\n    would specify a remote git repo for `git clone`.  This points to\n    the remote bare repo.\n\n    Only a working repo is stored locally (created though a `git clone`).\n\n\n* Day-to-day use:\n\n  - `pyjournal entry [--link link-files] [topic] [images [images ...]]`\n\n    adds an entry to the journal under the topic `topic`.  If `topic`\n    is not included, then the entry is put in the default `main` topic.\n    Any number of image files can be appended to the `entry` line---these\n    will be copied into the journal and a Sphinx figure directive will\n    be setup for you when the entry pops up in your editor.\n\n    There is a single entry per day for each topic, so running `entry`\n    again will allow you to continue editing the same entry.\n\n    Some shortcuts exist for entries:\n\n      * if you just want to do an entry to the main topic with no\n        images, you can simply type `pyjournal` without any\n        arguments.\n\n      * if you want to create an entry in an existing topic, you can\n        just do `pyjournal topic`, omitting the word `entry`.\n\n    To create a new topic, simply do:\n\n    ```pyjournal entry new-topic-name```\n\n    you will then be prompted if you really want to create the new topic,\n    and if you answer yes, the editor will pop up with a blank entry\n    page in the new topic.\n\n  - `pyjournal build`\n\n    builds the journal Sphinx webpage\n\n  - `pyjournal show`\n\n    builds the journal webpage and opens it in a tab of your existing\n    web browswer.\n\n  - `pyjournal pull`\n\n    gets any changes from the master version of the journal (remote\n    git bare repository)\n\n  - `pyjournal push`\n\n    pushes any changes in the local journal to the remote (git bare\n    repo) version\n\n  - `pyjournal continue topic-name`\n\n    continues editing the previous entry for a topic.  This is only\n    needed if you want to continue an entry from the previous day.\n    Otherwise, `pyjournal topic-name` will always continue the\n    current day's entry.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzingale%2Fpyjournal2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzingale%2Fpyjournal2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzingale%2Fpyjournal2/lists"}