{"id":19552471,"url":"https://github.com/pixeldroid/loomtasks","last_synced_at":"2025-09-17T15:34:31.656Z","repository":{"id":25223023,"uuid":"28647342","full_name":"pixeldroid/loomtasks","owner":"pixeldroid","description":"Rake tasks for working with loomlibs","archived":false,"fork":false,"pushed_at":"2018-11-27T03:55:35.000Z","size":149,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-08T20:32:38.190Z","etag":null,"topics":["conventions","loom-tasks","loomlib","loomscript","rake","scaffold","scaffolding","tasks","templates"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/pixeldroid.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}},"created_at":"2014-12-30T22:16:17.000Z","updated_at":"2018-11-27T03:53:34.000Z","dependencies_parsed_at":"2022-08-06T03:15:50.442Z","dependency_job_id":null,"html_url":"https://github.com/pixeldroid/loomtasks","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixeldroid%2Floomtasks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixeldroid%2Floomtasks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixeldroid%2Floomtasks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pixeldroid%2Floomtasks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pixeldroid","download_url":"https://codeload.github.com/pixeldroid/loomtasks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240807841,"owners_count":19860816,"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":["conventions","loom-tasks","loomlib","loomscript","rake","scaffold","scaffolding","tasks","templates"],"created_at":"2024-11-11T04:18:16.294Z","updated_at":"2025-09-17T15:34:26.605Z","avatar_url":"https://github.com/pixeldroid.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"loom tasks\n==========\n\nRake tasks for working with loomlibs\n\n- [overview](#overview)\n- [installation](#installation)\n- [usage](#usage)\n- [conventions](#conventions)\n- [contributing](#contributing)\n\n\u003cbr\u003e\n\n## overview\n\nloomlibs are linkable LoomScript code libraries used to expand features of the [Loom SDK][loomsdk].\n\nIf you use [Rake][rake] and follow a consistent file layout across projects, these tasks can simplify the steps of setting up, building, installing, testing, demo-ing, documenting, and releasing loom libraries (`*.loomlib`).\n\nThe tasks install into your `.loom` directory, and can be loaded from there into the Rakefiles of your projects.\n\nSee [more details](#more-details) for the list of tasks provided.\n\n\n## installation\n\n\u003e requires [Rake][rake]\n\nClone this repo.\n\n1. Run `rake install` to:\n    * create a `tasks` folder in your Loom SDK home directory (`~/.loom`)\n    * install the Rake tasks from this project into it.\n1. Run `rake uninstall` to:\n    * delete the `tasks` folder.\n    * _**Note:** this deletes the whole folder! So be careful if you decide to put your own tasks in there._\n\n\n## usage\n\nFirst, scaffold a new project structure:\n* `rake -f ~/.loom/tasks/scaffolding.rake new:loomlib`\n* `rake docs:install_template`\n\nThen, enter your development cycle:\n1. Run `test` to see the auto-created library be built, the test harness run, and the first test fail:\n    * `rake test`\n1. Add new code and improved tests (in `lib/src/`, and `test/src/`)\n1. Add new documentation (in `docs/`), and regenerate before commits back to GitHub:\n    * `rake docs`\n\n### more details\n\nRunning `rake` in your project directory will execute the default task, which prints the list of available tasks and a short description of what they do:\n\n    $ rake\n    Foo v1.2.3 Rakefile running on Ruby 2.5.1\n    rake clean               # removes intermediate files to ensure a clean build\n    rake cli[options]        # shorthand for 'rake cli:run'\n    rake cli:build           # builds cli/bin/FooDemoCLI.loom for sprint34 SDK\n    rake cli:install[b,p]    # installs an executable copy of cli/bin/FooDemoCLI.loom on the system\n    rake cli:run[options]    # executes cli/bin/FooDemoCLI.loom as a commandline app, with options, if provided\n    rake cli:sdk[id]         # sets the provided SDK version into cli/loom.config\n    rake cli:uninstall[b,p]  # uninstalls the system executable 'foo'\n    rake clobber             # removes all generated artifacts to restore project to checkout-like state\n    rake docs                # builds and serves the documentation site\n    rake docs:build_site     # calls jekyll to [just] generate the docs site\n    rake docs:gen_api        # creates api docs compatible with the programming pages template\n    rake docs:serve_site     # calls jekyll to serve the docs site, without first building it\n    rake docs:watch_site     # calls jekyll to watch the docs and rebuild the site when files are changed\n    rake gui                 # shorthand for 'rake gui:run'\n    rake gui:build           # builds gui/bin/FooDemoGUI.loom for sprint34 SDK\n    rake gui:run             # launches gui/bin/FooDemoGUI.loom as a GUI app\n    rake gui:sdk[id]         # sets the provided SDK version into gui/loom.config\n    rake help                # shows usage and project info, optionally for a specific command\n    rake lib:build           # builds Foo.loomlib for sprint34 SDK\n    rake lib:install         # installs Foo.loomlib into sprint34 SDK\n    rake lib:release         # prepares sdk-specific Foo.loomlib for release, and updates version in README\n    rake lib:sdk[id]         # sets the provided SDK version into lib/loom.config\n    rake lib:show            # lists libs installed for sprint34 SDK\n    rake lib:uninstall       # removes Foo.loomlib from sprint34 SDK\n    rake lib:version[v]      # sets the library version number into lib/src/Foo.build and lib/src/Foo.ls\n    rake list_sdks           # lists loom sdk versions available use\n    rake sdk[id]             # sets the provided SDK version in the config files of lib, cli, gui, and test\n    rake test                # shorthand for 'rake test:run'\n    rake test:build          # builds test/bin/FooTest.loom against sprint34 SDK\n    rake test:ci             # runs test/bin/FooTest.loom for CI\n    rake test:run[seed]      # runs test/bin/FooTest.loom for the console\n    rake test:sdk[id]        # sets the provided SDK version into test/loom.config\n    rake version             # reports loomlib version\n    (using loomtasks 3.3.0)\n    (using lsdoc 2.1.0)\n\nIf you are looking for more detail on any of the tasks, use `rake help`, e.g. `rake help test`.\n\nThe [Programming Pages][programming-pages] theme is not packaged with loomtasks releases; it is leveraged via the `remote_theme` plugin for Jekyll. This is compatible with Github Pages.\n\nThe Rake tasks are defined with dependencies and modification triggers, so you can just run `rake test` every time you edit a source file, and the library and test app will be rebuilt as needed automatically.\n\n## conventions\n\nThe loomlib rake tasks make the following assumptions about the layout of a project.\n\n\u003e If there are portions of the scaffold that you are not interested in using (i.e. `cli`, `gui`), just delete those folders, and the corresponding rake tasks will not be loaded.\n\n### directory structure\n\n    foo-loomlib $\n    ├─cli/\n    ├─docs/\n    ├─Gemfile\n    ├─gui/\n    ├─lib/\n    ├─Rakefile\n    └─test/\n\n* library source is under `lib/`\n* source for a CLI demo is under `cli/`; the CLI demo app will consume the library and illustrate its use from the command line\n* documentation source is under `docs/`; [lsdoc][lsdoc] is the supported API doc generation tool\n* the project uses a `Gemfile` for building and serving documentation locally with Jekyll and the Github Pages gem\n* source for a GUI demo is under `gui/`; the GUI demo app will consume the library and illustrate its use via a graphical user interface\n* the project uses a `Rakefile` for building, testing, and preparing releases\n* library test source is under `test/`; [spec-ls][spec-ls] is the supported testing framework\n\n#### documentation\n\nSupport for docs tasks comes from [`loomlib_doc.rake`](lib/tasks/rakefiles/loomlib_doc.rake).\nUse of [lsdoc][lsdoc] is assumed.\n\n`docs/` contains configuration and source files to be converted into documentation. The documentation is not packaged with the loomlib; it is generated into a site from `docs/` directory by [GitHub pages][gh-pages]. Note that this requires an option be set for the source code repository (see [Publishing from a docs/ folder][gh-docs]).\u003cbr\u003e\n\n    └─docs\n      ├─_api/\n      ├─_config.yml\n      ├─_data/\n      ├─_includes/\n      ├─_layouts/\n      ├─examples/\n      ├─guides/\n      └─index.md\n\n* project level configuration for jekyll and the site theme is defined in `docs/_config.yml`\n* the documentation home page is written in markdown as `docs/index.md`\n* (optional) example pages are written under `docs/examples/`; they will have their own tab in the generated docs site\n* (optional) guide pages are written under `docs/guides/`; they will have their own tab in the generated docs site\n* [lsdoc][lsdoc] provides some files under `docs/_data/`, `docs/_includes/`, and `docs/_layouts/` to facilitate documentation generation. Use of [Programming Pages][programming-pages] is assumed\n\n#### demos\n\nSupport for CLI demo tasks comes from [`loomlib_cli.rake`](lib/tasks/rakefiles/loomlib_cli.rake).\n\n`cli/` contains a command line demonstration app. \u003cbr\u003e\n\n    └─cli\n      ├─bin\n      │ └─Main.loom\n      ├─loom.config\n      └─src\n        ├─FooDemoCLI.ls\n        └─FooDemoCLI.build\n\n* the cli demo application is built into, and executed from `cli/bin/`\n* the cli demo has its own loom config file at `cli/loom.config`\n* the cli demo has its own loom build file at `cli/src/FooDemoCLI.build`\n* the cli demo source code is under `cli/src/`\n\nSupport for GUI demo tasks comes from [`loomlib_gui.rake`](lib/tasks/rakefiles/loomlib_gui.rake).\n\n`gui/` contains a functional graphical demonstration app. \u003cbr\u003e\n\n    └─gui\n      ├─assets/\n      ├─bin\n      │ └─Main.loom\n      ├─loom.config\n      └─src\n        ├─FooDemoGUI.ls\n        └─FooDemoGUI.build\n\n* the gui demo assets are under `gui/assets/`\n* the gui demo application is built into, and run from `gui/bin/`\n* the gui demo has its own loom config file at `gui/loom.config`\n* the gui demo has its own loom build file at `gui/src/FooDemoGUI.build`\n* the gui demo source code is under `gui/src/`\n\n#### lib\n\nSupport for library tasks comes from [`loomlib_lib.rake`](lib/tasks/rakefiles/loomlib_lib.rake).\n\n`lib/` contains the library code, which will be packaged into a `.loomlib` file for installation into a Loom SDK. \u003cbr\u003e\n\n    └─lib\n      ├─build\n      │ └─Foo.loomlib\n      ├─loom.config\n      └─src\n        ├─Foo.build\n        └─com\n          └─bar\n            └─Foo.ls\n\n* the loomlib is built into `lib/build/`\n* the library has its own loom config file at `lib/loom.config`\n* the library has its own loom build file at `lib/src/Foo.build`\n* library source code is under `lib/src/`\n\n##### version\n\nSome file under `lib/` contains the following line (where `1.2.3` is the version of your library):\n\n```ls\npublic static const version:String = '1.2.3';\n```\n\nThis provides runtime access to the library version, and is also used in the name of the loomlib built for release (compatible with a corresponding [GitHub release][gh-releases]).\n\n#### test\n\nSupport for test tasks comes from [`loomlib_test.rake`](lib/tasks/rakefiles/loomlib_test.rake).\nUse of [spec-ls][spec-ls] is assumed.\n\n`test/` contains unit tests of the library code. The tests are not packaged with the loomlib; they are run from a separate test runner app. \u003cbr\u003e\n\n    └─test\n      ├─bin\n      │ └─Main.loom\n      ├─loom.config\n      └─src\n        ├─app\n        │ └─FooTest.ls\n        ├─spec\n        │ └─FooSpec.ls\n        └─FooTest.build\n\n* the test application is built into, and run from `test/bin/`\n* the tests have their own loom config file at `test/loom.config`\n* the tests have their own loom build file at `test/src/FooTest.build`\n* the test application source code is under `test/src/app/`\n* the specification source code is under `test/src/spec/`\n\n\n## contributing\n\nPull requests are welcome!\n\n\n[gh-docs]: https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/#publishing-your-github-pages-site-from-a-docs-folder-on-your-master-branch \"publishing your GitHub Pages site from a /docs folder on your master branch\"\n[gh-pages]: https://pages.github.com/ \"GitHub Pages is a static site hosting service.\"\n[gh-releases]: https://help.github.com/articles/about-releases/ \"releases are GitHub's way of packaging and providing software to your users\"\n[loomsdk]: https://github.com/LoomSDK/LoomSDK \"The Loom SDK, a native mobile app and game framework\"\n[lsdoc]: https://github.com/pixeldroid/lsdoc \"generate API documentation from doc comments in LoomScript source code\"\n[programming-pages]: https://github.com/pixeldroid/programming-pages \"A site template for publishing code documentation to GitHub pages\"\n[rake]: https://github.com/ruby/rake \"A make-like build utility for Ruby\"\n[spec-ls]: https://github.com/pixeldroid/spec-ls \"a simple specification framework for loom\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixeldroid%2Floomtasks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpixeldroid%2Floomtasks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixeldroid%2Floomtasks/lists"}