{"id":19123295,"url":"https://github.com/clojerl/rebar3_clojerl","last_synced_at":"2025-05-05T18:35:26.127Z","repository":{"id":47487142,"uuid":"88432306","full_name":"clojerl/rebar3_clojerl","owner":"clojerl","description":"rebar3 Clojerl compiler plugin","archived":false,"fork":false,"pushed_at":"2021-08-29T21:14:00.000Z","size":193,"stargazers_count":28,"open_issues_count":2,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-09-19T14:38:43.718Z","etag":null,"topics":["clojure","plugin","rebar3"],"latest_commit_sha":null,"homepage":null,"language":"Erlang","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/clojerl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2017-04-16T17:52:11.000Z","updated_at":"2022-11-10T11:29:54.000Z","dependencies_parsed_at":"2022-09-17T23:00:38.901Z","dependency_job_id":null,"html_url":"https://github.com/clojerl/rebar3_clojerl","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojerl%2Frebar3_clojerl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojerl%2Frebar3_clojerl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojerl%2Frebar3_clojerl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojerl%2Frebar3_clojerl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clojerl","download_url":"https://codeload.github.com/clojerl/rebar3_clojerl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223788316,"owners_count":17202956,"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":["clojure","plugin","rebar3"],"created_at":"2024-11-09T05:25:01.929Z","updated_at":"2024-11-09T05:25:02.573Z","avatar_url":"https://github.com/clojerl.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"rebar3_clojerl\n=====\n\n[![Hex.pm](https://img.shields.io/hexpm/v/rebar3_clojerl.svg)](https://hex.pm/packages/rebar3_clojerl)\n\nCompile clojerl projects\n\n## Use\n\nIn order to use this plugin you should have `rebar3` greater than\n`v3.14.0` installed.\n\nAdd the plugin to your `rebar.config` (along with `clojerl` as a\ndependency):\n\n    {deps, [clojerl]}.\n    {plugins, [rebar3_clojerl]}.\n\nThen just call the plugin directly in an existing application:\n\n    $ rebar3 clojerl compile\n    ===\u003e Fetching rebar3_clojerl\n    ===\u003e Compiling rebar3_clojerl\n\nTo get a list of all available tasks for the plugin run:\n\n```\n$ rebar3 help clojerl\n===\u003e Compiling rebar3_clojerl\n\nclojerl \u003ctask\u003e:\n  compile           Compile clojerl project\n  escriptize        Generate escript archive.\n  release           Build release of Clojerl project.\n  repl              Start a clojerl repl\n  run               Run the project's -main function.\n  test              Test clojerl project\n```\n\nFor each of these you can then get more details and available options\nby running for example:\n\n    $ rebar3 help clojerl repl\n    Start a clojerl repl\n\tUsage: rebar3 clojerl repl [--apps \u003capps\u003e] [--sname \u003csname\u003e]\n\t                           [--config \u003cconfig\u003e]\n\n\t  --apps   List of applications that should be started separated by commas\n\t           (e.g. --apps app1,app2,app3).\n\t  --sname  Erlang node name.\n\t  --config  Path to the config file to load.\n\n### rebar.config options\n\nThese are the available options:\n\n| Name                 | Description                                                                             |\n|----------------------|-----------------------------------------------------------------------------------------|\n| `clje_src_dirs`      | List of directories where Clojerl source is located (default: `[\"src\"]`).               |\n| `clje_test_dirs`     | List of directories where Clojerl tests are located (default: `[\"test\"]`).              |\n| `clje_compile_first` | List of files that should be compiled first (default: `[]`).                            |\n| `clje_exclude`       | List of files that should be excluded from compilation (default: `[]`).                 |\n| `clje_main`          | String specifying either a fully qualified function or a namespace (e.g. `\"foo/main\"`). |\n\nThe first four are helpful for handling custom directory structure\nand/or compilation behaviour.\n\nFor example, if the Clojerl code was in `src/clj` instead of just\n`src`, the `rebar.config` should include the following entry:\n\n```\n{clje_src_dirs, [\"src/clj\"]}.\n```\n\nAnd if we wanted to have the file for namespace `foo.bar` compiled\nfirst we would also include the entry:\n\n```\n{clj_compile_first, [\"foo/bar.clje\"]}.\n```\n\n## Plugin Development\n\nRun the following commands to checkout the repository and build the\nplugin:\n\n    git checkout https://github.com/clojerl/rebar3_clojerl\n    cd rebar3_clojerl\n    rebar3 compile\n\n### Install globally\n\n`rebar3` also allows you to install [plugins globally][rebar3-plugins]\nthrough its configuration file `~/.config/rebar3/rebar.config`.\n\nBy adding the following entry in the global `rebar.config` you will be\nable to use the plugin to build your project or create a new one with\nthe available [template](#template).\n\n    {plugins, [rebar3_clojerl]}.\n\n## Templates\n\nWhen the plugin is [installed globally](#install-globally) you can use\nany of the available templates:\n\n* `clojerl_app`: create a Clojerl OTP application.\n* `clojerl_escript`: create a Clojerl escript.\n* `clojerl_lib`: create a Clojerl library.\n* `clojerl_release`: create a Clojerl release.\n\nFor example:\n\n    rebar3 new clojerl_app awesome\n\n### Building the generated application\n\nRunning `rebar3 clojerl compile` will build the application.\n\n### Application name\n\nBecause of how Clojerl (and Clojure) processes dashes for namespace\nnames, and current limitations of the templating mechanism, you can't\ninclude dashes in your application's name. It's sad, I know. :(\n\n[rebar3-plugins]: https://www.rebar3.org/docs/using-available-plugins\n[rebar3-provider-hooks]: https://www.rebar3.org/docs/configuration#section-provider-hooks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojerl%2Frebar3_clojerl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclojerl%2Frebar3_clojerl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojerl%2Frebar3_clojerl/lists"}