{"id":16087432,"url":"https://github.com/tesonep/pharoapplicationgenerator","last_synced_at":"2025-04-05T15:13:03.885Z","repository":{"id":229799487,"uuid":"777658209","full_name":"tesonep/PharoApplicationGenerator","owner":"tesonep","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-14T08:58:57.000Z","size":295,"stargazers_count":7,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-14T09:37:43.924Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tesonep.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":"2024-03-26T09:19:39.000Z","updated_at":"2025-03-14T08:59:01.000Z","dependencies_parsed_at":"2024-03-26T10:37:49.000Z","dependency_job_id":"861b91a3-76f7-47b6-b18f-8d4ed25f64be","html_url":"https://github.com/tesonep/PharoApplicationGenerator","commit_stats":null,"previous_names":["tesonep/pharoapplicationgenerator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tesonep%2FPharoApplicationGenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tesonep%2FPharoApplicationGenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tesonep%2FPharoApplicationGenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tesonep%2FPharoApplicationGenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tesonep","download_url":"https://codeload.github.com/tesonep/PharoApplicationGenerator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353742,"owners_count":20925329,"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":[],"created_at":"2024-10-09T13:29:41.138Z","updated_at":"2025-04-05T15:13:03.879Z","avatar_url":"https://github.com/tesonep.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pharo Application Generator\n\nThis project provides a tool to generate the scripts and metadata for packaging application.\nIn the current state, it works for Windows and MacOS.\nFor the supported platforms it packages the VM, image and resources generating an executable file.\nThen, from this executable file it generates an installable package that can be distributed to the final users.\n\nIt works in the following way:\n\n1. Load your application in Pharo.\n2. Load this project in the same Pharo image.\n3. Generate scripts and project files required for the target platform.\n4. Execute the build scripts to package the application and generate the installers\n\nScript for step 2:\n```smalltalk\nMetacello new\n    baseline: 'ApplicationGenerator';\n    repository: 'github://tesonep/PharoApplicationGenerator:master/src';\n    load.\n```\n\n# Consideration about the application\n\nThis tool it is intended to package any Pharo application. \nHowever the application should have an entry point exposed as a CommandLineHandler.\nThe command line handler will start the application and if required open the world.\nApplications developed with Bloc, Spec-GTK or SDL can open the required windows without need of having a World window opened.\n\n# Error Handling\n\nThis project provides a way of catching and handling all errors and exceptions produced during the application.\nAn error handler can be registered to perform any operation when an error occurs.\nYou can check the examples for more detail.\n\nThis project provides two examples:\n\n- A null error handler that does nothing, just killing the application (AppGeneratorNullErrorHandler)\n- An error handler that shows a SDL message box with the error description (AppGeneratorSDLMessageErrorHandler)\n\nThese examples, are basic and can be extended to include specific behavior of the application like: error logging, exporting the exception to fuel, notification to a central server or system logging.\n\n# Examples\nIn this project there is a simple example in the class AppGeneratorExample. \nFor a deeper example for a whole application, you can check the usage in the Takuzu game (https://github.com/tesonep/Takuzu)\n\n# Installing\n\n```smalltalk\nMetacello new\n\tbaseline: 'ApplicationGenerator';\n\trepository: 'github://tesonep/PharoApplicationGenerator/src';\n\tload\n```\n\n# Dependencies\n\n## Windows\n\nThe whole process is implemented using CMake and Cygwin. As it compiles a new executable some dependencies are needed:\n\n- A working Pharo\n- CMake (at least version 2.8.4)\n- CLang\n- Binutils (make and friends)\n- wget\n- unzip\n\n## MacOS\n\nThe process uses some external tools, you should have installed:\n\n- A working Pharo\n- XCode\n- Brew (https://brew.sh/)\n- ImageMagick from Brew (brew install imagemagick)\n- create-dmg from Brew (brew install create-dmg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftesonep%2Fpharoapplicationgenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftesonep%2Fpharoapplicationgenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftesonep%2Fpharoapplicationgenerator/lists"}