pj

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2026 License: MIT

README

pj

Control de proyectos locales en Go con TUI interactiva, cache local y comandos rapidos.

Go Repo Stars

Repositorio: https://github.com/jad21/pj.git

pj esta pensado para el flujo diario: registrar proyectos, buscarlos en una vista bonita y entrar rapido a trabajar.

Que resuelve

  • Catalogo local de proyectos con persistencia (bbolt, sin servidor).
  • Busqueda y filtro en TUI con datos de Git y tamano.
  • Acceso rapido por nombre (pj <name>).
  • Operaciones de mantenimiento (add, del, rename, limpieza de caches pesados).
  • Inicio rapido: muestra cache primero y refresca metadatos en segundo plano.

Instalacion

Instalacion rapida (sin clone)
go install github.com/jad21/pj/cmd/pj@v0.1.1
Instalacion con Goblin
curl -sf https://goblin.run/github.com/jad21/pj | CMD_PATH="/cmd/pj" sh

Opcional (sin sudo, instala en el home):

curl -sf https://goblin.run/github.com/jad21/pj | CMD_PATH="/cmd/pj" PREFIX="$HOME/.local/bin" sh

Verificar:

pj --help
Desde Git
git clone https://github.com/jad21/pj.git
cd pj
go install ./cmd/pj

Si pj no se encuentra en la terminal, agregar el binario de Go al PATH:

export PATH="$PATH:$(go env GOPATH)/bin"
Desde el codigo local

Desde el root del proyecto:

go build -o "$GOPATH/bin/pj" ./cmd/pj

Verificar:

pj --help

Uso rapido

Registrar proyectos
# Agrega el directorio actual
pj add .

# Agrega varios paths de una vez
pj add ~/codes/app1 ~/codes/app2 /tmp/demo

# Agrega todos los subdirectorios inmediatos
pj add -a .

# Agrega subdirectorios de varias bases
pj add -a ~/codes ~/work
Listar y refrescar
# Lista usando cache (rapido)
pj list

# Fuerza recalc de branch/commit/size antes de listar
pj list --refresh
Renombrar y eliminar
pj rename viejo nuevo
pj del nuevo
pj del /ruta/absoluta/del/proyecto
Entrar por nombre
# Interactivo: abre shell dentro del proyecto
pj catalog

# Solo path (scripts, pipes, subshell)
pj catalog --path
pj catalog -p

# Ejemplo clasico para cd
cd "$(pj catalog --path)"

Si pj <name> no encuentra match exacto:

  • Si hay una sola coincidencia por filtro, entra directo.
  • Si hay varias (o ninguna), abre la TUI con ese filtro aplicado.
Reabrir ultima ruta

Sin editar ~/.bashrc, pj guarda la ultima ruta activa y puede reabrirla desde otra sesion:

# Abre shell en la ultima ruta guardada
pj last

# Solo imprime la ruta (para scripts)
pj last --path

Detalle: en shells bash, pj actualiza la ruta durante la sesion usando PROMPT_COMMAND; en otros shells guarda al menos la ruta inicial al entrar.

TUI

Ejecuta:

pj

La TUI muestra columnas:

  • NAME
  • BRANCH
  • COMMIT
  • LAST UPDATED
  • SIZE (humano)
  • PATH
Atajos
Accion Tecla
Buscar/filter Escribir
Limpiar filtro / salir Esc
Navegar Flechas / rueda
Abrir shell en proyecto Enter
Limpiar carpetas pesadas Ctrl+L
Eliminar proyecto (con confirmacion) Ctrl+D
Renombrar proyecto (dialogo) Ctrl+N
Abrir con opener detectado Ctrl+O
Ordenar por columna Clic en titulo o F1..F6
Invertir orden Ctrl+R
Salir Esc o Ctrl+C
Limpieza desde TUI

La accion de limpieza elimina, en la raiz del proyecto seleccionado:

  • .venv
  • venv
  • node_modules
  • .cache

Luego recalcula y guarda el tamano actualizado.

Autocompletado (bash)

En ~/.bashrc:

if command -v pj >/dev/null 2>&1; then
  source <(pj completion bash)
  alias repo='pj'
fi

El proyecto ya soporta completion de nombres para pj/pg leyendo cache (pj names --cached) para que TAB responda rapido.

Recargar shell:

source ~/.bashrc

Rendimiento

  • pj (TUI) inicia con datos en cache y actualiza metadatos en segundo plano.
  • pj list usa cache por defecto.
  • pj list --refresh recalcula todo cuando hace falta precision inmediata.
  • Completion de nombres consulta cache, no recalcula metadatos.

Persistencia

  • DB: $XDG_DATA_HOME/pj/projects.db
  • Fallback: ~/.local/share/pj/projects.db

Reglas importantes

  • No duplica proyectos por path.
  • Tambien evita duplicados por symlink (EvalSymlinks).
  • Los paths bajo home se muestran compactados como ~/... en listados/TUI.

Stack

  • Go + Cobra (CLI)
  • Bubble Tea + Lip Gloss (TUI)
  • bbolt (DB local)

Licencia

Este proyecto se distribuye bajo licencia MIT. Ver LICENSE.

Directories

Path Synopsis
cmd
pj command
internal
cli
tui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL