# Authors: see git history
#
# Copyright (c) 2010 Authors
# Licensed under the GNU GPL version 3.0 or later.  See the file LICENSE for details.

import os
import sys
from glob import glob

from flask import Blueprint, jsonify, request

from ..utils import get_bundled_dir, guess_inkscape_config_path

install = Blueprint('install', __name__)


@install.route('/palettes', methods=["POST"])
def palettes():
    try:
        base_path = request.json.get('path') or guess_inkscape_config_path()
        path = os.path.join(base_path, 'palettes')
        src_dir = get_bundled_dir('palettes')
        copy_files(glob(os.path.join(src_dir, "*")), path)
    except Exception as exc:
        return jsonify({"error": str(exc)}), 500

    return jsonify({"status": "success"})


if sys.platform == "win32":
    # If we try to just use shutil.copy it says the operation requires elevation.
    def copy_files(files, dest):
        import pythoncom
        import winutils

        pythoncom.CoInitialize()

        if not os.path.exists(dest):
            os.makedirs(dest)

        winutils.copy(files, dest)
else:
    def copy_files(files, dest):
        import shutil

        if not os.path.exists(dest):
            os.makedirs(dest)

        for palette_file in files:
            shutil.copy(palette_file, dest)


@install.route('/default-path')
def default_path():
    return guess_inkscape_config_path()
