#!/usr/bin/python from distutils.sysconfig import parse_makefile import os import shutil from gi.repository import Gio from gi.repository import GLib shell_dir = os.path.abspath(os.path.dirname(__file__)) scripts_dir = os.path.dirname(shell_dir) root_dir = os.path.dirname(scripts_dir) source_dir = os.path.join(root_dir, "source") build_dir = os.path.join(root_dir, "build") monitors = [] def install(file): dir = os.path.dirname(file.get_path()) relative_path = os.path.relpath(dir, source_dir) makefile_path = os.path.join(build_dir, relative_path, "Makefile") makefile = parse_makefile(makefile_path) for variable in makefile: if variable.endswith("_PYTHON"): dir_variable = "%sdir" % variable.replace("_PYTHON", "") install_dir = makefile[dir_variable] shutil.copy(file.get_path(), install_dir) def changed_cb(monitor, file, other_file, event_flags): if event_flags == Gio.FileMonitorEvent.CHANGED: if file.get_path().endswith(".py"): install(file) for root, dirs, files in os.walk(os.getcwd()): for dir in dirs: file = Gio.File.new_for_path(os.path.join(root, dir)) monitor = file.monitor(Gio.FileMonitorFlags.NONE, None) monitor.connect("changed", changed_cb) monitors.append(monitor) main_loop = GLib.MainLoop() main_loop.run()