Skip to content

Auditoría del CLI y versión 4.0.462 - #3

Merged
mendozagit merged 4 commits into
mainfrom
refactor/cli-audit
Oct 23, 2026
Merged

mendozagit merged 4 commits into
mainfrom
refactor/cli-audit

Conversation

@mendozagit

Copy link
Copy Markdown
Contributor

Resumen

Auditoría de extremo a extremo del CLI: código, pruebas, workflows, README y docs/. La versión pasa a 4.0.462, la versión actual del backend.

Cambios visibles para el usuario

  • Mensajes del CLI en inglés. Antes estaban en español. Los nombres de comandos, opciones, códigos de salida, la forma de --json, las variables de entorno y el almacenamiento de credenciales no cambian.
  • Línea de entrega de listen sin flecha. Pasa de hora --> tipo [id] [código] a hora tipo [id] [código].
  • Confirmaciones solo con y o yes. s y si ya no confirman. El prompt muestra [y/N].
  • Aviso de versión más estricto. Solo las fallas de red (HttpRequestException) y de JSON (JsonException) se silencian. Otras excepciones ya no se tragan en silencio.
  • Documentación reescrita para el cliente. README y docs/ describen instalación, autenticación, uso y referencia de comandos. La verificación del SHA-256 es opcional. La guía de webhooks se enlaza en docs.fiscalapi.com/webhooks-info.
  • Licencia MPL-2.0. Se agrega LICENSE.

Cambios internos

  • Se quitan los comentarios de src/, tests/, Directory.Build.props, los .csproj, los workflows de .github/ y .markdownlint-cli2.jsonc.
  • Nulabilidad: las opciones obligatorias o con valor por omisión usan GetRequiredValue. Se quitan los ! injustificados y los casts sin validar.
  • Se ajusta ApiCommandContext, que lanza una excepción explícita si la API devuelve un cuerpo vacío.
  • Se estrecha el catch del aviso de versión (ver arriba). Se agregan pruebas para la ruta del directorio de estado.
  • Los pasos de CI conservan los SHA fijados de las acciones y el comportamiento de publish-linux.sh.

Verificación

  • dotnet build -c Release: 0 warnings, 0 errores.
  • dotnet test: 404 de 404 en verde.
  • fiscalapi --version imprime 4.0.462.
  • --help de login, logout, listen, trigger, webhooks list|create|delete y events list|retrieve sale con código 0.
  • markdownlint-cli2 sobre README.md y docs/*.md: 0 issues.

Pendiente antes de publicar

  • Sin verificación contra la API real. No hay credenciales de prueba en el equipo de la revisión. No se probaron login, trigger, listen contra una sesión viva ni los errores 400/401/403/409 que devuelve la API. Los ejemplos que dependen de la API están marcados como no verificados.
  • Binarios de Linux y macOS sin compilar localmente. Los genera release.yml al publicar un tag.
  • Este PR no crea tag ni release.

- Se quitan los comentarios de src/ y tests/. Las razones de los cambios viven en este historial.
- Mensajes, descripciones de ayuda, etiquetas de tablas y prompts pasan a inglés y se acortan.
  Comandos, opciones, códigos de salida, forma de --json, variables de entorno y almacenes de
  credenciales no cambian.
- GetValue(x)! pasa a GetRequiredValue(x) cuando la opción es obligatoria o tiene default. Las
  opcionales quedan nullable y se manejan explícitamente. Se eliminan los ! de src/.
- El catch del aviso de versión se limita a HttpRequestException y JsonException. Las pruebas de
  UpdateCheck cubren cada falla; se agregan dos pruebas de rutas de estado inválidas que fallan
  sin el cambio.
- webhooks delete acepta solo y/yes en la confirmación.
- La línea de entrega de listen no lleva flecha.
- Las pruebas se actualizan al texto nuevo. Resultado: 404 de 404 en verde, 0 warnings.
- README con el orden: qué es, instalación, autenticación, uso, comandos, solución de problemas y
  licencia. Se quitan las secciones de desarrollo y de releases.
- La verificación del SHA-256 es opcional y va en su propia sección.
- Sin menciones de .NET ni de detalles de implementación.
- Los ejemplos de salida se alinean con lo que imprime el CLI: marcadores de --help, líneas de
  listen, aviso de versión y errores de uso. Los textos que devuelve la API se citan tal cual.
- Los secretos y trazas de ejemplo son placeholders.
- Enlaces verificados; markdownlint sin errores.
- Se agrega LICENSE con la Mozilla Public License 2.0.
- FiscalApi.Cli.csproj: Version 4.0.462. release.yml toma la versión del tag o de la entrada
  manual, valida semver y compara el --version del binario contra ella.
- Directory.Build.props y el .csproj de pruebas pierden sus comentarios XML; sus propiedades no
  cambian. La documentación XML no está activada, así que no hay CS1591 que atender.
- Los workflows y scripts de .github pierden sus comentarios; los SHA de las acciones siguen fijados.
  Se quitan los IDs internos y el texto de infraestructura de los comentarios.
- .markdownlint-cli2.jsonc pierde su encabezado de comentarios.
- Se quitan los comentarios de .github/workflows y de los scripts. Los SHA de las acciones siguen
  fijados; el comentario de versión de cada acción va con él.
- Se eliminan los IDs internos y el texto de infraestructura de los comentarios. Los nombres de
  los pasos de CI (Native AOT, AlmaLinux 8) se conservan, porque son parte de la ejecución.
- Los shebangs y el contenido de los scripts no cambian.
@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 156 files, which is 56 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cc035151-8e3f-4fa1-822a-5b5dd377714c
📥 Commits

Reviewing files that changed from the base of the PR and between e487a47 and 30ba6ac.

📒 Files selected for processing: 156
  • .github/scripts/publish-linux.sh
  • .github/scripts/verify-dotnet-install.sh
  • .github/scripts/with-test-keychain.sh
  • .github/scripts/with-test-secret-service.sh
  • .github/workflows/build.yml
  • .github/workflows/release.yml
  • .markdownlint-cli2.jsonc
  • Directory.Build.props
  • LICENSE
  • README.md
  • docs/autenticacion.md
  • docs/instalacion.md
  • docs/listen.md
  • docs/salida-y-codigos.md
  • docs/solucion-de-problemas.md
  • docs/trigger.md
  • docs/webhooks-y-eventos.md
  • src/FiscalApi.Cli/ApiEnvironment.cs
  • src/FiscalApi.Cli/CliApplication.cs
  • src/FiscalApi.Cli/CliConsole.cs
  • src/FiscalApi.Cli/CliVersion.cs
  • src/FiscalApi.Cli/Commands/ApiCommandContext.cs
  • src/FiscalApi.Cli/Commands/CommaSeparatedValues.cs
  • src/FiscalApi.Cli/Commands/Events/EventsCommand.cs
  • src/FiscalApi.Cli/Commands/Events/ListEventsCommand.cs
  • src/FiscalApi.Cli/Commands/Events/ResendEventCommand.cs
  • src/FiscalApi.Cli/Commands/Events/RetrieveEventCommand.cs
  • src/FiscalApi.Cli/Commands/ListenCommand.cs
  • src/FiscalApi.Cli/Commands/LoginCommand.cs
  • src/FiscalApi.Cli/Commands/LogoutCommand.cs
  • src/FiscalApi.Cli/Commands/PageOptions.cs
  • src/FiscalApi.Cli/Commands/TriggerCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/CreateWebhookCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/DeleteWebhookCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/ListWebhooksCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/RetrieveWebhookCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/RotateWebhookSecretCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/UpdateWebhookCommand.cs
  • src/FiscalApi.Cli/Commands/Webhooks/WebhookOptions.cs
  • src/FiscalApi.Cli/Commands/Webhooks/WebhookWithSecretOutput.cs
  • src/FiscalApi.Cli/Commands/Webhooks/WebhooksCommand.cs
  • src/FiscalApi.Cli/Credentials/ApiCredentials.cs
  • src/FiscalApi.Cli/Credentials/CredentialResolver.cs
  • src/FiscalApi.Cli/Credentials/CredentialStoreException.cs
  • src/FiscalApi.Cli/Credentials/CredentialStoreUnavailableException.cs
  • src/FiscalApi.Cli/Credentials/CredentialStores.cs
  • src/FiscalApi.Cli/Credentials/ICredentialStore.cs
  • src/FiscalApi.Cli/Credentials/Linux/LibSecretCredentialStore.cs
  • src/FiscalApi.Cli/Credentials/Linux/LinuxNative.cs
  • src/FiscalApi.Cli/Credentials/MacOS/KeychainCredentialStore.cs
  • src/FiscalApi.Cli/Credentials/MacOS/MacNative.cs
  • src/FiscalApi.Cli/Credentials/StoredCredentialsFormat.cs
  • src/FiscalApi.Cli/Credentials/Windows/AdvApi32.cs
  • src/FiscalApi.Cli/Credentials/Windows/WindowsCredentialStore.cs
  • src/FiscalApi.Cli/Errors/ApiException.cs
  • src/FiscalApi.Cli/Errors/CliException.cs
  • src/FiscalApi.Cli/Errors/InvalidCredentialsException.cs
  • src/FiscalApi.Cli/Errors/NetworkException.cs
  • src/FiscalApi.Cli/Errors/ResourceStateException.cs
  • src/FiscalApi.Cli/Errors/UsageException.cs
  • src/FiscalApi.Cli/ExitCodes.cs
  • src/FiscalApi.Cli/FiscalApi.Cli.csproj
  • src/FiscalApi.Cli/GlobalOptions.cs
  • src/FiscalApi.Cli/GlobalSettings.cs
  • src/FiscalApi.Cli/Http/ApiData.cs
  • src/FiscalApi.Cli/Http/ApiResponse.cs
  • src/FiscalApi.Cli/Http/ExponentialBackoff.cs
  • src/FiscalApi.Cli/Http/FiscalApiClient.cs
  • src/FiscalApi.Cli/Http/FiscalApiClientFactory.cs
  • src/FiscalApi.Cli/Http/FiscalApiJsonContext.cs
  • src/FiscalApi.Cli/Http/PagedList.cs
  • src/FiscalApi.Cli/Http/PersonFeatures.cs
  • src/FiscalApi.Cli/Http/QueryString.cs
  • src/FiscalApi.Cli/Http/RetryPolicy.cs
  • src/FiscalApi.Cli/Http/TransientHttpStatus.cs
  • src/FiscalApi.Cli/Http/ValidationFailures.cs
  • src/FiscalApi.Cli/Http/VerboseLoggingHandler.cs
  • src/FiscalApi.Cli/Input/ConsoleConfirmationPrompt.cs
  • src/FiscalApi.Cli/Input/ConsoleSecretReader.cs
  • src/FiscalApi.Cli/Input/IConfirmationPrompt.cs
  • src/FiscalApi.Cli/Input/ISecretReader.cs
  • src/FiscalApi.Cli/Input/RedirectedSecretReader.cs
  • src/FiscalApi.Cli/Listen/ClaimedDelivery.cs
  • src/FiscalApi.Cli/Listen/DeliveryDispatcher.cs
  • src/FiscalApi.Cli/Listen/DeliveryOutcome.cs
  • src/FiscalApi.Cli/Listen/DeliveryProcessor.cs
  • src/FiscalApi.Cli/Listen/DisplayOnlyTarget.cs
  • src/FiscalApi.Cli/Listen/HttpForwardTarget.cs
  • src/FiscalApi.Cli/Listen/IDeliveryTarget.cs
  • src/FiscalApi.Cli/Listen/JsonListenOutput.cs
  • src/FiscalApi.Cli/Listen/ListenLoop.cs
  • src/FiscalApi.Cli/Listen/ListenOutput.cs
  • src/FiscalApi.Cli/Listen/ListenTimings.cs
  • src/FiscalApi.Cli/Listen/ListenerApi.cs
  • src/FiscalApi.Cli/Listen/ListenerContracts.cs
  • src/FiscalApi.Cli/Listen/TextListenOutput.cs
  • src/FiscalApi.Cli/Listen/WebhookEventSummary.cs
  • src/FiscalApi.Cli/Listen/WebhookHeaderNames.cs
  • src/FiscalApi.Cli/Output/LabeledValues.cs
  • src/FiscalApi.Cli/Output/PagedListView.cs
  • src/FiscalApi.Cli/Output/TextTable.cs
  • src/FiscalApi.Cli/Program.cs
  • src/FiscalApi.Cli/Updates/CliRepository.cs
  • src/FiscalApi.Cli/Updates/IUpdateCheck.cs
  • src/FiscalApi.Cli/Updates/SemanticVersion.cs
  • src/FiscalApi.Cli/Updates/UpdateCheck.cs
  • src/FiscalApi.Cli/Updates/UpdateCheckContracts.cs
  • src/FiscalApi.Cli/Updates/UpdateCheckStateFile.cs
  • src/FiscalApi.Cli/Updates/UpdateNotice.cs
  • src/FiscalApi.Cli/Webhooks/EventsApi.cs
  • src/FiscalApi.Cli/Webhooks/WebhookContracts.cs
  • src/FiscalApi.Cli/Webhooks/WebhookEventContracts.cs
  • src/FiscalApi.Cli/Webhooks/WebhookEventTypes.cs
  • src/FiscalApi.Cli/Webhooks/WebhookEventView.cs
  • src/FiscalApi.Cli/Webhooks/WebhookView.cs
  • src/FiscalApi.Cli/Webhooks/WebhooksApi.cs
  • tests/FiscalApi.Cli.Tests/CliApplicationTests.cs
  • tests/FiscalApi.Cli.Tests/Commands/ApiCommandHarness.cs
  • tests/FiscalApi.Cli.Tests/Commands/EventsCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Commands/LoginCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Commands/LogoutCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Commands/TriggerCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Commands/WebhooksCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Credentials/CredentialResolutionTests.cs
  • tests/FiscalApi.Cli.Tests/Credentials/CredentialStoreFactAttribute.cs
  • tests/FiscalApi.Cli.Tests/Credentials/CredentialStoreTests.cs
  • tests/FiscalApi.Cli.Tests/Credentials/InMemoryCredentialStore.cs
  • tests/FiscalApi.Cli.Tests/Credentials/StoredCredentialsFormatTests.cs
  • tests/FiscalApi.Cli.Tests/FiscalApi.Cli.Tests.csproj
  • tests/FiscalApi.Cli.Tests/GlobalOptionsTests.cs
  • tests/FiscalApi.Cli.Tests/Http/ExponentialBackoffTests.cs
  • tests/FiscalApi.Cli.Tests/Http/FiscalApiClientBuilder.cs
  • tests/FiscalApi.Cli.Tests/Http/FiscalApiClientErrorTests.cs
  • tests/FiscalApi.Cli.Tests/Http/FiscalApiClientRetryTests.cs
  • tests/FiscalApi.Cli.Tests/Http/PersonFeaturesJson.cs
  • tests/FiscalApi.Cli.Tests/Http/RedirectTests.cs
  • tests/FiscalApi.Cli.Tests/Http/SteppedTimeProvider.cs
  • tests/FiscalApi.Cli.Tests/Http/StubHttpMessageHandler.cs
  • tests/FiscalApi.Cli.Tests/Http/TestJsonContext.cs
  • tests/FiscalApi.Cli.Tests/Http/VerboseLoggingHandlerTests.cs
  • tests/FiscalApi.Cli.Tests/Input/ConsoleSecretReaderTests.cs
  • tests/FiscalApi.Cli.Tests/Input/RedirectedSecretReaderTests.cs
  • tests/FiscalApi.Cli.Tests/Input/ScriptedKeys.cs
  • tests/FiscalApi.Cli.Tests/Listen/ClosedPort.cs
  • tests/FiscalApi.Cli.Tests/Listen/DeliveryDispatcherTests.cs
  • tests/FiscalApi.Cli.Tests/Listen/FakeListenerApi.cs
  • tests/FiscalApi.Cli.Tests/Listen/FakeReceiver.cs
  • tests/FiscalApi.Cli.Tests/Listen/ListenCommandTests.cs
  • tests/FiscalApi.Cli.Tests/Listen/ListenTimingsTests.cs
  • tests/FiscalApi.Cli.Tests/Listen/RawHttpReceiver.cs
  • tests/FiscalApi.Cli.Tests/Listen/SelfSignedCertificate.cs
  • tests/FiscalApi.Cli.Tests/Listen/StandardWebhooksSignature.cs
  • tests/FiscalApi.Cli.Tests/Updates/CliApplicationUpdateCheckTests.cs
  • tests/FiscalApi.Cli.Tests/Updates/NoUpdateCheck.cs
  • tests/FiscalApi.Cli.Tests/Updates/SemanticVersionTests.cs
  • tests/FiscalApi.Cli.Tests/Updates/UpdateCheckTests.cs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mendozagit
mendozagit merged commit d7a0bd6 into main Oct 23, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant