package cmd import ( "os" "github.com/fred1268/go-clap/clap" ) // Перечень флагов type Config struct { InputFile string `clap:"trailing,mandatory"` // Входящий файл $MFT, $J, $LogFile, $Boot, $SDS FileFormat string `clap:"--format,-F,mandatory"` // Формат выходного файла JSON, CSV, bodyfile. По умолчанию CSV OutputDirectory string `clap:"--output,-o,mandatory"` // Путь выходного файла DiskLetter string `clap:"--disk-later,-bdl"` // Буква диска для bodyfile LineFeed bool `clap:"--line-feed,-blf"` // Используемый конец строки bodyfile. true - LF, false - CRLF. По умолчанию false // TODO: Найти описание аргументов DD string `clap:"-dd"` // -dd DO string `clap:"-do"` // -do DE string `clap:"-de"` // -de FLS bool `clap:"-fls"` // -fls SecurityIdentifier bool `clap:"--security-identifier,-ds"` // Выводит полные детали для идентификатора безопасности в десятичном или шестнадцатеричном виде DatetimeFormat string `clap:"--date-format,-dt"` // Формат даты и времени. По умолчанию yyyy-MM-dd HH:mm:ss.fffffff FilenameType bool `clap:"--filename-type,-sn"` // Включает типы имён файлов DOS. По умолчанию false FileListingBrief bool `clap:"--brief-filelisting,-fl"` // Включает сокращённый список файлов. Используется с CSV AttributeLabel bool `clap:"--atribute-label,-at"` // Включает все временные метки из атрибута 0x30, а не только когда они отличаются от 0x10. По умолчанию false VolumeShadowCopy bool `clap:"--volume-shadow-copy,-vss"` // Включает все теневые копии томов, которые существуют на диске. По умолчанию false Dedup bool `clap:"--dedup"` // Убирает все дубликаты в теневых копиях на основе SHA1. Первый кандидат выигрывает. По умолчанию false Debug bool `clap:"--debug"` // Вывод дебаг-информации. По умолчанию false Trace bool `clap:"--trace"` // Вывод информации трассировки. По умолчанию false } // Установка значений по умолчанию для параметров func setDefault() *Config { cfg := &Config{ FileFormat: "csv", LineFeed: false, DatetimeFormat: "yyyy-MM-dd HH:mm:ss.fffffff", FilenameType: false, AttributeLabel: false, VolumeShadowCopy: false, Dedup: false, Debug: false, Trace: false, } return cfg } // Запуск утилиты // TODO: Поправить парсинг аргументов из консоли func Init(args []string) (*clap.Results, error) { cfg := setDefault() // Импорт параметров по умолчанию var ( results *clap.Results // Массив результатов err error ) // Получение аргументов if results, err = clap.Parse(args, cfg); err != nil { return nil, err } return results, nil } func Run(results *clap.Results) { }