|
13 | 13 | from chatmaild.config import Config, read_config |
14 | 14 | from pyinfra import facts, host, logger |
15 | 15 | from pyinfra.api import FactBase |
16 | | -from pyinfra.facts.files import File |
| 16 | +from pyinfra.facts.files import File, Sha256File |
17 | 17 | from pyinfra.facts.server import Sysctl |
18 | 18 | from pyinfra.facts.systemd import SystemdEnabled |
19 | 19 | from pyinfra.operations import apt, files, pip, server, systemd |
@@ -569,16 +569,19 @@ def deploy_iroh_relay(config) -> None: |
569 | 569 | packages=["curl"], |
570 | 570 | ) |
571 | 571 |
|
572 | | - server.shell( |
573 | | - name="Download iroh-relay", |
574 | | - commands=[ |
575 | | - f"(echo '{sha256sum} /usr/local/bin/iroh-relay' | sha256sum -c) || (curl -L {url} | gunzip | tar -x -f - ./iroh-relay -O >/usr/local/bin/iroh-relay.new && (echo '{sha256sum} /usr/local/bin/iroh-relay.new' | sha256sum -c) && mv /usr/local/bin/iroh-relay.new /usr/local/bin/iroh-relay)", |
576 | | - "chmod 755 /usr/local/bin/iroh-relay", |
577 | | - ], |
578 | | - ) |
579 | | - |
580 | 572 | need_restart = False |
581 | 573 |
|
| 574 | + existing_sha256sum = host.get_fact(Sha256File, "/usr/local/bin/iroh-relay") |
| 575 | + if existing_sha256sum != sha256sum: |
| 576 | + server.shell( |
| 577 | + name="Download iroh-relay", |
| 578 | + commands=[ |
| 579 | + f"(curl -L {url} | gunzip | tar -x -f - ./iroh-relay -O >/usr/local/bin/iroh-relay.new && (echo '{sha256sum} /usr/local/bin/iroh-relay.new' | sha256sum -c) && mv /usr/local/bin/iroh-relay.new /usr/local/bin/iroh-relay)", |
| 580 | + "chmod 755 /usr/local/bin/iroh-relay", |
| 581 | + ], |
| 582 | + ) |
| 583 | + need_restart = True |
| 584 | + |
582 | 585 | systemd_unit = files.put( |
583 | 586 | name="Upload iroh-relay systemd unit", |
584 | 587 | src=importlib.resources.files(__package__).joinpath("iroh-relay.service"), |
|
0 commit comments