{"id":16609359,"url":"https://github.com/pcolby/smithy-qt","last_synced_at":"2025-09-27T00:32:33.217Z","repository":{"id":73262602,"uuid":"532258198","full_name":"pcolby/smithy-qt","owner":"pcolby","description":"Smithy code generator for Qt","archived":false,"fork":false,"pushed_at":"2025-01-17T08:31:39.000Z","size":2392,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-17T09:20:53.344Z","etag":null,"topics":["qt","qt5","qt6","smithy"],"latest_commit_sha":null,"homepage":"https://pcolby.github.io/smithy-qt/","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/pcolby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.LESSER.md","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":"2022-09-03T12:47:13.000Z","updated_at":"2025-01-17T06:26:41.000Z","dependencies_parsed_at":"2023-12-15T03:26:33.791Z","dependency_job_id":"f9c630ef-eda1-4a73-9fdd-8adfa2b377a8","html_url":"https://github.com/pcolby/smithy-qt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fsmithy-qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fsmithy-qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fsmithy-qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcolby%2Fsmithy-qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pcolby","download_url":"https://codeload.github.com/pcolby/smithy-qt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234368823,"owners_count":18821157,"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":["qt","qt5","qt6","smithy"],"created_at":"2024-10-12T01:28:52.026Z","updated_at":"2025-09-27T00:32:32.902Z","avatar_url":"https://github.com/pcolby.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- SPDX-FileCopyrightText: 2013-2025 Paul Colby \u003cgit@colby.id.au\u003e --\u003e\n\u003c!-- SPDX-License-Identifier: LGPL-3.0-or-later --\u003e\n# Smithy Qt\n\n[![Build Status](https://github.com/pcolby/smithy-qt/actions/workflows/build.yaml/badge.svg?branch=main)](\n  https://github.com/pcolby/smithy-qt/actions/workflows/build.yaml?query=branch%3Amain)\n[![Static Analysis](https://github.com/pcolby/smithy-qt/actions/workflows/static.yaml/badge.svg?branch=main)](\n  https://github.com/pcolby/smithy-qt/actions/workflows/static.yaml?query=branch%3Amain)\n[![Documentation](https://github.com/pcolby/smithy-qt/actions/workflows/docs.yaml/badge.svg?branch=main)](\n  https://github.com/pcolby/smithy-qt/actions/workflows/docs.yaml?query=branch%3Amain)\n[![Codacy Grade](https://app.codacy.com/project/badge/Grade/ca79f90b9ef249b389c980d93fa25d9d)](\n  https://app.codacy.com/gh/pcolby/smithy-qt/dashboard)\n[![Codacy Coverage](https://app.codacy.com/project/badge/Coverage/ca79f90b9ef249b389c980d93fa25d9d)](\n  https://app.codacy.com/gh/pcolby/smithy-qt/dashboard)\n\nSmithy Qt is (or will be, eventually) two things:\n\n1. `QtSmithy` - a cross-platform naitve [Qt] library for reading [Smithy] models; and\n2. `smithy-qt` - a cross-platform CLI tool for rendering text files in response to [Smithy] models.\n\nSmithy Qt is written in Qt, and optimised for generating Qt code (specifically for replacing\n[QtAws]'s bespoke code generator), but by using a generic text templating engine, could be\nused to generate code (or indeed non-code) for any language or technology.\n\n```mermaid\ngraph LR\n  model([\"Smithy Model\"]) --QtSmithy--\u003e smithy-qt(\"smithy-qt\")\n  templates([\"Text\u003cbr/\u003eTemplates\"]) --Template\u003cbr/\u003eEngine--\u003e smithy-qt\n  smithy-qt --Template\u003cbr/\u003eEngine--\u003e output([\"Rendered Files\"])\n```\n\n```mermaid\ngraph LR\n  model([\"AWS Models\"]) --\u003e smithy-qt(\"smithy-qt\")\n  templates([\"qt-aws-sdk\u003cbr/\u003eTemplates\"]) --\u003e smithy-qt\n  smithy-qt --\u003e output([\"Generated Code\"]) --\u003e aws-sdk-qt[\"AWS SDK for Qt\"]\n  code([\"qt-aws-sdk Code\"]) --\u003e aws-sdk-qt\n\n  classDef aws-sdk-qt color:#00414A,fill:lightgreen,stroke:#2CDE85\n  class templates,code,aws-sdk-qt aws-sdk-qt\n  style model color:black,fill:#FF9900,stroke:darkorange\n\n  click aws-sdk-qt \"https://github.com/pcolby/aws-sdk-qt\"\n  click code \"https://github.com/pcolby/aws-sdk-qt\"\n  click templates \"https://github.com/pcolby/aws-sdk-qt\"\n  click model \"https://github.com/aws/aws-sdk-js-v3/tree/main/codegen/sdk-codegen/aws-models\"\n```\n\n### Text Templates\n\nSmithy Qt uses a text template language that is very similar to [Django templates]. Specfically, `smithy-qt` uses one of\nthe [Cutelee], [Grantlee] or [KFTextTemplate] libraries.\n\n\u003e [!NOTE]\n\u003e Smithy Qt began using the [Grantlee] library with Qt5. However, the [Grantlee] author has moved the library to [KDE],\n\u003e where it is now known as [KTextTemplate], and the original [Grantlee] library has been retired. Meanwhile, the\n\u003e [Cutelyst] project has forked [Grantlee] to [Cutelee], and ported it to Qt6. Today, Smithy Qt supports all three:\n\u003e [Cutelee] with Qt 6, [Grantlee] with Qt5, and [KFTextTemplate] with Qt6.\n\nYou can find the template language documention [here](https://pcolby.github.io/cutelee/for_themers.html). You can also\nhave a look at some of the [demo](demo) templates.\n\n[CMake]:            https://cmake.org/ \"CMake\"\n[Cutelee]:          https://github.com/cutelyst/cutelee \"The Cutelee Libraries\"\n[Cutelyst]:         https://cutelyst.org/ \"Cutelyst! The Qt Web Framework\"\n[Django templates]: https://docs.djangoproject.com/en/5.0/ref/templates/ \"Django Templates\"\n[Grantlee]:         https://github.com/steveire/grantlee \"The Grantlee Libraries\"\n[KDE]:              https://kde.org/ \"KDE Community\"\n[KTextTemplate]:    https://invent.kde.org/frameworks/ktexttemplate \"The KTextTemplate Library\"\n[Qt]:               https://www.qt.io/ \"Qt cross-platform application development framework\"\n[QtAws]:            https://github.com/pcolby/aws-sdk-qt \"AWS SDK for Qt\"\n[Smithy]:           https://smithy.io/ \"Smithy language for defining services and SDKs\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcolby%2Fsmithy-qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpcolby%2Fsmithy-qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcolby%2Fsmithy-qt/lists"}