Repository navigation
feat: CLI interactiva v0.1.0 — perfiles, pipelines, aprobaciones, work items, secure files y extensiones - #2
Merged
Conversation
…ariables - Modo interactivo: menú navegable (azdevops / azdevops interactive) y prompts automáticos para los datos que falten en cada comando. - Perfiles: azdevops login y config view/use/delete/path; flags globales --org, --project, --pat, --profile, -o, --no-input y --debug. - Cliente HTTP centralizado: valida códigos de respuesta, errores legibles, detección de PAT inválido, reintentos ante 429/5xx y escape de URLs. - Variable Groups: list, export/import (.env/JSON), get --id y salida en tabla. - Pipelines: list, runs, status, logs, cancel; run con --name, --branch, progreso en vivo y código de salida según el resultado. - Seguridad: list-members, remove-member, list-groups --search/--project-only. - Tests unitarios, workflow de CI, versión inyectada con ldflags y README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DPPr3c5aKtRBhPuTSFYFmA
… llavero y salida yaml/tsv/--query - approvals list/approve/reject y environments list/deployments. - workitems (wi) list/get/create/update/delete con WIQL, @me y modo guiado. - service-connections list/get/history/share y agents pools/list/enable/disable. - variables copy (también entre proyectos) y variables diff con --exit-code. - azdevops open para abrir recursos en el navegador. - Salida -o yaml|tsv y --query con JMESPath. - PAT en el llavero del sistema (login --store auto|keyring|file). - login verifica la identidad para no aceptar PATs inválidos en orgs con proyectos públicos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DPPr3c5aKtRBhPuTSFYFmA
…obaciones - securefiles (sf) list/get/upload/delete/authorize/set-role. - securefiles replace: renombra el archivo actual, sube el nuevo con el nombre original y copia propiedades, pipelines autorizados (incluido el acceso abierto), roles asignados, herencia de permisos y checks; elimina el anterior (o lo conserva con --keep-old). Revierte si algo falla y omite el rol propio, que Azure DevOps no permite modificar. - --dry-run para ver qué se conservará. - El cliente HTTP acepta cuerpos binarios ([]byte). - open securefiles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DPPr3c5aKtRBhPuTSFYFmA
- extension init: genera una extensión lista para compilar, probar y empaquetar con la estructura de src/tasks + azde-scripts + ncc + tfx, config dev/release, iconos de ejemplo, UUIDs nuevos y conexión de servicio opcional; modo guiado o con flags, npm install y git init. - extension add-task, bump, validate, reset-ids, uuid, pack y publish. - Edición de JSON que conserva el orden y el formato de las claves no modificadas, para que los diffs sean mínimos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DPPr3c5aKtRBhPuTSFYFmA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen
Convierte la CLI en una herramienta interactiva y mucho más completa, y reescribe su núcleo para que sea fiable en scripts y CI. Detalle completo en
RELEASE_NOTES.md(v0.1.0) yREADME.md.Cambios
Núcleo
--debug.azdevops/) sin E/S de consola; comandos conRunEy códigos de salida (0 / 1 / 130).Experiencia de uso
azdevopssin argumentos abre un menú generado del árbol de comandos; todos los comandos preguntan lo que falte (listas filtrables, secretos ocultos, confirmaciones). Se desactiva con--no-input,AZDEVOPS_NO_INPUToCI.login,config view|use|delete|path; el PAT va al llavero del sistema cuando está disponible.-o table|json|yaml|tsvy--query(JMESPath), autocompletado dinámico,--version.Comandos nuevos
variables:list,get --id,export/import(.env/JSON),copy(entre proyectos),diff(--exit-code).pipelines:list,runcon--name/--branch/progreso en vivo/código de salida,runs,status,logs --failed,cancel.approvalsyenvironments.workitems(wi):list,get,create,update,delete.service-connections(sc) yagents.securefiles(sf), incluidoreplace, que cambia el contenido conservando pipelines autorizados, roles, herencia y aprobaciones, con reversión automática.security:list-members,remove-member,list-groups --search/--project-only.openpara abrir recursos en el navegador.extension(ext):initgenera una extensión lista (src/tasks + azde-scripts + ncc + tfx, config dev/release, UUIDs, conexión opcional);add-task,bump,validate,reset-ids,uuid,pack,publish.Correcciones
set-permissionsaplicaba solo al primer grupo coincidente;pipelines create --branchse ignoraba;run --waitpodía esperar indefinidamente o devolver éxito si fallaba la consulta;updatefallaba sinprocess/repository; fugas de conexiones; README con flags incorrectos; nombre del binario en la ayuda.Infraestructura
-race, build), versión inyectada con ldflags,make test/vet/install.pipelines run --waittermina con código 1 si la ejecución falla o se cancela.--yes.variables get/pipelines get --namedevuelven error si no hay resultados.pipelines get-by-idqueda obsoleto (pipelines get --id).Pruebas
securefiles replacecon servidor simulado incluyendo reversión, generador de extensiones).extension init: proyecto generado connpm install, jest,tsc,.vsixy ejecución delindex.jsempaquetado; comandos de mantenimiento verificados sobre una copia deazdevops-extension-exec-pipeline.sc share,agents enable/disable, el llavero real del SO yext publishcon un token válido del Marketplace.🤖 Generated with Claude Code
https://claude.ai/code/session_01DPPr3c5aKtRBhPuTSFYFmA
Generated by Claude Code