Skip to content
This repository was archived by the owner on Jun 26, 2026. It is now read-only.

Commit dd6f771

Browse files
committed
Note relocation.
1 parent 605fd37 commit dd6f771

1 file changed

Lines changed: 76 additions & 12 deletions

File tree

README.md

Lines changed: 76 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,76 @@
1-
ERROR com.io7m.ghrepostools.Main : The specified command does not exist.
2-
Command : README
3-
Error Code : command-nonexistent
4-
5-
DEBUG com.io7m.ghrepostools.Main : Exception:
6-
com.io7m.quarrel.core.QException: The specified command does not exist.
7-
at com.io7m.quarrel.core.QApplication.parseExpanded(QApplication.java:244)
8-
at com.io7m.quarrel.core.QApplication.parse(QApplication.java:152)
9-
at com.io7m.quarrel.core.QApplicationType.run(QApplicationType.java:94)
10-
at com.io7m.ghrepostools.Main.run(Main.java:126)
11-
at com.io7m.ghrepostools.Main.mainExitless(Main.java:110)
12-
at com.io7m.ghrepostools.Main.main(Main.java:95)
1+
taskrecorder
2+
===
3+
4+
[![Maven Central](https://img.shields.io/maven-central/v/com.io7m.taskrecorder/com.io7m.taskrecorder.svg?style=flat-square)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.io7m.taskrecorder%22)
5+
[![Maven Central (snapshot)](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fcentral.sonatype.com%2Frepository%2Fmaven-snapshots%2Fcom%2Fio7m%2Ftaskrecorder%2Fcom.io7m.taskrecorder%2Fmaven-metadata.xml&style=flat-square)](https://central.sonatype.com/repository/maven-snapshots/com/io7m/taskrecorder/)
6+
[![Codecov](https://img.shields.io/codecov/c/github/io7m-com/taskrecorder.svg?style=flat-square)](https://codecov.io/gh/io7m-com/taskrecorder)
7+
![Java Version](https://img.shields.io/badge/21-java?label=java&color=e6c35c)
8+
9+
![com.io7m.taskrecorder](./src/site/resources/taskrecorder.jpg?raw=true)
10+
11+
| JVM | Platform | Status |
12+
|-----|----------|--------|
13+
| OpenJDK (Temurin) Current | Linux | [![Build (OpenJDK (Temurin) Current, Linux)](https://img.shields.io/github/actions/workflow/status/io7m-com/taskrecorder/main.linux.temurin.current.yml)](https://www.github.com/io7m-com/taskrecorder/actions?query=workflow%3Amain.linux.temurin.current)|
14+
| OpenJDK (Temurin) LTS | Linux | [![Build (OpenJDK (Temurin) LTS, Linux)](https://img.shields.io/github/actions/workflow/status/io7m-com/taskrecorder/main.linux.temurin.lts.yml)](https://www.github.com/io7m-com/taskrecorder/actions?query=workflow%3Amain.linux.temurin.lts)|
15+
| OpenJDK (Temurin) Current | Windows | [![Build (OpenJDK (Temurin) Current, Windows)](https://img.shields.io/github/actions/workflow/status/io7m-com/taskrecorder/main.windows.temurin.current.yml)](https://www.github.com/io7m-com/taskrecorder/actions?query=workflow%3Amain.windows.temurin.current)|
16+
| OpenJDK (Temurin) LTS | Windows | [![Build (OpenJDK (Temurin) LTS, Windows)](https://img.shields.io/github/actions/workflow/status/io7m-com/taskrecorder/main.windows.temurin.lts.yml)](https://www.github.com/io7m-com/taskrecorder/actions?query=workflow%3Amain.windows.temurin.lts)|
17+
18+
## Repository Relocation
19+
20+
Development of this project has moved to an
21+
[open-source but not open-contribution](https://sqlite.org/copyright.html#notopencontrib)
22+
model.
23+
24+
Source code and commits will remain publicly available perpetually, but issues
25+
and/or pull requests will be rejected and/or ignored. Additionally, this project
26+
will now only be available via a read-only mirror at:
27+
28+
https://codeberg.org/io7m-com/taskrecorder
29+
30+
31+
## taskrecorder
32+
33+
The `taskrecorder` package provides a simple abstraction to record the steps
34+
(and subtasks) performed during the execution of tasks within an application.
35+
36+
## Features
37+
38+
* Record detailed task steps for informative error reports.
39+
* High coverage test suite.
40+
* [OSGi-ready](https://www.osgi.org/)
41+
* [JPMS-ready](https://en.wikipedia.org/wiki/Java_Platform_Module_System)
42+
* ISC license.
43+
44+
## Usage
45+
46+
Create a new task, and create steps and subtasks as the application performs
47+
operations:
48+
49+
```
50+
final Logger logger;
51+
final TRTaskRecorderType<Integer> recorder =
52+
TRTaskRecorder.create(logger, "Book Flight");
53+
54+
recorder.beginStep("Picking best airline price...");
55+
Airline airline;
56+
try {
57+
airline = pickAirline();
58+
recorder.setStepSucceeded("Found airline.");
59+
} catch (Exception e) {
60+
recorder.setTaskFailed("No price available.", e);
61+
return;
62+
}
63+
64+
recorder.beginStep("Making reservation...");
65+
try {
66+
int id = makeReservation(airline);
67+
recorder.setTaskSucceeded("Created reservation.", id);
68+
} catch (Exception e) {
69+
recorder.setTaskFailed("No reservations available.", e);
70+
return;
71+
}
72+
73+
var task = recorder.toTask();
74+
assert task.resolution() instanceof TRSucceeded;
75+
```
76+

0 commit comments

Comments
 (0)