MMPCreator
This commit is contained in:
1 parent
0dda2b1b0c
commit
8395783986
22 files changed
+2883
-460
No files matched your search
@@ -0,0 +1,101 @@
|
||||
import os
|
||||
import json
|
||||
|
||||
# --- Configuração de Caminhos Dinâmicos ---
|
||||
# Descobre o caminho absoluto do script que está sendo executado.
|
||||
# __file__ é uma variável especial do Python que contém o caminho para o arquivo atual.
|
||||
SCRIPT_PATH = os.path.abspath(__file__)
|
||||
|
||||
# Descobre o diretório onde o script está (ex: /.../mmpSearch/scripts/creation)
|
||||
SCRIPT_DIR = os.path.dirname(SCRIPT_PATH)
|
||||
|
||||
# Define a raiz do projeto subindo dois níveis de diretório (de 'creation' para 'scripts', e de 'scripts' para 'mmpSearch')
|
||||
PROJECT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..'))
|
||||
|
||||
print(f"Raiz do projeto detectada em: {PROJECT_ROOT}")
|
||||
|
||||
|
||||
# --- Configuração dos Manifestos ---
|
||||
# Os caminhos aqui são relativos à RAIZ DO PROJETO.
|
||||
CONFIGS = [
|
||||
{
|
||||
"source_dir": "src/samples",
|
||||
"output_file": "metadata/samples-manifest.json",
|
||||
"scan_type": "tree"
|
||||
},
|
||||
{
|
||||
"source_dir": "mmp",
|
||||
"output_file": "metadata/mmp-manifest.json",
|
||||
"scan_type": "list",
|
||||
"extensions": ['.mmp', '.mmpz']
|
||||
}
|
||||
]
|
||||
|
||||
def scan_directory_tree(path):
|
||||
"""
|
||||
Função recursiva que escaneia um diretório e constrói uma
|
||||
estrutura de dicionário (árvore) representando as pastas e arquivos.
|
||||
"""
|
||||
tree = {}
|
||||
if not os.path.isdir(path):
|
||||
return tree
|
||||
for item in os.listdir(path):
|
||||
full_path = os.path.join(path, item)
|
||||
if os.path.isdir(full_path):
|
||||
tree[item] = scan_directory_tree(full_path)
|
||||
else:
|
||||
# (CORREÇÃO) Volte a usar o objeto que o JavaScript espera.
|
||||
tree[item] = {"_isFile": True}
|
||||
return tree
|
||||
|
||||
def scan_directory_list(path, allowed_extensions):
|
||||
"""
|
||||
Função que escaneia um diretório e retorna uma lista simples
|
||||
de nomes de arquivos, filtrando por extensões permitidas.
|
||||
"""
|
||||
file_list = []
|
||||
if not os.path.isdir(path): # Adiciona verificação
|
||||
return file_list
|
||||
for item in os.listdir(path):
|
||||
full_path = os.path.join(path, item)
|
||||
if os.path.isfile(full_path) and any(item.lower().endswith(ext) for ext in allowed_extensions):
|
||||
file_list.append(item)
|
||||
return sorted(file_list)
|
||||
|
||||
# --- Execução Principal do Script ---
|
||||
if __name__ == "__main__":
|
||||
print("\nIniciando geração de arquivos de manifesto...")
|
||||
|
||||
for config in CONFIGS:
|
||||
# Monta os caminhos ABSOLUTOS usando a raiz do projeto
|
||||
source_dir_abs = os.path.join(PROJECT_ROOT, config["source_dir"])
|
||||
output_file_abs = os.path.join(PROJECT_ROOT, config["output_file"])
|
||||
scan_type = config["scan_type"]
|
||||
|
||||
print(f"\nProcessando '{config['source_dir']}' -> '{config['output_file']}'...")
|
||||
|
||||
if not os.path.isdir(source_dir_abs):
|
||||
print(f"AVISO: A pasta de origem '{source_dir_abs}' não foi encontrada. Arquivo não será gerado.")
|
||||
continue
|
||||
|
||||
result_data = None
|
||||
try:
|
||||
if scan_type == "tree":
|
||||
result_data = scan_directory_tree(source_dir_abs)
|
||||
elif scan_type == "list":
|
||||
extensions = config.get("extensions", [])
|
||||
result_data = scan_directory_list(source_dir_abs, extensions)
|
||||
|
||||
if result_data is not None:
|
||||
# Garante que o diretório de saída exista antes de salvar
|
||||
output_dir = os.path.dirname(output_file_abs)
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
with open(output_file_abs, 'w', encoding='utf-8') as f:
|
||||
json.dump(result_data, f, indent=2, ensure_ascii=False)
|
||||
print(f"SUCESSO: Arquivo '{output_file_abs}' gerado!")
|
||||
|
||||
except Exception as e:
|
||||
print(f"ERRO inesperado ao processar a pasta '{source_dir_abs}': {e}")
|
||||
|
||||
print("\nGeração de manifestos concluída.")
|
||||
Reference in new issue
Block a user