44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import sublime
|
||
import shutil
|
||
import subprocess
|
||
import os
|
||
|
||
def get_prettierd_path():
|
||
settings = sublime.load_settings("Prettierd.sublime-settings")
|
||
|
||
settings_path = settings.get("prettierd_path", "")
|
||
if settings_path:
|
||
return settings_path
|
||
|
||
# Default behavior when not specified
|
||
default_path = shutil.which("prettierd")
|
||
if default_path:
|
||
return default_path
|
||
|
||
sublime.error_message("prettierd executable not found.")
|
||
return None
|
||
|
||
def format_with_prettierd(content, file_path):
|
||
prettierd_path = get_prettierd_path()
|
||
if not prettierd_path:
|
||
message = "prettierd path not found."
|
||
print(message)
|
||
sublime.error_message(message)
|
||
return None
|
||
|
||
cmd = [prettierd_path, "--stdin-filepath", file_path]
|
||
|
||
try:
|
||
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=os.path.dirname(file_path))
|
||
formatted_code, error = process.communicate(input=content.encode('utf-8'))
|
||
except Exception as e:
|
||
sublime.error_message("Failed to execute prettierd: " + str(e))
|
||
return None
|
||
|
||
if process.returncode == 0:
|
||
return formatted_code.decode('utf-8')
|
||
else:
|
||
error_message = error.decode('utf-8') if error.decode('utf-8') else "Unknown error"
|
||
print(error_message)
|
||
sublime.error_message("Error formatting the file with prettierd: " + error_message)
|
||
return None |