1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-07 23:16:47 +00:00

TUNASYNC_WORKING_DIR and TUNASYNC_UPSTREAM_URL as env to shell provider

这个提交包含在:
bigeagle
2014-11-22 19:26:39 +08:00
父节点 bf86cdafbf
当前提交 680940dfe3
共有 6 个文件被更改,包括 31 次插入22 次删除

查看文件

@@ -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)

查看文件

@@ -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):

查看文件

@@ -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

查看文件

@@ -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]