{"id":16087485,"url":"https://github.com/linqlover/uip-exercise-1","last_synced_at":"2026-05-02T06:41:16.626Z","repository":{"id":115793869,"uuid":"315380322","full_name":"LinqLover/uip-exercise-1","owner":"LinqLover","description":"A simple command-line application for a Qt/C++ library that was developed as part of a study exercise.","archived":false,"fork":false,"pushed_at":"2020-12-10T20:22:59.000Z","size":224,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T15:27:09.611Z","etag":null,"topics":["cli","cpp","exercise","qt"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LinqLover.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-23T16:49:19.000Z","updated_at":"2023-02-17T00:36:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LinqLover/uip-exercise-1","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/LinqLover/uip-exercise-1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2Fuip-exercise-1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2Fuip-exercise-1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2Fuip-exercise-1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2Fuip-exercise-1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LinqLover","download_url":"https://codeload.github.com/LinqLover/uip-exercise-1/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LinqLover%2Fuip-exercise-1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32525896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cli","cpp","exercise","qt"],"created_at":"2024-10-09T13:29:53.131Z","updated_at":"2026-05-02T06:41:16.611Z","avatar_url":"https://github.com/LinqLover.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uip-exercise-1 [![.github/workflows/main.yml](https://github.com/LinqLover/uip-exercise-1/workflows/.github/workflows/main.yml/badge.svg)](https://github.com/LinqLover/uip-exercise-1/actions?query=workflow%3A.github%2Fworkflows%2Fmain.yml)\n\nSolution for a study exercise on programming a command-line interface (CLI). The `pscom` module was provided as a negative example of a library.\n\n## Command Line Interface\n\n```\nsage: ./pscom-cli/bin/pscom-clid [options] command\nPhoto system command-line tool\n\nOptions:\n  -h, --help, -?              Displays help on command-line options.\n  -V, --version               Displays version information.\n  -v, --verbose               Verbose mode. Specify up to 2 times to increase\n                              the verbosity level of output messages. Opposite\n                              of quiet mode.\n  -q, --quiet                 Quiet mode. Specify up to 2 times to decrease the\n                              verbosity level of output messages. Opposite of\n                              verbose mode.\n  --on-conflict \u003cstrategy\u003e    Conflict resolution strategy to be applied when a\n                              destructive operation is run. Can be one of the\n                              following:\n                              - overwrite: Overwrite the original file\n                              irrecoverably.\n                              - skip: Just forget this incident and continue\n                              with the next file.\n                              - backup: Create a backup of the original file (by\n                              appending a squiggle (~) to its file name) and\n                              then overwrite it.\n  -f, --force                 Enforce possibly destructive operations\n                              regardless of the consequences. Equivalent to\n                              on-conflict=overwrite.\n  --supported-formats         Display all supported image formats.\n  -d, -C, --directory \u003cpath\u003e  The directory to look up image files. Pass a\n                              single dash (-) to enter a list of image files\n                              interactively.\n  -R, --recursive             Include subdirectories.\n  -r, --regex \u003cpattern\u003e       A regular expression to filter image files. Does\n                              not need to match the entire file name; use text\n                              anchors (^ $) for full matches.\n  --min, --min-date \u003cdate\u003e    Reject images older than the given date and time.\n  --max, --max-date \u003cdate\u003e    Reject images newer than the given date and time.\n                              NOTE: If you only specify the date, it will be\n                              treated as midnight time.\n  --dry-run                   Only simulate all modifications to the filesystem\n                              instead of actually applying them. Can be helpful\n                              to understand the consequences of your complicated\n                              invocation without hazarding your entire photo\n                              library.\n  --width \u003cnumber\u003e            The width the images should be fit into.\n  --height \u003cnumber\u003e           The height the images should be fit into.\n  --format \u003cextension\u003e        The file format (e.g. jpg or png) the images\n                              should be converted into.\n  --quality \u003cvalue\u003e           The quality for image conversion. Value between 0\n                              (best compression) and 100 (best quality).\n\nArguments:\n  command                     The operation to perform.\n\nCommands:\n  pscom \u003csymbol\u003e \u003carguments\u003e  Execute a symbol from the pscom library manually.\n                              No safety checks! Intended for debugging purposes\n                              only.\n  list, ls                    Display image files.\n  copy, cp \u003cdestination\u003e      Copy image files into the specified destination\n                              folder.\n  move, mv \u003cdestination\u003e      Move image files into the specified destination\n                              folder.\n  rename, rn [\u003cschema\u003e]       Rename image files according to the given schema,\n                              or according to the UPA standard, if omitted. To\n                              escape date specifiers in the schema, enclose\n                              literal parts into single quotes (', or \"'\" from\n                              the bash shell).\n  group, g [\u003cschema\u003e]         Group image files into subdirectories according\n                              to the given schema, or according to the UPA\n                              standard, if omitted. To escape date specifiers in\n                              the schema, enclose literal parts into single\n                              quotes (', or \"'\" from the bash shell).\n  resize                      Resize image files into the given dimensions.\n  convert                     Convert image files into a different file format\n                              and/or quality.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinqlover%2Fuip-exercise-1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinqlover%2Fuip-exercise-1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinqlover%2Fuip-exercise-1/lists"}