hujsonfmt: -w rewrites already formatted files and -l lists them

Abierto Apto para principiantes
#59 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
tooling

Línea de trabajo

Lee cmd/hujsonfmt/hujsonfmt.go, especialmente processFile y processSrc. Compara el src original con la salida formateada tanto para -l como para -w. Después, comprueba que un archivo ya formateado no se incluye en la lista ni se vuelve a escribir, mientras que un archivo sin formatear se actualiza. El issue incluye una secuencia reproducible de comandos para verificar el comportamiento.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

hujsonfmt -w rewrites a file that is already formatted, and hujsonfmt -l lists it as unformatted.

Steps, with hujsonfmt 0-unstable-2025-06-05 from nixpkgs on Linux; cmd/hujsonfmt/hujsonfmt.go at b80ff77 has the same code:

printf '{\n\t"a": 1,\n}\n' > policy.hujson
hujsonfmt -w policy.hujson          # formats it
hujsonfmt policy.hujson | diff - policy.hujson   # no output: already formatted
hujsonfmt -w policy.hujson          # mtime changes again
hujsonfmt -l policy.hujson          # prints policy.hujson

processFile passes input to processSrc, which can modify it in place, so the -l case compares the modified input with the output instead of src. The -w case calls writeFile without comparing at all, so every run writes a backup copy and rewrites the file. Formatters such as treefmt then report the file as changed on every run.

Would a fix that compares src with the output in both cases, and skips the write when they are equal, be welcome?

Lenguaje dominante
Go
Estrellas
892
Forks
40
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de tailscale/hujson

Todos los issues de tailscale/hujson

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.