mirror of
https://github.com/vvzvlad/vestasync.git
synced 2024-12-25 19:51: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]
|
||||
Description=Script triggered by file changes in a folder (including subfolders)
|
||||
Description=Main pushgit
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/pushgit_inotify.sh
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
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,
|
||||
title: "Auto push on files changed"
|
||||
},
|
||||
autopush_timer: {
|
||||
type: "switch",
|
||||
value: false,
|
||||
title: "Auto push every day"
|
||||
},
|
||||
push_now: {
|
||||
type: "pushbutton",
|
||||
value: false,
|
||||
@ -70,15 +65,7 @@ function _update_vestasync() {
|
||||
}
|
||||
});
|
||||
|
||||
runShellCommand("systemctl is-active pushgit_inotify.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", {
|
||||
runShellCommand("systemctl is-active pushgit_inotify_special.service", {
|
||||
captureOutput: true,
|
||||
exitCallback: function (exitCode, capturedOutput) {
|
||||
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", {
|
||||
whenChanged: "vestasync/autopush_inotify",
|
||||
then: function (newValue, devName, cellName) {
|
||||
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();
|
||||
} else {
|
||||
runShellCommand("systemctl stop pushgit_inotify.service ; systemctl disable pushgit_inotify.service");
|
||||
runShellCommand("systemctl stop pushgit_inotify_special.service");
|
||||
_update_vestasync();
|
||||
}
|
||||
}
|
||||
@ -133,9 +108,7 @@ defineRule("_vestasync_push", {
|
||||
whenChanged: "vestasync/push_now",
|
||||
then: function (newValue, devName, cellName) {
|
||||
if (dev.vestasync.push_now) {
|
||||
runShellCommand("systemctl start pushgit.service");
|
||||
dev.vestasync.push_now = false;
|
||||
_update_vestasync();
|
||||
runShellCommand("/usr/local/bin/pushgit.sh");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
32
vestasync.py
32
vestasync.py
@ -141,35 +141,47 @@ def create_automac_systemd(c):
|
||||
|
||||
def create_autogit_systemd(c):
|
||||
#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 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
|
||||
'./files/pushgit.sh': '/usr/local/bin/pushgit.sh',
|
||||
'./files/pushgit_inotify.sh': '/usr/local/bin/pushgit_inotify.sh',
|
||||
'./files/pushgit_inotify.service': '/etc/systemd/system/pushgit_inotify.service',
|
||||
'./files/pushgit.service': '/etc/systemd/system/pushgit.service',
|
||||
'./files/pushgit.timer': '/etc/systemd/system/pushgit.timer'
|
||||
'./files/pushgit/pushgit.sh': '/usr/local/bin/pushgit.sh',
|
||||
'./files/pushgit/pushgit_inotify.sh': '/usr/local/bin/pushgit_inotify.sh',
|
||||
'./files/pushgit/pushgit_inotify.service': '/etc/systemd/system/pushgit_inotify.service',
|
||||
'./files/pushgit/pushgit_run_on_start.timer': '/etc/systemd/system/pushgit_run_on_start.timer',
|
||||
'./files/pushgit/pushgit_inotify_special.service': '/etc/systemd/system/pushgit_inotify_special.service',
|
||||
}
|
||||
|
||||
for local_path, remote_path in file_paths.items():
|
||||
c.put(local_path, remote_path)
|
||||
c.run(f"chmod +x {remote_path}")
|
||||
|
||||
#reload
|
||||
print("Autogit: reload configs")
|
||||
c.run("systemctl daemon-reload")
|
||||
|
||||
#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}')
|
||||
|
||||
print("Autogit: start inotify")
|
||||
for service in ['pushgit_inotify_special.service']:
|
||||
c.run(f'systemctl start {service}')
|
||||
|
||||
|
||||
#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()
|
||||
enabled = c.run(f'systemctl is-enabled {service} || true', hide=True).stdout.strip()
|
||||
print(f"{service}: {active}, {enabled}")
|
||||
|
Loading…
Reference in New Issue
Block a user