ref: e7f439aa2ef0f69ccb344be8c3c8971b349d4884
dir: /README.md/
## Config The config file in `.pro/config` is created by `pro/init`. `srvfile` and `stubs` are used by `pro/ns`, described below [project "projectname"] srvfile=/srv/foo stubs=docs,resources ## Commands `pro/init` is use to create a new barebones project, with no tasks or namespace files. The project will be created with the basename of current directory, or `name` if given. `pro/ns` sets up a namespace based on the contents on `.pro/ns`, (see namespace(6)). This namespace is then posted to /srv/$name, based on the srvfile config setting. Any stubs in the config will be set up using `aux/stub -d $name` prior to starting the namespace (See [this post](https://hlfw.ca/blog/2024-08-24-more-setup.html) for inspiration, and further integration.) `pro/task` is used to manage or add a task to the graph, usage is similar to git/commit - the hold editor will be used by default, ctrl+d is used to signal completion. `-a $tag` will create the task as a child of `$tag`. `-b $tag` will create the task as a parent of `$tag`. `-c $tag` is used to change an existing task. Passing `-e` will use your default editor instead of hold mode. Any args afterwards will be passed along to the created task `pro/rm` removes a given completed task. With `-f`, all matching tags are removed. With `-a`, all completed tags are checked for removal. `pro/walk` shows the status of tasks in the graph. It prints a list of tasks prefixed with the status character. The -c flag disables printing the status characters. The -p flag will only search within the given project. The -q option suppresses all output. The -f option filters tasks by status, and only matching items are printed. By default, the filters are DNS. The task status characters are as follows: - A This task has been attempted, but is blocked - B This task has not been attempted, and is blocked - D This task is completed - N This task has not been attempted - S This task has been attempted *Blocked tasks have a child task that requires completing before they can be completed `pro/show` prints a formatted task to stdout, when passed -r it will print the raw task file ## TODO - `pro/walk` implementation - multi-project awareness for all utils. A task should be able to reference another project via a tag, such as `projectname/tag` ## Multi-project Thoughts A `pro/fs` could be spun up, given a set of paths that your projects live somewhere within, by default the user $home, and could walk the paths looking for .pro directories. This would allow utilities to query the fs for valid tags and completion states outside of the current project.