Set up project scaffolding: GitHub Actions workflows, issue templates, changelog, contributing guidelines, MIT license, and README

This commit is contained in:
!verity
2026-03-13 20:31:03 +01:00
parent be54d392cf
commit a7d310bacb
12 changed files with 308 additions and 0 deletions

30
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,30 @@
---
name: Bug
about: Report a bug
title: '[Bug] '
labels: bug
assignees: ''
---
**Description**
Briefly: what is the problem?
**Steps to reproduce**
1.
2.
**Expected**
What should happen?
**Actual**
What happens instead?
**Environment**
- OS:
- Java version:
- Terminal (e.g. PowerShell, CMD, IDE):
**Optional: code snippet**
```java
// minimal example
```

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Question / Discussion
url: https://github.com/jakubbbdev/terminal-ui/discussions
about: For questions and ideas without a concrete bug/feature ticket

View File

@@ -0,0 +1,19 @@
---
name: Feature
about: Suggest an idea or enhancement
title: ''
labels: enhancement
assignees: ''
---
**Problem / motivation**
What is this about? What are you missing right now?
**Proposal**
What should be added or changed?
**Alternatives**
Have you considered other solutions?
**Additional context**
Screenshots, examples, links—feel free to attach.

15
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,15 @@
## Description
<!-- Briefly: what does this PR do? -->
## Type of change
- [ ] Bug fix
- [ ] New feature
- [ ] Refactoring / docs
- [ ] Other
## Checklist
- [ ] `./gradlew build` passes locally
- [ ] Relevant tests updated or added (if applicable)

25
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Dependabot: automatic PRs for dependency updates
# https://docs.github.com/en/code-security/dependabot
version: 2
updates:
# Gradle dependencies (build.gradle.kts, gradle-wrapper)
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels: ["dependencies"]
commit-message:
prefix: "deps"
# GitHub Actions (*.yml in .github/workflows)
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
labels: ["dependencies", "github-actions"]
commit-message:
prefix: "ci"

35
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
# CodeQL: static security analysis (free for public repos).
name: CodeQL
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
schedule:
- cron: '0 6 * * 1'
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: java
- name: Build (for CodeQL)
run: |
chmod +x gradlew
./gradlew compileJava --no-daemon
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

22
.github/workflows/dependency-review.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
# On PRs: checks dependency changes for known vulnerabilities.
# Useful when Dependabot or manual dependency updates are used in PRs.
name: Dependency Review
on:
pull_request:
branches: [main, master]
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Dependency Review
uses: actions/dependency-review-action@v4

34
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
# On push of a version tag (e.g. v1.0.0): build, create GitHub Release, upload JARs.
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: gradle
- run: chmod +x gradlew && ./gradlew build --no-daemon
- name: Create Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: build/libs/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

16
CHANGELOG.md Normal file
View File

@@ -0,0 +1,16 @@
# Changelog
Project changes are documented here.
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Added
- (New features go here)
### Changed
- (Changes go here)
### Fixed
- (Bug fixes go here)

22
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,22 @@
# Contributing
Contributions are welcome.
## Process
1. Fork the repo and create a branch (e.g. `feature/xyz` or `fix/abc`).
2. Make your changes and test locally:
```bash
./gradlew build
```
3. Open a pull request against `main`/`master` (fill in the PR template).
4. CI must pass; address review feedback as needed.
## Code
- Java 21; follow the existing code style.
- Prefer adding tests in `src/test/` for new functionality.
## Questions
For questions and general discussion: [Discussions](https://github.com/jakubbbdev/terminal-ui/discussions).

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 terminal-ui contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

64
README.md Normal file
View File

@@ -0,0 +1,64 @@
# terminal-ui
Java library for terminal UI: tables, rules, colors, prompts, menus, SelectList, pager, and more. Fluent API, ANSI support, testable.
[![CI](https://github.com/jakubbbdev/terminal-ui/actions/workflows/ci.yml/badge.svg)](https://github.com/jakubbbdev/terminal-ui/actions/workflows/ci.yml)
## Requirements
- **Java 21**
- **Gradle 9.x** (wrapper included)
## Build & Test
```bash
./gradlew build
```
Run tests:
```bash
./gradlew test
```
Demo (non-interactive):
```bash
./gradlew run
```
Interactive demo (best run in a real terminal):
```bash
./gradlew runDemo2
```
## Usage (excerpt)
```java
import dev.jakub.terminal.Terminal;
import dev.jakub.terminal.core.Color;
// Colored text
Terminal.print("Hello").color(Color.CYAN).bold().println();
// Table
Terminal.table()
.header("A", "B")
.row("1", "2")
.row("3", "4")
.print(System.out);
// Prompt
String name = Terminal.prompt("Name: ").ask();
// Menu
String choice = Terminal.menu()
.title("Environment")
.option("Dev").option("Prod")
.select();
```
## License
See [LICENSE](LICENSE).