Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Release

on:
push:
tags: [ 'v*' ]

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
cache: gradle

- name: Build the fat jar
run: ./gradlew shadowJar --no-daemon

# shadowJar produces an unversioned `datalinq.jar`, so the asset name is stable and
# releases/latest/download/datalinq.jar always resolves - that is exactly what the jbang
# catalog points at. Pushing a `v*` tag therefore auto-publishes the jbang-installable jar.
- name: Publish the release with the fat jar
uses: softprops/action-gh-release@v2
with:
files: build/libs/datalinq.jar
generate_release_notes: true
40 changes: 27 additions & 13 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,24 +121,38 @@ options:
- `destructive=true` 작업은 실행 전 명시적 확인을 요구합니다.
- 각 작업은 **하나의 타겟 트랜잭션** 안에서 실행: 성공 시 커밋, 오류 시 롤백.

## 실행
## 설치 & 실행

기본 명령은 **TUI** 이고, 모든 기능은 CLI로도 스크립트화할 수 있습니다.
기본 명령은 **TUI** 이고, 모든 하위 명령은 스크립트화할 수 있습니다.

### jbang으로 (권장)

[jbang](https://www.jbang.dev/) 은 DataLinq를 실제 `datalinq` 명령으로 설치해 주고, JDK가 없으면
알맞은 JDK까지 받아 줍니다:

```bash
jbang app install datalinq@devslab-kr/datalinq # 한 번만 - `datalinq` 명령 생성
datalinq # TUI 실행 (마이그레이션 / DB 연결 / 설정 / 정보)
datalinq init # 편집용 기본값 생성 (i18n/, branding/, 예시 설정, sql/)
datalinq list # 발견된 작업 목록
datalinq run 0 # 0번 작업 dry-run
datalinq run 0 --execute # 실제 쓰기
```

설치 없이 한 번만 실행하려면: `jbang datalinq@devslab-kr/datalinq`.

### jar로 (jbang 없이)

[최신 릴리스](https://github.com/devslab-kr/datalinq/releases/latest)에서 `datalinq.jar` 를 받아
직접 실행합니다(**JDK 21+** 필요). `java -jar datalinq.jar <명령>` 은 `datalinq <명령>` 과 동일합니다:

```bash
./gradlew shadowJar # 자기완결형 jar 빌드
java -jar build/libs/datalinq.jar # TUI 메뉴 (마이그레이션 / DB 연결 / 설정 / 정보)

# 또는 CLI로:
java -jar build/libs/datalinq.jar init # 편집용 기본값 생성 (i18n/, branding/, 예시 설정, sql/)
java -jar build/libs/datalinq.jar list # 발견된 작업 목록
java -jar build/libs/datalinq.jar config # 해석된 설정 표시(비밀번호 마스킹)
java -jar build/libs/datalinq.jar run 0 # 0번 작업 dry-run
java -jar build/libs/datalinq.jar run 0 --execute # 실제 쓰기
java -jar datalinq.jar # TUI
java -jar datalinq.jar config # 해석된 설정 표시(비밀번호 마스킹)
java -jar datalinq.jar run 0 --execute
```

jar는 단일 드롭형 산출물입니다(Shadow fat-jar, `jbang-catalog.json` 에 [jbang](https://www.jbang.dev/)
별칭 포함). 개발 중에는 `./gradlew run --args="..."` 도 동작합니다.
개발 중에는 `./gradlew run --args="..."` 도 동작하며, `./gradlew shadowJar` 로 jar을 빌드합니다.

## 상태

Expand Down
41 changes: 28 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,24 +121,39 @@ also be edited from inside the app (DB Connection screen) and saved.
- `destructive=true` operations require an explicit confirmation before running.
- Each operation runs in **one target transaction**: commit on success, rollback on any error.

## Run
## Install & run

The default command is the **TUI**; everything is also scriptable from the CLI.
The default command is the **TUI**; every subcommand is also scriptable.

### With jbang (recommended)

[jbang](https://www.jbang.dev/) installs DataLinq as a real `datalinq` command and will even
provision a JDK for you if none is present:

```bash
jbang app install datalinq@devslab-kr/datalinq # once - creates the `datalinq` command
datalinq # launch the TUI (Migrations / DB Connection / Settings / About)
datalinq init # write editable defaults (i18n/, branding/, example config, sql/)
datalinq list # list discovered operations
datalinq run 0 # dry-run operation #0
datalinq run 0 --execute # actually write
```

Or run it once without installing: `jbang datalinq@devslab-kr/datalinq`.

### With the jar (no jbang)

Download `datalinq.jar` from the [latest release](https://github.com/devslab-kr/datalinq/releases/latest)
(needs **JDK 21+**) and run it directly - `java -jar datalinq.jar <command>` is equivalent to
`datalinq <command>`:

```bash
./gradlew shadowJar # build the self-contained jar
java -jar build/libs/datalinq.jar # TUI menu (Migrations / DB Connection / Settings / About)

# or via the CLI:
java -jar build/libs/datalinq.jar init # write editable defaults (i18n/, branding/, example config, sql/)
java -jar build/libs/datalinq.jar list # list discovered operations
java -jar build/libs/datalinq.jar config # show resolved config (passwords masked)
java -jar build/libs/datalinq.jar run 0 # dry-run operation #0
java -jar build/libs/datalinq.jar run 0 --execute # actually write
java -jar datalinq.jar # TUI
java -jar datalinq.jar config # show resolved config (passwords masked)
java -jar datalinq.jar run 0 --execute
```

The jar is a single droppable artifact (Shadow fat-jar, with a [jbang](https://www.jbang.dev/)
alias in `jbang-catalog.json`). During development `./gradlew run --args="..."` works too.
During development `./gradlew run --args="..."` works too; `./gradlew shadowJar` builds the jar.

## Status

Expand Down
2 changes: 1 addition & 1 deletion jbang-catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"aliases": {
"datalinq": {
"script-ref": "build/libs/datalinq.jar",
"script-ref": "https://github.com/devslab-kr/datalinq/releases/latest/download/datalinq.jar",
"description": "DataLinq - cross-vendor JDBC data-migration TUI (DevsLab Co., Ltd.)",
"java-options": [
"-Dstdout.encoding=UTF-8",
Expand Down
Loading