e3cli 0.3.1__tar.gz → 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {e3cli-0.3.1 → e3cli-0.3.2}/PKG-INFO +13 -14
- {e3cli-0.3.1 → e3cli-0.3.2}/README.md +12 -13
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/__init__.py +1 -1
- {e3cli-0.3.1 → e3cli-0.3.2}/pyproject.toml +1 -1
- {e3cli-0.3.1 → e3cli-0.3.2}/tests/test_basic.py +2 -1
- {e3cli-0.3.1 → e3cli-0.3.2}/.github/workflows/ci.yml +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/.github/workflows/release.yml +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/.gitignore +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/Formula/e3cli.rb +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/LICENSE +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/Makefile +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/__main__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/ai/__init__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/__init__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/assignments.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/client.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/courses.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/files.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/api/site.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/auth.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/cli.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/__init__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/_common.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/assignments.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/courses.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/download.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/login.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/logout.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/schedule.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/setup.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/submit.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/commands/sync.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/config.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/credential.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/i18n.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/scheduler/__init__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/scheduler/cron.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/storage/__init__.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/storage/db.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/storage/models.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/e3cli/storage/tracking.py +0 -0
- {e3cli-0.3.1 → e3cli-0.3.2}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: e3cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: NYCU E3 Moodle automation CLI — sync courses, download materials, submit assignments.
|
|
5
5
|
Project-URL: Homepage, https://github.com/junlinwk/e3cli
|
|
6
6
|
Project-URL: Repository, https://github.com/junlinwk/e3cli
|
|
@@ -102,7 +102,17 @@ cd e3cli
|
|
|
102
102
|
pip install -e ".[dev]"
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
> After any installation method, `e3cli` will be available as a system-wide command.
|
|
106
|
+
|
|
107
|
+
### Upgrade
|
|
108
|
+
|
|
109
|
+
| Install method | Upgrade command |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Homebrew | `brew update && brew upgrade e3cli` |
|
|
112
|
+
| pipx (PyPI) | `pipx upgrade e3cli` |
|
|
113
|
+
| pipx (GitHub) | `pipx install git+https://github.com/junlinwk/e3cli.git --force` |
|
|
114
|
+
| pip (PyPI) | `pip install e3cli --upgrade` |
|
|
115
|
+
|
|
106
116
|
---
|
|
107
117
|
|
|
108
118
|
## Quick Start
|
|
@@ -281,7 +291,6 @@ e3cli uses **Fernet symmetric encryption** (from the `cryptography` library) to
|
|
|
281
291
|
| `~/.e3cli/data/e3cli.db` | SQLite tracking DB (downloaded files, assignment status) |
|
|
282
292
|
| `~/e3-downloads/` | Downloaded course materials |
|
|
283
293
|
|
|
284
|
-
|
|
285
294
|
---
|
|
286
295
|
|
|
287
296
|
## Project Structure
|
|
@@ -338,7 +347,7 @@ e3cli/
|
|
|
338
347
|
|
|
339
348
|
```bash
|
|
340
349
|
# Clone and install in dev mode
|
|
341
|
-
git clone https://github.com
|
|
350
|
+
git clone https://github.com/junlinwk/e3cli.git
|
|
342
351
|
cd e3cli
|
|
343
352
|
make dev # pip install -e ".[dev]"
|
|
344
353
|
|
|
@@ -352,16 +361,6 @@ make test
|
|
|
352
361
|
make build
|
|
353
362
|
```
|
|
354
363
|
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
## Roadmap
|
|
358
|
-
|
|
359
|
-
- [ ] AI-powered material summarization (`e3cli ai summarize`)
|
|
360
|
-
- [ ] AI-assisted assignment drafting (`e3cli ai draft`)
|
|
361
|
-
- [ ] Smart deadline notifications with priority scoring
|
|
362
|
-
- [ ] Desktop notification integration (Linux `notify-send`, macOS `osascript`)
|
|
363
|
-
- [ ] Course filtering by semester
|
|
364
|
-
- [ ] Parallel downloads for faster sync
|
|
365
364
|
|
|
366
365
|
---
|
|
367
366
|
|
|
@@ -68,7 +68,17 @@ cd e3cli
|
|
|
68
68
|
pip install -e ".[dev]"
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
> After any installation method, `e3cli` will be available as a system-wide command.
|
|
72
|
+
|
|
73
|
+
### Upgrade
|
|
74
|
+
|
|
75
|
+
| Install method | Upgrade command |
|
|
76
|
+
|---|---|
|
|
77
|
+
| Homebrew | `brew update && brew upgrade e3cli` |
|
|
78
|
+
| pipx (PyPI) | `pipx upgrade e3cli` |
|
|
79
|
+
| pipx (GitHub) | `pipx install git+https://github.com/junlinwk/e3cli.git --force` |
|
|
80
|
+
| pip (PyPI) | `pip install e3cli --upgrade` |
|
|
81
|
+
|
|
72
82
|
---
|
|
73
83
|
|
|
74
84
|
## Quick Start
|
|
@@ -247,7 +257,6 @@ e3cli uses **Fernet symmetric encryption** (from the `cryptography` library) to
|
|
|
247
257
|
| `~/.e3cli/data/e3cli.db` | SQLite tracking DB (downloaded files, assignment status) |
|
|
248
258
|
| `~/e3-downloads/` | Downloaded course materials |
|
|
249
259
|
|
|
250
|
-
|
|
251
260
|
---
|
|
252
261
|
|
|
253
262
|
## Project Structure
|
|
@@ -304,7 +313,7 @@ e3cli/
|
|
|
304
313
|
|
|
305
314
|
```bash
|
|
306
315
|
# Clone and install in dev mode
|
|
307
|
-
git clone https://github.com
|
|
316
|
+
git clone https://github.com/junlinwk/e3cli.git
|
|
308
317
|
cd e3cli
|
|
309
318
|
make dev # pip install -e ".[dev]"
|
|
310
319
|
|
|
@@ -318,16 +327,6 @@ make test
|
|
|
318
327
|
make build
|
|
319
328
|
```
|
|
320
329
|
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## Roadmap
|
|
324
|
-
|
|
325
|
-
- [ ] AI-powered material summarization (`e3cli ai summarize`)
|
|
326
|
-
- [ ] AI-assisted assignment drafting (`e3cli ai draft`)
|
|
327
|
-
- [ ] Smart deadline notifications with priority scoring
|
|
328
|
-
- [ ] Desktop notification integration (Linux `notify-send`, macOS `osascript`)
|
|
329
|
-
- [ ] Course filtering by semester
|
|
330
|
-
- [ ] Parallel downloads for faster sync
|
|
331
330
|
|
|
332
331
|
---
|
|
333
332
|
|
|
@@ -6,7 +6,7 @@ from e3cli.credential import _decrypt, _encrypt, _get_or_create_key
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def test_version():
|
|
9
|
-
assert __version__
|
|
9
|
+
assert __version__
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def test_default_config():
|
|
@@ -26,6 +26,7 @@ def test_encrypt_decrypt_roundtrip():
|
|
|
26
26
|
|
|
27
27
|
def test_decrypt_wrong_key():
|
|
28
28
|
import os
|
|
29
|
+
|
|
29
30
|
key1 = os.urandom(32)
|
|
30
31
|
key2 = os.urandom(32)
|
|
31
32
|
encrypted = _encrypt(b"secret", key1)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|