koban-cli 0.3.1

A Rust CLI for Invoice Ninja, built for humans and AI agents
use std::path::PathBuf;

use httpmock::{
    Method::{GET, POST, PUT},
    MockServer,
};
use serde_json::Value;

use koban::*;

use crate::{cli::*, commands::*, invoice::*, payload::*, render::*, resource_routes::*};

mod cli;
mod commands;
mod endpoints;
mod invoice;
mod payload;
mod render;
mod resource_actions;
mod resource_parity;

fn empty_payload_args() -> InvoicePayloadArgs {
    InvoicePayloadArgs {
        data: None,
        data_file: None,
        stdin: false,
        client_id: None,
        date: None,
        due_date: None,
        number: None,
        po_number: None,
        public_notes: None,
        private_notes: None,
        terms: None,
        footer: None,
        project_id: None,
        line_items: Vec::new(),
    }
}

fn empty_trigger_args() -> InvoiceTriggerArgs {
    InvoiceTriggerArgs {
        send_email: false,
        mark_sent: false,
        paid: false,
        amount_paid: None,
        cancel: false,
        save_default_footer: false,
        save_default_terms: false,
        retry_e_send: false,
    }
}

fn empty_resource_payload_args() -> ResourcePayloadArgs {
    ResourcePayloadArgs {
        data: None,
        data_file: None,
        stdin: false,
        fields: Vec::new(),
        name: None,
        number: None,
        client_id: None,
        vendor_id: None,
        project_id: None,
        date: None,
        due_date: None,
        amount: None,
        price: None,
        quantity: None,
        public_notes: None,
        private_notes: None,
        line_items: Vec::new(),
    }
}