avelino / avelino/jbundle

Support .jbundle.edn as project config file

Open
#9 0 comments 1 reaction 0 assignees View on GitHub
area/config lang/clojure
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.