huntr-cli 1.0.9
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/.env.example +7 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
- package/.github/labels.json +92 -0
- package/.github/pull_request_template.md +64 -0
- package/.github/workflows/ci.yml +87 -0
- package/.github/workflows/labels.yml +27 -0
- package/.github/workflows/manual-publish.yml +105 -0
- package/.github/workflows/publish.yml +57 -0
- package/.github/workflows/release.yml +124 -0
- package/.github/workflows/security-audit.yml +44 -0
- package/.husky/pre-commit +12 -0
- package/.husky/pre-push +27 -0
- package/.lintstagedrc.json +3 -0
- package/AGENTS.md +449 -0
- package/CHANGELOG.md +38 -0
- package/CHANGES.md +259 -0
- package/LICENSE +15 -0
- package/PUBLISHING.md +191 -0
- package/README.md +385 -0
- package/ROADMAP.md +158 -0
- package/SETUP-COMPLETE.md +446 -0
- package/WORKFLOW-SUMMARY.md +368 -0
- package/completions/_huntr +168 -0
- package/completions/huntr.1 +266 -0
- package/completions/huntr.bash +91 -0
- package/dist/api/client.d.ts +14 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +74 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/personal/activities.d.ts +20 -0
- package/dist/api/personal/activities.d.ts.map +1 -0
- package/dist/api/personal/activities.js +50 -0
- package/dist/api/personal/activities.js.map +1 -0
- package/dist/api/personal/boards.d.ts +9 -0
- package/dist/api/personal/boards.d.ts.map +1 -0
- package/dist/api/personal/boards.js +16 -0
- package/dist/api/personal/boards.js.map +1 -0
- package/dist/api/personal/index.d.ts +17 -0
- package/dist/api/personal/index.d.ts.map +1 -0
- package/dist/api/personal/index.js +37 -0
- package/dist/api/personal/index.js.map +1 -0
- package/dist/api/personal/jobs.d.ts +13 -0
- package/dist/api/personal/jobs.d.ts.map +1 -0
- package/dist/api/personal/jobs.js +31 -0
- package/dist/api/personal/jobs.js.map +1 -0
- package/dist/api/personal/user.d.ts +8 -0
- package/dist/api/personal/user.d.ts.map +1 -0
- package/dist/api/personal/user.js +13 -0
- package/dist/api/personal/user.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +501 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/capture-session.d.ts +10 -0
- package/dist/commands/capture-session.d.ts.map +1 -0
- package/dist/commands/capture-session.js +478 -0
- package/dist/commands/capture-session.js.map +1 -0
- package/dist/config/clerk-session-manager.d.ts +44 -0
- package/dist/config/clerk-session-manager.d.ts.map +1 -0
- package/dist/config/clerk-session-manager.js +232 -0
- package/dist/config/clerk-session-manager.js.map +1 -0
- package/dist/config/config-manager.d.ts +15 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +51 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/keychain-manager.d.ts +6 -0
- package/dist/config/keychain-manager.d.ts.map +1 -0
- package/dist/config/keychain-manager.js +37 -0
- package/dist/config/keychain-manager.js.map +1 -0
- package/dist/config/token-capture.d.ts +11 -0
- package/dist/config/token-capture.d.ts.map +1 -0
- package/dist/config/token-capture.js +252 -0
- package/dist/config/token-capture.js.map +1 -0
- package/dist/config/token-manager.d.ts +38 -0
- package/dist/config/token-manager.d.ts.map +1 -0
- package/dist/config/token-manager.js +153 -0
- package/dist/config/token-manager.js.map +1 -0
- package/dist/lib/list-options.d.ts +69 -0
- package/dist/lib/list-options.d.ts.map +1 -0
- package/dist/lib/list-options.js +299 -0
- package/dist/lib/list-options.js.map +1 -0
- package/dist/types/personal.d.ts +113 -0
- package/dist/types/personal.d.ts.map +1 -0
- package/dist/types/personal.js +4 -0
- package/dist/types/personal.js.map +1 -0
- package/docs/AUTOMATIC-PUBLISHING.md +520 -0
- package/docs/CHANGELOG-AUTOMATION.md +418 -0
- package/docs/CI-CD-SETUP.md +582 -0
- package/docs/DEV-SETUP.md +512 -0
- package/docs/ENHANCEMENT-PLAN.md +204 -0
- package/docs/ENTITY-TYPES.md +462 -0
- package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
- package/docs/NPM-PUBLISHING.md +324 -0
- package/docs/OUTPUT-EXAMPLES.md +414 -0
- package/docs/OUTPUT-FORMATS.md +299 -0
- package/docs/TESTING.md +216 -0
- package/eslint.config.js +68 -0
- package/package.json +64 -0
- package/src/api/client.ts +88 -0
- package/src/api/personal/activities.ts +66 -0
- package/src/api/personal/boards.ts +14 -0
- package/src/api/personal/index.ts +25 -0
- package/src/api/personal/jobs.ts +33 -0
- package/src/api/personal/user.ts +10 -0
- package/src/cli.ts +487 -0
- package/src/commands/capture-session.ts +582 -0
- package/src/config/clerk-session-manager.ts +263 -0
- package/src/config/config-manager.ts +56 -0
- package/src/config/keychain-manager.ts +30 -0
- package/src/config/token-capture.ts +233 -0
- package/src/config/token-manager.ts +139 -0
- package/src/lib/list-options.ts +370 -0
- package/src/types/personal.ts +114 -0
- package/tests/example.test.ts +130 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
# Output Format Examples and Usage Guide
|
|
2
|
+
|
|
3
|
+
This document provides practical examples for using huntr-cli's output formatting capabilities, including the new `--fields` parameter and PDF/Excel export formats.
|
|
4
|
+
|
|
5
|
+
## Field Selection with `--fields`
|
|
6
|
+
|
|
7
|
+
All list commands support the `--fields` parameter to select specific columns:
|
|
8
|
+
|
|
9
|
+
### Example: Boards with Custom Fields
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Default: all fields (ID, Name, Created)
|
|
13
|
+
huntr boards list
|
|
14
|
+
|
|
15
|
+
# Only ID and Name
|
|
16
|
+
huntr boards list --fields ID,Name
|
|
17
|
+
|
|
18
|
+
# Only Name
|
|
19
|
+
huntr boards list --fields Name
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Output with `--fields ID,Name`:**
|
|
23
|
+
```
|
|
24
|
+
ID Name
|
|
25
|
+
68bf9e33f871e5004a5eb58e My Job Search
|
|
26
|
+
7c2d8e44g982f6115b6fc69f Secondary Board
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Example: Jobs with Field Selection
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Default: ID, Title, URL, Created
|
|
33
|
+
huntr jobs list <board-id>
|
|
34
|
+
|
|
35
|
+
# Only Title and URL
|
|
36
|
+
huntr jobs list <board-id> --fields Title,URL
|
|
37
|
+
|
|
38
|
+
# Only Title
|
|
39
|
+
huntr jobs list <board-id> --fields Title
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Output with `--fields Title,URL`:**
|
|
43
|
+
```
|
|
44
|
+
Title URL
|
|
45
|
+
Senior Engineer at TechCorp https://techs.jobs/engineer
|
|
46
|
+
Product Manager at StartupXYZ https://jobs.com/pm-role
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Example: Activities with Field Selection
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Default: Date, Type, Company, Job, Status
|
|
53
|
+
huntr activities list <board-id>
|
|
54
|
+
|
|
55
|
+
# Only Type, Company, and Status
|
|
56
|
+
huntr activities list <board-id> --fields Type,Company,Status
|
|
57
|
+
|
|
58
|
+
# Date and Company for quick reference
|
|
59
|
+
huntr activities list <board-id> --fields Date,Company
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Available fields for activities:**
|
|
63
|
+
- `Date` — When the activity occurred
|
|
64
|
+
- `Type` — Action type (e.g., JOB_MOVED, NOTE_CREATED)
|
|
65
|
+
- `Company` — Company name
|
|
66
|
+
- `Job` — Job title (truncated to 40 chars)
|
|
67
|
+
- `Status` — List the job was moved to
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Output Formats
|
|
72
|
+
|
|
73
|
+
### Table Format (Default)
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
huntr jobs list <board-id>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Output:**
|
|
80
|
+
```
|
|
81
|
+
ID Title URL Created
|
|
82
|
+
job_001 Senior Engineer at TechCorp https://techs.jobs/engineer 1/20/2024
|
|
83
|
+
job_002 Product Manager at StartupXYZ https://jobs.com/pm-role 1/18/2024
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**With field selection:**
|
|
87
|
+
```bash
|
|
88
|
+
huntr jobs list <board-id> --fields Title,URL
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Output:**
|
|
92
|
+
```
|
|
93
|
+
Title URL
|
|
94
|
+
Senior Engineer at TechCorp https://techs.jobs/engineer
|
|
95
|
+
Product Manager at StartupXYZ https://jobs.com/pm-role
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### JSON Format
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
huntr jobs list <board-id> --format json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Output:**
|
|
105
|
+
```json
|
|
106
|
+
[
|
|
107
|
+
{
|
|
108
|
+
"ID": "job_001",
|
|
109
|
+
"Title": "Senior Engineer at TechCorp",
|
|
110
|
+
"URL": "https://techs.jobs/engineer",
|
|
111
|
+
"Created": "1/20/2024"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"ID": "job_002",
|
|
115
|
+
"Title": "Product Manager at StartupXYZ",
|
|
116
|
+
"URL": "https://jobs.com/pm-role",
|
|
117
|
+
"Created": "1/18/2024"
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**With field selection:**
|
|
123
|
+
```bash
|
|
124
|
+
huntr jobs list <board-id> --format json --fields Title,URL
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Output:**
|
|
128
|
+
```json
|
|
129
|
+
[
|
|
130
|
+
{
|
|
131
|
+
"Title": "Senior Engineer at TechCorp",
|
|
132
|
+
"URL": "https://techs.jobs/engineer"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"Title": "Product Manager at StartupXYZ",
|
|
136
|
+
"URL": "https://jobs.com/pm-role"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### CSV Format
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
huntr jobs list <board-id> --format csv
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Output:**
|
|
148
|
+
```
|
|
149
|
+
ID,Title,URL,Created
|
|
150
|
+
job_001,Senior Engineer at TechCorp,https://techs.jobs/engineer,1/20/2024
|
|
151
|
+
job_002,Product Manager at StartupXYZ,https://jobs.com/pm-role,1/18/2024
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**With field selection:**
|
|
155
|
+
```bash
|
|
156
|
+
huntr jobs list <board-id> --format csv --fields Title,URL
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Output:**
|
|
160
|
+
```
|
|
161
|
+
Title,URL
|
|
162
|
+
Senior Engineer at TechCorp,https://techs.jobs/engineer
|
|
163
|
+
Product Manager at StartupXYZ,https://jobs.com/pm-role
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Save to file:**
|
|
167
|
+
```bash
|
|
168
|
+
huntr jobs list <board-id> --format csv > jobs.csv
|
|
169
|
+
huntr activities list <board-id> --days 7 --format csv > week-activities.csv
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### PDF Format
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
huntr jobs list <board-id> --format pdf > jobs.pdf
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Creates a professional PDF with:
|
|
179
|
+
- Column headers (bold white text on blue background)
|
|
180
|
+
- Alternate row shading for readability
|
|
181
|
+
- Auto-sized columns
|
|
182
|
+
- Metadata (generation date)
|
|
183
|
+
- Footer with "huntr-cli" branding
|
|
184
|
+
|
|
185
|
+
**With field selection:**
|
|
186
|
+
```bash
|
|
187
|
+
huntr activities list <board-id> --days 7 --format pdf --fields Date,Type,Company > week-activities.pdf
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Open PDF:**
|
|
191
|
+
```bash
|
|
192
|
+
# macOS
|
|
193
|
+
huntr jobs list <board-id> --format pdf | open -f -a Preview
|
|
194
|
+
|
|
195
|
+
# Linux
|
|
196
|
+
huntr jobs list <board-id> --format pdf > jobs.pdf && xdg-open jobs.pdf
|
|
197
|
+
|
|
198
|
+
# Windows
|
|
199
|
+
huntr jobs list <board-id> --format pdf > jobs.pdf && start jobs.pdf
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Excel Format
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
huntr jobs list <board-id> --format excel > jobs.xlsx
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Creates an Excel workbook with:
|
|
209
|
+
- Bold blue header row
|
|
210
|
+
- Auto-adjusted column widths (max 50 chars)
|
|
211
|
+
- Professional formatting
|
|
212
|
+
- Landscape orientation
|
|
213
|
+
- Sheet name based on entity type
|
|
214
|
+
|
|
215
|
+
**With field selection:**
|
|
216
|
+
```bash
|
|
217
|
+
huntr activities list <board-id> --days 7 --format excel --fields Date,Type,Company,Status > week-activities.xlsx
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Open Excel:**
|
|
221
|
+
```bash
|
|
222
|
+
# macOS
|
|
223
|
+
huntr jobs list <board-id> --format excel | open -f -a "Microsoft Excel"
|
|
224
|
+
|
|
225
|
+
# Windows
|
|
226
|
+
huntr jobs list <board-id> --format excel > jobs.xlsx && start jobs.xlsx
|
|
227
|
+
|
|
228
|
+
# Linux (LibreOffice)
|
|
229
|
+
huntr jobs list <board-id> --format excel > jobs.xlsx && libreoffice jobs.xlsx
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Practical Examples
|
|
235
|
+
|
|
236
|
+
### Example 1: Export Activities for Reporting
|
|
237
|
+
|
|
238
|
+
Export the past week of activities as Excel for a manager report:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
huntr activities list <board-id> --days 7 --format excel --fields Date,Type,Company,Job,Status > report.xlsx
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Example 2: Quick CSV for Spreadsheet Import
|
|
245
|
+
|
|
246
|
+
Get a CSV of all jobs for import into Google Sheets:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
huntr jobs list <board-id> --format csv --fields Title,URL,Created > import.csv
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Then in Google Sheets: File → Import → Upload → import.csv
|
|
253
|
+
|
|
254
|
+
### Example 3: List Jobs Without URLs
|
|
255
|
+
|
|
256
|
+
If you just want to see job titles and creation dates:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
huntr jobs list <board-id> --format table --fields Title,Created
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Example 4: Parse Activities with jq
|
|
263
|
+
|
|
264
|
+
Combine JSON output with jq for programmatic access:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Get all companies from activities
|
|
268
|
+
huntr activities list <board-id> --days 30 --format json | jq '.[].Company'
|
|
269
|
+
|
|
270
|
+
# Get activities for a specific company
|
|
271
|
+
huntr activities list <board-id> --days 30 --format json | jq 'map(select(.Company == "TechCorp"))'
|
|
272
|
+
|
|
273
|
+
# Count activities by type
|
|
274
|
+
huntr activities list <board-id> --days 30 --format json | jq 'group_by(.Type) | map({type: .[0].Type, count: length})'
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Example 5: Pipe to Mail
|
|
278
|
+
|
|
279
|
+
Email a PDF report of this week's activities:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
huntr activities list <board-id> --days 7 --format pdf \
|
|
283
|
+
| mail -s "Weekly Job Search Report" your-email@example.com -a "Content-Type: application/pdf"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Example 6: Automated Backup
|
|
287
|
+
|
|
288
|
+
Create a daily backup of all activities as CSV:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
#!/bin/bash
|
|
292
|
+
BOARD_ID="68bf9e33f871e5004a5eb58e"
|
|
293
|
+
DATE=$(date +%Y-%m-%d)
|
|
294
|
+
huntr activities list $BOARD_ID --format csv > "backup-activities-${DATE}.csv"
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Add to crontab to run daily:
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
0 2 * * * /path/to/backup-activities.sh
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Field Reference
|
|
306
|
+
|
|
307
|
+
### Boards List
|
|
308
|
+
- `ID` — Unique board identifier
|
|
309
|
+
- `Name` — Board name (or "N/A")
|
|
310
|
+
- `Created` — Creation date (MM/DD/YYYY)
|
|
311
|
+
|
|
312
|
+
### Jobs List
|
|
313
|
+
- `ID` — Unique job identifier
|
|
314
|
+
- `Title` — Job title
|
|
315
|
+
- `URL` — Job posting URL (or "N/A")
|
|
316
|
+
- `Created` — Creation date (MM/DD/YYYY)
|
|
317
|
+
|
|
318
|
+
### Activities List
|
|
319
|
+
- `Date` — Activity timestamp (YYYY-MM-DDTHH:MM format)
|
|
320
|
+
- `Type` — Action type (e.g., JOB_MOVED, NOTE_CREATED, JOB_APPLICATION)
|
|
321
|
+
- `Company` — Company name (empty string if not available)
|
|
322
|
+
- `Job` — Job title, truncated to 40 characters
|
|
323
|
+
- `Status` — Board list name the job was moved to (empty if not applicable)
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Error Handling
|
|
328
|
+
|
|
329
|
+
### Invalid Field Name
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
$ huntr jobs list <board-id> --fields Title,InvalidField
|
|
333
|
+
Error: Unknown field(s): InvalidField
|
|
334
|
+
Available fields: ID, Title, URL, Created
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Invalid Format
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
$ huntr jobs list <board-id> --format doc
|
|
341
|
+
Error: Invalid format: doc. Must be table, json, csv, pdf, or excel.
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Missing Dependencies
|
|
345
|
+
|
|
346
|
+
If PDF or Excel format is used without dependencies installed:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
$ huntr jobs list <board-id> --format pdf
|
|
350
|
+
Error: PDF format requires the pdfkit package. Install with: npm install pdfkit
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
*This shouldn't happen if installed via npm, but mentioned for reference.*
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Tips and Best Practices
|
|
358
|
+
|
|
359
|
+
1. **Default behavior unchanged** — Running a command without `--format` or `--fields` works exactly as before
|
|
360
|
+
2. **Field order matters** — Fields are output in the order specified: `--fields Company,Job,Date`
|
|
361
|
+
3. **Case-sensitive** — Field names must match exactly: `Company`, not `company`
|
|
362
|
+
4. **All formats have headers** — Table, CSV, PDF, and Excel all include column headers
|
|
363
|
+
5. **CSV is RFC 4180** — Proper escaping for quotes and commas
|
|
364
|
+
6. **PDF is single-page** — May wrap text if many columns; use `--fields` to reduce
|
|
365
|
+
7. **Excel auto-fits columns** — Column widths auto-adjust up to 50 characters
|
|
366
|
+
8. **Piping works** — Use `> filename` to save output to file
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## Combining with Other Tools
|
|
371
|
+
|
|
372
|
+
### Bash
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# Count rows
|
|
376
|
+
huntr jobs list <board-id> --format csv | wc -l
|
|
377
|
+
|
|
378
|
+
# Filter by URL
|
|
379
|
+
huntr jobs list <board-id> --format csv | grep "github.com"
|
|
380
|
+
|
|
381
|
+
# Sort by creation date
|
|
382
|
+
huntr activities list <board-id> --format csv | sort -t',' -k1
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Shell Scripts
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
#!/bin/bash
|
|
389
|
+
BOARD="${1:-default-board-id}"
|
|
390
|
+
DAYS="${2:-7}"
|
|
391
|
+
|
|
392
|
+
echo "=== Weekly Summary ==="
|
|
393
|
+
huntr activities list "$BOARD" --days "$DAYS" --format json | jq length
|
|
394
|
+
echo "activities found"
|
|
395
|
+
|
|
396
|
+
echo "=== Top Companies ==="
|
|
397
|
+
huntr activities list "$BOARD" --days "$DAYS" --format json \
|
|
398
|
+
| jq -r '.[].Company' | sort | uniq -c | sort -rn
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Make
|
|
402
|
+
|
|
403
|
+
```Makefile
|
|
404
|
+
export-jobs:
|
|
405
|
+
huntr jobs list <board-id> --format excel --fields Title,URL > jobs.xlsx
|
|
406
|
+
|
|
407
|
+
report-week:
|
|
408
|
+
huntr activities list <board-id> --days 7 --format pdf > report.pdf
|
|
409
|
+
|
|
410
|
+
backup:
|
|
411
|
+
huntr boards list --format csv > backup-boards.csv
|
|
412
|
+
huntr jobs list <board-id> --format csv > backup-jobs.csv
|
|
413
|
+
huntr activities list <board-id> --format csv > backup-activities.csv
|
|
414
|
+
```
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# Output Formats and Field Reference
|
|
2
|
+
|
|
3
|
+
This document explains what fields are included in each output format (table, JSON, CSV, and planned PDF/Excel) for each huntr-cli command.
|
|
4
|
+
|
|
5
|
+
## Current Output Structure
|
|
6
|
+
|
|
7
|
+
### `me` — User Profile
|
|
8
|
+
|
|
9
|
+
**Available formats:** Table (text), JSON only
|
|
10
|
+
|
|
11
|
+
**Text output (default):**
|
|
12
|
+
```
|
|
13
|
+
Name: John Doe
|
|
14
|
+
Email: john@example.com
|
|
15
|
+
ID: user_123
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**JSON output:**
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"id": "user_123",
|
|
22
|
+
"_id": "507f1f77bcf86cd799439011",
|
|
23
|
+
"email": "john@example.com",
|
|
24
|
+
"givenName": "John",
|
|
25
|
+
"familyName": "Doe",
|
|
26
|
+
"firstName": "John",
|
|
27
|
+
"lastName": "Doe",
|
|
28
|
+
"createdAt": "2024-01-15T10:30:00Z"
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Note:** This command doesn't support `--format` flag (text output is default, use `--json` for JSON).
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
### `boards list` — All Boards
|
|
37
|
+
|
|
38
|
+
**Fields included:** ID, Name, Created
|
|
39
|
+
|
|
40
|
+
**Table output:**
|
|
41
|
+
```
|
|
42
|
+
ID Name Created
|
|
43
|
+
68bf9e33f871e5004a5eb58e My Job Search 1/15/2024
|
|
44
|
+
7c2d8e44g982f6115b6fc69f Secondary Board 2/20/2024
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**JSON output:**
|
|
48
|
+
```json
|
|
49
|
+
[
|
|
50
|
+
{
|
|
51
|
+
"ID": "68bf9e33f871e5004a5eb58e",
|
|
52
|
+
"Name": "My Job Search",
|
|
53
|
+
"Created": "1/15/2024"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**CSV output:**
|
|
59
|
+
```
|
|
60
|
+
ID,Name,Created
|
|
61
|
+
68bf9e33f871e5004a5eb58e,My Job Search,1/15/2024
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### `boards get <board-id>` — Single Board Details
|
|
67
|
+
|
|
68
|
+
**Available formats:** Table (text), JSON only
|
|
69
|
+
|
|
70
|
+
**Text output (default):**
|
|
71
|
+
```
|
|
72
|
+
Board: My Job Search
|
|
73
|
+
ID: 68bf9e33f871e5004a5eb58e
|
|
74
|
+
Created: 1/15/2024 10:30 AM
|
|
75
|
+
|
|
76
|
+
Lists:
|
|
77
|
+
- Active Leads
|
|
78
|
+
- Interviewing
|
|
79
|
+
- Offers
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**JSON output:**
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"id": "68bf9e33f871e5004a5eb58e",
|
|
86
|
+
"_id": "507f1f77bcf86cd799439011",
|
|
87
|
+
"name": "My Job Search",
|
|
88
|
+
"createdAt": "2024-01-15T10:30:00Z",
|
|
89
|
+
"updatedAt": "2024-02-20T15:45:00Z",
|
|
90
|
+
"lists": [
|
|
91
|
+
{
|
|
92
|
+
"id": "list_1",
|
|
93
|
+
"_id": "507f1f77bcf86cd799439012",
|
|
94
|
+
"name": "Active Leads",
|
|
95
|
+
"order": 1
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### `jobs list <board-id>` — All Jobs on a Board
|
|
104
|
+
|
|
105
|
+
**Fields included:** ID, Title, URL, Created
|
|
106
|
+
|
|
107
|
+
**Table output:**
|
|
108
|
+
```
|
|
109
|
+
ID Title URL Created
|
|
110
|
+
job_001 Senior Engineer at TechCorp https://techs.jobs/engineer 1/20/2024
|
|
111
|
+
job_002 Product Manager at StartupXYZ https://jobs.com/pm-role 1/18/2024
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**JSON output:**
|
|
115
|
+
```json
|
|
116
|
+
[
|
|
117
|
+
{
|
|
118
|
+
"ID": "job_001",
|
|
119
|
+
"Title": "Senior Engineer at TechCorp",
|
|
120
|
+
"URL": "https://techs.jobs/engineer",
|
|
121
|
+
"Created": "1/20/2024"
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**CSV output:**
|
|
127
|
+
```
|
|
128
|
+
ID,Title,URL,Created
|
|
129
|
+
job_001,Senior Engineer at TechCorp,https://techs.jobs/engineer,1/20/2024
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### `jobs get <board-id> <job-id>` — Single Job Details
|
|
135
|
+
|
|
136
|
+
**Available formats:** Table (text), JSON only
|
|
137
|
+
|
|
138
|
+
**Text output (default):**
|
|
139
|
+
```
|
|
140
|
+
Job Details:
|
|
141
|
+
Title: Senior Engineer at TechCorp
|
|
142
|
+
URL: https://techs.jobs/engineer
|
|
143
|
+
Location: San Francisco, CA
|
|
144
|
+
Salary: 120000 - 150000 USD
|
|
145
|
+
Created: 1/20/2024 2:15 PM
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**JSON output:**
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"_id": "507f1f77bcf86cd799439011",
|
|
152
|
+
"id": "job_001",
|
|
153
|
+
"title": "Senior Engineer at TechCorp",
|
|
154
|
+
"url": "https://techs.jobs/engineer",
|
|
155
|
+
"rootDomain": "techs.jobs",
|
|
156
|
+
"htmlDescription": "...",
|
|
157
|
+
"_company": "company_1",
|
|
158
|
+
"_list": "list_1",
|
|
159
|
+
"_board": "board_1",
|
|
160
|
+
"_activities": ["action_1", "action_2"],
|
|
161
|
+
"_notes": ["note_1"],
|
|
162
|
+
"salary": {
|
|
163
|
+
"min": 120000,
|
|
164
|
+
"max": 150000,
|
|
165
|
+
"currency": "USD"
|
|
166
|
+
},
|
|
167
|
+
"location": {
|
|
168
|
+
"address": "San Francisco, CA",
|
|
169
|
+
"name": "San Francisco",
|
|
170
|
+
"lat": "37.7749",
|
|
171
|
+
"lng": "-122.4194"
|
|
172
|
+
},
|
|
173
|
+
"createdAt": "2024-01-20T14:15:00Z",
|
|
174
|
+
"updatedAt": "2024-02-15T10:00:00Z",
|
|
175
|
+
"lastMovedAt": "2024-02-18T09:30:00Z"
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### `activities list <board-id>` — Activity Log
|
|
182
|
+
|
|
183
|
+
**Fields included:** Date, Type, Company, Job, Status
|
|
184
|
+
|
|
185
|
+
**Supported options:**
|
|
186
|
+
- `--days <n>` — Filter to last N days
|
|
187
|
+
- `--types <types>` — Comma-separated action types (e.g., `JOB_MOVED,NOTE_CREATED`)
|
|
188
|
+
|
|
189
|
+
**Table output:**
|
|
190
|
+
```
|
|
191
|
+
Date Type Company Job Status
|
|
192
|
+
2024-02-20T15:00 JOB_MOVED TechCorp Senior Engineer at TechCorp Interviewing
|
|
193
|
+
2024-02-18T10:30 NOTE_CREATED StartupXYZ Product Manager at StartupXYZ Active Leads
|
|
194
|
+
2024-02-15T14:15 JOB_APPLICATION Google Staff Engineer - Infrastructure Applied
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**JSON output:**
|
|
198
|
+
```json
|
|
199
|
+
[
|
|
200
|
+
{
|
|
201
|
+
"Date": "2024-02-20T15:00",
|
|
202
|
+
"Type": "JOB_MOVED",
|
|
203
|
+
"Company": "TechCorp",
|
|
204
|
+
"Job": "Senior Engineer at TechCorp",
|
|
205
|
+
"Status": "Interviewing"
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**CSV output:**
|
|
211
|
+
```
|
|
212
|
+
Date,Type,Company,Job,Status
|
|
213
|
+
2024-02-20T15:00,JOB_MOVED,TechCorp,Senior Engineer at TechCorp,Interviewing
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
### `activities week-csv <board-id>` — Last 7 Days as CSV
|
|
219
|
+
|
|
220
|
+
**Fields included:** Date, Action, Company, Job Title, Status, Job URL
|
|
221
|
+
|
|
222
|
+
**Output (CSV only):**
|
|
223
|
+
```
|
|
224
|
+
Date,Action,Company,Job Title,Status,Job URL
|
|
225
|
+
2024-02-20,JOB_MOVED,TechCorp,Senior Engineer at TechCorp,Interviewing,https://techs.jobs/engineer
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Planned Enhancements
|
|
231
|
+
|
|
232
|
+
### `--fields` Parameter
|
|
233
|
+
|
|
234
|
+
All list commands (`boards list`, `jobs list`, `activities list`) will support a `--fields` parameter to select specific columns:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Default: all fields
|
|
238
|
+
huntr boards list
|
|
239
|
+
|
|
240
|
+
# Specific fields
|
|
241
|
+
huntr boards list --fields ID,Name
|
|
242
|
+
huntr jobs list <board-id> --fields Title,URL
|
|
243
|
+
huntr activities list <board-id> --fields Date,Type,Company
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Behavior:**
|
|
247
|
+
- If `--fields` is not provided, all default fields are included
|
|
248
|
+
- Fields are case-sensitive and match the column headers exactly
|
|
249
|
+
- Invalid field names will raise an error with available options
|
|
250
|
+
|
|
251
|
+
### PDF Output Format
|
|
252
|
+
|
|
253
|
+
New `--format pdf` option for list commands:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
huntr activities list <board-id> --days 7 --format pdf > activities.pdf
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Details:**
|
|
260
|
+
- Includes all selected fields (or default fields if `--fields` not specified)
|
|
261
|
+
- Column headers always included
|
|
262
|
+
- Professional formatting with borders
|
|
263
|
+
- Metadata: command, date, board ID
|
|
264
|
+
|
|
265
|
+
### Excel Output Format
|
|
266
|
+
|
|
267
|
+
New `--format excel` option for list commands:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
huntr jobs list <board-id> --format excel > jobs.xlsx
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Details:**
|
|
274
|
+
- Column headers always included
|
|
275
|
+
- Auto-adjusted column widths
|
|
276
|
+
- Professional cell formatting
|
|
277
|
+
- One sheet per entity type
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Summary: Which Formats Include Headers
|
|
282
|
+
|
|
283
|
+
| Format | Headers | Notes |
|
|
284
|
+
|--------|---------|-------|
|
|
285
|
+
| **Table** | ✅ Yes | Always shown as first row with divider |
|
|
286
|
+
| **JSON** | N/A | JSON object keys are self-documenting |
|
|
287
|
+
| **CSV** | ✅ Yes | RFC 4180 compliant with proper escaping |
|
|
288
|
+
| **PDF** | ✅ Yes | Professional header row |
|
|
289
|
+
| **Excel** | ✅ Yes | Excel header row with formatting |
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Implementation Notes
|
|
294
|
+
|
|
295
|
+
- **Field Selection:** The `--fields` parameter works with all output formats
|
|
296
|
+
- **Validation:** Invalid field names are caught early with helpful error messages
|
|
297
|
+
- **Default Fields:** Each command has sensible defaults (e.g., activities default to Date, Type, Company, Job, Status)
|
|
298
|
+
- **CSV Escaping:** Already implemented using RFC 4180 standards
|
|
299
|
+
- **Date Formatting:** Dates are formatted consistently across all formats
|