scfmt 0.3.1

A tool for formatting code with structured comments
Documentation
use strfmt::strfmt;

use std::{env, path::PathBuf};

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() == 1 {
        panic!("strfmt was passed too few arguments");
    } else if args.len() == 2 {
        let dir = &args[1];
        let path = PathBuf::from(dir);

        if path.is_dir() {
            let paths = strfmt::get_files_in_dir(dir, "");
            for file in paths {
                strfmt::format_file(file);
            }
        } else if path.is_file() {
            strfmt::format_file(path);
        } else {
            panic!("arg must be a file, path, or command")
        }
    } else if args.len() == 3 {
        let flag = &args[1];

        if flag == "add_brackets" {
            let dir = &args[2];
            let path = PathBuf::from(dir);

            if path.is_dir() {
                let paths = strfmt::get_files_in_dir(dir, "");
                for file in paths {
                    strfmt::convert_to_brackets_file(file);
                }
            } else if path.is_file() {
                strfmt::convert_to_brackets_file(path);
            } else {
                panic!("second arg must be a path or file");
            }
        } else if flag == "remove_brackets" {
            let dir = &args[2];
            let path = PathBuf::from(dir);

            if path.is_dir() {
                let paths = strfmt::get_files_in_dir(dir, "");
                for file in paths {
                    strfmt::convert_to_bracketless_file(file);
                }
            } else if path.is_file() {
                strfmt::convert_to_bracketless_file(path);
            } else {
                panic!("second arg must be a path or file");
            }
        } else {
            panic!("Invalid flag passed as arg");
        }
    } else {
        panic!("strfmt was passed too many arguments");
    }
}