Prepare project for packaging
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +1,4 @@
|
|||||||
.venv
|
.venv
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
|
todo.md
|
||||||
14
LICENSE
Normal file
14
LICENSE
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Copyright © 2025 Andrew Luchuk
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||||
|
documentation files (the “Software”), to deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||||
|
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
1
Pipfile
1
Pipfile
@@ -9,6 +9,7 @@ base64-random = "*"
|
|||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
textual-dev = "*"
|
textual-dev = "*"
|
||||||
|
build = "*"
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
python_version = "3.14"
|
python_version = "3.14"
|
||||||
|
|||||||
27
Pipfile.lock
generated
27
Pipfile.lock
generated
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "76b3c5ba1c975631c27d000c8a76d6d0e7ec7426d645be513e69cd5990cab1d1"
|
"sha256": "90c0299ee3c52cff9d11bb4e4b38b154f4ef430ee5110b4213ef2d7c7ff1d108"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
@@ -268,6 +268,15 @@
|
|||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.9'",
|
||||||
"version": "==25.4.0"
|
"version": "==25.4.0"
|
||||||
},
|
},
|
||||||
|
"build": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397",
|
||||||
|
"sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.9'",
|
||||||
|
"version": "==1.3.0"
|
||||||
|
},
|
||||||
"click": {
|
"click": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a",
|
"sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a",
|
||||||
@@ -778,6 +787,14 @@
|
|||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.9'",
|
||||||
"version": "==6.7.0"
|
"version": "==6.7.0"
|
||||||
},
|
},
|
||||||
|
"packaging": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484",
|
||||||
|
"sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==25.0"
|
||||||
|
},
|
||||||
"platformdirs": {
|
"platformdirs": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312",
|
"sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312",
|
||||||
@@ -922,6 +939,14 @@
|
|||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==2.19.2"
|
"version": "==2.19.2"
|
||||||
},
|
},
|
||||||
|
"pyproject-hooks": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8",
|
||||||
|
"sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==1.2.0"
|
||||||
|
},
|
||||||
"rich": {
|
"rich": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4",
|
"sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4",
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
from codupoc.codupoc import main
|
||||||
26
pyproject.toml
Normal file
26
pyproject.toml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[build-system]
|
||||||
|
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
||||||
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "codupoc"
|
||||||
|
version = "1.0.0"
|
||||||
|
authors = [
|
||||||
|
{ name="Andrew Luchuk", email="andrew.luchuk@outlook.com" }
|
||||||
|
]
|
||||||
|
description = "A TUI for managing todo items in Markdown format"
|
||||||
|
readme = "readme.md"
|
||||||
|
license = {file = "LICENSE"}
|
||||||
|
keywords = ["tui", "markdown", "todo"]
|
||||||
|
classifiers = [
|
||||||
|
"License :: OSI Approved :: MIT License",
|
||||||
|
"Environment :: Console",
|
||||||
|
"Topic :: Utilities"
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
Homepage = "https://git.luchuktech.space/Andrew/codupoc"
|
||||||
|
Repository = "https://git.luchuktech.space/Andrew/codupoc"
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
codupoc = "codupoc:main"
|
||||||
23
readme.md
Normal file
23
readme.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Codupoc
|
||||||
|
Codupoc is a proof of Concept for a TUI application called Codu. Codu will be a TUI-based application for managing todo
|
||||||
|
items in Markdown format.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
When you run Codupoc in a directory, it will look for a file called `todo.md` in that directory. If it does not find one,
|
||||||
|
you will be presented with an empty todo list. If Codupoc does find `todo.md` in the current directory, it will read
|
||||||
|
all Markdown checkboxes as Todo items. Here's an example:
|
||||||
|
|
||||||
|
```md
|
||||||
|
- [ ] An Incomplete Task
|
||||||
|
- [X] A Complete Task
|
||||||
|
```
|
||||||
|
|
||||||
|
Each line that matches this format will be read as a todo item. When an item is checked in Codupoc, the file will
|
||||||
|
automatically be updated to reflect the change.
|
||||||
|
|
||||||
|
You can add new todos by pressing `n` and typing the task description.
|
||||||
|
|
||||||
|
Codupoc is intended to be an extremely minimalistic Proof of Concept. The final version is planned to be written in Rust
|
||||||
|
and is planned to have significantly more robust error-handling. I may eventually add a calendar feature which allows
|
||||||
|
you to focus on tasks for specific days.
|
||||||
30
requirements.txt
Normal file
30
requirements.txt
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
aiohappyeyeballs==2.6.1
|
||||||
|
aiohttp==3.13.2
|
||||||
|
aiohttp-jinja2==1.6
|
||||||
|
aiosignal==1.4.0
|
||||||
|
attrs==25.4.0
|
||||||
|
base64_random==1.0.0
|
||||||
|
build==1.3.0
|
||||||
|
click==8.3.1
|
||||||
|
frozenlist==1.8.0
|
||||||
|
idna==3.11
|
||||||
|
Jinja2==3.1.6
|
||||||
|
linkify-it-py==2.0.3
|
||||||
|
markdown-it-py==4.0.0
|
||||||
|
MarkupSafe==3.0.3
|
||||||
|
mdit-py-plugins==0.5.0
|
||||||
|
mdurl==0.1.2
|
||||||
|
msgpack==1.1.2
|
||||||
|
multidict==6.7.0
|
||||||
|
packaging==25.0
|
||||||
|
platformdirs==4.5.0
|
||||||
|
propcache==0.4.1
|
||||||
|
Pygments==2.19.2
|
||||||
|
pyproject_hooks==1.2.0
|
||||||
|
rich==14.2.0
|
||||||
|
textual==6.6.0
|
||||||
|
textual-dev==1.8.0
|
||||||
|
textual-serve==1.1.3
|
||||||
|
typing_extensions==4.15.0
|
||||||
|
uc-micro-py==1.0.3
|
||||||
|
yarl==1.22.0
|
||||||
Reference in New Issue
Block a user