Prechádzať zdrojové kódy

TUNASYNC_WORKING_DIR and TUNASYNC_UPSTREAM_URL as env to shell provider

bigeagle 10 rokov pred
rodič
commit
680940dfe3

+ 2 - 1
examples/shell_provider.sh

@@ -1,5 +1,6 @@
 #!/bin/bash
-echo $TUNASYNC_LOCAL_DIR
+echo $TUNASYNC_WORKING_DIR
 echo $TUNASYNC_LOG_FILE
+echo $TUNASYNC_UPSTREAM_URL
 sleep 5
 exit 1

+ 1 - 1
examples/tunasync.conf

@@ -15,7 +15,6 @@ ctrl_addr = "/tmp/tunasync.sock"
 [btrfs]
 service_dir = "{mirror_root}/_current/{mirror_name}"
 working_dir = "{mirror_root}/_working/{mirror_name}"
-gc_root = "{mirror_root}/_garbage/"
 gc_dir = "{mirror_root}/_garbage/_gc_{mirror_name}_{{timestamp}}"
 
 # [[mirrors]]
@@ -43,6 +42,7 @@ local_dir = "/mnt/sdb1/mirror/archlinux/current/"
 name = "arch4"
 provider = "shell"
 command = "./shell_provider.sh"
+upstream = "https://pypi.python.org/"
 # log_file = "/tmp/arch4-{date}.log"
 use_btrfs = false
 

+ 2 - 0
tunasync/jobs.py

@@ -31,6 +31,8 @@ def run_job(sema, child_q, manager_q, provider, **settings):
         status = "syncing"
         manager_q.put(("UPDATE", (provider.name, status)))
         ctx = {}   # put context info in it
+        ctx['current_dir'] = provider.local_dir
+
         try:
             for hook in provider.hooks:
                 hook.before_job(provider=provider, ctx=ctx)

+ 1 - 1
tunasync/loglimit.py

@@ -56,7 +56,7 @@ class LogLimitHook(JobHook):
                 sh.mv(log_file, log_file_save)
             except:
                 pass
-            self.create_lin(log_link, log_file_save)
+            self.create_link(log_link, log_file_save)
 
     def ensure_log_dir(self, log_dir):
         if not os.path.exists(log_dir):

+ 18 - 17
tunasync/mirror_config.py

@@ -60,26 +60,27 @@ class MirrorConfig(object):
     def to_provider(self, hooks=[]):
         if self.provider == "rsync":
             provider = RsyncProvider(
-                self.name,
-                self.upstream,
-                self.local_dir,
-                self.log_dir,
-                self.use_ipv6,
-                self.password,
-                self.exclude_file,
-                self.log_file,
-                self.interval,
-                hooks,
+                name=self.name,
+                upstream_url=self.upstream,
+                local_dir=self.local_dir,
+                log_dir=self.log_dir,
+                useIPv6=self.use_ipv6,
+                password=self.password,
+                exclude_file=self.exclude_file,
+                log_file=self.log_file,
+                interval=self.interval,
+                hooks=hooks,
             )
         elif self.options["provider"] == "shell":
             provider = ShellProvider(
-                self.name,
-                self.command,
-                self.local_dir,
-                self.log_dir,
-                self.log_file,
-                self.interval,
-                hooks
+                name=self.name,
+                command=self.command,
+                upstream_url=self.upstream,
+                local_dir=self.local_dir,
+                log_dir=self.log_dir,
+                log_file=self.log_file,
+                interval=self.interval,
+                hooks=hooks
             )
 
         return provider

+ 7 - 2
tunasync/mirror_provider.py

@@ -83,7 +83,9 @@ class RsyncProvider(MirrorProvider):
     def run(self, ctx={}):
         _args = self.options
         _args.append(self.upstream_url)
-        _args.append(self.local_dir)
+
+        working_dir = ctx.get("current_dir", self.local_dir)
+        _args.append(working_dir)
 
         log_file = self.get_log_file(ctx)
         new_env = os.environ.copy()
@@ -96,11 +98,12 @@ class RsyncProvider(MirrorProvider):
 
 class ShellProvider(MirrorProvider):
 
-    def __init__(self, name, command, local_dir, log_dir,
+    def __init__(self, name, command, upstream_url, local_dir, log_dir,
                  log_file="/dev/null", interval=120, hooks=[]):
 
         super(ShellProvider, self).__init__(name, local_dir, log_dir, log_file,
                                             interval, hooks)
+        self.upstream_url = str(upstream_url)
         self.command = command.split()
 
     def run(self, ctx={}):
@@ -110,6 +113,8 @@ class ShellProvider(MirrorProvider):
         new_env = os.environ.copy()
         new_env["TUNASYNC_MIRROR_NAME"] = self.name
         new_env["TUNASYNC_LOCAL_DIR"] = self.local_dir
+        new_env["TUNASYNC_WORKING_DIR"] = ctx.get("current_dir", self.local_dir)
+        new_env["TUNASYNC_UPSTREAM_URL"] = self.upstream_url
         new_env["TUNASYNC_LOG_FILE"] = log_file
 
         _cmd = self.command[0]