{"id":16965042,"url":"https://github.com/propensive/wrath","last_synced_at":"2025-03-22T14:31:02.010Z","repository":{"id":117160327,"uuid":"608238710","full_name":"propensive/wrath","owner":"propensive","description":"Simplistic build script for bootstrapping Scala projects","archived":false,"fork":false,"pushed_at":"2024-08-22T08:01:29.000Z","size":90,"stargazers_count":5,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-18T11:52:02.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/propensive.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.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":"2023-03-01T15:53:52.000Z","updated_at":"2024-08-22T08:01:32.000Z","dependencies_parsed_at":"2024-02-01T07:26:30.905Z","dependency_job_id":"42457524-1f4e-419b-a23c-2332c187a919","html_url":"https://github.com/propensive/wrath","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/propensive%2Fwrath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/propensive%2Fwrath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/propensive%2Fwrath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/propensive%2Fwrath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/propensive","download_url":"https://codeload.github.com/propensive/wrath/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244971793,"owners_count":20540859,"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-13T23:44:53.399Z","updated_at":"2025-03-22T14:31:01.721Z","avatar_url":"https://github.com/propensive.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Wrath\n\n_Wrath_ is a simplistic source-based build script for Scala, written in Bash,\nwith only limited functionality intended for bootstrapping projects which don't\nwant to rely upon a more complex tool. It was written primarily to build\n[Fury](https://github.com/propensive/fury/), and understands a minimal subset\nof Fury builds.\n\n### Running a build\n\nRunning a build is typically as simple as running the `wrath` command in a\ndirectory containing a `fury` file,\n```sh\nwrath\n```\nwhich will compile the default module (if there is one), or offer advice on any\nadditional parameters that may be required.\n\nSeveral other parameters can also be specified:\n- `--target \u003cmodule\u003e` (`-t`) — specify a different target module\n- `--exec` (`-x`) — execute the main method for the target module\n- `--repl` (`-r`) — launch the REPL with the target module on the classpath\n- `--clean` (`-c`) — clean the target module before rebuilding\n- `--deep-clean` (`-c`) — clean and rebuild all sources\n- `--fetch` (`-f`) — fetch any source repositories required by the build\n- `--fetch-all` (`-F`) — fetch the Scala compiler as well\n- `--main \u003cclass\u003e` (`-m`) — specify the main class to invoke (with `-x`)\n- `--jdk \u003cdir\u003e` (`-j`) — specify a different `JAVA_HOME` directory\n- `--help` (`-h`) — print a usage information\n\n### Dependencies\n\nDependent repositories are referenced as subdirectories of the project root\ndirectory. Running Wrath with the `-f` parameter will fetch any missing\ndependencies, but symbolic links can be used to point Wrath to a directory\nelsewhere on disk.\n\nThe Scala compiler is similarly a dependency, and will be kept in the `scala`\nsubdirectory. It's common to want to use a single copy of the Scala compiler\nfor all projects, and is most easily specified with a symlink. Scala will\nonly be fetched from GitHub if the `-F` option is specified. This may be\nuseful in CI environments.\n\n### Configuration files\n\nConfiguration files are called `build.wrath` and are written in a simple form\nof [CoDL](https://github.com/propensive/codl/). A typical build file contains\na `project declaration`,\n```\nproject myproject\n```\nand one or more module declarations, for example:\n```\nproject myproject\n  module core\n  module test\n```\n\nA top-level `target` declaration should point to the default target to compile/run\nwhen calling `wrath` without arguments.\n\nA number of top-level `repo` declarations should \n\nWithin a `module`, the following may be defined:\n- `main` — the name of the main method to invoke when running (with `wrath -x`)\n- `sources` — a space-separate list of source directories\n- `lib` — a library dependency; two parameters, an id and a URL\n- `include` — a space-separated list of dependencies in the form, `\u003cproject\u003e/\u003cmodule\u003e`\n- `plugin` — should be set to `yes` if the module defines a compiler plugin\n\nA more complete module definition might look like this:\n```codl\n\nrepo acme/mylibrary\ntarget myproject/test\n\nproject myproject\n  module core\n    sources  src/core\n    include  mylibrary/core mylibrary/extras\n    lib      servlet-api https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar\n\n  module test\n    sources  src/test\n    include  myproject/core\n    main     myproject.Tests\n```\n\n### Files\n\nWrath stores all its working files in a directory called `.wrath` in the\nproject root directory. This directory can be safely deleted (though\nartifacts may need to be downloaded again). All produced artifacts are\nstored in a directory called `dist` in the project root directory.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpropensive%2Fwrath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpropensive%2Fwrath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpropensive%2Fwrath/lists"}