init commit

This commit is contained in:
Grigoryev Ilya Alekseevich
2026-03-31 01:08:22 +05:00
commit c28cb8d48a
5 changed files with 123 additions and 0 deletions

69
internal/cmd/cmd.go Normal file
View File

@@ -0,0 +1,69 @@
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) {
}