hlfw.ca

task

ref: f28653cf7b83b581d53232eb4801a9f98d9ec0b1
dir: /README.md/

View raw version
## 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

## 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 thoughs

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.