Support .jbundle.edn as project config file
- Dominant language
- Rust
- Stars
- 181
- Forks
- 11
- PR merge metrics
- No merged PRs in 30d
Description
## Problem
Projects with specific packaging requirements must pass multiple CLI flags on every build. This is error-prone, hard to share across team members, and clutters CI scripts. There is no way to declare packaging configuration as part of the project itself.
## Context
- Common flags that users would want to persist per-project:
- `--java-version 21`
- `--jvm-args "-Xmx512m -Dfile.encoding=UTF-8"`
- `--shrink`
- `--jlink-modules java.base,java.sql,...`
- `--compress zstd`
- Without a config file, CI scripts end up with long command lines:
```bash
jbundle build --java-version 21 --jvm-args "-Xmx512m" --shrink --compress zstd --output ./dist/app
```
- Clojure projects already use EDN as their configuration format (deps.edn), so `.jbundle.edn` is a natural convention
- The config file should live in the project root, checked into version control
## Expected Outcome
A `.jbundle.edn` file in the project root that configures build defaults:
```edn
{:java-version 21
:jvm-args ["-Xmx512m" "-Dfile.encoding=UTF-8"]
:shrink true
:compress :zstd
:jlink-modules ["java.base" "java.sql" "java.naming"]}
```
## Behavior
- jbundle automatically detects `.jbundle.edn` in the input directory
- CLI flags override config file values (explicit always wins)
- Missing config file is not an error (all settings remain optional)
- Invalid config file should produce a clear parse error with location
## Precedence (lowest to highest)
1. Built-in defaults
2. `.jbundle.edn` in project root
3. CLI flags
Contributor guide
Research direction
No source files or tests are named in the issue. Start by locating the CLI build command and its input-directory handling, then trace how defaults and explicit flags are assembled. Done means optional .jbundle.edn loading, CLI-over-config precedence, clear parse errors with locations, and no error when the file is absent.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- build-system, cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100