Skip to content

jad21/pj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Control de proyectos locales en Go con TUI interactiva

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages