Commit graph

48 commits

Author SHA1 Message Date
b1c32fbf63 add some tags with escapes to the tests 2025-07-23 20:24:42 -06:00
eace6ca35d refactor Issue::read_tags() to handle escaping 2025-07-23 20:23:03 -06:00
a57482f662 tags is now a directory with a file per tag
This is more conflict resistant than the old encoding where tags was a
file with a line per tag.
2025-07-23 18:58:31 -06:00
3b64acbf3f update all tests for renamed issue & comment ids
Renaming everything also means they have new creation-times, since we're
now git logging a different file/dir.
2025-07-23 18:57:30 -06:00
7abcf2e446 sort issue tags
This will be useful testing (and general consistency) when tags are
files in a directory instead of lines in a file, and thus subject to
random directory order.
2025-07-23 18:48:04 -06:00
e1287514f6 switch to pretty_assertions, makes it much easier to tell what blew up 2025-07-23 18:02:54 -06:00
c15736259c add git::git_log_oldest_author_timestamp(), saves us one git log
This cuts about 30% off the time to read the issues from
entomologist-data.
2025-07-22 13:04:54 -06:00
f60dd18c0a sort dependencies alphabetically after reading them
This is mostly to make the tests reliable.

Without this the dependencies are inserted into the vector in directory
order, which in my checkout of the repo did not match the alphabetical
order of the dependencies in the test.
2025-07-20 22:27:48 -06:00
seb
24a99d2957 Merge pull request 'Add Dependency Management' (#25) from 03/dependencies-api into main
Reviewed-on: #25
2025-07-20 12:21:56 -06:00
2ba13ebaeb Issue: get rid of all unwraps
Make and return errors instead.
2025-07-19 09:55:32 -06:00
8319a4f118 add dependency API / fix dependency representation / dependency
management via CLI
2025-07-18 16:20:17 -06:00
bc2b1bd3c1 add API and CLI to get & set done-time of an issue 2025-07-16 21:51:27 -06:00
3b33ed41f5 Issue: add done_time field
This records the DateTime that the issue moved to the Done state (if any).
2025-07-16 21:50:44 -06:00
3df76b89df rename Issue and Comment timestamp to creation_time
This is to make room for a second timestamp that records when the issue
was marked Done.
2025-07-16 21:50:44 -06:00
5e5508a2ee Issue: make a helper function to commit an Issue
This improves code reuse and streamlines the code a bit.
2025-07-16 21:50:42 -06:00
733100fefb add the ID field back into the Issue struct 2025-07-15 10:53:52 -06:00
490f946ef6 don't open an editor is stdin or stdout is not a terminal 2025-07-13 10:38:52 -06:00
9d4409c008 ent list: add filtering based on tags 2025-07-12 14:24:40 -06:00
2f1636db55 add Issue::add_tag() and Issue::remove_tag() 2025-07-12 12:28:59 -06:00
b02807eaca Issue: add tags field 2025-07-12 12:28:53 -06:00
665f02cbe8 when changing state, include old state in git log message
Before this commit:
    change state of issue f3990ac13cd93a925f2a66e6a72eb0f2 to backlog

After this commit:
    change state of issue 406e2330695040fed5fdbcaae5d2b331, new -> inprogress
2025-07-12 10:02:51 -06:00
d642004ee0 refactor ent comment
Instead of a two-step process handled by the application
(`Issue::new_comment()` and `Comment::set_description()` or
`Comment::edit_description()`), make a simpler-to-use single-step
`Issue::add_comment()`.

Move the implementation details from Issue to Comment.

Better log message when adding a comment.
2025-07-11 13:07:47 -06:00
1c8d994fd9 better ent assign log message 2025-07-11 12:49:58 -06:00
ab86e6369c Issue::set_state(): better git commit message 2025-07-11 11:50:33 -06:00
1477322f81 Issue: refactor to simplify & make better git log messages
This starts cleaning up the Issue API.

* Start separating the public API from the internal API.

* Make `Issue::new()` and `Issue::edit_description()` better behaved,
  simpler, reduce code duplication, and also produce better git log
  messages.

* Update `ent` to call the changed `new()` function.

* Add some comments documenting the Issue API.

* `ent new` and `ent edit` now use the editor specified by the EDITOR
  environment variable, if any.  Defaults to `vi` if unspecified.
2025-07-11 11:50:26 -06:00
7b6efdf925 rename git::add_file() to just add(), it can add directories too 2025-07-11 10:17:11 -06:00
211bf92dde Issue: handle empty description from user
This fixes issue a26da230276d317e85f9fcca41c19d2e.
2025-07-09 22:33:58 -06:00
d21b811bee add ent assign ISSUE PERSON 2025-07-08 20:59:02 -06:00
645062d10c add optional 'assignee' to Issue 2025-07-08 20:59:02 -06:00
e8b37cd86a add author and timestamp to Issue 2025-07-08 20:59:02 -06:00
7acd94f7c0 add author to Comment 2025-07-08 20:59:02 -06:00
be362517fb give Comment a timestamp, display in chronological order
This commit makes a couple of changes:

- `ent show ISSUE` now displays the Issue's Comments in chronological
  order

- the Comment struct now includes a timestamp, which is the Author Time
  of the oldest commit that touches the comment's directory

- the Issue struct now stores its Comments in a sorted Vec, not in
  a HashMap

- The Comment's uuid moved into the Comment struct itself, instead of
  being the key in the Issue's HashMap of Comments
2025-07-08 18:42:14 -06:00
seb
431c67d43d Merge pull request 'ent list now accepts a filter, default "state=New,Backlog,Blocked,InProgress"' (#10) from filter-list into main
Reviewed-on: #10
2025-07-08 18:41:19 -06:00
ccabfa4ec8 remove an old debug log message from Issue::new_comment() 2025-07-08 10:50:37 -06:00
7d9284bf91 ent list now accepts a filter, default "state=New,Backlog,Blocked,InProgress" 2025-07-07 23:46:14 -06:00
50509dcf59 basic comment support in lib 2025-07-07 21:16:08 -06:00
seb
bd41704906 Merge pull request 'Add User Control Over State Transitions' (#7) from 03/state-transitions into main
Reviewed-on: #7
2025-07-07 18:13:06 -06:00
a6d2f7d1e8 issue.rs: add fmt::Display for State 2025-07-07 13:29:09 -06:00
ed1b4488b2 issue.rs: add state getter/setter 2025-07-07 13:29:01 -06:00
172055c480 always render issue UUIDs as 128 bit hex numbers 2025-07-07 12:53:05 -06:00
seb
343e43a762 Merge pull request 'Use Logging Crate To Avoid STDOUT Spam' (#5) from 03/logging into main
Reviewed-on: #5
2025-07-07 12:45:33 -06:00
1e5d328ab4 add logging crate to reduce unnecessary stdout spam 2025-07-07 12:31:09 -06:00
09373cda56 add ent new 2025-07-06 00:22:30 -06:00
5e482edb5c rename ReadIssueError to just IssueError
Error handling is pretty broken in this project :-(
2025-07-06 00:22:30 -06:00
1f4456fcaf teach Issue to know what dir it lives in
The Issue struct is a cache of files on disk.  There is never an Issue
without a directory to live in.

This commit adds a field to Issue to track what that directory is, so
that we can update those filew when we change the Issue, and commit the
changes to git.
2025-07-06 00:22:30 -06:00
559e70077e "title" is just the first line of "description" now 2025-07-05 22:40:28 -06:00
d94c991eaa add dependency tracking to issue type 2025-07-05 21:19:18 -06:00
b9979f5e9e start adding Issue struct
This abstracts a single issue.
2025-07-05 21:18:25 -06:00