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
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ concurrency:
jobs:
# Lógica pura (buildSession, resolução de arquivo, CLI). Rápido, não precisa de JDK.
unit:
name: Unit
name: unit-test
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
Expand All @@ -37,7 +37,7 @@ jobs:

# Comportamento ponta a ponta: roda o binário contra o jshell real. Precisa de JDK.
e2e:
name: E2E (${{ matrix.os }})
name: e2e-test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# psjava

[![npm](https://img.shields.io/npm/v/@thiagodiogo/psjava/beta)](https://www.npmjs.com/package/@thiagodiogo/psjava)
[![npm](https://img.shields.io/npm/v/@thiagodiogo/psjava)](https://www.npmjs.com/package/@thiagodiogo/psjava)
[![CI](https://github.com/eipastel/psjava/actions/workflows/ci.yml/badge.svg)](https://github.com/eipastel/psjava/actions/workflows/ci.yml)
[![license](https://img.shields.io/npm/l/@thiagodiogo/psjava)](./LICENSE)

Expand All @@ -11,7 +11,7 @@ There's no custom syntax and no transpilation: whatever is in the file is exactl
## Install

```bash
npm install -g @thiagodiogo/psjava@beta
npm install -g @thiagodiogo/psjava
```

Requires a **JDK 11+** with `jshell` on your `PATH`. Verify your setup with `psjava doctor`.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@thiagodiogo/psjava",
"version": "0.0.1-beta.3",
"version": "0.1.0",
"description": "Run .psjava files as scripts — plain Java, no ceremony, on top of JShell.",
"keywords": [
"psjava",
Expand Down
1 change: 1 addition & 0 deletions pscode/changes/chore-entregar-versao-v0-1-0/.issue
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
15 changes: 15 additions & 0 deletions pscode/changes/chore-entregar-versao-v0-1-0/brief.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# [chore] entregar versão v0.1.0

## Objetivo
Promover o projeto de beta para a primeira release estável, **v0.1.0** (sem
sufixo `-beta`).

## Comportamento esperado
- `package.json` em `0.1.0`.
- CI verde no PR (unit + e2e, em todos os runners).
- Repositório sem lixo (arquivos/código não utilizados).
- PR de release aberto.

## Fora de escopo
- Novas funcionalidades do produto ou mudanças de comportamento do CLI.
- Merge do PR e push da tag `v0.1.0` (publish no npm) — passo manual posterior.
11 changes: 11 additions & 0 deletions pscode/changes/chore-entregar-versao-v0-1-0/questions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Grill Me — [chore] entregar versão v0.1.0

- [x] **Fim do escopo?** PR verde + bump. Merge e push da tag `v0.1.0`
(publish no npm latest) ficam como passo manual posterior.
- [x] **Versão do CLI?** Derivar do `package.json` em runtime — fonte única de
verdade, acaba com o drift (`src/cli.ts:7` estava `0.1.0` hardcoded enquanto o
`package.json` estava em `0.0.1-beta.3`).
- [x] **README @beta?** Atualizar badge e instalação para o canal estável
(`latest` / sem `@beta`).
- [x] **Tooling SDD (`.claude/`, `pscode/`)?** Manter versionado — é
intencional, não é lixo.
48 changes: 48 additions & 0 deletions pscode/changes/chore-entregar-versao-v0-1-0/refine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# entregar versão v0.1.0

## Summary
Promover o psjava de beta para a primeira release estável, **0.1.0**: limpar
referências a beta, alinhar a versão exibida pelo CLI com o `package.json`, e
abrir o PR de release com a CI verde (unit + e2e).

## Technical detail
- **Drift de versão:** `src/cli.ts:7` está com `.version('0.1.0')` hardcoded,
enquanto `package.json` está em `0.0.1-beta.3`. Decisão: derivar a versão do
`package.json` em runtime (fonte única). Num bin ESM, o caminho mais simples é
`createRequire(import.meta.url)('../package.json').version` (resolve para a
raiz a partir de `dist/cli.js`). Cobrir com unit test que casa a versão do
programa com a do `package.json`.
- **Bump:** `package.json` `0.0.1-beta.3` → `0.1.0` (sem `-`). O workflow
`release.yml` já manda versão sem `-` para a dist-tag `latest` ao empurrar a
tag `v*` — nenhuma mudança de CI necessária.
- **README:** badge (linha 3, `/beta`) e instalação (linha 14, `@beta`) passam
para o canal estável (`/latest` ou sem sufixo; `npm install -g` sem `@beta`).
- **Lixo:** varredura feita — working tree limpo, sem untracked, `.gitignore`
cobre `dist/ node_modules/ demo/`. Fontes (`src`, `bin`) todos referenciados e
cobertos por testes. `docs/backlog.md` e o tooling SDD (`.claude/`, `pscode/`)
são intencionais. Nenhuma remoção prevista; subtask final só confirma.
- **Regra de entrega:** `npm run test:unit` e `npm run test:e2e` verdes antes do
PR sair de draft (CLAUDE.md).

## Scope
### In
- Derivar a versão do CLI do `package.json` (+ unit test).
- Bump `package.json` → `0.1.0`.
- README: badge e instalação para o canal estável.
- Varredura final de lixo + suíte verde (unit + e2e).

### Out
- Novas features / mudança de comportamento do CLI.
- Merge do PR e push da tag `v0.1.0` (publish no npm) — manual, depois.
- Remover `.claude/` ou `pscode/` do versionamento.

## Subtasks
- [x] Derivar a versão exibida pelo CLI do `package.json` (remover o `0.1.0`
hardcoded em `src/cli.ts`) e cobrir com unit test que casa as duas versões.
- [x] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`.
- [x] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem
sufixo) para o canal estável.
- [x] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e`
verdes localmente.
- [x] CI: renomear os checks para `unit-test` e `e2e-test (<os>)` (mantém a
matriz ubuntu/windows). *(surgiu na revisão)*
6 changes: 5 additions & 1 deletion src/cli.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import { Command } from 'commander';
import { createRequire } from 'module';
import { runFile } from './commands/run.js';
import { runDoctor } from './commands/doctor.js';

// Versão vem do package.json (fonte única) — em dist/cli.js, '../package.json' é a raiz do pacote.
const { version } = createRequire(import.meta.url)('../package.json') as { version: string };

export function buildProgram(): Command {
const program = new Command();
program.name('psjava').description('Run .psjava files').version('0.1.0');
program.name('psjava').description('Run .psjava files').version(version);

program
.argument('[file]', '.psjava file')
Expand Down
7 changes: 7 additions & 0 deletions test/cli.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { describe, it, expect } from 'vitest';
import { createRequire } from 'module';
import { buildProgram } from '../src/cli.js';

const pkg = createRequire(import.meta.url)('../package.json') as { version: string };

describe('buildProgram', () => {
it('chama-se psjava', () => {
expect(buildProgram().name()).toBe('psjava');
Expand All @@ -10,4 +13,8 @@ describe('buildProgram', () => {
const names = buildProgram().commands.map((c) => c.name());
expect(names).toContain('doctor');
});

it('expõe a versão do package.json', () => {
expect(buildProgram().version()).toBe(pkg.version);
});
});