project_scanner

0

Описание

Утилита командной строки на Go для сканирования директории проекта, сбора информации о его структуре, именах файлов и их содержимом. Результаты сохраняются в текстовый файл.

Языки

  • Go100%
10 месяцев назад
10 месяцев назад
README.md

Сканер структуры и содержимого проекта на Go

Утилита командной строки на Go для сканирования директории проекта, сбора информации о его структуре, именах файлов и их содержимом. Результаты сохраняются в текстовый файл.

Основные возможности

  • Полное сканирование проекта: По умолчанию сканирует указанную корневую директорию проекта или родительскую директорию от места запуска скрипта.
  • Выборочное сканирование директорий: Позволяет указать одну или несколько конкретных директорий внутри проекта для сканирования с помощью флага
    -dirs
    .
  • Игнорирование специфичных файлов и директорий:
    • Автоматически пропускает директории
      .git
      ,
      .vscode
      ,
      .idea
      .
    • Игнорирует директорию, в которой находится сам исполняемый файл сканера (если она является поддиректорией сканируемого проекта).
    • Игнорирует сам исполняемый файл сканера.
    • Игнорирует собственный файл отчета (
      project_structure*.txt
      ).
  • Детализированный отчет: Генерирует текстовый файл (
    project_structure.txt
    или с инкрементальным суффиксом), содержащий:
    • Общую информацию о сканировании (целевая директория, время генерации).
    • Схематичное древовидное отображение структуры проекта с использованием псевдографики.
    • Детальное содержимое каждого текстового файла (для бинарных файлов выводится заглушка
      [Бинарный файл]
      ).
  • Автоматическое именование файлов отчета: Если файл отчета с именем
    project_structure.txt
    уже существует, новый файл будет создан с инкрементальным суффиксом (например,
    project_structure_1.txt
    ,
    project_structure_2.txt
    и т.д.).
  • Кроссплатформенность: Будучи написанным на Go, скрипт компилируется в один исполняемый файл, работающий на различных операционных системах без дополнительных зависимостей.

Начало работы

1. Требования

  • Установленный Go (версия 1.16+ рекомендуется).

2. Подготовка файла

  • Создайте отдельную директорию для сканера (например,
    scanner_tool
    ).
  • Поместите файл
    project_scanner.go
    в эту созданную директорию.
  • Рекомендация по расположению: Для корректной работы автоматического определения пути к проекту, лучше всего размещать директорию сканера на одном уровне с корневой директорией сканируемого проекта (например,
    project_A/
    и
    scanner_tool/
    в одной папке) или как непосредственную поддиректорию проекта (например,
    my_project/scanner_tool/
    ).

3. Запуск с
go run
(Рекомендуется)

Это основной и самый простой способ запуска сканера, не требующий предварительной компиляции.

  1. Откройте терминал в директории, где находится
    project_scanner.go
    .
  2. Выполните команду:
    Подробное описание флагов и больше примеров смотрите в разделе "Флаги командной строки и Примеры использования" ниже.

4. Сборка исполняемого файла (Опционально)

Если вы хотите создать отдельный исполняемый файл:

  1. Убедитесь, что выполнены шаги "1. Требования" и "2. Подготовка файла".
  2. В терминале (в директории с
    project_scanner.go
    ) выполните:
    Это создаст исполняемый файл
    project_scanner
    (или
    project_scanner.exe
    для Windows).
  3. Затем вы можете запускать этот файл напрямую:
    ./project_scanner [флаги]
    .

Флаги командной строки и Примеры использования

Флаги командной строки:

  • -path <путь>
    : (Опционально) Указывает путь к корневой директории проекта, который нужно сканировать.
    • Если не указан, скрипт попытается сканировать родительскую директорию от текущей рабочей директории (полезно, если сканер лежит в подпапке проекта). Если это не удается, будет сканирована текущая рабочая директория.
  • -dirs "<дир1>,<дир2/поддир3>,..."
    : (Опционально) Список директорий (относительно корневой директории проекта), которые нужно включить в сканирование. Указываются через запятую. Пробелы вокруг запятых игнорируются.
    • Если флаг указан и содержит валидные пути, сканируются только эти директории и их содержимое.
    • Если флаг не указан, или все указанные пути невалидны/не найдены, сканируется весь проект.

Примеры использования:

  1. Сканирование всего проекта (сканер в корне проекта или

    -path
    указывает на корень): Предположим,
    project_scanner
    находится в
    /path/to/your/project/
    .

  2. Сканирование всего проекта (сканер в поддиректории, например,

    tools/
    ): Предположим,
    project_scanner
    находится в
    /path/to/your/project/tools/
    . Запуск из
    tools/
    :

    Или явно указать путь к проекту:

  3. Сканирование только указанных директорий (

    src
    и
    docs/api
    ):

  4. Использование с

    go run
    (для быстрой проверки без сборки): Находясь в директории с
    project_scanner.go
    :

Формат файла отчета (
project_structure.txt
)

Файл отчета содержит следующие секции:

  1. Заголовок:
    • "Сканирование структуры проекта"
    • "Целевая директория: [путь к сканируемой корневой папке]"
    • "Сгенерировано: [дата и время сканирования]"
  2. Структура проекта (схематично):
    • Древовидное представление структуры директорий и файлов с использованием псевдографики.
    • Иконки:
      📁
      для директорий,
      📄
      для файлов.
    • Пример:
      📁 ИмяПроекта/ (Корень проекта) ├─ 📁 docs/ │ └─ 📄 README.md ├─ 📁 src/ │ ├─ 📁 components/ │ │ └─ 📄 Button.js │ └─ 📄 main.js └─ 📄 package.json
  3. Детальное содержимое файлов:
    • Для каждого текстового файла в сканируемых директориях:
      • 📄 Имя файла: [имя]
      • Относительный путь: [путь от корня проекта]
      • ----------------------------------------
      • Содержимое файла:
      • ----------------------------------------
      • [содержимое файла]
      • ----------------------------------------
    • Для бинарных файлов вместо содержимого выводится
      [Бинарный файл]
      .

Файл отчета создается в той же директории, из которой был запущен скрипт сканера.