{"id":15021081,"url":"https://github.com/duckasteroid/progress","last_synced_at":"2025-10-27T10:31:53.550Z","repository":{"id":21227583,"uuid":"24542784","full_name":"duckAsteroid/progress","owner":"duckAsteroid","description":"A Java library for reporting progress - with console implementation and bindings for various UI tookits","archived":false,"fork":false,"pushed_at":"2025-01-06T18:33:16.000Z","size":1547,"stargazers_count":4,"open_issues_count":7,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T05:23:17.604Z","etag":null,"topics":["gradle","java","progress","travis-ci"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duckAsteroid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null},"funding":{"github":["duckasteroid"],"patreon":"duckasteroid"}},"created_at":"2014-09-27T21:07:31.000Z","updated_at":"2024-11-09T23:38:09.000Z","dependencies_parsed_at":"2022-08-17T22:40:30.856Z","dependency_job_id":null,"html_url":"https://github.com/duckAsteroid/progress","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duckAsteroid%2Fprogress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duckAsteroid%2Fprogress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duckAsteroid%2Fprogress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duckAsteroid%2Fprogress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duckAsteroid","download_url":"https://codeload.github.com/duckAsteroid/progress/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238480860,"owners_count":19479570,"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":["gradle","java","progress","travis-ci"],"created_at":"2024-09-24T19:56:06.740Z","updated_at":"2025-10-27T10:31:47.286Z","avatar_url":"https://github.com/duckAsteroid.png","language":"Java","funding_links":["https://github.com/sponsors/duckasteroid","https://patreon.com/duckasteroid"],"categories":[],"sub_categories":[],"readme":"progress\n========\n[![Java CI with Gradle](https://github.com/duckAsteroid/progress/actions/workflows/gradle.yml/badge.svg?branch=master)](https://github.com/duckAsteroid/progress/actions/workflows/gradle.yml)\n[![Known Vulnerabilities](https://snyk.io//test/github/duckAsteroid/progress/badge.svg?targetFile=build.gradle)](https://snyk.io//test/github/duckAsteroid/progress?targetFile=build.gradle)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=com.asteroid.duck.progress%3Aprogress\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=com.asteroid.duck.progress%3Aprogress)\n\n![Example console progress](example/console.gif?raw=true \"Console GIF\")\n\nAn implementation agnostic Java library for reporting progress - with bindings for various logging and UI toolkits.\n\nThink of it like [SLF4J](https://www.slf4j.org/) but for progress reporting, rather than logging.\n\nIf you are passed a `ProgressMonitor` instance into your code - it is very straightforward to use. Here is the most basic \nexample:\n\n```java\npublic void someMethod(ProgressMonitor monitor) {\n  monitor.setSize(100);\n  monitor.setStatus(\"Starting to do some stuff\");\n  \n  try {\n    for(int i=0; i \u003c 10; i++) {\n      monitor.setStatus(\"Doing stuff \" + i +\" of 10\");\n      // do something sensible that takes time\n      Thread.sleep(1000);\n      monitor.worked(10);\n      // Note we might also check if the monitor is cancelled?\n      // if(monitor.isCancelled()) { break; }\n    }\n  }\n  catch(InterruptedException e) {\n    // could be any exception\n    e.printStackTrace();\n  }\n  finally {\n    // regardless what state of progress was when exception happened\n    // we are now done!\n    monitor.done();\n  }\n}\n```\n\nWhats most important is that this brings no other dependencies into the client code - however the underlying `ProgressMonitor` instance may be implemented (and mapped through to corresponding monitor classes) for Console, Swing, Eclipse ...\n\nGetting Started\n===============\n\nTo use the library to report on progress (regardless of where it reports to) you need to add the \ndependency for the pure API as follows:\n```groovy\ndependencies {\n    implementation 'com.asteroid.duck.progress:api:1.1.0'\n}\n```\n\nApplications that wish to render that progress would need to use one of the bindings for different\ndestinations:\n* Console/terminal output (e.g. `System.out`)\n* SLF4J Loggers messages in some form\n* Java Logging framework  \n* Swing progress reporting\n\nMore will be added in future.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckasteroid%2Fprogress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduckasteroid%2Fprogress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckasteroid%2Fprogress/lists"}