{"id":26856732,"url":"https://github.com/rodnye/qtpear","last_synced_at":"2025-07-22T01:02:46.343Z","repository":{"id":279301661,"uuid":"938365978","full_name":"rodnye/qtpear","owner":"rodnye","description":"Transpilar proyectos de QT siguiendo los requerimientos de la CUJAE","archived":false,"fork":false,"pushed_at":"2025-02-26T08:48:26.000Z","size":1126,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-17T00:05:02.299Z","etag":null,"topics":["cli","cujae","qt5","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodnye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2025-02-24T20:56:45.000Z","updated_at":"2025-06-16T12:02:23.000Z","dependencies_parsed_at":"2025-02-24T22:11:12.904Z","dependency_job_id":"43ef1e79-000e-4655-9757-a0ef820f6112","html_url":"https://github.com/rodnye/qtpear","commit_stats":null,"previous_names":["rodnydevcujae/qtpear","rodnye/qtpear"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/rodnye/qtpear","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodnye%2Fqtpear","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodnye%2Fqtpear/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodnye%2Fqtpear/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodnye%2Fqtpear/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodnye","download_url":"https://codeload.github.com/rodnye/qtpear/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodnye%2Fqtpear/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266405362,"owners_count":23923535,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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","cujae","qt5","typescript"],"created_at":"2025-03-31T00:23:23.049Z","updated_at":"2025-07-22T01:02:46.304Z","avatar_url":"https://github.com/rodnye.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Logo QT Pear\" src=\"https://i.imgur.com/pVWda16.png\" width=\"200\"/\u003e\n  \n  \u003ch1\u003eQT Pear\u003c/h1\u003e\n  \u003cp\u003eHerramientas de línea de comandos para proyectos en QT\u003c/p\u003e\n\u003c/div\u003e\n\n[![NPM Package](https://github.com/rodnydevcujae/qtpear/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/rodnydevcujae/qtpear/actions/workflows/npm-publish.yml)\n\nQT Pear es un conjunto de herramientas de línea de comandos diseñadas para facilitar la transpilación[¹](https://es.wikipedia.org/wiki/Transpilador) de proyectos en QT.  \nRealizado para el cumplimiento de los requisitos de [Introducción a la Programación](https://moodle.cujae.edu.cu/course/info.php?id=895) del curso 2024-2025 en la [CUJAE](https://cujae.edu.cu). \n\n## Tabla de contenido 📚\n1. [Instalación](#instalación-️)\n2. [Características](#características)\n   - [Transpilador de caracteres especiales](#1-transpilador-de-caracteres-especiales-)\n   - [Creador de proyectos](#2-creador-de-proyectos-)\n   - [Auto prototipado](#3-auto-prototipado-)\n   - [Auto indexado](#4-auto-indexado-)\n3. [¿Por qué usar Qtpear?](#por-qué-usar-qtpear-)\n   - [Transpilado de caracteres](#transpilado-de-caracteres-)\n   - [Creador de proyectos](#creador-de-proyectos-)\n   - [Auto prototipado](#auto-prototipado-)\n5. [Licencia](#licencia)\n\n\n## Instalación ⚙️\n\nEsta herramienta fue desarrollada con NodeJS, por lo que su instalación será realizada con npm:\n\n```bash\nnpm install -g qtpear\n```\n\nUna vez instalado, puede comprobar si esta funcionando correctamente:\n\n```bash\nqtpear --version\n```\n\nPara ver la documentación integrada ejecute:\n```bash\nqtpear -h\n```\n\n## Características\n\n### 1. Transpilador de caracteres especiales 🔄\nAsegura la compatibilidad con la CMD de Windows al manejar caracteres especiales y tildes.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Demo del comando parse\" src=\"./docs/demos/parse.gif\" width=\"80%\" /\u003e\n\u003c/div\u003e\n\n---\n\n### 2. Creador de proyectos 📁\nCrea proyectos a partir de plantillas ya predefinidas.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Demo del comando create\" src=\"./docs/demos/create.gif\" width=\"80%\" /\u003e\n\u003c/div\u003e\n\n---\n\n### 3. Auto prototipado 🛠️\nActualiza automáticamente todos los archivos de encabezado (*.h) con sus prototipos.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Demo del comando auto-headers\" src=\"./docs/demos/auto%20headers.gif\" width=\"80%\" /\u003e\n\u003c/div\u003e\n\n---\n\n### 4. Auto indexado 📑\nActualiza automáticamente el archivo de proyecto (*.pro) con todos los archivos C en los subdirectorios.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Demo del comando auto-pro\" src=\"./docs/demos/auto%20pro.gif\" width=\"80%\" /\u003e\n\u003c/div\u003e\n\n## ¿Por qué usar Qtpear? 🤔\nEsta es una herramienta personal para automatizar tareas repetitivas, además de que si eres usuario Linux, puedes crear software compatible con Windows utilizando estas utilidades.\n\n### Transpilado de caracteres 🔄\nLa terminal de Windows, a diferencia de otros sistemas tales como Linux, utiliza de manera predeterminada una codificación de caracteres DIFERENTE a UTF-8, por lo que los típicos caracteres de escape ASCII no son soportados. Presenta una forma de representación que para el parecer de muchos es _extraña_:\n```c\nprintf(\"\\240\"); // á\nprintf(\"\\202\"); // é\nprintf(\"\\265\"); // Á\n``` \n\nQtpear tiene el comando `parse` que clonará y convertirá el siguiente código:\n```c\n#include \"example.h\"\n\nvoid mostrarDialogo (char *nombre) {\n  printf(\"Hola %s, ¿El camión está listo?\\n\", nombre);\n  printf(\"No aún no, ¡mañana será mi cumpleaños!\");\n}\n```\n\nA este código:\n```c\n#include \"example.h\"\n\nvoid mostrarDialogo (char *nombre) {\n  printf(\"Hola %s, \\250El cami\\242n est\\240 listo?\\n\", nombre);\n  printf(\"No a\\243n no, \\255ma\\244ana ser\\240 mi cumplea\\244os!\");\n}\n```\n\nSimplificando así el flujo de desarrollo y evitar recordar la extensa e incómoda [tabla de caracteres](./src/services/characters-table.ts)\n\n### Creador de proyectos 📁\nEl QT5.3 ya viene con un creador de proyectos predeterminado, pero... ¿y si lo mejoramos con los requerimientos del curso?\n\nAsí, el comando `create` preguntará que plantilla utilizar y el nombre del proyecto.\nEsta es la plantilla _logic_\n```\n─ example/\n   ├─ example.pro\n   │\n   ├─ Logica/\n   │   ├─ logica.c\n   │   └─ logica.h\n   │\n   └─ Interfaz/\n       ├─ interfaz.c\n       └─ interfaz.h\n\n```\n\n### Auto prototipado 📝\nEn algunos casos cuando el proyecto crece en tamaño, comienza a complicarse el mantenimiento de los prototipos de las funciones. Puede  resultar problemático y aumenta la posibilidad de escribir los prototipos con errores.  \nQtpear presenta el comando `auto header` que detectará todos los archivos C y autogenerará en sus respectivos archivos de encabezado (\\*.h) los prototipos.   \nAsí los archivos:\n```h\n// Archivo: example.h\n#include \u003cmath.h\u003e\n\nint malPrototipo(int x, char *word);\n```\n\n```c\n// Archivo: example.c\n#include \"example.h\"\n\nint sumar(int x, int y) {\n  return x * y;\n}\n\nint distancia(int x1, int x2, int y1, int y2) {\n  return sqrt(\n    pow(x1 - x2, 2) + pow(y1 - y2, 2)\n  );\n}\n```\n\nActualizará el encabezado eliminando los prototipos no encontrados e insertando los actuales:\n```c\n// Archivo: example.h\n#include \u003cmath.h\u003e\n\nint sumar(int x, int y);\nint distancia(int x1, int x2, int y1, int y2);\n```\n\n\n## Licencia\n\nEste proyecto está bajo la Licencia MIT. Consulta el archivo [LICENSE](LICENSE.txt) para más detalles.\n\n---\n\nCoded by [Rodny Estrada](https://github.com/rodnydevcujae)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodnye%2Fqtpear","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodnye%2Fqtpear","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodnye%2Fqtpear/lists"}