[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:
parent
e5f9004fb4
commit
87aaa2f814
1 changed files with 63 additions and 0 deletions
|
@ -620,12 +620,70 @@ def generate_prompt_base(programmer_type):
|
||||||
|
|
||||||
return prompt
|
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__":
|
if __name__ == "__main__":
|
||||||
# Parámetros de línea de comandos para controlar el comportamiento
|
# Parámetros de línea de comandos para controlar el comportamiento
|
||||||
import argparse
|
import argparse
|
||||||
parser = argparse.ArgumentParser(description='Actualiza tarifas por hora de diferentes tipos de programadores.')
|
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('-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('-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()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# Configurar nivel de log según parámetros
|
# 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
|
# No es necesario declarar global aquí ya que estamos en el ámbito global
|
||||||
SHOW_RESULTS = not args.quiet
|
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...")
|
logger.info("Iniciando actualización de tarifas...")
|
||||||
|
|
||||||
if not args.quiet:
|
if not args.quiet:
|
||||||
|
|
Loading…
Reference in a new issue