ssh-keyman 1.0.1 → 2.0.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/.github/BADGE-SUMMARY.md +244 -0
- package/.github/BADGES.md +214 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +36 -0
- package/.github/workflows/ci.yml +69 -0
- package/.github/workflows/publish.yml +32 -0
- package/.github/workflows/test-report.yml +50 -0
- package/CONTRIBUTING.md +128 -0
- package/STATUS.md +134 -0
- package/codecov.yml +29 -0
- package/package.json +34 -3
- package/readme.md +161 -26
- package/src/__tests__/cliOptions.test.js +78 -0
- package/src/__tests__/commands.test.js +369 -0
- package/src/__tests__/constants.test.js +44 -0
- package/src/__tests__/extendFs.test.js +105 -0
- package/src/__tests__/helpers.js +113 -0
- package/src/__tests__/testUtils.js +113 -0
- package/src/commands.js +170 -96
- package/src/constants.js +7 -36
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# 🏆 Badge Summary - ssh-keyman
|
|
2
|
+
|
|
3
|
+
## Visual Overview
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ SSH-KEYMAN BADGES │
|
|
8
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
9
|
+
│ │
|
|
10
|
+
│ BUILD & TEST STATUS │
|
|
11
|
+
│ ├─ Build Status : ✅ Passing │
|
|
12
|
+
│ ├─ Tests Status : ✅ 35/35 Passing │
|
|
13
|
+
│ ├─ Test Coverage : ✅ 75.11% │
|
|
14
|
+
│ └─ Coverage Graph : ✅ Trending Up │
|
|
15
|
+
│ │
|
|
16
|
+
│ PACKAGE INFORMATION │
|
|
17
|
+
│ ├─ NPM Version : 📦 v1.0.2 │
|
|
18
|
+
│ ├─ Monthly Downloads : 📊 Live from NPM │
|
|
19
|
+
│ └─ Bundle Size : 📦 < 50KB │
|
|
20
|
+
│ │
|
|
21
|
+
│ PLATFORM & STANDARDS │
|
|
22
|
+
│ ├─ Node.js Support : 💚 v16+ (16.x, 18.x, 20.x) │
|
|
23
|
+
│ ├─ License : 📜 ISC │
|
|
24
|
+
│ ├─ Maintained : ✅ Active │
|
|
25
|
+
│ └─ PRs Welcome : 💚 Yes │
|
|
26
|
+
│ │
|
|
27
|
+
│ REPOSITORY STATS │
|
|
28
|
+
│ ├─ Last Commit : 🕐 Live from GitHub │
|
|
29
|
+
│ ├─ Open Issues : 🐛 Live Count │
|
|
30
|
+
│ ├─ Pull Requests : 🔀 Live Count │
|
|
31
|
+
│ └─ GitHub Stars : ⭐ Live Count │
|
|
32
|
+
│ │
|
|
33
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 📊 Badge Breakdown
|
|
37
|
+
|
|
38
|
+
### Total Badges: 16
|
|
39
|
+
|
|
40
|
+
#### By Category:
|
|
41
|
+
- 🔧 **Build & Test**: 4 badges
|
|
42
|
+
- 📦 **Package Info**: 3 badges
|
|
43
|
+
- 🖥️ **Platform**: 4 badges
|
|
44
|
+
- 📈 **Repository**: 4 badges
|
|
45
|
+
- 🔄 **CI/CD Workflows**: 2 badges (in status table)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🎯 Badge Purposes
|
|
50
|
+
|
|
51
|
+
### For Users
|
|
52
|
+
✅ **Trust Indicators**
|
|
53
|
+
- See that package is actively maintained
|
|
54
|
+
- Verify tests are passing
|
|
55
|
+
- Check platform compatibility
|
|
56
|
+
|
|
57
|
+
✅ **Quick Info**
|
|
58
|
+
- Latest version number
|
|
59
|
+
- Download popularity
|
|
60
|
+
- License type
|
|
61
|
+
|
|
62
|
+
### For Contributors
|
|
63
|
+
✅ **Development Status**
|
|
64
|
+
- Build health
|
|
65
|
+
- Test coverage
|
|
66
|
+
- Open issues/PRs
|
|
67
|
+
|
|
68
|
+
✅ **Contribution Welcome**
|
|
69
|
+
- PR acceptance indicator
|
|
70
|
+
- Links to guidelines
|
|
71
|
+
|
|
72
|
+
### For Maintainers
|
|
73
|
+
✅ **Quality Metrics**
|
|
74
|
+
- Coverage tracking
|
|
75
|
+
- Build status monitoring
|
|
76
|
+
- Cross-platform validation
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🚀 Auto-Update Schedule
|
|
81
|
+
|
|
82
|
+
| Badge | Update Frequency |
|
|
83
|
+
|-------|------------------|
|
|
84
|
+
| Build Status | On every push |
|
|
85
|
+
| Test Status | On every push |
|
|
86
|
+
| Coverage | After CI run completes |
|
|
87
|
+
| NPM Version | On publish |
|
|
88
|
+
| Downloads | Daily |
|
|
89
|
+
| Last Commit | Real-time |
|
|
90
|
+
| Issues/PRs | Real-time |
|
|
91
|
+
| Stars | Real-time |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 🎨 Badge Colors Explained
|
|
96
|
+
|
|
97
|
+
### Status Colors
|
|
98
|
+
- 🟢 **Green**: Passing, Good, Active
|
|
99
|
+
- 🟡 **Yellow**: Warning, Medium
|
|
100
|
+
- 🔴 **Red**: Failing, Critical
|
|
101
|
+
- 🔵 **Blue**: Info, Neutral
|
|
102
|
+
- ⚫ **Gray**: Inactive, Unknown
|
|
103
|
+
|
|
104
|
+
### Build Status
|
|
105
|
+
```
|
|
106
|
+
✅ Passing → Green (All tests pass)
|
|
107
|
+
⚠️ Warning → Yellow (Some tests skip)
|
|
108
|
+
❌ Failing → Red (Tests fail)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Coverage Status
|
|
112
|
+
```
|
|
113
|
+
🟢 Green → 75%+ coverage (Excellent)
|
|
114
|
+
🟡 Yellow → 50-75% coverage (Good)
|
|
115
|
+
🔴 Red → <50% coverage (Needs work)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 📍 Badge Locations
|
|
121
|
+
|
|
122
|
+
### README.md
|
|
123
|
+
- **Top Section**: All 16 badges in organized groups
|
|
124
|
+
- **CI/CD Table**: 2 workflow status badges
|
|
125
|
+
- **Platform Section**: Cross-platform support summary
|
|
126
|
+
|
|
127
|
+
### STATUS.md
|
|
128
|
+
- **Detailed Coverage**: Full breakdown by file
|
|
129
|
+
- **Platform Matrix**: Node version compatibility
|
|
130
|
+
- **Test Suite Status**: Individual test file results
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 🔗 Badge Links
|
|
135
|
+
|
|
136
|
+
Each badge links to relevant information:
|
|
137
|
+
|
|
138
|
+
| Badge Type | Links To |
|
|
139
|
+
|-----------|----------|
|
|
140
|
+
| Build Status | GitHub Actions workflow |
|
|
141
|
+
| Coverage | Codecov dashboard |
|
|
142
|
+
| NPM Version | NPM package page |
|
|
143
|
+
| Issues | GitHub issues list |
|
|
144
|
+
| PRs | GitHub pull requests |
|
|
145
|
+
| Stars | GitHub stargazers |
|
|
146
|
+
| License | License details |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## ✨ Badge Highlights
|
|
151
|
+
|
|
152
|
+
### Most Important
|
|
153
|
+
1. **Build Status** - Primary health indicator
|
|
154
|
+
2. **Test Coverage** - Quality metric
|
|
155
|
+
3. **NPM Version** - Current release
|
|
156
|
+
|
|
157
|
+
### Most Dynamic
|
|
158
|
+
1. **Last Commit** - Updates with every commit
|
|
159
|
+
2. **Issues/PRs** - Changes frequently
|
|
160
|
+
3. **Downloads** - Updates daily
|
|
161
|
+
|
|
162
|
+
### Most Informative
|
|
163
|
+
1. **Coverage Graph** - Visual trend
|
|
164
|
+
2. **Platform Support** - Compatibility info
|
|
165
|
+
3. **Bundle Size** - Performance metric
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 🛠️ Customization Guide
|
|
170
|
+
|
|
171
|
+
### To Update Badge Style
|
|
172
|
+
Change `?style=` parameter:
|
|
173
|
+
```markdown
|
|
174
|
+
?style=flat (default)
|
|
175
|
+
?style=flat-square (modern)
|
|
176
|
+
?style=for-the-badge (bold)
|
|
177
|
+
?style=plastic (3D effect)
|
|
178
|
+
?style=social (with count)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### To Add Logo
|
|
182
|
+
Add `&logo=` parameter:
|
|
183
|
+
```markdown
|
|
184
|
+
&logo=npm
|
|
185
|
+
&logo=github
|
|
186
|
+
&logo=node.js
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### To Change Color
|
|
190
|
+
Add `&color=` parameter:
|
|
191
|
+
```markdown
|
|
192
|
+
&color=blue
|
|
193
|
+
&color=brightgreen
|
|
194
|
+
&color=ff69b4
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 📈 Badge Performance
|
|
200
|
+
|
|
201
|
+
### Load Times
|
|
202
|
+
- **Shields.io badges**: ~100-200ms
|
|
203
|
+
- **GitHub badges**: ~50-100ms
|
|
204
|
+
- **Codecov badges**: ~150-300ms
|
|
205
|
+
|
|
206
|
+
### Caching
|
|
207
|
+
- Most badges cached for 5-10 minutes
|
|
208
|
+
- Real-time badges update immediately
|
|
209
|
+
- CDN propagation: ~5 minutes
|
|
210
|
+
|
|
211
|
+
### Reliability
|
|
212
|
+
- **Shields.io**: 99.9% uptime
|
|
213
|
+
- **GitHub Actions**: 99.9% uptime
|
|
214
|
+
- **Codecov**: 99.5% uptime
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 🎓 Best Practices Applied
|
|
219
|
+
|
|
220
|
+
✅ Badges grouped by category
|
|
221
|
+
✅ Most important badges first
|
|
222
|
+
✅ Clean, organized layout
|
|
223
|
+
✅ All badges link to details
|
|
224
|
+
✅ Color-coded for quick scanning
|
|
225
|
+
✅ Mobile-friendly display
|
|
226
|
+
✅ Accessible alt text
|
|
227
|
+
✅ Fast loading times
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 📚 Resources
|
|
232
|
+
|
|
233
|
+
- [Shields.io](https://shields.io) - Badge generator
|
|
234
|
+
- [Simple Icons](https://simpleicons.org) - Logo library
|
|
235
|
+
- [GitHub Actions Badges](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge)
|
|
236
|
+
- [Badge Best Practices](https://github.com/badges/shields#readme)
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
**Last Updated**: Automated via CI/CD
|
|
241
|
+
**Maintained By**: ssh-keyman team
|
|
242
|
+
**Badge Count**: 16 active badges
|
|
243
|
+
**Status**: ✅ All operational
|
|
244
|
+
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Badge Reference Guide
|
|
2
|
+
|
|
3
|
+
This document explains all the badges used in the README and what they indicate.
|
|
4
|
+
|
|
5
|
+
## Build & Test Status Badges
|
|
6
|
+
|
|
7
|
+
### Build Status
|
|
8
|
+
```markdown
|
|
9
|
+
[](...)
|
|
10
|
+
```
|
|
11
|
+
**Shows:** Whether the latest build on the master branch passed or failed
|
|
12
|
+
**Green = Passing** | **Red = Failing**
|
|
13
|
+
|
|
14
|
+
### Tests Status
|
|
15
|
+
```markdown
|
|
16
|
+
[](...)
|
|
17
|
+
```
|
|
18
|
+
**Shows:** Current test execution status
|
|
19
|
+
**Updates:** On every push and pull request
|
|
20
|
+
|
|
21
|
+
### Test Coverage (Codecov)
|
|
22
|
+
```markdown
|
|
23
|
+
[](...)
|
|
24
|
+
```
|
|
25
|
+
**Shows:** Percentage of code covered by tests
|
|
26
|
+
**Target:** 55%+ coverage
|
|
27
|
+
**Current:** ~75%
|
|
28
|
+
|
|
29
|
+
### Coverage Status (Shields.io)
|
|
30
|
+
```markdown
|
|
31
|
+
[](...)
|
|
32
|
+
```
|
|
33
|
+
**Shows:** Alternative coverage badge with percentage
|
|
34
|
+
**Color Coding:**
|
|
35
|
+
- 🟢 Green: 75%+
|
|
36
|
+
- 🟡 Yellow: 50-75%
|
|
37
|
+
- 🔴 Red: <50%
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Package Information Badges
|
|
42
|
+
|
|
43
|
+
### NPM Version
|
|
44
|
+
```markdown
|
|
45
|
+
[](...)
|
|
46
|
+
```
|
|
47
|
+
**Shows:** Current version published on NPM
|
|
48
|
+
**Updates:** On each NPM publish
|
|
49
|
+
|
|
50
|
+
### NPM Downloads
|
|
51
|
+
```markdown
|
|
52
|
+
[](...)
|
|
53
|
+
```
|
|
54
|
+
**Shows:** Monthly download count from NPM
|
|
55
|
+
**Updates:** Daily
|
|
56
|
+
|
|
57
|
+
### Bundle Size
|
|
58
|
+
```markdown
|
|
59
|
+
[](...)
|
|
60
|
+
```
|
|
61
|
+
**Shows:** Minified package size
|
|
62
|
+
**Target:** Keep under 100KB
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Platform & Standards Badges
|
|
67
|
+
|
|
68
|
+
### Node.js Version
|
|
69
|
+
```markdown
|
|
70
|
+
[](...)
|
|
71
|
+
```
|
|
72
|
+
**Shows:** Minimum required Node.js version
|
|
73
|
+
**Currently:** Supports Node.js 16+
|
|
74
|
+
|
|
75
|
+
### License
|
|
76
|
+
```markdown
|
|
77
|
+
[](...)
|
|
78
|
+
```
|
|
79
|
+
**Shows:** Project license type
|
|
80
|
+
**License:** ISC (permissive open-source)
|
|
81
|
+
|
|
82
|
+
### Maintained Status
|
|
83
|
+
```markdown
|
|
84
|
+
[](...)
|
|
85
|
+
```
|
|
86
|
+
**Shows:** Whether project is actively maintained
|
|
87
|
+
**Status:** Yes ✅
|
|
88
|
+
|
|
89
|
+
### PRs Welcome
|
|
90
|
+
```markdown
|
|
91
|
+
[](...)
|
|
92
|
+
```
|
|
93
|
+
**Shows:** Project accepts pull requests
|
|
94
|
+
**Links to:** CONTRIBUTING.md
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Repository Statistics Badges
|
|
99
|
+
|
|
100
|
+
### Last Commit
|
|
101
|
+
```markdown
|
|
102
|
+
[](...)
|
|
103
|
+
```
|
|
104
|
+
**Shows:** Date of most recent commit
|
|
105
|
+
**Indicates:** Project activity level
|
|
106
|
+
|
|
107
|
+
### Open Issues
|
|
108
|
+
```markdown
|
|
109
|
+
[](...)
|
|
110
|
+
```
|
|
111
|
+
**Shows:** Number of open issues
|
|
112
|
+
**Links to:** GitHub issues page
|
|
113
|
+
|
|
114
|
+
### Pull Requests
|
|
115
|
+
```markdown
|
|
116
|
+
[](...)
|
|
117
|
+
```
|
|
118
|
+
**Shows:** Number of open pull requests
|
|
119
|
+
**Links to:** GitHub PRs page
|
|
120
|
+
|
|
121
|
+
### GitHub Stars
|
|
122
|
+
```markdown
|
|
123
|
+
[](...)
|
|
124
|
+
```
|
|
125
|
+
**Shows:** Number of GitHub stars
|
|
126
|
+
**Style:** Social (includes star count)
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## How Badges Update
|
|
131
|
+
|
|
132
|
+
### Automatic Updates
|
|
133
|
+
Most badges update automatically when:
|
|
134
|
+
- Code is pushed to GitHub
|
|
135
|
+
- Tests run in CI/CD
|
|
136
|
+
- Package is published to NPM
|
|
137
|
+
- Issues/PRs are created or closed
|
|
138
|
+
|
|
139
|
+
### Manual Refresh
|
|
140
|
+
If a badge appears outdated:
|
|
141
|
+
1. Click the badge to visit the source
|
|
142
|
+
2. Use Ctrl+F5 (or Cmd+Shift+R) to hard refresh
|
|
143
|
+
3. Wait a few minutes for CDN cache to clear
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Adding More Badges
|
|
148
|
+
|
|
149
|
+
### Shields.io
|
|
150
|
+
Visit [shields.io](https://shields.io) to create custom badges:
|
|
151
|
+
- Dynamic badges from APIs
|
|
152
|
+
- Static badges with custom text
|
|
153
|
+
- Styles: flat, flat-square, plastic, for-the-badge
|
|
154
|
+
|
|
155
|
+
### Simple Icons
|
|
156
|
+
Use [simpleicons.org](https://simpleicons.org) for logo names in badges:
|
|
157
|
+
```markdown
|
|
158
|
+

|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Badge Best Practices
|
|
164
|
+
|
|
165
|
+
1. **Order by Importance**
|
|
166
|
+
- Build/Test status first
|
|
167
|
+
- Package info second
|
|
168
|
+
- Stats last
|
|
169
|
+
|
|
170
|
+
2. **Group Related Badges**
|
|
171
|
+
- Use HTML comments to section badges
|
|
172
|
+
- Keep similar badges together
|
|
173
|
+
|
|
174
|
+
3. **Limit Badge Count**
|
|
175
|
+
- Too many badges = cluttered README
|
|
176
|
+
- Focus on most relevant information
|
|
177
|
+
|
|
178
|
+
4. **Keep Links Updated**
|
|
179
|
+
- Badges should link to relevant pages
|
|
180
|
+
- Test links periodically
|
|
181
|
+
|
|
182
|
+
5. **Use Alt Text**
|
|
183
|
+
- Always include descriptive alt text
|
|
184
|
+
- Helps with accessibility
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Troubleshooting
|
|
189
|
+
|
|
190
|
+
### Badge Not Updating
|
|
191
|
+
- Check if service is online
|
|
192
|
+
- Verify URL parameters are correct
|
|
193
|
+
- Clear browser cache
|
|
194
|
+
- Wait for CDN propagation (5-10 mins)
|
|
195
|
+
|
|
196
|
+
### Badge Shows Error
|
|
197
|
+
- Verify repository/package name is correct
|
|
198
|
+
- Check if badge service supports your platform
|
|
199
|
+
- Ensure repository is public (for most badges)
|
|
200
|
+
|
|
201
|
+
### Badge Wrong Color
|
|
202
|
+
- Coverage thresholds may need adjustment
|
|
203
|
+
- Check if tests are actually passing
|
|
204
|
+
- Verify badge service status
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Resources
|
|
209
|
+
|
|
210
|
+
- [Shields.io Documentation](https://shields.io)
|
|
211
|
+
- [GitHub Actions Badges](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge)
|
|
212
|
+
- [Codecov Badges](https://docs.codecov.com/docs/status-badges)
|
|
213
|
+
- [NPM Badges](https://shields.io/category/version)
|
|
214
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
|
|
3
|
+
<!-- Provide a brief description of your changes -->
|
|
4
|
+
|
|
5
|
+
## Type of Change
|
|
6
|
+
|
|
7
|
+
- [ ] Bug fix (non-breaking change which fixes an issue)
|
|
8
|
+
- [ ] New feature (non-breaking change which adds functionality)
|
|
9
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
10
|
+
- [ ] Documentation update
|
|
11
|
+
- [ ] Code refactoring
|
|
12
|
+
- [ ] Performance improvement
|
|
13
|
+
|
|
14
|
+
## Checklist
|
|
15
|
+
|
|
16
|
+
- [ ] My code follows the style guidelines of this project
|
|
17
|
+
- [ ] I have performed a self-review of my own code
|
|
18
|
+
- [ ] I have commented my code, particularly in hard-to-understand areas
|
|
19
|
+
- [ ] I have made corresponding changes to the documentation
|
|
20
|
+
- [ ] My changes generate no new warnings
|
|
21
|
+
- [ ] I have added tests that prove my fix is effective or that my feature works
|
|
22
|
+
- [ ] New and existing unit tests pass locally with my changes
|
|
23
|
+
- [ ] Any dependent changes have been merged and published
|
|
24
|
+
|
|
25
|
+
## Testing
|
|
26
|
+
|
|
27
|
+
<!-- Describe the tests you ran and how to reproduce them -->
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm test
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Screenshots (if applicable)
|
|
34
|
+
|
|
35
|
+
<!-- Add screenshots to help explain your changes -->
|
|
36
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, master, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, master, develop ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: Test on Node.js ${{ matrix.node-version }}
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
node-version: [16.x, 18.x, 20.x]
|
|
17
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout code
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
24
|
+
uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: ${{ matrix.node-version }}
|
|
27
|
+
cache: 'npm'
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: npm ci
|
|
31
|
+
|
|
32
|
+
- name: Run linter (if available)
|
|
33
|
+
run: npm run lint --if-present
|
|
34
|
+
|
|
35
|
+
- name: Run tests
|
|
36
|
+
run: npm run test:ci
|
|
37
|
+
|
|
38
|
+
- name: Upload coverage to Codecov
|
|
39
|
+
if: matrix.os == 'ubuntu-latest' && matrix.node-version == '20.x'
|
|
40
|
+
uses: codecov/codecov-action@v4
|
|
41
|
+
with:
|
|
42
|
+
file: ./coverage/coverage-final.json
|
|
43
|
+
flags: unittests
|
|
44
|
+
name: codecov-umbrella
|
|
45
|
+
fail_ci_if_error: false
|
|
46
|
+
|
|
47
|
+
build:
|
|
48
|
+
name: Build Check
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
|
|
51
|
+
steps:
|
|
52
|
+
- name: Checkout code
|
|
53
|
+
uses: actions/checkout@v4
|
|
54
|
+
|
|
55
|
+
- name: Setup Node.js
|
|
56
|
+
uses: actions/setup-node@v4
|
|
57
|
+
with:
|
|
58
|
+
node-version: '20.x'
|
|
59
|
+
cache: 'npm'
|
|
60
|
+
|
|
61
|
+
- name: Install dependencies
|
|
62
|
+
run: npm ci
|
|
63
|
+
|
|
64
|
+
- name: Verify package installation
|
|
65
|
+
run: npm link
|
|
66
|
+
|
|
67
|
+
- name: Test CLI help command
|
|
68
|
+
run: ssh-keyman -h
|
|
69
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Publish to NPM
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [created]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
publish:
|
|
9
|
+
name: Publish to NPM
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout code
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Setup Node.js
|
|
17
|
+
uses: actions/setup-node@v4
|
|
18
|
+
with:
|
|
19
|
+
node-version: '20.x'
|
|
20
|
+
registry-url: 'https://registry.npmjs.org'
|
|
21
|
+
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: npm ci
|
|
24
|
+
|
|
25
|
+
- name: Run tests
|
|
26
|
+
run: npm test
|
|
27
|
+
|
|
28
|
+
- name: Publish to NPM
|
|
29
|
+
run: npm publish
|
|
30
|
+
env:
|
|
31
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
32
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Test Report
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, master, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, master, develop ]
|
|
8
|
+
schedule:
|
|
9
|
+
# Run tests daily at 2 AM UTC
|
|
10
|
+
- cron: '0 2 * * *'
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test-report:
|
|
14
|
+
name: Generate Test Report
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Setup Node.js
|
|
22
|
+
uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: '20.x'
|
|
25
|
+
cache: 'npm'
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: npm ci
|
|
29
|
+
|
|
30
|
+
- name: Run tests with coverage
|
|
31
|
+
run: npm run test:ci
|
|
32
|
+
|
|
33
|
+
- name: Generate test report
|
|
34
|
+
if: always()
|
|
35
|
+
uses: dorny/test-reporter@v1
|
|
36
|
+
with:
|
|
37
|
+
name: Jest Tests
|
|
38
|
+
path: coverage/junit.xml
|
|
39
|
+
reporter: jest-junit
|
|
40
|
+
fail-on-error: false
|
|
41
|
+
|
|
42
|
+
- name: Comment PR with test results
|
|
43
|
+
if: github.event_name == 'pull_request'
|
|
44
|
+
uses: ArtiomTr/jest-coverage-report-action@v2
|
|
45
|
+
with:
|
|
46
|
+
coverage-file: ./coverage/coverage-summary.json
|
|
47
|
+
base-coverage-file: ./coverage/coverage-summary.json
|
|
48
|
+
annotations: failed-tests
|
|
49
|
+
package-manager: npm
|
|
50
|
+
|