git-push-time 1.0.2 → 1.1.0

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.
package/README.md CHANGED
@@ -1,57 +1,134 @@
1
- # 🚀 Git Push Time / GitHub CLI (`git-push-time`)
1
+ # 🚀 Git Push Time & GitHub CLI (`git-push-time`)
2
2
 
3
- Một công cụ Dòng lệnh (CLI) mạnh mẽ và tiện lợi giúp bạn **đẩy dự án lên Git (GitHub, GitLab, Bitbucket,...) cực nhanh** chỉ bằng cách dán URL repo, đồng thời hỗ trợ **tùy chỉnh hoặc lùi thời gian commit/push** (Author Date & Committer Date).
3
+ Một công cụ Dòng lệnh (CLI) mạnh mẽ, hiện đại và toàn diện giúp bạn **đẩy dự án lên Git siêu tốc**, **kết nối GitHub tạo Repository trực tiếp**, **tùy chỉnh lùi thời gian commit (Backdate)** và **tự động bảo vệ chống lộ Key/Secret (GitHub GH013)**.
4
4
 
5
5
  ---
6
6
 
7
7
  ## ✨ Tính năng nổi bật
8
8
 
9
- - 🔗 **Đẩy dự án siêu tốc**: Chỉ cần dán URL Git repository, công cụ tự động làm mọi thao tác `git init`, `git remote add/set-url`, `git add .`, `git commit`, `git push`.
9
+ - 🐙 **Kết nối GitHub & Tạo Repository trực tiếp**:
10
+ - Tạo nhanh repository mới trên GitHub (Public / Private) chỉ trong 3 giây ngay trên terminal.
11
+ - Tự động liên kết remote và đẩy code của dự án lên repo mới vừa tạo.
12
+ - Hỗ trợ lưu trữ Personal Access Token (PAT) an toàn, tự nhận diện token từ `gh CLI` hoặc biến môi trường `GITHUB_TOKEN`.
13
+ - Xem thông tin tài khoản GitHub (Profile), danh sách repository cá nhân và chọn repo trực tiếp không cần copy-paste link.
14
+ - ⚡ **Đẩy dự án siêu tốc**: Tự động hóa toàn bộ quy trình `git init`, `git remote`, `git add .`, `git commit`, `git push`.
10
15
  - ⏰ **Tùy chỉnh thời gian commit (Git Backdate)**:
11
- - Lùi ngày/giờ bằng chuỗi ngắn gọn: `-2d` (2 ngày trước), `-5h` (5 giờ trước), `-1w` (1 tuần trước), `-30m` (30 phút trước).
12
- - Hoặc nhập ngày giờ chuẩn chính xác: `2024-01-15 14:30:00`.
13
- - Cập nhật cả `GIT_AUTHOR_DATE` và `GIT_COMMITTER_DATE` chuẩn mực.
14
- - 💬 **Chế độ Tương tác (Interactive Prompt)**: Giao diện trực quan đẹp mắt với câu hỏi từng bước.
15
- - ⚡ **Chế độ Lệnh nhanh (Command-line flags)**: Truyền tham số để đẩy code không cần bấm enter chọn lựa.
16
+ - Lùi ngày/giờ bằng cú pháp tự nhiên: `-2d` (2 ngày trước), `-5h` (5 giờ trước), `-1w` (1 tuần trước), `-30m` (30 phút trước).
17
+ - Hoặc nhập mốc thời gian cụ thể: `2024-01-15 14:30:00`.
18
+ - Ghi chuẩn xác cả `GIT_AUTHOR_DATE` và `GIT_COMMITTER_DATE`.
19
+ - 🛡️ **Zero-Leak Secret Shield**:
20
+ - Quét trước các file nhạy cảm (`.env`, `.npmrc`, private keys, API keys).
21
+ - Tự động gỡ khỏi stage và bổ sung vào `.gitignore` an toàn mà không làm mất file trên máy của bạn.
22
+ - Tự động squash làm sạch lịch sử unpushed nếu từng vô tình commit key bí mật.
23
+ - 🎨 **Giao diện Terminal UI hiện đại**:
24
+ - Thiết kế Dashboard trực quan hiển thị thư mục, branch, trạng thái GitHub.
25
+ - Hỗ trợ nút `« Quay lại` ở tất cả các bước (hoặc gõ `..`).
26
+ - Hộp thoại màu sắc chuẩn Cyberpunk / DevTools sắc nét, không dùng emoji dư thừa.
16
27
 
17
28
  ---
18
29
 
19
- ## 📦 Cài đặt từ NPM
30
+ ## 📦 Cài đặt
20
31
 
21
- ### Cách 1: Cài đặt toàn cục (Recommended)
32
+ ### Cách 1: Cài đặt toàn cục (Khuyên dùng)
22
33
  ```bash
23
34
  npm install -g git-push-time
24
35
  ```
25
- Sau khi cài đặt, bạn có thể gọi lệnh `git-push-time`, `githubcli` hoặc `git-custom-push` ở **bất kỳ thư mục dự án nào** trên máy tính!
36
+ Sau khi cài đặt, bạn có thể gọi lệnh `git-push-time`, `githubcli` hoặc `git-custom-push` ở bất kỳ thư mục nào!
26
37
 
27
- ### Cách 2: Chạy trực tiếp qua `npx`
38
+ ### Cách 2: Chạy trực tiếp với `npx`
28
39
  ```bash
29
40
  npx git-push-time
30
41
  ```
31
42
 
32
43
  ---
33
44
 
45
+ ## 🧭 Quy trình hoạt động (Workflow)
46
+
47
+ ```text
48
+ git-push-time login
49
+ │
50
+ ▼
51
+ 🌐 GitHub Login (OAuth Device Flow / Personal Access Token)
52
+ │
53
+ ▼
54
+ 🔑 Mở trình duyệt xác nhận mã User Code & Cấp quyền
55
+ │
56
+ ▼
57
+ ✅ Đăng nhập thành công!
58
+ │
59
+ ▼
60
+ git-push-time
61
+ │
62
+ ├── 📁 1. Chọn folder project
63
+ │
64
+ ├── 👤 2. Chọn GitHub account
65
+ │
66
+ ├── 📦 3. Chọn repository (chọn có sẵn / tạo mới trực tiếp / dán URL)
67
+ │
68
+ ├── 🌿 4. Chọn branch
69
+ │
70
+ ├── 💬 5. Nhập commit message
71
+ │
72
+ ├── ⏰ 6. Chọn commit time (ngay bây giờ / backdate lùi giờ / ngày cụ thể)
73
+ │
74
+ └── 🚀 7. Push (quét secret, commit & đẩy lên remote)
75
+ ```
76
+
77
+ ---
78
+
34
79
  ## 🛠️ Hướng dẫn sử dụng
35
80
 
36
- ### 1. Chế độ tương tác (Interactive Mode)
37
- Chỉ cần mở Terminal tại thư mục dự án của bạn và gõ:
81
+ ### 1. Bảng điều khiển tương tác (Interactive Dashboard)
82
+ Mở terminal tại thư mục dự án và chạy:
38
83
  ```bash
39
84
  git-push-time
40
85
  ```
41
- Công cụ sẽ hiển thị từng câu hỏi giao diện để bạn dán link repo, nhập commit message và chọn thời gian:
42
- 1. **Dán Link Repo**: `https://github.com/username/repository.git`
43
- 2. **Commit Message**: `Initial commit`
44
- 3. **Chọn thời gian**:
45
- - ⏰ *Ngay bây giờ*
46
- - ⏳ *Lùi thời gian* (VD: `-2d` là 2 ngày trước)
47
- - 📅 *Nhập ngày giờ cụ thể* (VD: `2024-05-20 09:15:00`)
48
- 4. **Tên Branch**: `main`
49
- 5. **Xác nhận**: Có / Không.
86
+ Menu tương tác chính sẽ xuất hiện với các phân mục rõ ràng:
87
+ - `» [PUSH] | Đẩy code lên Git (kèm chọn folder, backdate & chống lộ secret)`
88
+ - `» [GITHUB] | Quản lý GitHub & Tạo repository mới`
89
+ - `» [PULL] | Cập nhật code mới về máy (Fast-forward / Rebase)`
90
+ - `» [TIME] | Sửa thời gian commit lịch sử`
91
+ - `» [FIX] | Quét & gỡ sạch secret khỏi repo`
92
+ - `x [THOÁT] | Kết thúc chương trình`
50
93
 
51
94
  ---
52
95
 
53
- ### 2. Chế độ dòng lệnh nhanh (Command Line Flags)
54
- Đẩy dự án với thông số truyền trực tiếp:
96
+ ### 2. Tính năng GitHub & Tạo Repository
97
+
98
+ #### Tạo Repository mới trên GitHub ngay lập tức:
99
+ ```bash
100
+ git-push-time github create
101
+ ```
102
+ Hệ thống sẽ hỏi bạn:
103
+ 1. **Tên Repository** (Mặc định tự lấy theo tên folder hiện tại).
104
+ 2. **Mô tả dự án**.
105
+ 3. **Quyền riêng tư**: Public hoặc Private.
106
+ 4. **Hỏi đẩy code ngay**: Nếu chọn Có, CLI sẽ tự động liên kết remote và đẩy toàn bộ source code của bạn lên repo vừa tạo!
107
+
108
+ #### Xem thông tin tài khoản GitHub đang kết nối:
109
+ ```bash
110
+ git-push-time github whoami
111
+ ```
112
+
113
+ #### Liệt kê các Repository trên tài khoản GitHub của bạn:
114
+ ```bash
115
+ git-push-time github repos
116
+ ```
117
+
118
+ #### Đăng nhập bằng Personal Access Token (PAT):
119
+ ```bash
120
+ git-push-time github login
121
+ ```
122
+ *(Token cần có quyền `repo` để tạo và quản lý repository)*.
123
+
124
+ #### Đăng xuất:
125
+ ```bash
126
+ git-push-time github logout
127
+ ```
128
+
129
+ ---
130
+
131
+ ### 3. Đẩy dự án bằng tham số dòng lệnh (Command Line Flags)
55
132
 
56
133
  #### Ví dụ 1: Lùi thời gian commit 2 ngày trước
57
134
  ```bash
@@ -63,9 +140,33 @@ git-push-time -r https://github.com/username/my-repo.git -d "-2d" -m "Initial co
63
140
  git-push-time -r https://github.com/username/my-repo.git -d "2024-01-15 14:30:00" -m "Add core features"
64
141
  ```
65
142
 
66
- #### Ví dụ 3: Đẩy tự động không hỏi lại (-y) và force push (-f)
143
+ #### Ví dụ 3: Đẩy tự động không hỏi lại (-y) và tự gỡ secret (--fix)
144
+ ```bash
145
+ git-push-time -r https://github.com/username/my-repo.git -d "-5h" -m "Update docs" -b main -y --fix
146
+ ```
147
+
148
+ #### Ví dụ 4: Chỉ push đúng 1 thư mục con (khi đứng ở thư mục gốc ngoài cùng)
67
149
  ```bash
68
- git-push-time -r https://github.com/username/my-repo.git -d "-5h" -m "Update docs" -b main -f -y
150
+ git-push-time -r https://github.com/username/my-repo.git -m "Init" --dir ./my-app -y
151
+ ```
152
+
153
+ ---
154
+
155
+ ### 4. Các lệnh độc lập khác
156
+
157
+ #### Quét và tự động làm sạch Secret:
158
+ ```bash
159
+ git-push-time fix
160
+ ```
161
+
162
+ #### Cập nhật code mới từ remote:
163
+ ```bash
164
+ git-push-time pull
165
+ ```
166
+
167
+ #### Sửa đổi thời gian commit cũ trong lịch sử:
168
+ ```bash
169
+ git-push-time edit-time
69
170
  ```
70
171
 
71
172
  ---
@@ -85,27 +186,30 @@ git-push-time -r https://github.com/username/my-repo.git -d "-5h" -m "Update doc
85
186
 
86
187
  ---
87
188
 
88
- - `-r, --repo <url>`: Link Git Repository (VD: `https://github.com/user/repo.git`)
89
- - `-d, --date <datetime>`: Thời gian commit (`now`, `-2d`, `2024-01-15 10:30:00`,...)
90
- - `-m, --message <msg>`: Thông điệp commit (Mặc định: `Initial commit`)
91
- - `-b, --branch <branch>`: Tên branch (Mặc định: `main`)
92
- - `-f, --force`: Đẩy đè lên branch remote (`--force`)
93
- - `-y, --yes`: Tự động xác nhận, không hiện prompt chọn
94
- - `--fix`: Tự động gỡ file secret (.env, .npmrc...) khỏi stage và thêm vào `.gitignore`
95
- - `--publish`: Publish package lên npm sau khi push Git thành công
96
- - `-h, --help`: Hướng dẫn trợ giúp
97
-
98
- ### 🛠️ Lệnh Fix Secret Độc Lập
99
- Nếu phát hiện repo bị dính secret hoặc GitHub Push Protection (GH013) chặn push, bạn có thể chạy ngay lệnh fix:
100
- ```bash
101
- git-push-time fix
189
+ ## 🏛️ Cấu trúc mã nguồn
190
+
191
+ ```
192
+ cli/
193
+ ├── bin/
194
+ │ └── index.js # CLI Entrypoint & Commander Dispatcher
195
+ ├── lib/
196
+ │ ├── config.js # Quản lý config & GitHub Token local
197
+ │ ├── github.js # Tương tác GitHub REST API (verify, repos, create)
198
+ │ ├── git.js # Các tác vụ Git cốt lõi
199
+ │ ├── secrets.js # Quét phát hiện secret trong code & stage
200
+ │ ├── fix.js # Thuật toán gỡ secret & squash unpushed
201
+ │ ├── utils.js # Validate url & parse custom datetime
202
+ │ ├── prompt-helpers.js # Interactive prompt helpers có nút Back '..'
203
+ │ ├── ui.js # Design System: Banner, Dashboard, Box & Badges
204
+ │ └── commands/
205
+ │ ├── push.js # Wizard push thông minh tích hợp GitHub
206
+ │ ├── github.js # Lệnh & Menu quản lý GitHub / Tạo repo
207
+ │ ├── pull.js # Lệnh pull code (--ff-only, --rebase)
208
+ │ ├── edit-time.js # Lệnh sửa thời gian commit lịch sử
209
+ │ └── fix.js # Lệnh quét & sửa secret độc lập
102
210
  ```
103
- Lệnh sẽ tự động:
104
- 1. Quét vùng stage và thư mục làm việc để tìm file cấu hình nhạy cảm (`.env`, `.npmrc`, keys...).
105
- 2. Gỡ file khỏi stage và thêm rule an toàn vào `.gitignore`.
106
- 3. Kiểm tra các commit chưa push (unpushed) dính secret cũ và hỗ trợ tự động squash thành commit sạch để GitHub cho phép push.
107
211
 
108
212
  ---
109
213
 
110
- ## 📜 Giấy phép
111
- MIT License.
214
+ ## 📄 License
215
+ Phát hành theo giấy phép **MIT**.