Current section
Files
Jump to
Current section
Files
lib/ledger.ex
defmodule Ledger do
@moduledoc """
Módulo principal del sistema Ledger.
Sistema de libro contable para gestionar transacciones entre usuarios con soporte para múltiples monedas y conversiones.
"""
@doc """
Función principal de entrada para la línea de comandos.
## Parámetros
- `args`: Lista de argumentos de línea de comandos
## Retorno
- `{:ok, 0}` si la ejecución fue exitosa
- `{:error, razón}` si ocurrió algún error
"""
def main(args \\ System.argv()) do
case Ledger.CLI.procesar_argumentos(args) do
{:error, razon} ->
Ledger.FileHandler.mostrar_error(razon)
{:error, razon}
{:ok, flags} ->
case Ledger.Currency.procesar_monedas("./monedas.csv") do
{:error, razon} ->
Ledger.FileHandler.mostrar_error(razon)
{:error, razon}
{:ok, monedas} ->
arch_transacciones = Map.get(flags, "t", "./transacciones.csv")
case Ledger.Transaction.procesar_transacciones(arch_transacciones, monedas) do
{:error, razon} ->
Ledger.FileHandler.mostrar_error(razon)
{:error, razon}
cuentas ->
case Ledger.CLI.efectuar_comando(flags, cuentas, monedas) do
{:error, razon} ->
Ledger.FileHandler.mostrar_error(razon)
{:error, razon}
resultado ->
resultado
end
end
end
end
end
end