From ae69c2fafe49c289010ccfc6bb5fe76cb7a41d37 Mon Sep 17 00:00:00 2001 From: Amritanshu Date: Sun, 30 Aug 2026 04:41:27 +0000 Subject: [PATCH] Frank refactoring part 1 --- ansible/files/build-frank.sh | 1 - ansible/files/frank.sh | 1 - ansible/playbook-frank.yml | 82 -------------- frank.sh | 9 -- frank/Dockerfile | 6 +- frank/Makefile | 28 +++++ {ansible => frank/ansible}/bake-pies.yml | 0 {ansible => frank/ansible}/files/config | 0 {ansible => frank/ansible}/files/frank.env | 0 .../ansible}/files/frank.service | 0 .../ansible}/files/leardal.service | 0 .../ansible}/files/nats-tunnel.service | 0 frank/ansible/hosts | 17 +++ frank/ansible/playbook.yml | 19 ++++ frank/ansible/roles/frank/tasks/main.yml | 57 ++++++++++ frank/ansible/roles/tunnels/tasks/main.yml | 32 ++++++ .../ansible/vars/devices/chd-bar.yml | 4 +- frank/ansible/vars/devices/chd1.yml | 5 + frank/ansible/vars/devices/chd2.yml | 5 + frank/ansible/vars/devices/mhl1.yml | 5 + frank/ansible/vars/devices/mhl2.yml | 5 + frank/ansible/vars/devices/mhl3.yml | 5 + frank/ansible/vars/devices/mhl4.yml | 5 + frank/ansible/vars/devices/moz1.yml | 5 + frank/ansible/vars/devices/moz2.yml | 5 + frank/ansible/vars/devices/pkl1.yml | 5 + frank/ansible/vars/devices/pkl2.yml | 5 + frank/ansible/vars/devices/pkl3.yml | 5 + frank/ansible/vars/devices/pkl4.yml | 6 + {ansible => frank/ansible}/vars/pies.yml | 3 - frank/ansible/vars/registry.yml | 4 + frank/deploy.sh | 16 +++ frank/lint.sh | 12 ++ frank/pyproject.toml | 5 +- frank/version_bump.sh | 47 ++++++++ import.sh | 105 ------------------ version_bump.sh | 2 - 37 files changed, 301 insertions(+), 210 deletions(-) delete mode 100755 ansible/files/build-frank.sh delete mode 100644 ansible/files/frank.sh delete mode 100755 ansible/playbook-frank.yml delete mode 100755 frank.sh create mode 100644 frank/Makefile rename {ansible => frank/ansible}/bake-pies.yml (100%) rename {ansible => frank/ansible}/files/config (100%) rename {ansible => frank/ansible}/files/frank.env (100%) rename {ansible => frank/ansible}/files/frank.service (100%) rename {ansible => frank/ansible}/files/leardal.service (100%) rename {ansible => frank/ansible}/files/nats-tunnel.service (100%) create mode 100644 frank/ansible/hosts create mode 100755 frank/ansible/playbook.yml create mode 100644 frank/ansible/roles/frank/tasks/main.yml create mode 100644 frank/ansible/roles/tunnels/tasks/main.yml rename ansible/vars/frank.yml => frank/ansible/vars/devices/chd-bar.yml (66%) create mode 100644 frank/ansible/vars/devices/chd1.yml create mode 100644 frank/ansible/vars/devices/chd2.yml create mode 100644 frank/ansible/vars/devices/mhl1.yml create mode 100644 frank/ansible/vars/devices/mhl2.yml create mode 100644 frank/ansible/vars/devices/mhl3.yml create mode 100644 frank/ansible/vars/devices/mhl4.yml create mode 100644 frank/ansible/vars/devices/moz1.yml create mode 100644 frank/ansible/vars/devices/moz2.yml create mode 100644 frank/ansible/vars/devices/pkl1.yml create mode 100644 frank/ansible/vars/devices/pkl2.yml create mode 100644 frank/ansible/vars/devices/pkl3.yml create mode 100644 frank/ansible/vars/devices/pkl4.yml rename {ansible => frank/ansible}/vars/pies.yml (88%) create mode 100644 frank/ansible/vars/registry.yml create mode 100755 frank/deploy.sh create mode 100755 frank/lint.sh create mode 100755 frank/version_bump.sh delete mode 100755 import.sh diff --git a/ansible/files/build-frank.sh b/ansible/files/build-frank.sh deleted file mode 100755 index d33a0d2..0000000 --- a/ansible/files/build-frank.sh +++ /dev/null @@ -1 +0,0 @@ -docker build --file /home/{{ user }}/dockerfile/app/frank.Dockerfile --tag frank:latest /home/{{ user }}/dockerfile/app diff --git a/ansible/files/frank.sh b/ansible/files/frank.sh deleted file mode 100644 index b04cdea..0000000 --- a/ansible/files/frank.sh +++ /dev/null @@ -1 +0,0 @@ -docker run --detach --name frank --env-file=/home/{{ user }}/frank.env --network=host --restart=no --device /dev/usb/lp0:/printer frank:latest diff --git a/ansible/playbook-frank.yml b/ansible/playbook-frank.yml deleted file mode 100755 index 614c30c..0000000 --- a/ansible/playbook-frank.yml +++ /dev/null @@ -1,82 +0,0 @@ -################################################# -# DO Community Playbooks: Docker -################################################# ---- -- hosts: all - become: true - vars_files: - - vars/frank.yml - - tasks: - - name: Copy dockerfile - synchronize: src=app dest="/home/{{ user }}/dockerfile" - - - name: Build frank image - docker_image: - name: frank:latest - build: - path: "/home/{{ user }}/dockerfile/app" - dockerfile: "/home/{{ user }}/dockerfile/app/frank.Dockerfile" - pull: yes - state: present - source: build - - - name: Check if frank .env file exists - stat: path="/home/{{ user }}/frank.env" - register: status - - - name: No need to upload the frank .env file - debug: - msg: "No need to upload the frank .env file as it already exists." - - - name: Upload the frank .env file - when: status.stat.exists == false - template: - src: files/frank.env - dest: "/home/{{ user }}/frank.env" - group: "{{ user }}" - owner: "{{ user }}" - mode: 0644 - - - name: Create frank worker container - docker_container: - name: "frank" - image: frank:latest - state: started - restart_policy: "no" - env_file: "/home/{{ user }}/frank.env" - network_mode: "host" - devices: - - "{{ printer_port }}:/printer" - - - name: Copy docker build script - template: - src: files/build-frank.sh - dest: "/home/{{ user }}/dockerfile/build-frank.sh" - group: "{{ user }}" - owner: "{{ user }}" - mode: 0644 - - - name: Copy docker run script - template: - src: files/frank.sh - dest: "/home/{{ user }}/dockerfile/frank.sh" - group: "{{ user }}" - owner: "{{ user }}" - mode: 0644 - - - name: install frank systemd unit file - template: - src: "files/frank.service" - dest: "/etc/systemd/system/frank.service" - - - name: enable service frank and ensure it is not masked - systemd: - name: frank - enabled: yes - masked: no - - - name: Make sure frank service is running - systemd: - state: started - name: frank diff --git a/frank.sh b/frank.sh deleted file mode 100755 index 3e0f835..0000000 --- a/frank.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P ) -git push -git tag --delete latest -git tag latest -git push --delete origin latest -git push --tags -cd "$parent_path/docker" || exit -ansible-playbook --limit moh1 playbook-frank.yml diff --git a/frank/Dockerfile b/frank/Dockerfile index 4de0d4c..31d6937 100644 --- a/frank/Dockerfile +++ b/frank/Dockerfile @@ -27,11 +27,11 @@ ENV PATH="/app/.venv/bin:$PATH" # Install dependencies # Ref: https://docs.astral.sh/uv/guides/integration/docker/#intermediate-layers RUN --mount=type=cache,target=/root/.cache/uv \ - --mount=type=bind,source=barker/uv.lock,target=uv.lock \ - --mount=type=bind,source=barker/pyproject.toml,target=pyproject.toml \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ uv sync --locked --no-install-project -COPY /frank ./ +COPY . ./ # Sync the project # Ref: https://docs.astral.sh/uv/guides/integration/docker/#intermediate-layers diff --git a/frank/Makefile b/frank/Makefile new file mode 100644 index 0000000..ea63e68 --- /dev/null +++ b/frank/Makefile @@ -0,0 +1,28 @@ +.PHONY: build-production +build-production: ## Build the production docker image. + @docker buildx build \ + --platform linux/amd64,linux/arm64/v8 \ + --tag registry.tanshu.com/frank:latest \ + $(if $(TAG),--tag registry.tanshu.com/frank:$(TAG)) \ + --pull \ + --push \ + git@git.tanshu.com:tanshu/barker.git#:frank + +.PHONY: build-check +build-check: ## Multi-arch build without push (compile check) + @docker buildx build \ + --platform linux/amd64,linux/arm64/v8 \ + --tag frank:test \ + --pull \ + --progress=plain \ + git@git.tanshu.com:tanshu/barker.git#:frank + +.PHONY: build-check-local +build-check-local: ## Build local (compile check) + @git archive --format=tar HEAD:frank | docker buildx build \ + --platform linux/amd64 \ + --tag frank:test \ + --pull \ + --progress=plain \ + --load \ + - diff --git a/ansible/bake-pies.yml b/frank/ansible/bake-pies.yml similarity index 100% rename from ansible/bake-pies.yml rename to frank/ansible/bake-pies.yml diff --git a/ansible/files/config b/frank/ansible/files/config similarity index 100% rename from ansible/files/config rename to frank/ansible/files/config diff --git a/ansible/files/frank.env b/frank/ansible/files/frank.env similarity index 100% rename from ansible/files/frank.env rename to frank/ansible/files/frank.env diff --git a/ansible/files/frank.service b/frank/ansible/files/frank.service similarity index 100% rename from ansible/files/frank.service rename to frank/ansible/files/frank.service diff --git a/ansible/files/leardal.service b/frank/ansible/files/leardal.service similarity index 100% rename from ansible/files/leardal.service rename to frank/ansible/files/leardal.service diff --git a/ansible/files/nats-tunnel.service b/frank/ansible/files/nats-tunnel.service similarity index 100% rename from ansible/files/nats-tunnel.service rename to frank/ansible/files/nats-tunnel.service diff --git a/frank/ansible/hosts b/frank/ansible/hosts new file mode 100644 index 0000000..6226a5c --- /dev/null +++ b/frank/ansible/hosts @@ -0,0 +1,17 @@ +[all:vars] +ansible_python_interpreter=/usr/bin/python3 + +[frank] +chd-bar ansible_host=clair var_file=vars/devices/chd-bar.yml +pkl1 ansible_host=clair var_file=vars/devices/pkl1.yml +pkl2 ansible_host=clair var_file=vars/devices/pkl2.yml +pkl3 ansible_host=clair var_file=vars/devices/pkl3.yml +pkl4 ansible_host=clair var_file=vars/devices/pkl4.yml +moz1 ansible_host=clair var_file=vars/devices/moz1.yml +moz2 ansible_host=clair var_file=vars/devices/moz2.yml +mhl1 ansible_host=clair var_file=vars/devices/mhl1.yml +mhl2 ansible_host=clair var_file=vars/devices/mhl2.yml +mhl3 ansible_host=clair var_file=vars/devices/mhl3.yml +mhl4 ansible_host=clair var_file=vars/devices/mhl4.yml +chd1 ansible_host=clair var_file=vars/devices/chd1.yml +chd2 ansible_host=clair var_file=vars/devices/chd2.yml diff --git a/frank/ansible/playbook.yml b/frank/ansible/playbook.yml new file mode 100755 index 0000000..8a4925d --- /dev/null +++ b/frank/ansible/playbook.yml @@ -0,0 +1,19 @@ +################################################# +# DO Community Playbooks: Docker +################################################# +--- +- hosts: frank + become: true + vars_files: + - vars/registry.yml + - vars/pies.yml + + pre_tasks: + - name: Load per-host vars file from inventory (var_file) + ansible.builtin.include_vars: + file: "{{ var_file }}" + when: var_file is defined + + roles: + - tunnels + - frank diff --git a/frank/ansible/roles/frank/tasks/main.yml b/frank/ansible/roles/frank/tasks/main.yml new file mode 100644 index 0000000..b2410db --- /dev/null +++ b/frank/ansible/roles/frank/tasks/main.yml @@ -0,0 +1,57 @@ +--- +- name: Check if frank .env file exists + stat: path="/home/{{ user }}/frank.env" + register: status + +- name: No need to upload the frank .env file + debug: + msg: "No need to upload the frank .env file as it already exists." + +- name: Upload the frank .env file + when: status.stat.exists == false + template: + src: files/frank.env + dest: "/home/{{ user }}/frank.env" + group: "{{ user }}" + owner: "{{ user }}" + mode: 0644 + +- name: Log into registry + docker_login: + registry: "{{ registry }}" + username: "{{ username }}" + password: "{{ password }}" + +- name: Pull frank image + docker_image: + name: "registry.tanshu.com/frank:{{ frank_version | default('latest') }}" + source: pull + force_source: yes + +- name: Create frank worker container + docker_container: + name: "frank" + image: "registry.tanshu.com/frank:{{ frank_version | default('latest') }}" + pull: true + state: started + restart_policy: "no" + env_file: "/home/{{ user }}/frank.env" + network_mode: "host" + devices: + - "{{ printer_port }}:/printer" + +- name: install frank systemd unit file + template: + src: "files/frank.service" + dest: "/etc/systemd/system/frank.service" + +- name: enable service frank and ensure it is not masked + systemd: + name: frank + enabled: yes + masked: no + +- name: Make sure frank service is running + systemd: + state: started + name: frank diff --git a/frank/ansible/roles/tunnels/tasks/main.yml b/frank/ansible/roles/tunnels/tasks/main.yml new file mode 100644 index 0000000..05f3de0 --- /dev/null +++ b/frank/ansible/roles/tunnels/tasks/main.yml @@ -0,0 +1,32 @@ +--- +- name: install nats-tunnel systemd unit file + template: + src: "files/nats-tunnel.service" + dest: "/etc/systemd/system/nats-tunnel.service" + +- name: enable service nats-tunnel and ensure it is not masked + systemd: + name: nats-tunnel + enabled: yes + masked: no + +- name: Make sure nats-tunnel service is running + systemd: + state: started + name: nats-tunnel + +- name: install leardal systemd unit file + template: + src: "files/leardal.service" + dest: "/etc/systemd/system/leardal.service" + +- name: enable service leardal and ensure it is not masked + systemd: + name: leardal + enabled: yes + masked: no + +- name: Make sure leardal service is running + systemd: + state: started + name: leardal diff --git a/ansible/vars/frank.yml b/frank/ansible/vars/devices/chd-bar.yml similarity index 66% rename from ansible/vars/frank.yml rename to frank/ansible/vars/devices/chd-bar.yml index c13be24..7946bf9 100644 --- a/ansible/vars/frank.yml +++ b/frank/ansible/vars/devices/chd-bar.yml @@ -1,4 +1,6 @@ --- -printer_port: "/dev/usb/lp0" +hostname: chd-bar +ssh_port: 22242 user: vari queue_name: moz-elante +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/chd1.yml b/frank/ansible/vars/devices/chd1.yml new file mode 100644 index 0000000..c3b503f --- /dev/null +++ b/frank/ansible/vars/devices/chd1.yml @@ -0,0 +1,5 @@ +--- +hostname: chd1 +ssh_port: 22341 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/chd2.yml b/frank/ansible/vars/devices/chd2.yml new file mode 100644 index 0000000..72fc591 --- /dev/null +++ b/frank/ansible/vars/devices/chd2.yml @@ -0,0 +1,5 @@ +--- +hostname: chd2 +ssh_port: 22342 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/mhl1.yml b/frank/ansible/vars/devices/mhl1.yml new file mode 100644 index 0000000..bda29c1 --- /dev/null +++ b/frank/ansible/vars/devices/mhl1.yml @@ -0,0 +1,5 @@ +--- +hostname: mhl1 +ssh_port: 22441 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/mhl2.yml b/frank/ansible/vars/devices/mhl2.yml new file mode 100644 index 0000000..62632c7 --- /dev/null +++ b/frank/ansible/vars/devices/mhl2.yml @@ -0,0 +1,5 @@ +--- +hostname: mhl2 +ssh_port: 22442 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/mhl3.yml b/frank/ansible/vars/devices/mhl3.yml new file mode 100644 index 0000000..d5d5072 --- /dev/null +++ b/frank/ansible/vars/devices/mhl3.yml @@ -0,0 +1,5 @@ +--- +hostname: mhl3 +ssh_port: 22443 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/mhl4.yml b/frank/ansible/vars/devices/mhl4.yml new file mode 100644 index 0000000..25f9fc4 --- /dev/null +++ b/frank/ansible/vars/devices/mhl4.yml @@ -0,0 +1,5 @@ +--- +hostname: mhl4 +ssh_port: 22444 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/moz1.yml b/frank/ansible/vars/devices/moz1.yml new file mode 100644 index 0000000..d8660da --- /dev/null +++ b/frank/ansible/vars/devices/moz1.yml @@ -0,0 +1,5 @@ +--- +hostname: moz1 +ssh_port: 22541 +user: vari +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/moz2.yml b/frank/ansible/vars/devices/moz2.yml new file mode 100644 index 0000000..5900bd7 --- /dev/null +++ b/frank/ansible/vars/devices/moz2.yml @@ -0,0 +1,5 @@ +--- +hostname: moz2 +ssh_port: 22542 +user: vari +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/pkl1.yml b/frank/ansible/vars/devices/pkl1.yml new file mode 100644 index 0000000..1d8f2e3 --- /dev/null +++ b/frank/ansible/vars/devices/pkl1.yml @@ -0,0 +1,5 @@ +--- +hostname: pkl1 +ssh_port: 22241 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/pkl2.yml b/frank/ansible/vars/devices/pkl2.yml new file mode 100644 index 0000000..c06964f --- /dev/null +++ b/frank/ansible/vars/devices/pkl2.yml @@ -0,0 +1,5 @@ +--- +hostname: pkl2 +ssh_port: 22242 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/pkl3.yml b/frank/ansible/vars/devices/pkl3.yml new file mode 100644 index 0000000..962dfc4 --- /dev/null +++ b/frank/ansible/vars/devices/pkl3.yml @@ -0,0 +1,5 @@ +--- +hostname: pkl3 +ssh_port: 22243 +user: pi +printer_port: "/dev/usb/lp0" diff --git a/frank/ansible/vars/devices/pkl4.yml b/frank/ansible/vars/devices/pkl4.yml new file mode 100644 index 0000000..e2f13a1 --- /dev/null +++ b/frank/ansible/vars/devices/pkl4.yml @@ -0,0 +1,6 @@ +--- +hostname: pkl4 +ssh_port: 22244 +user: pi +queue_name: moz-elante +printer_port: "/dev/usb/lp0" diff --git a/ansible/vars/pies.yml b/frank/ansible/vars/pies.yml similarity index 88% rename from ansible/vars/pies.yml rename to frank/ansible/vars/pies.yml index 2924a22..4ec0870 100644 --- a/ansible/vars/pies.yml +++ b/frank/ansible/vars/pies.yml @@ -1,7 +1,4 @@ --- -hostname: "moz2" -ssh_port: "22542" -user: "vari" terminus_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8WQHla0uCcNwmN0DUE49lbjNWa6+7A6OxrX3WEPQH0 tanshu@terminus 2023.01.08" clair_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeTz3weHvjJRTlBg+ovP3KfQNDvyn9mVsekAGwX1HMn tanshu@clair 2025-06-30" anjin_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMlvalE0JqKyjpEsGTgtf/N1d9QK2MgNFJib+e8O2h9M tanshu@anjin 2024.09.28" diff --git a/frank/ansible/vars/registry.yml b/frank/ansible/vars/registry.yml new file mode 100644 index 0000000..9f39faa --- /dev/null +++ b/frank/ansible/vars/registry.yml @@ -0,0 +1,4 @@ +--- +registry: registry.tanshu.com +username: ta-registry +password: ff28a01f00c0f39315d94cd9dcb1e554968dba25676a8ea5f2be34e96a9a099f diff --git a/frank/deploy.sh b/frank/deploy.sh new file mode 100755 index 0000000..9d7bb13 --- /dev/null +++ b/frank/deploy.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P ) +cd "$parent_path" || exit + +#./lint.sh + +if [ 1 -eq "$#" ] +then + ./version_bump.sh "$1" +fi + +current_version=$(grep -m 1 '^version = ' pyproject.toml | sed -E 's/version = "([^"]+)"/\1/') +make build-production TAG="$current_version" +cd "$parent_path/ansible" || exit +ansible-playbook --inventory=hosts playbook.yml --extra-vars "frank_version=$current_version" diff --git a/frank/lint.sh b/frank/lint.sh new file mode 100755 index 0000000..0f57c97 --- /dev/null +++ b/frank/lint.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -eEu -o pipefail +shopt -s extdebug +IFS=$'\n\t' + +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P ) +cd "$parent_path" || exit + +uv run ruff format . +uv run ruff check . --fix +uv run bandit --recursive . +uv run safety check diff --git a/frank/pyproject.toml b/frank/pyproject.toml index 34d7ffe..a2cbd28 100644 --- a/frank/pyproject.toml +++ b/frank/pyproject.toml @@ -1,17 +1,16 @@ [project] name = "frank" -version = "14.5.1" +version = "2.0.0" description = "Point of Sale for a restaurant" requires-python = ">=3.14" authors = [{ name = "tanshu", email = "git@tanshu.com" }] dependencies = [ "aiohttp>=3.14.3", - "pydantic-settings>=2.15.0", "pydantic>=2.13.4", + "pydantic-settings>=2.15.0", "taskiq>=0.12.4", "taskiq-nats>=0.6.0", ] - [tool.uv] package = false diff --git a/frank/version_bump.sh b/frank/version_bump.sh new file mode 100755 index 0000000..8ed991b --- /dev/null +++ b/frank/version_bump.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +set -euo pipefail +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P ) +cd "$parent_path" || exit + +last_commit_subject=$(git log -1 --format=%s) +if [[ "$last_commit_subject" =~ ^Version\ Bump ]]; then + echo "Last commit is already a version bump (\"$last_commit_subject\"). Nothing to do." + exit 0 +fi + +if [ 1 -eq "$#" ] +then + current_version=$(grep -m 1 '^version = ' pyproject.toml | sed -E 's/version = "([^"]+)"/\1/') + IFS='.' read -r major minor patch <<< "$current_version" + + if [ "$1" == "major" ]; then + major=$((major + 1)) + minor=0 + patch=0 + new_version="${major}.${minor}.${patch}" + elif [ "$1" == "minor" ]; then + minor=$((minor + 1)) + patch=0 + new_version="${major}.${minor}.${patch}" + elif [ "$1" == "patch" ]; then + patch=$((patch + 1)) + new_version="${major}.${minor}.${patch}" + elif [[ "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + new_version="$1" + else + echo "Invalid argument: must be 'major', 'minor', 'patch', or a specific version (e.g. 1.2.3)" + exit 1 + fi + + echo "Version bump from $current_version to $new_version" + sed --in-place --regexp-extended 's/version = "([0-9]{1,2}.[0-9]+.[0-9]+)"/version = "'"$new_version"'"/g' pyproject.toml + git add pyproject.toml + git commit -m "Version Bump v$new_version (frank)" + git tag "frank-v$new_version" +else + echo "No version bump" + echo "Usage: $0 " + exit 1 +fi +git push +git push --tags diff --git a/import.sh b/import.sh deleted file mode 100755 index 9ece624..0000000 --- a/import.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash - -if [ 2 -ne "$#" ] -then - dbname=petty - docker=0 - doname=docker -else - dbname=$2 - docker=1 - doname=$1 -fi - -parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P ) -mkdir "$parent_path"/csv -p || exit - -if [ $docker -eq 0 ] -then - scp knox:csv.tar.zip "$parent_path"/csv || exit -fi - -if [ $docker -eq 1 ] -then - tar xvf "$parent_path"/csv.tar.zip -C "$parent_path"/csv || exit -else - echo tar xvf "$parent_path"/csv/csv.tar.zip -C "$parent_path"/csv - tar xvf "$parent_path"/csv/csv.tar.zip -C "$parent_path"/csv || exit -fi - -if [ $docker -eq 1 ] -then - docker stop "$doname" || exit -fi - -docker run -it --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres -c "drop database '"""$dbname"'"' || exit -docker run -it --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres -c "create database '"""$dbname"'"' || exit -docker run -it --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "CREATE EXTENSION btree_gist;"' || exit - -if [ $docker -eq 1 ] -then - docker start "$doname" || exit - docker exec -it "$doname" poetry run alembic upgrade 8c06ac60d125 || exit -else - cd "$parent_path"/barker || exit - alembic upgrade 8c06ac60d125 || exit -fi - -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy roles(id, name) from /mnt/a-Roles.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy permissions(id, name) from /mnt/b-Permissions.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy role_permissions(id, permission_id, role_id) from /mnt/c-RolePermissions.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy users(id, name, password, locked_out) from /mnt/d-Users.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy user_roles(id, user_id, role_id) from /mnt/e-UserRoles.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy customers(id, name, address, phone) from /mnt/f-Customers.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy food_tables(id, name, seats, is_active, section_id, sort_order) from /mnt/g-FoodTables.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy taxes(id, name, rate, is_fixture) from /mnt/h-Taxes.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy menu_categories(id, name, is_active, is_fixture, sort_order) from /mnt/i-MenuCategories.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy sale_categories(id, name, discount_limit, tax_id) from /mnt/j-SaleCategories.csv"' -sed -i 's/\x0//g' "$parent_path"/csv/k-Products.csv -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy products(id, name, units, menu_category_id, sale_category_name, price, has_happy_hour, is_active, is_not_available, sort_order, quantity) from /mnt/k-Products.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy modifiers(id, name, show_in_bill, is_active, modifier_category_id, price) from /mnt/l-Modifiers.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy sections(id, name, is_fixture) from /mnt/m-Sections.csv"' -# sed -i ':a;N;$!ba;s/\n\r\n\r\n\r\n\r\n\r\n\r/\\n\\n\\n\\n\\n\\n/g' "$parent_path"/csv/n-Printers.csv -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy printers(id, name, address, cut_code) from /mnt/n-Printers.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy section_printers(id, menu_category_id, section_name, printer_name, copies) from /mnt/o-SectionPrinters.csv"' - -if [ $docker -eq 1 ] -then - docker start "$doname" || exit - docker exec -it "$doname" poetry run alembic upgrade 34fe3d061c5f || exit -else - cd "$parent_path"/barker || exit - alembic upgrade 34fe3d061c5f || exit -fi - -sed -i 's/\x0/\\N/g' "$parent_path"/csv/p-Vouchers.csv -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy vouchers(id, date, pax, user_id, creation_date, last_edit_date, bill_id, food_table_id, customer_id, narration, reason, voucher_type, kot_id) from /mnt/p-Vouchers.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy kots(id, voucher_id, code, food_table_id, date, user_id) from /mnt/q-Kots.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy inventories(id, kot_id, product_id, sort_order, quantity, price, is_happy_hour, tax_rate, tax_id, discount) from /mnt/r-Inventories.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy inventory_modifiers(id, inventory_id, modifier_id, price) from /mnt/s-InventoryModifiers.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy overview(id, voucher_id, food_table_id, status) from /mnt/t-Overview.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy reprints(id, user_id, date, voucher_id) from /mnt/u-Reprints.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy settings(id, name, data) from /mnt/v-Settings.csv"' -docker run -it -v "$parent_path"/csv:/mnt --link postgres:db --rm --env PGPASSWORD="123456" postgres:alpine bash -c 'psql -h db -U postgres '"""$dbname"' -c "\copy settlements(id, voucher_id, settled, amount) from /mnt/w-VoucherSettlements.csv"' - -if [ $docker -eq 1 ] -then - docker start "$doname" || exit - docker exec -it "$doname" poetry run alembic upgrade 48bc1c7c07ce || exit - docker exec -it "$doname" poetry run alembic upgrade e5e8acfc6495 || exit - docker exec -it "$doname" poetry run alembic upgrade c123dbf9c659 || exit - docker exec -it "$doname" poetry run alembic upgrade 81d94c5223a7 || exit -else - cd "$parent_path"/barker || exit - alembic upgrade 48bc1c7c07ce || exit - alembic upgrade e5e8acfc6495 || exit - alembic upgrade c123dbf9c659 || exit - alembic upgrade 81d94c5223a7 || exit -fi - -rm -f "$parent_path"/csv/*.csv "$parent_path"/csv/csv.tar.zip || exit -rmdir "$parent_path"/csv || exit - - -# Show the file in code to see the hidden chars -# od -t c "$parent_path"/Programming/csv/n-Printers.csv diff --git a/version_bump.sh b/version_bump.sh index 0321b8c..c7e0824 100755 --- a/version_bump.sh +++ b/version_bump.sh @@ -39,8 +39,6 @@ then sed --in-place --regexp-extended 's/version = "([0-9]{1,2}.[0-9]+.[0-9]+)"/version = "'"$new_version"'"/g' barker/pyproject.toml (cd barker && uv lock) git add barker/pyproject.toml - sed --in-place --regexp-extended 's/version = "([0-9]{1,2}.[0-9]+.[0-9]+)"/version = "'"$new_version"'"/g' frank/pyproject.toml - git add frank/pyproject.toml sed --in-place --regexp-extended 's/version: '\''([0-9]*.[0-9]+.[0-9]+)'\''/version: '\'"$new_version"\''/g' bookie/src/app/app.environment.ts git add bookie/src/app/app.environment.ts sed --in-place --regexp-extended 's/"version": "([0-9]{1,2}.[0-9]+.[0-9]+)"/"version": "'"$new_version"'"/g' bookie/package.json