# Copyright (c) 2015 Ultimaker B.V.
# Copyright (c) 2013 David Braam
# Uranium is released under the terms of the AGPLv3 or higher.

from UM.Logger import Logger
from UM.SaveFile import SaveFile
from UM.Settings.Profile import Profile
from UM.Settings.ProfileWriter import ProfileWriter

##  Writes profiles to Cura's own profile format with config files.
class CuraProfileWriter(ProfileWriter):
    ##  Writes a profile to the specified file path.
    #
    #   \param path \type{string} The file to output to.
    #   \param profile \type{Profile} The profile to write to that file.
    #   \return \code True \endcode if the writing was successful, or \code
    #   False \endcode if it wasn't.
    def write(self, path, profile):
        serialised = profile.serialise()
        try:
            with SaveFile(path, "wt", -1, "utf-8") as f: #Open the specified file.
                f.write(serialised)
        except Exception as e:
            Logger.log("e", "Failed to write profile to %s: %s", path, str(e))
            return False
        return True
