Packages

Sistema de libro contable para transacciones multi-moneda desarrollado como trabajo práctico para la materia Taller de Programación.

Current section

Files

Jump to
ledger_tp2 lib ledger.ex
Raw

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.
"""
alias Ledger.{CLI, FileHandler}
@doc """
Punto de entrada principal para la aplicación Ledger.
Inicializa la aplicación y procesa los comandos proporcionados.
## Parámetros
- `args`: Lista de argumentos de línea de comandos.
## Retorno
- `{:ok, resultado}` si la aplicación se ejecutó exitosamente.
- `{:error, razón}` si ocurrió algún error durante la ejecución.
"""
def main(args \\ System.argv()) do
case Application.ensure_all_started(:ledger) do
{:ok, _} ->
procesar_comandos(args)
{:error, {:already_started, _}} ->
procesar_comandos(args)
error ->
error
end
end
@doc """
Procesa los comandos de línea de comandos.
## Parámetros
- `args`: Lista de argumentos de línea de comandos.
## Retorno
- `{:ok, resultado}` si los comandos fueron procesados exitosamente.
- `{:error, razón}` si ocurrió algún error durante el procesamiento.
"""
def procesar_comandos(args) do
case CLI.procesar_argumentos(args) do
{:error, razon} ->
FileHandler.mostrar_error(razon)
{:error, razon}
{:ok, flags} ->
case CLI.efectuar_comando(flags) do
{:error, razon} ->
FileHandler.mostrar_error(razon)
{:error, razon}
resultado ->
resultado
end
end
end
end