{"id":15673606,"url":"https://github.com/alancoding/awork","last_synced_at":"2025-07-03T12:03:36.698Z","repository":{"id":144899391,"uuid":"136077070","full_name":"AlanCoding/awork","owner":"AlanCoding","description":"bottom up rewrite of tower-cli","archived":false,"fork":false,"pushed_at":"2018-06-12T13:30:44.000Z","size":140,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-22T11:43:41.829Z","etag":null,"topics":["tower-cli"],"latest_commit_sha":null,"homepage":"","language":"Python","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/AlanCoding.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":"2018-06-04T20:09:28.000Z","updated_at":"2020-10-12T20:45:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"fab9cc47-4b86-4245-89eb-039ae5501f3a","html_url":"https://github.com/AlanCoding/awork","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlanCoding/awork","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanCoding%2Fawork","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanCoding%2Fawork/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanCoding%2Fawork/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanCoding%2Fawork/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlanCoding","download_url":"https://codeload.github.com/AlanCoding/awork/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanCoding%2Fawork/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261039105,"owners_count":23100975,"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":["tower-cli"],"created_at":"2024-10-03T15:41:27.104Z","updated_at":"2025-06-21T00:09:04.863Z","avatar_url":"https://github.com/AlanCoding.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### AWORK a CLI client for AWX\n\nAwork is mainly a simplified demonstration of the core functionality of\ntower-cli through the click library.\n\nAwork stands for \"Awork is not tower-cli\". Don't ask me how that works.\n\n```\nawork foo bar 34 -b foobar\n root command:           awork (of course)\n resource category name: foo\n action name:            bar\n\n call args: ()\n call kwargs: {'pk': 34, 'baz': u'foobar'}\n```\n\nThis is a basic example to show the command resolution of awork, and\nalso of tower-cli.\n\n - `foo` is a subcommand of the main entry point\n - `bar` is a subcommand of `foo`, which is the \"action\" part of the command\n - `-b` is an option\n - `pk` is an argument\n\n#### Headline features of rewrite\n\nThese are the user-facing more important features that this is trying to sell:\n\n - No manual maintaining of fields list\n - Tower version and API version switchable by server or user\n - Accurate handling of uniqueness rules, no duplicate specification\n\n#### Code structure points\n\nProhibited items:\n\n - decorators\n - metaclasses\n - minimal in-line imports\n\nYou could say that part of this refactor had already begun with the\ndivorcing of the models/resources from the cli folder, where the command\nclasses became logically organized in terms of root command, resource\ncommand, and then action command.\n\nThis rewrite is intended to destroy the `tower_cli/resources` folder\nentirely, replacing it with `tower_cli/schema`.\n\nFor now, the schema is generated (`make schema`), but the idea is that\neventually, a more comprehensive schema could be officially published,\nand that would be used instead.\n\nStill to do goal: _Nothing_ in the cli folders are to do anything\nprogramatically non-trivial that is unconnected to the CLI interface.\nInstead, all _functional_ interactions with the server will go\nin the `tower_cli/models`, so that CLI users are not privileged over\nthe python users.\n\n#### Legal\n\nThis is not sponsored by any company or anything like that.\n\nI just made the repository on my own, it is not in intended for _use_\nat all.\n\n### Timings\n\nAs of 2nd commit, with zip_safe off:\n\n```\nreal\t0m0.232s\nuser\t0m0.142s\nsys\t0m0.062s\n```\n\nWith zip_safe on:\n\n```\nreal\t0m0.187s\nuser\t0m0.133s\nsys\t0m0.050s\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falancoding%2Fawork","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falancoding%2Fawork","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falancoding%2Fawork/lists"}