{"id":26710534,"url":"https://github.com/dotblueshoes/quail","last_synced_at":"2025-03-27T09:20:46.735Z","repository":{"id":284620751,"uuid":"676495206","full_name":"dotBlueShoes/Quail","owner":"dotBlueShoes","description":"Project Manager From CLI","archived":false,"fork":false,"pushed_at":"2025-03-26T19:46:35.000Z","size":1034,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T20:34:39.001Z","etag":null,"topics":["alias","cli","project-management","winapi"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotBlueShoes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-08-09T10:27:08.000Z","updated_at":"2025-03-26T19:46:38.000Z","dependencies_parsed_at":"2025-03-26T20:45:56.876Z","dependency_job_id":null,"html_url":"https://github.com/dotBlueShoes/Quail","commit_stats":null,"previous_names":["dotblueshoes/quail"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotBlueShoes%2FQuail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotBlueShoes%2FQuail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotBlueShoes%2FQuail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotBlueShoes%2FQuail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotBlueShoes","download_url":"https://codeload.github.com/dotBlueShoes/Quail/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245814746,"owners_count":20676808,"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":["alias","cli","project-management","winapi"],"created_at":"2025-03-27T09:20:46.179Z","updated_at":"2025-03-27T09:20:46.723Z","avatar_url":"https://github.com/dotBlueShoes.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"`Quail` is a Command Line Interface application build to help in project management. The idea is to create 'Alias' like commands that are stored within a project which can be then accessed with an ease.\n\n# FEATURES\n\n- Use shortcuts\n  \u003e Execute a command specified in a config file by referring to a user-defined command name instead.\n- Write even shorter\n  \u003e Said user-defined command does not have to be fully written to be matched. Be aware Quail will always take the 1st match.\n- Be modular\n  \u003e Supports identifying subprojects and allows for command grouping.\n- Define constants\n  \u003e Variable-like utility to store strings and use them with different Constants or Commands.\n- Use command queues\n  \u003e Run multiple defined commands \u0026 ***queues*** as if they were a singular quail command.\n- Easily display all subprojects, commands \u0026 queues\n  \u003e Simply run `Quail` with a selected project or a subproject to display it's contents.\n\n# Examples\n\nFor simplicity sake I'll refer to commands, queues, projects and subprojects here as `aliases`.\n\n- To display aliases of main config\n  \u003e `quail -o`\n- To execute an alias\n  \u003e `quail -o [project_name] [command]`\n- To display project's aliases\n  \u003e `quail -o [project_name]`\n- To display subproject's aliases\n  \u003e `quail -o [project_name] [subproject_name]`\n- To execute subproject's alias\n  \u003e `quail -o [project_name] [subproject_name] [command]`\n- To execute subproject subsubproject's alias\n  \u003e `quail -o [project_name] [subproject_name] [subsubproject_name] [command]`\n\n. . .\n\n## Linking a Project\n\n1. Create a *quail-file* in your project directory. Name it, for example `.quail\\quail.txt`.\n2. This file now represents your project. Link it to your top-level configuration file with the following:\n\n- Add a project / module (absolute path)\n  \u003e `^+project = C:\\Projects\\project\\ .quail\\quail.txt`\n- Add a project / module (relative path)\n  \u003e `^-subproject = subproject\\ .quail\\quail.txt`\n\n\u003e Note the space between `key`, `project_drectory` **and** `quail-file`. It is required as Quail predefines `%_name%` \u0026 `%_path%` constants for your use inside the *quail-file* of your project.\n\n3. Add the following command to your project configuration file: `!directory = explorer.exe \"%_path%\"`.\n4. Now try executing it via `quail -o project directory`.\n\n## Including a file\n\n1. Includes for now are always relative. Create a `include.txt` next to your *project-main-configuration-file*.\n2. At the top of your *project-main-configuration-file*, write the following: `\u0026include.txt`.\n3. Now try to create an alias, or include another file or a project.\n\n## Global configuration file\n\nThere are **2** different configuration files for **Quail** use:\n- `config.txt` -\u003e your top-level configuration file.\n- `global.txt` -\u003e your top-level global configuration file.\n\n\u003e **Quail** will first read the global file `global.txt` and all of its includes and keep it for use later. Then Quail reads only the last project / module, and it's includes in a tree of all the modules from the top-level config file `config.txt` down to your project / subproject. This makes referencing a variable from a parent project impossible if not via include. Thus, global files. Use them to define constants and aliases that you want to use in every module.\n\n\n## More Examples\n\nWhere can I find some ready to use commands for software I might be using?\n\u003e Look into the `examples` directory.\n\n# Software Notes\nWhy writing my own `Wizard` when WinApi provides a ready to use control with localization support?\n\n[Official Windows Wizard Sample](https://github.com/microsoft/Windows-classic-samples/tree/263dd514ad215d0a40d1ec44b4df84b30ec11dcf/Samples/Win7Samples/winui/shell/appplatform/aerowizards/migratingtoaerowizardssdksample/wizard97)\n  \u003e My reasoning: It's a good learning example and it provides more flexibility for future custom optimalizations like darkmode support or making the window dpi-aware. Additionally the Wizard executable created is compressed which then competes well with `.msi` files, that usually weigh less.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotblueshoes%2Fquail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotblueshoes%2Fquail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotblueshoes%2Fquail/lists"}