A terminal-based emotion logging tool for developers
Project description
Emolog ๐
A terminal-based emotion logging tool for developers
ํฐ๋ฏธ๋์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ๊ธฐ๋ก ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ์๋ค์ด ์ ๋ฌด ์ค ๋๋ผ๋ ๋ค์ํ ๊ฐ์ ์ ์ฒด๊ณ์ ์ผ๋ก ๊ธฐ๋กํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค.
โจ ์ฃผ์ ๊ธฐ๋ฅ
๐ ๊ฐ์ ๋ก๊น
- ๋ํํ ์ ๋ ฅ: ์ํฉ โ ๊ฐ์ โ ๊ฐ๋ โ ๋ชธ๋ฐ์ โ ์๊ฐ โ ์ปจํ ์คํธ โ ํ๊ทธ ์์
- ์๋์์ฑ: ๊ฐ์ , ์ปจํ ์คํธ, ๋ชธ๋ฐ์ ๋ฑ ๋ฏธ๋ฆฌ ์ ์๋ ์ต์ ์ ๊ณต
- ๋น ๋ฅธ ์ ๊ทผ: ํฐ๋ฏธ๋์์
emo๋ช ๋ น์ด ํ๋๋ก ์ฆ์ ๊ธฐ๋ก
๐ ๋ถ์ ๊ธฐ๋ฅ
- ํต๊ณ: ๊ฐ์ ๋ถํฌ, ํ๊ท ๊ฐ๋, ์ปจํ ์คํธ๋ณ ๋ถ์
- ํจํด ๋ถ์: ์์ผ๋ณ, ์๊ฐ๋๋ณ ๊ฐ์ ํจํด ๋ฐ๊ฒฌ
- ํธ๋ฆฌ๊ฑฐ ๋ถ์: ์คํธ๋ ์ค ์ ๋ฐ ์์ธ ๋ฐ ๋ถ์ ์ ๊ฐ์ ๋ถ์
- ํ์๋ผ์ธ: ํ๋ฃจ/์ฃผ๊ฐ ๊ฐ์ ๋ณํ ์๊ฐํ
๐ ๏ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ์ ํ์ ์์ : ๊ฐ๋ณ ์ํธ๋ฆฌ์ ํ๋๋ณ ์์
- ์ ํ์ ์ญ์ : ์ํ๋ ์ํธ๋ฆฌ๋ง ๊ณจ๋ผ์ ์ญ์
- ์ผ๊ด ์ด๊ธฐํ: ๊ธฐ๊ฐ๋ณ ๋๋ ์ ์ฒด ๋ฐ์ดํฐ ๋ฆฌ์
- ๋ฐฑ์ /๋ด๋ณด๋ด๊ธฐ: CSV, JSON ํํ๋ก ๋ฐ์ดํฐ ์ถ์ถ
๐ ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ
์ค์น
# ์ ์ฅ์ ํด๋ก
git clone <repository-url>
cd emolog
# ์์กด์ฑ ์ค์น (uv ์ฌ์ฉ ๊ถ์ฅ)
uv pip install -e .
# ๋๋ pip ์ฌ์ฉ
pip install -e .
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
# ๊ฐ์ ๊ธฐ๋กํ๊ธฐ
emo
# ๋ช
์์ ๋ก๊น
emo log
# ํต๊ณ ๋ณด๊ธฐ
emo stats
# ํจํด ๋ถ์
emo patterns
# ์คํธ๋ ์ค ์์ธ ๋ถ์
emo triggers
# ๊ฐ์ ํ์๋ผ์ธ
emo timeline
# ์ํธ๋ฆฌ ์์
emo edit
# ์ ํ์ ์ญ์
emo delete
# ๋ฐ์ดํฐ ๋ฆฌ์
emo reset
# ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
emo export --format csv --period week
# ๋ฐฑ์
์์ฑ
emo backup
๐พ ๋ฐ์ดํฐ ์ ์ฅ
- ์์น:
~/.emolog/๋๋ ํ ๋ฆฌ - ํ์: JSONL (JSON Lines) ํ์ผ
- ๊ตฌ์กฐ: ๋ ์ง๋ณ๋ก ์๋ ๋ถ๋ฅ (
YYYY/MM/YYYYMMDD.jsonl) - ์๊ฐ๋: KST (ํ๊ตญ ํ์ค์) ๊ธฐ์ค
- ํ๋ผ์ด๋ฒ์: ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ก์ปฌ์๋ง ์ ์ฅ
๐ ๋ฐ์ดํฐ ๊ตฌ์กฐ
{
"timestamp": "2024-08-12T11:30:00+09:00",
"situation": "์ฝ๋๋ฆฌ๋ทฐ ๋ฐ์",
"emotion": "๊ธด์ฅ",
"intensity": 6,
"body_reaction": "์์ ๋",
"thought": "์ค์๊ฐ ๋ง์ด ๋ฐ๊ฒฌ๋ ๊น ๊ฑฑ์ ",
"context": "work",
"tags": ["์ฝ๋๋ฆฌ๋ทฐ", "๊ฐ๋ฐ"],
"id": "uuid-string"
}
๐ฏ ์ฌ์ฉ ์ฌ๋ก
๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฐ์ ์ถ์
- ์ฝ๋๋ฆฌ๋ทฐ, ๋ฐฐํฌ, ๋ฒ๊ทธ ์์ ์ ๊ฐ์ ๋ณํ ์ถ์
- ์คํธ๋ ์ค ์์ธ ์๋ณ ๋ฐ ๊ฐ์ ๋ฐฉ์ ๋ชจ์
- ์ ๋ฌด ํจํด๊ณผ ๊ฐ์ ์ํ์ ์๊ด๊ด๊ณ ๋ถ์
์ ์ ๊ฑด๊ฐ ๊ด๋ฆฌ
- ์ผ์์ ๊ฐ์ ๋ณํ ๋ชจ๋ํฐ๋ง
- ๋ถ์ ์ ๊ฐ์ ์ ํธ๋ฆฌ๊ฑฐ ํ์
- ๊ธ์ ์ ๊ฒฝํ๊ณผ ์ํฉ ์๋ณ
๐ก๏ธ ํ๋ผ์ด๋ฒ์
- ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ๋ก์ปฌ ์ปดํจํฐ์๋ง ์ ์ฅ๋ฉ๋๋ค
- ์ธ๋ถ ์๋ฒ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ก๋์ง ์์ต๋๋ค
- ์ฌ์ฉ์๊ฐ ์ง์ ๋ฐฑ์ ๊ณผ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค
๐ ๋ฐฐํฌ (๊ฐ๋ฐ์์ฉ)
PyPI ๋ฐฐํฌ ์๋ํ
์ด ํ๋ก์ ํธ๋ GitHub Actions์ OIDC๋ฅผ ํตํ ์์ ํ ์๋ ๋ฐฐํฌ๋ฅผ ์ง์ํฉ๋๋ค.
-
ํ๊ทธ ์์ฑ์ผ๋ก ๋ฐฐํฌ:
# ๋ฒ์ ์ ๋ฐ์ดํธ git tag v1.0.0 git push origin v1.0.0
-
OIDC ๊ธฐ๋ฐ ๋ฐฐํฌ ์ค์ (์ ์ฅ์ ๊ด๋ฆฌ์):
- PyPI์์ Trusted Publisher ์ค์
- Test PyPI์์ Trusted Publisher ์ค์
- ํ ํฐ ๊ด๋ฆฌ ๋ถํ์! ๐
-
Trusted Publisher ์ค์ ๋ฐฉ๋ฒ:
- PyPI โ Account settings โ Publishing โ Add a new pending publisher
- Owner:
{your-github-username} - Repository name:
emolog - Workflow name:
publish.yml - Environment name:
pypi(๋๋test-pypi)
-
์๋ ๋ฐฐํฌ:
# ๋น๋ python -m build # Test PyPI ์ ๋ก๋ twine upload --repository testpypi dist/* # PyPI ์ ๋ก๋ twine upload dist/*
๐ค ๊ธฐ์ฌ
์ด ํ๋ก์ ํธ๋ ๊ฐ์ธ ํ๋ก์ ํธ๋ก ์์๋์์ง๋ง, ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
๊ฐ๋ฐ ํ๊ฒฝ ์ค์
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/gmlee/emolog.git
cd emolog
# ๊ฐ๋ฐ ์์กด์ฑ ์ค์น
make install
# ๋๋ ์ง์ : uv pip install -e ".[dev]"
๐ก๏ธ ์๊ฒฉํ ์ฝ๋ ํ์ง ๊ด๋ฆฌ
์ด ํ๋ก์ ํธ๋ ZERO TOLERANCE ์ฝ๋ ํ์ง ์ ์ฑ ์ ์ฌ์ฉํฉ๋๋ค:
# ์ฝ๋ ์๋ ํฌ๋งทํ
make format
# ํ์ง ๊ฒ์ฌ (์ปค๋ฐ/ํธ์ ์ ํ์)
make check
# ํธ์ ์ค๋น ์๋ฃ (ํฌ๋งทํ
+ ๊ฒ์ฌ)
make push-ready
๐ซ Git ํ ๊ฐ์ ์คํ
- pre-commit: ์ปค๋ฐ ์ staged ํ์ผ ํ์ง ๊ฒ์ฌ
- pre-push: ํธ์ ์ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค ํ์ง ๊ฒ์ฌ
- ์๋ ์ฐจ๋จ: black/isort ๋ฏธ์ ์ฉ ์ ์ปค๋ฐ/ํธ์ ์์ ์ฐจ๋จ
- ์๋ ์ค์น: ๋๊ตฌ๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก ์ค์น
๊ธฐ์ฌ ํ๋ก์ธ์ค
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run quality tools (
make push-ready) - Commit your changes (
git commit -m 'Add amazing feature')- ๐ก๏ธ pre-commit ํ ์ด ์๋์ผ๋ก ํ์ง ๊ฒ์ฌ
- Push to the branch (
git push origin feature/amazing-feature)- ๐ก๏ธ pre-push ํ ์ด ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค ๊ฒ์ฌ
- Open a Pull Request
๐ง ๊ฐ๋ฐ ๋๊ตฌ ํ๋์ ๋ณด๊ธฐ
| ๋ช ๋ น์ด | ์ค๋ช | ์ธ์ ์ฌ์ฉ? |
|---|---|---|
make install |
๊ฐ๋ฐ ํ๊ฒฝ ์ค์ | ํ๋ก์ ํธ ์์ ์ |
make format |
์ฝ๋ ์๋ ํฌ๋งทํ | ๊ฐ๋ฐ ์ค ์์๋ก |
make lint |
ํ์ง ๊ฒ์ฌ๋ง | CI์์ ๋๋ ํ์ธ์ฉ |
make check |
ํ์ง+๊ธฐ๋ฅ ๊ฒ์ฌ | ์ปค๋ฐ ์ |
make push-ready |
์์ ํ ์ค๋น | ํธ์ ์ ํ์ |
make clean |
๋น๋ ํ์ผ ์ ๋ฆฌ | ํ์์ |
๐ก๏ธ ํ์ง ๋ณด์ฅ
- ์๋ ํฌ๋งทํ : Black (88์ ๋ผ์ธ ๊ธธ์ด)
- Import ์ ๋ ฌ: isort (Black ํ๋กํ)
- Git ํ : ์ปค๋ฐ/ํธ์ ์ ์๋ ํ์ง ๊ฒ์ฌ
- CI/CD: GitHub Actions์์ ๋ค์ค Python ๋ฒ์ ํ ์คํธ
๐ ๋ผ์ด์ ์ค
MIT License - ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
๐ ๊ฐ์ฌ์ ๋ง
๊ฐ๋ฐ์๋ค์ ์ ์ ๊ฑด๊ฐ๊ณผ ๊ฐ์ ์ธ์์ ์ค์์ฑ์ ๋ํ ๊ด์ฌ์์ ์ถ๋ฐํ ํ๋ก์ ํธ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ ์ผ์์ ์์ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๐
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emolog-0.1.0.tar.gz.
File metadata
- Download URL: emolog-0.1.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cafdde9e72e41f87b5a7be834eb428ec5d8ab3c730be8b9295a4aa95bbbaad45
|
|
| MD5 |
2d00e5c8cb782acc0f37ac351c705cf2
|
|
| BLAKE2b-256 |
2ff9db6e1c7c1a5b2f6736b35dc39b331c7e6540b760908c527a9cbc172a40ea
|
Provenance
The following attestation bundles were made for emolog-0.1.0.tar.gz:
Publisher:
publish.yml on GyuminJack/emolog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emolog-0.1.0.tar.gz -
Subject digest:
cafdde9e72e41f87b5a7be834eb428ec5d8ab3c730be8b9295a4aa95bbbaad45 - Sigstore transparency entry: 383192438
- Sigstore integration time:
-
Permalink:
GyuminJack/emolog@abf9c0f71ce71f6884007021f2605cf48001c618 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/GyuminJack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abf9c0f71ce71f6884007021f2605cf48001c618 -
Trigger Event:
push
-
Statement type:
File details
Details for the file emolog-0.1.0-py3-none-any.whl.
File metadata
- Download URL: emolog-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b69d1c9b0b91ce5ce0f962edaf9fd1c289250f92ea2828847cde6d8e53275fec
|
|
| MD5 |
ca7e60e9a1474f941b6a475c7d375259
|
|
| BLAKE2b-256 |
22edd604d6b55a2647fe4b232c5f6ca0b009a79b84eca3e177eca343274953ed
|
Provenance
The following attestation bundles were made for emolog-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on GyuminJack/emolog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emolog-0.1.0-py3-none-any.whl -
Subject digest:
b69d1c9b0b91ce5ce0f962edaf9fd1c289250f92ea2828847cde6d8e53275fec - Sigstore transparency entry: 383192452
- Sigstore integration time:
-
Permalink:
GyuminJack/emolog@abf9c0f71ce71f6884007021f2605cf48001c618 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/GyuminJack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abf9c0f71ce71f6884007021f2605cf48001c618 -
Trigger Event:
push
-
Statement type: