feat: unlink repo [backend]

This commit is contained in:
Sam Chau
2024-09-03 18:58:35 +09:30
parent dbbad3816f
commit f35ff413eb
3 changed files with 43 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ from .regex import bp as regex_bp
from .format import bp as format_bp
from .settings import bp as settings_bp
from .profile import bp as profile_bp
from .git.unlink_repo import repo_bp
import os
REGEX_DIR = os.path.join('data', 'db', 'regex_patterns')
@@ -13,19 +14,20 @@ PROFILE_DIR = os.path.join('data', 'db', 'profiles')
def create_app():
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
# Initialize directories to avoid issues with non-existing directories
initialize_directories()
# Register Blueprints
app.register_blueprint(regex_bp)
app.register_blueprint(format_bp)
app.register_blueprint(settings_bp)
app.register_blueprint(profile_bp)
app.register_blueprint(repo_bp)
return app
def initialize_directories():
os.makedirs(REGEX_DIR, exist_ok=True)
os.makedirs(FORMAT_DIR, exist_ok=True)
os.makedirs(PROFILE_DIR, exist_ok=True)
os.makedirs(PROFILE_DIR, exist_ok=True)

View File

@@ -0,0 +1,35 @@
import os
import shutil
from flask import Blueprint, jsonify
import logging
logger = logging.getLogger(__name__)
repo_bp = Blueprint('repository', __name__, url_prefix='/repository')
def unlink_repository(settings_manager):
try:
# Remove the .git folder
git_folder = os.path.join(settings_manager.repo_path, '.git')
if os.path.exists(git_folder):
shutil.rmtree(git_folder)
logger.info(f"Removed .git folder from {settings_manager.repo_path}")
# Update settings
settings_manager.settings.pop('gitRepo', None)
settings_manager.settings.pop('gitToken', None)
settings_manager.save_settings(settings_manager.settings)
logger.info("Updated settings to remove git information")
return True, "Repository successfully unlinked"
except Exception as e:
logger.error(f"Error unlinking repository: {str(e)}", exc_info=True)
return False, f"Error unlinking repository: {str(e)}"
@repo_bp.route('/unlink', methods=['POST'])
def unlink_repo():
success, message = unlink_repository(repo_bp.settings_manager)
if success:
return jsonify({'success': True, 'message': message}), 200
else:
return jsonify({'success': False, 'error': message}), 400

View File

@@ -9,6 +9,7 @@ import logging
from datetime import datetime
import json
import requests
from .git.unlink_repo import repo_bp, unlink_repository
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('git').setLevel(logging.WARNING)
@@ -572,6 +573,7 @@ class SettingsManager:
settings_manager = SettingsManager()
repo_bp.settings_manager = settings_manager
@bp.route('', methods=['GET'])
def handle_settings():