git-push-time 1.1.0 → 1.1.1

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.
@@ -0,0 +1,33 @@
1
+ # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
3
+
4
+ name: Node.js Package
5
+
6
+ on:
7
+ release:
8
+ types: [created]
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: actions/setup-node@v4
16
+ with:
17
+ node-version: 20
18
+ - run: npm ci
19
+ - run: npm test
20
+
21
+ publish-npm:
22
+ needs: build
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - uses: actions/setup-node@v4
27
+ with:
28
+ node-version: 20
29
+ registry-url: https://registry.npmjs.org/
30
+ - run: npm ci
31
+ - run: npm publish
32
+ env:
33
+ NODE_AUTH_TOKEN: ${{secrets.npm_token}}
package/README.md CHANGED
@@ -1,215 +1,215 @@
1
- # 🚀 Git Push Time & GitHub CLI (`git-push-time`)
2
-
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
-
5
- ---
6
-
7
- ## ✨ Tính năng nổi bật
8
-
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`.
15
- - ⏰ **Tùy chỉnh thời gian commit (Git Backdate)**:
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.
27
-
28
- ---
29
-
30
- ## 📦 Cài đặt
31
-
32
- ### Cách 1: Cài đặt toàn cục (Khuyên dùng)
33
- ```bash
34
- npm install -g git-push-time
35
- ```
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!
37
-
38
- ### Cách 2: Chạy trực tiếp với `npx`
39
- ```bash
40
- npx git-push-time
41
- ```
42
-
43
- ---
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
-
79
- ## 🛠️ Hướng dẫn sử dụng
80
-
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:
83
- ```bash
84
- git-push-time
85
- ```
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`
93
-
94
- ---
95
-
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)
132
-
133
- #### Ví dụ 1: Lùi thời gian commit 2 ngày trước
134
- ```bash
135
- git-push-time -r https://github.com/username/my-repo.git -d "-2d" -m "Initial commit"
136
- ```
137
-
138
- #### Ví dụ 2: Đặt ngày giờ commit cụ thể trong quá khứ
139
- ```bash
140
- git-push-time -r https://github.com/username/my-repo.git -d "2024-01-15 14:30:00" -m "Add core features"
141
- ```
142
-
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)
149
- ```bash
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
170
- ```
171
-
172
- ---
173
-
174
- ## 📊 Bảng định dạng thời gian hỗ trợ
175
-
176
- | Định dạng ví dụ | Ý nghĩa |
177
- | :--- | :--- |
178
- | `now` hoặc để trống | Thời gian hiện tại |
179
- | `-2d` hoặc `2d` | Lùi lại 2 ngày |
180
- | `-5h` hoặc `5h` | Lùi lại 5 giờ |
181
- | `-30m` hoặc `30m` | Lùi lại 30 phút |
182
- | `-1w` hoặc `1w` | Lùi lại 1 tuần |
183
- | `-3m` | Lùi lại 3 tháng |
184
- | `2024-01-15 14:30:00` | Ngày 15/01/2024 lúc 14 giờ 30 phút |
185
- | `2024-01-15` | Ngày 15/01/2024 |
186
-
187
- ---
188
-
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
210
- ```
211
-
212
- ---
213
-
214
- ## 📄 License
215
- Phát hành theo giấy phép **MIT**.
1
+ # 🚀 Git Push Time & GitHub CLI (`git-push-time`)
2
+
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
+
5
+ ---
6
+
7
+ ## ✨ Tính năng nổi bật
8
+
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`.
15
+ - ⏰ **Tùy chỉnh thời gian commit (Git Backdate)**:
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.
27
+
28
+ ---
29
+
30
+ ## 📦 Cài đặt
31
+
32
+ ### Cách 1: Cài đặt toàn cục (Khuyên dùng)
33
+ ```bash
34
+ npm install -g git-push-time
35
+ ```
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!
37
+
38
+ ### Cách 2: Chạy trực tiếp với `npx`
39
+ ```bash
40
+ npx git-push-time
41
+ ```
42
+
43
+ ---
44
+
45
+ ## 🧭 Quy trình hoạt động (Workflow)
46
+
47
+ ```text
48
+ git-push-time github 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
+
79
+ ## 🛠️ Hướng dẫn sử dụng
80
+
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:
83
+ ```bash
84
+ git-push-time
85
+ ```
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`
93
+
94
+ ---
95
+
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)
132
+
133
+ #### Ví dụ 1: Lùi thời gian commit 2 ngày trước
134
+ ```bash
135
+ git-push-time -r https://github.com/username/my-repo.git -d "-2d" -m "Initial commit"
136
+ ```
137
+
138
+ #### Ví dụ 2: Đặt ngày giờ commit cụ thể trong quá khứ
139
+ ```bash
140
+ git-push-time -r https://github.com/username/my-repo.git -d "2024-01-15 14:30:00" -m "Add core features"
141
+ ```
142
+
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)
149
+ ```bash
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
170
+ ```
171
+
172
+ ---
173
+
174
+ ## 📊 Bảng định dạng thời gian hỗ trợ
175
+
176
+ | Định dạng ví dụ | Ý nghĩa |
177
+ | :--- | :--- |
178
+ | `now` hoặc để trống | Thời gian hiện tại |
179
+ | `-2d` hoặc `2d` | Lùi lại 2 ngày |
180
+ | `-5h` hoặc `5h` | Lùi lại 5 giờ |
181
+ | `-30m` hoặc `30m` | Lùi lại 30 phút (m = minute) |
182
+ | `-1w` hoặc `1w` | Lùi lại 1 tuần |
183
+ | `-3M` / `-3mo` / `-3month` | Lùi lại 3 tháng (M = month, phân biệt hoa/thường với m = minute) |
184
+ | `2024-01-15 14:30:00` | Ngày 15/01/2024 lúc 14 giờ 30 phút |
185
+ | `2024-01-15` | Ngày 15/01/2024 |
186
+
187
+ ---
188
+
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
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 📄 License
215
+ Phát hành theo giấy phép **MIT**.