[ADDED] Implementar opción --list para mostrar todas las tarifas

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 12:38:56 -05:00
parent e5f9004fb4
commit 87aaa2f814
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -620,12 +620,70 @@ def generate_prompt_base(programmer_type):
return prompt
def list_rate_files():
"""
Lista todas las tarifas por tipo de programador.
Si el archivo no existe, utiliza el valor por defecto.
"""
# Crear la carpeta rates si no existe
os.makedirs(RATES_DIR, exist_ok=True)
# Obtener la lista de tipos de programadores
programmer_types = get_programmer_types()
programmer_types.sort() # Ordenar alfabéticamente
print("Tarifas por tipo de programador:")
print("--------------------------------")
# Primero procesamos devops para tener su tarifa actualizada para bash
devops_rate = None
devops_rate_file = RATES_DIR / "devops.rate"
if devops_rate_file.exists():
try:
with open(devops_rate_file, 'r', encoding='utf-8') as f:
devops_rate = float(f.read().strip())
except (FileNotFoundError, ValueError) as e:
logger.warning(f"Error al leer tarifa de devops: {e}")
devops_rate = get_default_rate('devops')
else:
devops_rate = get_default_rate('devops')
# Procesar cada tipo de programador
for programmer_type in programmer_types:
rate_file = RATES_DIR / f"{programmer_type}.rate"
# Si el archivo existe, leer el valor
if rate_file.exists():
try:
with open(rate_file, 'r', encoding='utf-8') as f:
rate = float(f.read().strip())
except (FileNotFoundError, ValueError) as e:
logger.warning(f"Error al leer {rate_file}: {e}")
# Caso especial para bash
if programmer_type == 'bash' and devops_rate is not None:
rate = 0.4 * devops_rate
else:
rate = get_default_rate(programmer_type)
else:
# Si no existe, usar valor por defecto
# Caso especial para bash
if programmer_type == 'bash' and devops_rate is not None:
rate = 0.4 * devops_rate
else:
rate = get_default_rate(programmer_type)
logger.info(f"Usando valor predeterminado para {programmer_type}: {rate:.2f}")
# Formatear la salida para alinear correctamente
print(f"{programmer_type.ljust(10)}: {rate:.2f} USD/hora")
if __name__ == "__main__":
# Parámetros de línea de comandos para controlar el comportamiento
import argparse
parser = argparse.ArgumentParser(description='Actualiza tarifas por hora de diferentes tipos de programadores.')
parser.add_argument('-q', '--quiet', action='store_true', help='No mostrar resultados individuales')
parser.add_argument('-v', '--verbose', action='store_true', help='Mostrar información detallada del proceso')
parser.add_argument('-l', '--list', action='store_true', help='Listar todas las tarifas disponibles')
args = parser.parse_args()
# Configurar nivel de log según parámetros
@ -636,6 +694,11 @@ if __name__ == "__main__":
# No es necesario declarar global aquí ya que estamos en el ámbito global
SHOW_RESULTS = not args.quiet
# Si se solicita listar las tarifas, solo mostramos la lista y terminamos
if args.list:
list_rate_files()
sys.exit(0)
logger.info("Iniciando actualización de tarifas...")
if not args.quiet: