diff options
-rw-r--r-- | .hgignore | 1 | ||||
-rw-r--r-- | module/plugins/hooks/LinuxFileEvents.py | 74 | ||||
-rwxr-xr-x | pyLoadCore.py | 2 |
3 files changed, 76 insertions, 1 deletions
@@ -9,6 +9,7 @@ syntax: glob *.project *.pydevproject Downloads/* +container/* Logs/* Plugins/DLC.py failed_links.txt diff --git a/module/plugins/hooks/LinuxFileEvents.py b/module/plugins/hooks/LinuxFileEvents.py new file mode 100644 index 000000000..f71521b33 --- /dev/null +++ b/module/plugins/hooks/LinuxFileEvents.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +""" + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. + + @author: mkaay + @interface-version: 0.1 +""" + +from module.plugins.Hook import Hook +import os + +class LinuxFileEvents(Hook): + def __init__(self, core): + Hook.__init__(self, core) + props = {} + props['name'] = "LinuxFileEvents" + props['version'] = "0.1" + props['description'] = """monitors files and directories for changes""" + props['author_name'] = ("mkaay") + props['author_mail'] = ("mkaay@mkaay.de") + self.props = props + + if not os.name == "posix": + return + + self.core.check_file("container", _("folder for container"), True) + self.core.check_install("pyinotify", _("pyinotify for LinuxFileEvents")) + + try: + import pyinotify + except: + return + wm = pyinotify.WatchManager() + + class FileChangeHandler(pyinotify.ProcessEvent): + def __init__(self, hook): + self.hook = hook + + def process_default(self, event): + self.hook.fileChangeEvent(event.path) + + notifier = pyinotify.ThreadedNotifier(wm, FileChangeHandler(self)) + notifier.start() + mask = pyinotify.IN_MODIFY | pyinotify.IN_CLOSE_WRITE | pyinotify.IN_MOVED_TO + wm.add_watch(os.path.join(self.core.path, "links.txt"), mask) + wm.add_watch(os.path.join(self.core.path, "container"), mask, rec=True, auto_add=True) + + def fileChangeEvent(self, path): + path = os.path.abspath(path) + if self.isValidContainer(path): + self.addNewFile(path) + + def isValidContainer(self, path): + ext = [".txt", ".dlc", ".ccf", ".rsdf"] + for e in ext: + if path.endswith(e): + return True + return False + + def addNewFile(self, path): + self.core.server_methods.add_package("Container", [path]) + diff --git a/pyLoadCore.py b/pyLoadCore.py index 30f025bbc..c0a3697c5 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -243,7 +243,7 @@ class Core(object): pipe = subprocess.PIPE
subprocess.Popen(check_name, stdout=pipe, stderr=pipe)
except:
- print "Install", legend
+ print _("Install %s") % legend
if essential: exit()
def check_file(self, check_names, description="", folder=False, empty=True, essential=False):
|