mirror of
https://github.com/vvzvlad/vestasync.git
synced 2024-12-26 20:21:00 +03:00
refactoting services and remove upload by timer
This commit is contained in:
parent
fe07f2d180
commit
db872ae533
@ -1,9 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Pull git changes
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=/usr/local/bin/pullgit.sh
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
git config --global user.name vestasync_wb_$(hostname)
|
|
||||||
git config --global user.email "vestasync@fake.mail"
|
|
||||||
cd /mnt/data/etc/
|
|
||||||
git fetch > /dev/null 2>&1 || true
|
|
||||||
git pull > /dev/null 2>&1 || true
|
|
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Run pullgit.service every 10 min
|
|
||||||
|
|
||||||
[Timer]
|
|
||||||
OnCalendar=*:0/10
|
|
||||||
Persistent=true
|
|
||||||
Unit=pullgit.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=timers.target
|
|
@ -1,9 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Push git changes
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=/usr/local/bin/pushgit.sh
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
apt-mark showmanual > /mnt/data/etc/vestasync/packages
|
|
||||||
echo $(hostname) > /mnt/data/etc/vestasync/hostname
|
|
||||||
export GIT_AUTHOR_NAME="vestasync_wb_$(hostname)"
|
|
||||||
export GIT_COMMITTER_NAME="vestasync_wb_$(hostname)"
|
|
||||||
export LC_TIME=en_GB.UTF-8
|
|
||||||
cd /mnt/data/etc/ > /dev/null 2>&1 || true
|
|
||||||
git add . > /dev/null 2>&1 || true
|
|
||||||
git commit -m "$(date +"%Y-%m-%d %H:%M:%S %z %Z")" > /dev/null 2>&1 || true
|
|
||||||
git push -u origin master > /dev/null 2>&1 || true
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Run pushgit.service daily
|
|
||||||
|
|
||||||
[Timer]
|
|
||||||
OnCalendar=daily
|
|
||||||
Persistent=true
|
|
||||||
Unit=pushgit.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=timers.target
|
|
7
files/pushgit/pushgit.sh
Normal file
7
files/pushgit/pushgit.sh
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
apt-mark showmanual > /mnt/data/etc/vestasync/packages
|
||||||
|
echo $(hostname) > /mnt/data/etc/vestasync/hostname
|
||||||
|
cd /mnt/data/etc/
|
||||||
|
git add .
|
||||||
|
git commit -m "$(date +"%Y-%m-%d %H:%M:%S %z %Z")"
|
||||||
|
git push -u origin master
|
@ -1,9 +1,9 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Script triggered by file changes in a folder (including subfolders)
|
Description=Main pushgit
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Type=simple
|
||||||
ExecStart=/usr/local/bin/pushgit_inotify.sh
|
ExecStart=/usr/local/bin/pushgit_inotify.sh
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
12
files/pushgit/pushgit_inotify.sh
Normal file
12
files/pushgit/pushgit_inotify.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
export GIT_AUTHOR_NAME="vestasync_wb_$(hostname)"
|
||||||
|
export GIT_COMMITTER_NAME="vestasync_wb_$(hostname)"
|
||||||
|
export LC_TIME=en_GB.UTF-8
|
||||||
|
EXCLUDE_PATTERN='(^|\/)(\.git|packages|hostname|wb-mqtt-mbgate\.conf|resolv\.conf)($|\/)'
|
||||||
|
inotifywait -m -r -e close_write,move,create,delete --exclude "$EXCLUDE_PATTERN" --format '%w%f' /mnt/data/etc | while read FILE
|
||||||
|
do
|
||||||
|
/usr/local/bin/pushgit.sh
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
12
files/pushgit/pushgit_inotify_special.service
Normal file
12
files/pushgit/pushgit_inotify_special.service
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Script triggered by file changes in a folder (including subfolders)
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=systemctl stop pushgit_inotify.service
|
||||||
|
ExecStart=systemctl start pushgit_inotify.service
|
||||||
|
ExecStop=systemctl stop pushgit_inotify.service
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
files/pushgit/pushgit_run_on_start.timer
Normal file
9
files/pushgit/pushgit_run_on_start.timer
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Run pushgit.service on start
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=180
|
||||||
|
Unit=pushgit_inotify_special.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
EXCLUDE_PATTERN='(^|/)(\.git($|/)|wb-mqtt-mbgate\.conf$|resolv\.conf$)'
|
|
||||||
|
|
||||||
inotifywait -m -r -e close_write,move,create,delete --exclude "$EXCLUDE_PATTERN" --format '%w%f' /mnt/data/etc | while read FILE
|
|
||||||
do
|
|
||||||
echo $(hostname) > /mnt/data/etc/vestasync/hostname
|
|
||||||
export GIT_AUTHOR_NAME="vestasync_wb_$(hostname)_inotify"
|
|
||||||
export GIT_COMMITTER_NAME="vestasync_wb_$(hostname)_inotify"
|
|
||||||
export LC_TIME=en_GB.UTF-8
|
|
||||||
cd /mnt/data/etc/
|
|
||||||
git add .
|
|
||||||
git commit -m "$(date +"%Y-%m-%d %H:%M:%S %z %Z")" # > /dev/null 2>&1 || true
|
|
||||||
git push -u origin master
|
|
||||||
done
|
|
@ -16,11 +16,6 @@ defineVirtualDevice("vestasync", {
|
|||||||
value: false,
|
value: false,
|
||||||
title: "Auto push on files changed"
|
title: "Auto push on files changed"
|
||||||
},
|
},
|
||||||
autopush_timer: {
|
|
||||||
type: "switch",
|
|
||||||
value: false,
|
|
||||||
title: "Auto push every day"
|
|
||||||
},
|
|
||||||
push_now: {
|
push_now: {
|
||||||
type: "pushbutton",
|
type: "pushbutton",
|
||||||
value: false,
|
value: false,
|
||||||
@ -70,15 +65,7 @@ function _update_vestasync() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
runShellCommand("systemctl is-active pushgit_inotify.service", {
|
runShellCommand("systemctl is-active pushgit_inotify_special.service", {
|
||||||
captureOutput: true,
|
|
||||||
exitCallback: function (exitCode, capturedOutput) {
|
|
||||||
var isEnabled = capturedOutput.trim() === "active";
|
|
||||||
getControl("vestasync/autopush_inotify").setValue({ value: isEnabled, notify: false })
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
runShellCommand("systemctl is-active pushgit.timer", {
|
|
||||||
captureOutput: true,
|
captureOutput: true,
|
||||||
exitCallback: function (exitCode, capturedOutput) {
|
exitCallback: function (exitCode, capturedOutput) {
|
||||||
var isEnabled = capturedOutput.trim() === "active";
|
var isEnabled = capturedOutput.trim() === "active";
|
||||||
@ -100,28 +87,16 @@ function _update_vestasync() {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
defineRule("_vestasync_autopush_timer", {
|
|
||||||
whenChanged: "vestasync/autopush_timer",
|
|
||||||
then: function (newValue, devName, cellName) {
|
|
||||||
if (dev.vestasync.autopush_timer) {
|
|
||||||
runShellCommand("systemctl stop pushgit.timer ; systemctl disable pushgit.timer ; systemctl daemon-reload ; systemctl enable pushgit.timer ; systemctl start pushgit.timer");
|
|
||||||
_update_vestasync();
|
|
||||||
} else {
|
|
||||||
runShellCommand("systemctl stop pushgit.timer ; systemctl disable pushgit.timer");
|
|
||||||
_update_vestasync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
defineRule("_vestasync_autopush_inotify", {
|
defineRule("_vestasync_autopush_inotify", {
|
||||||
whenChanged: "vestasync/autopush_inotify",
|
whenChanged: "vestasync/autopush_inotify",
|
||||||
then: function (newValue, devName, cellName) {
|
then: function (newValue, devName, cellName) {
|
||||||
if (dev.vestasync.autopush_inotify) {
|
if (dev.vestasync.autopush_inotify) {
|
||||||
runShellCommand("systemctl stop pushgit_inotify.service ; systemctl disable pushgit_inotify.service ; systemctl daemon-reload ; systemctl enable pushgit_inotify.service ; systemctl start pushgit_inotify.service");
|
runShellCommand("systemctl start pushgit_inotify_special.service");
|
||||||
_update_vestasync();
|
_update_vestasync();
|
||||||
} else {
|
} else {
|
||||||
runShellCommand("systemctl stop pushgit_inotify.service ; systemctl disable pushgit_inotify.service");
|
runShellCommand("systemctl stop pushgit_inotify_special.service");
|
||||||
_update_vestasync();
|
_update_vestasync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,9 +108,7 @@ defineRule("_vestasync_push", {
|
|||||||
whenChanged: "vestasync/push_now",
|
whenChanged: "vestasync/push_now",
|
||||||
then: function (newValue, devName, cellName) {
|
then: function (newValue, devName, cellName) {
|
||||||
if (dev.vestasync.push_now) {
|
if (dev.vestasync.push_now) {
|
||||||
runShellCommand("systemctl start pushgit.service");
|
runShellCommand("/usr/local/bin/pushgit.sh");
|
||||||
dev.vestasync.push_now = false;
|
|
||||||
_update_vestasync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
32
vestasync.py
32
vestasync.py
@ -141,35 +141,47 @@ def create_automac_systemd(c):
|
|||||||
|
|
||||||
def create_autogit_systemd(c):
|
def create_autogit_systemd(c):
|
||||||
#disable
|
#disable
|
||||||
for service in ['pushgit.timer', 'pushgit_inotify.service']:
|
print("Autogit: stop and disable services")
|
||||||
|
for service in ['pushgit.timer',
|
||||||
|
'pushgit_inotify_special.service',
|
||||||
|
'pushgit_inotify.service',
|
||||||
|
'pushgit_run_on_start.timer' ]:
|
||||||
c.run(f'systemctl stop {service}', warn=True)
|
c.run(f'systemctl stop {service}', warn=True)
|
||||||
c.run(f'systemctl disable {service}', warn=True)
|
c.run(f'systemctl disable {service}', warn=True)
|
||||||
|
|
||||||
|
print("Autogit: Remove old files")
|
||||||
|
c.run(f'rm /etc/systemd/system/pushgit*', warn=True)
|
||||||
|
c.run(f'rm /usr/local/bin/pushgit*', warn=True)
|
||||||
|
|
||||||
#delete old files, copy new files, chmod +x
|
|
||||||
|
print("Autogit: copy new files, chmod +x")
|
||||||
file_paths = { #local path: remote path
|
file_paths = { #local path: remote path
|
||||||
'./files/pushgit.sh': '/usr/local/bin/pushgit.sh',
|
'./files/pushgit/pushgit.sh': '/usr/local/bin/pushgit.sh',
|
||||||
'./files/pushgit_inotify.sh': '/usr/local/bin/pushgit_inotify.sh',
|
'./files/pushgit/pushgit_inotify.sh': '/usr/local/bin/pushgit_inotify.sh',
|
||||||
'./files/pushgit_inotify.service': '/etc/systemd/system/pushgit_inotify.service',
|
'./files/pushgit/pushgit_inotify.service': '/etc/systemd/system/pushgit_inotify.service',
|
||||||
'./files/pushgit.service': '/etc/systemd/system/pushgit.service',
|
'./files/pushgit/pushgit_run_on_start.timer': '/etc/systemd/system/pushgit_run_on_start.timer',
|
||||||
'./files/pushgit.timer': '/etc/systemd/system/pushgit.timer'
|
'./files/pushgit/pushgit_inotify_special.service': '/etc/systemd/system/pushgit_inotify_special.service',
|
||||||
}
|
}
|
||||||
|
|
||||||
for local_path, remote_path in file_paths.items():
|
for local_path, remote_path in file_paths.items():
|
||||||
c.put(local_path, remote_path)
|
c.put(local_path, remote_path)
|
||||||
c.run(f"chmod +x {remote_path}")
|
c.run(f"chmod +x {remote_path}")
|
||||||
|
|
||||||
#reload
|
print("Autogit: reload configs")
|
||||||
c.run("systemctl daemon-reload")
|
c.run("systemctl daemon-reload")
|
||||||
|
|
||||||
#enable and start
|
#enable and start
|
||||||
for service in ['pushgit.timer', 'pushgit_inotify.service']:
|
print("Autogit: enable run on start")
|
||||||
|
for service in ['pushgit_run_on_start.timer']:
|
||||||
c.run(f'systemctl enable {service}')
|
c.run(f'systemctl enable {service}')
|
||||||
|
|
||||||
|
print("Autogit: start inotify")
|
||||||
|
for service in ['pushgit_inotify_special.service']:
|
||||||
c.run(f'systemctl start {service}')
|
c.run(f'systemctl start {service}')
|
||||||
|
|
||||||
|
|
||||||
#check statuses
|
#check statuses
|
||||||
for service in ['pushgit.timer', 'pushgit_inotify.service']:
|
for service in ['pushgit_run_on_start.timer', 'pushgit_inotify.service', 'pushgit_inotify_special.service']:
|
||||||
active = c.run(f'systemctl is-active {service} || true', hide=True).stdout.strip()
|
active = c.run(f'systemctl is-active {service} || true', hide=True).stdout.strip()
|
||||||
enabled = c.run(f'systemctl is-enabled {service} || true', hide=True).stdout.strip()
|
enabled = c.run(f'systemctl is-enabled {service} || true', hide=True).stdout.strip()
|
||||||
print(f"{service}: {active}, {enabled}")
|
print(f"{service}: {active}, {enabled}")
|
||||||
|
Loading…
Reference in New Issue
Block a user