diff --git a/README.md b/README.md index 7ee0aa8..23b8670 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ This repo has a simple sync script with a few features: - after install commands - deploy script +## Deployment +To import the dotfiles run: +`curl --proto '=https' --tlsv1.2 -sSf https://git.faulty.nl/didier/dotfiles/-/raw/main/lib/deploy.sh | sh` + ## Notes - `gpackage.list` This is a list with packages only installed if the `-g` or `--graphical` flag is used. \ No newline at end of file diff --git a/lib/Dockerfile b/lib/Dockerfile new file mode 100644 index 0000000..82e454e --- /dev/null +++ b/lib/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.10-alpine + +RUN apk add git + +COPY . /app + +WORKDIR /app + +# if no remote then add remote or otherwrite +RUN git remote get-url origin || git remote add origin https://git.faulty.nl/didier/dotfiles && git remote set-url origin https://git.faulty.nl/didier/dotfiles + +ENTRYPOINT ["python3", "/app/lib/docker.py"] \ No newline at end of file diff --git a/lib/docker.py b/lib/docker.py new file mode 100644 index 0000000..4bd925e --- /dev/null +++ b/lib/docker.py @@ -0,0 +1,30 @@ +# any HTTP request returns the contents of: ./lib/deploy.sh +# If the deploy script is older then a day, do a git pull + +from http.server import BaseHTTPRequestHandler, HTTPServer +import subprocess +import os +import time + +class handler(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header('Content-type','text/plain') + self.end_headers() + if (time.time() - os.path.getmtime('./lib/deploy.sh') > 86400): + subprocess.call(['git', 'pull']) + with open('./lib/deploy.sh') as f: + self.wfile.write(bytes(f.read(), 'utf-8')) + + +def main(): + try: + server = HTTPServer(('', 80), handler) + print('started httpserver...') + server.serve_forever() + except KeyboardInterrupt: + print('^C received, shutting down the web server') + server.socket.close() + +if __name__ == '__main__': + main() \ No newline at end of file