diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index a610a9a..5ddf64d 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -12,6 +12,8 @@ jobs: # Step 1: Check out the repository - name: Checkout code uses: actions/checkout@v4 + with: + ref: win # Step 2: Set up Python - name: Set up Python @@ -28,12 +30,12 @@ jobs: # Step 4: Install dependencies using Pipenv - name: Install dependencies with Pipenv run: | - pipenv install --dev + pipenv install # Step 5: Build the application using PyInstaller - name: Build with PyInstaller run: | - pipenv run pyinstaller --noconsole --windowed --onefile main.py + pipenv run pyinstaller --noconsole --onefile --windowed --name "Task Note Manager" --paths=. src/main.py # Step 6: Upload executable to release assets - name: Upload Release Asset @@ -71,12 +73,12 @@ jobs: # Step 4: Install dependencies using Pipenv - name: Install dependencies with Pipenv run: | - pipenv install --dev + pipenv install # Step 5: Build the application using PyInstaller - name: Build with PyInstaller run: | - pipenv run pyinstaller --noconsole --windowed --onefile main.py + pipenv run pyinstaller --noconsole --onefile --windowed --name "Task Note Manager" --paths=. src/main.py # Step 6: Upload executable to release assets - name: Upload Release Asset diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6a4176..e531e09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.11.4' + python-version: '3.11.7' - name: Install dependencies with apt get run: sudo apt-get install -y libdbus-1-dev libdbus-glib-1-dev diff --git a/Pipfile b/Pipfile index 351ef1e..87f7645 100644 --- a/Pipfile +++ b/Pipfile @@ -11,12 +11,12 @@ pyexcel-ods3 = "*" typing-extensions = "*" customtkinter = "*" dbus-python = "*" +pyinstaller = "*" [dev-packages] -pyinstaller = "*" coverage = "*" pyvirtualdisplay = "*" mypy = "*" [requires] -python_version = "3.11.4" +python_version = "3.11.7" diff --git a/Pipfile.lock b/Pipfile.lock index 5cbf979..ce9554b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "708d037d134b2558c8aad6d3d89e4e25f6d3cdab6c8bc36e67d607cef4fd2c4d" + "sha256": "09e9ed361f0d24d90737f907997b85d82516bca1e0989b58b2169d4d65b9bf5b" }, "pipfile-spec": 6, "requires": { - "python_version": "3.11.4" + "python_version": "3.11.7" }, "sources": [ { @@ -16,6 +16,13 @@ ] }, "default": { + "altgraph": { + "hashes": [ + "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7", + "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597" + ], + "version": "==0.17.5" + }, "apscheduler": { "hashes": [ "sha256:2a9966b052ec805f020c8c4c3ae6e6a06e24b1bf19f2e11d91d8cca0473eef41", @@ -237,6 +244,33 @@ "markers": "python_version >= '3.6'", "version": "==0.6.1" }, + "pyinstaller": { + "hashes": [ + "sha256:327d132389f37912609e01be62810cf96b5aa95b613903e4b8692e0d12fb0eda", + "sha256:42395ec76df8e8120c36b13339d9db8cab83e316a12839ee303cc00fc941bb74", + "sha256:4e3108b3f02384560da70e39b8bf22b0ad597d02bd68a40d76ea91c1cfa00cad", + "sha256:5fa56746c1e76f93634d018502301378a2d0c382553d37d8c3c34ff436c12dd1", + "sha256:605169523a6b5ace39f13dfbff21add9f2bc43df99c7daf9394fefb2c45e8b6f", + "sha256:697532279f535ad572bda613db4f821540e235c7854ca6da4d3bf0373f4415ee", + "sha256:6b6374d652107dd4a2eeece903ff82bb4045bb5e1006c5a158a6dcdbefe84bf2", + "sha256:7071d4b094d5b40deeef5fa3d3b98a1b846087f7562b49209663d5f9281fe251", + "sha256:7fae06c494ce0ebfe6bd3055c0e409def884f63af2e3705d06bd431ad9237fc7", + "sha256:bb9fab705983e393a2d1cac77d6972513057ad800215fd861dc15ff5272e98fd", + "sha256:c6b28d30d8fd99ce162ff3aab5013ed44dbfb747566b1f01b9bed7964d7c14e9", + "sha256:f13c95c9c03fb567217135919f93815c305813126780b0ed6e0123cb8acaf025" + ], + "index": "pypi", + "markers": "python_version < '3.16' and python_version >= '3.8'", + "version": "==6.21.0" + }, + "pyinstaller-hooks-contrib": { + "hashes": [ + "sha256:bef5002c32f4f50bd55b005da12cff64eca8783e7eaf86a06a62410164bab725", + "sha256:fd13b8ac126b35361175edacd41a0d97080b75dd5f4b594ecefefff969509dd3" + ], + "markers": "python_version >= '3.8'", + "version": "==2026.6" + }, "pyyaml": { "hashes": [ "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", @@ -317,6 +351,14 @@ "markers": "python_version >= '3.8'", "version": "==6.0.3" }, + "setuptools": { + "hashes": [ + "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", + "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb" + ], + "markers": "python_version >= '3.9'", + "version": "==82.0.1" + }, "typing-extensions": { "hashes": [ "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", @@ -328,21 +370,14 @@ }, "tzlocal": { "hashes": [ - "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", - "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d" + "sha256:024d11221ff83453eae1f608f09b145b9779e1345d08c15404ce8ff7917cf629", + "sha256:41e1293f80d4b5ff38dff222601a8fbd06b4fdcaf25e224704047ad26a39af54" ], - "markers": "python_version >= '3.9'", - "version": "==5.3.1" + "markers": "python_version >= '3.10'", + "version": "==5.4" } }, "develop": { - "altgraph": { - "hashes": [ - "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7", - "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597" - ], - "version": "==0.17.5" - }, "ast-serialize": { "hashes": [ "sha256:061ee58bdb52341c8201a6df41182a977736bae3b7ded87ca7176ca25a8a47ab", @@ -650,14 +685,6 @@ "markers": "python_version >= '3.8'", "version": "==1.1.0" }, - "packaging": { - "hashes": [ - "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", - "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661" - ], - "markers": "python_version >= '3.8'", - "version": "==26.2" - }, "pathspec": { "hashes": [ "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", @@ -666,33 +693,6 @@ "markers": "python_version >= '3.9'", "version": "==1.1.1" }, - "pyinstaller": { - "hashes": [ - "sha256:327d132389f37912609e01be62810cf96b5aa95b613903e4b8692e0d12fb0eda", - "sha256:42395ec76df8e8120c36b13339d9db8cab83e316a12839ee303cc00fc941bb74", - "sha256:4e3108b3f02384560da70e39b8bf22b0ad597d02bd68a40d76ea91c1cfa00cad", - "sha256:5fa56746c1e76f93634d018502301378a2d0c382553d37d8c3c34ff436c12dd1", - "sha256:605169523a6b5ace39f13dfbff21add9f2bc43df99c7daf9394fefb2c45e8b6f", - "sha256:697532279f535ad572bda613db4f821540e235c7854ca6da4d3bf0373f4415ee", - "sha256:6b6374d652107dd4a2eeece903ff82bb4045bb5e1006c5a158a6dcdbefe84bf2", - "sha256:7071d4b094d5b40deeef5fa3d3b98a1b846087f7562b49209663d5f9281fe251", - "sha256:7fae06c494ce0ebfe6bd3055c0e409def884f63af2e3705d06bd431ad9237fc7", - "sha256:bb9fab705983e393a2d1cac77d6972513057ad800215fd861dc15ff5272e98fd", - "sha256:c6b28d30d8fd99ce162ff3aab5013ed44dbfb747566b1f01b9bed7964d7c14e9", - "sha256:f13c95c9c03fb567217135919f93815c305813126780b0ed6e0123cb8acaf025" - ], - "index": "pypi", - "markers": "python_version < '3.16' and python_version >= '3.8'", - "version": "==6.21.0" - }, - "pyinstaller-hooks-contrib": { - "hashes": [ - "sha256:bef5002c32f4f50bd55b005da12cff64eca8783e7eaf86a06a62410164bab725", - "sha256:fd13b8ac126b35361175edacd41a0d97080b75dd5f4b594ecefefff969509dd3" - ], - "markers": "python_version >= '3.8'", - "version": "==2026.6" - }, "pyvirtualdisplay": { "hashes": [ "sha256:09755bc3ceb6eb725fb07eca5425f43f2358d3bf08e00d2a9b792a1aedd16159", @@ -701,14 +701,6 @@ "index": "pypi", "version": "==3.0" }, - "setuptools": { - "hashes": [ - "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", - "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb" - ], - "markers": "python_version >= '3.9'", - "version": "==82.0.1" - }, "typing-extensions": { "hashes": [ "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", diff --git a/README.md b/README.md index ef1c6fc..2aaf158 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,12 @@ Make sure you have Python 3.11.7 or higher installed. You would also need pipenv When building this application locally, note that antivirus may flag it as potentially malicious executable. This is normal, you should add an exception for the file in your antivirus program. The application may also need admin permissions to run in order to create and update the output file. -1. `pipenv install --dev` -2. Run `pipenv run pyinstaller --noconsole --onefile --windowed --name "Task Note Manager" main.py`. +1. `pipenv install` +2. Run `pipenv run pyinstaller --noconsole --onefile --windowed --name "Task Note Manager" --paths=. src/main.py`. - `--noconsole`: Hides the console window when running the executable. - `--onefile`: Bundles all files into a single executable. - `--windowed`: Ensures the app runs as a GUI application. + - `--paths`: Looks at specific path when resolving "import x" statements # Tests and coverage