DeL-TaiseiOzaki
first commit
227e75d
raw
history blame
2.25 kB
import sys
from pathlib import Path
from config.settings import Settings
from core.git_manager import GitManager
from core.file_scanner import FileScanner
from utils.file_writer import FileWriter
def main():
# コマンドライン引数からパスを取得
if len(sys.argv) != 2:
print("Usage: python main.py <github_url or directory_path>")
return 1
target_path = sys.argv[1]
timestamp = Settings.get_timestamp()
output_file = Settings.get_output_file(timestamp)
# GitHubのURLかローカルパスかを判定
is_github = target_path.startswith(('http://', 'https://')) and 'github.com' in target_path
try:
if is_github:
# GitHubリポジトリの場合
clone_dir = Settings.get_clone_dir(timestamp)
print(f"Cloning repository: {target_path}")
git_manager = GitManager(target_path, clone_dir)
git_manager.clone_repository()
scanner = FileScanner(clone_dir)
cleanup_needed = True
else:
# ローカルディレクトリの場合
target_dir = Path(target_path)
if not target_dir.exists():
print(f"Error: Directory not found: {target_dir}")
return 1
scanner = FileScanner(target_dir)
cleanup_needed = False
# ファイルスキャンと保存
print("Scanning files...")
files = scanner.scan_files()
print(f"Writing contents to {output_file}")
writer = FileWriter(output_file)
writer.write_contents(files)
print(f"Found {len(files)} files")
print(f"Results saved to {output_file}")
except Exception as e:
print(f"Error: {e}")
return 1
finally:
# GitHubリポジトリの場合はクリーンアップ
if is_github and cleanup_needed and 'git_manager' in locals():
try:
git_manager.cleanup()
print("Cleanup completed")
except Exception as e:
print(f"Cleanup error: {e}")
return 0
if __name__ == "__main__":
exit(main())