github-archiver 1.0.8 → 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/CHANGELOG.md +27 -12
- package/docs/RELEASE.md +133 -79
- package/package.json +16 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,32 +1,41 @@
|
|
|
1
1
|
## [1.0.8](https://github.com/mynameistito/github-archiver/compare/v1.0.7...v1.0.8) (2026-01-11)
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 1.0.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`230c310`](https://github.com/mynameistito/github-archiver/commit/230c3106625c6b4170aff58dc8a79ed78f7a6938) Thanks [@mynameistito](https://github.com/mynameistito)! - Migrate from semantic-release to @changesets/cli for better release control
|
|
4
8
|
|
|
9
|
+
- Replace semantic-release with @changesets/cli for explicit version management
|
|
10
|
+
- Add GitHub-linked changelog generation with PR/commit references
|
|
11
|
+
- Update to two-step release process (Version Packages PR + manual merge)
|
|
12
|
+
- Integrate with bun for improved package management
|
|
13
|
+
- Update Node requirement to 22+ (aligns with actual dependencies)
|
|
14
|
+
- Update CI/CD workflows to use bun exclusively
|
|
15
|
+
|
|
16
|
+
## [1.0.7](https://github.com/mynameistito/github-archiver/compare/v1.0.6...v1.0.7) (2026-01-11)
|
|
5
17
|
|
|
6
18
|
### Bug Fixes
|
|
7
19
|
|
|
8
|
-
|
|
20
|
+
- update version number in source code to match package.json ([f9ef48c](https://github.com/mynameistito/github-archiver/commit/f9ef48c344cf46e2ebb37141a9db211bddf57d47))
|
|
9
21
|
|
|
10
22
|
## [1.0.6](https://github.com/mynameistito/github-archiver/compare/v1.0.5...v1.0.6) (2026-01-11)
|
|
11
23
|
|
|
12
|
-
|
|
13
24
|
### Bug Fixes
|
|
14
25
|
|
|
15
|
-
|
|
26
|
+
- ensure ESM output in bundled dist file ([48a242a](https://github.com/mynameistito/github-archiver/commit/48a242ad0b15c16e78c66aafab69ba84b64590b9))
|
|
16
27
|
|
|
17
28
|
## [1.0.5](https://github.com/mynameistito/github-archiver/compare/v1.0.4...v1.0.5) (2026-01-11)
|
|
18
29
|
|
|
19
|
-
|
|
20
30
|
### Bug Fixes
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
- build output as ESM to match package.json type ([e0aadd7](https://github.com/mynameistito/github-archiver/commit/e0aadd740c559333375e57b0f34e7e2d6a04240c))
|
|
23
33
|
|
|
24
34
|
## [1.0.4](https://github.com/mynameistito/github-archiver/compare/v1.0.3...v1.0.4) (2026-01-11)
|
|
25
35
|
|
|
26
|
-
|
|
27
36
|
### Bug Fixes
|
|
28
37
|
|
|
29
|
-
|
|
38
|
+
- add repository URL to package.json for npm provenance ([02ddb1c](https://github.com/mynameistito/github-archiver/commit/02ddb1c9f4b6a7b7ca91497b2633011accf94356))
|
|
30
39
|
|
|
31
40
|
## [1.0.3](https://github.com/mynameistito/github-archiver/compare/v1.0.2...v1.0.3) (2026-01-11)
|
|
32
41
|
|
|
@@ -34,17 +43,15 @@
|
|
|
34
43
|
|
|
35
44
|
## [1.0.1](https://github.com/mynameistito/github-archiver/compare/v1.0.0...v1.0.1) (2026-01-11)
|
|
36
45
|
|
|
37
|
-
|
|
38
46
|
### Bug Fixes
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
- correct relative import path in CLI wrapper ([cc64796](https://github.com/mynameistito/github-archiver/commit/cc64796d2d0a06175faf053d63e9c1e8ffe0d371))
|
|
41
49
|
|
|
42
50
|
# 1.0.0 (2026-01-11)
|
|
43
51
|
|
|
44
|
-
|
|
45
52
|
### Bug Fixes
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
- separate CLI wrapper to resolve ESM shebang conflict ([fc9918a](https://github.com/mynameistito/github-archiver/commit/fc9918a46953634b1ad15a0f64175937acb4f29b))
|
|
48
55
|
|
|
49
56
|
# Changelog
|
|
50
57
|
|
|
@@ -56,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
56
63
|
## [1.0.0] - 2025-01-11
|
|
57
64
|
|
|
58
65
|
### Added
|
|
66
|
+
|
|
59
67
|
- Initial release of GitHub Archiver CLI
|
|
60
68
|
- Mass archive GitHub repositories with parallel processing
|
|
61
69
|
- Three input methods: editor, file, and stdin
|
|
@@ -77,6 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
77
85
|
- Biome formatting and linting enforcement
|
|
78
86
|
|
|
79
87
|
### Commands
|
|
88
|
+
|
|
80
89
|
- `auth login` - Authenticate with GitHub
|
|
81
90
|
- `auth logout` - Remove stored token
|
|
82
91
|
- `auth status` - Check authentication status
|
|
@@ -84,6 +93,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
84
93
|
- `archive` - Archive repositories with multiple options
|
|
85
94
|
|
|
86
95
|
### Features
|
|
96
|
+
|
|
87
97
|
- Parallel processing with p-queue
|
|
88
98
|
- Retry logic with exponential backoff (1s → 2s → 4s)
|
|
89
99
|
- Repository validation (exists, permissions, already archived)
|
|
@@ -93,6 +103,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
93
103
|
- Support for configuration files and comments in input
|
|
94
104
|
|
|
95
105
|
### Documentation
|
|
106
|
+
|
|
96
107
|
- Comprehensive README with quick start guide
|
|
97
108
|
- Installation instructions
|
|
98
109
|
- Command reference with examples
|
|
@@ -101,6 +112,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
101
112
|
- Architecture overview
|
|
102
113
|
|
|
103
114
|
### Testing
|
|
115
|
+
|
|
104
116
|
- 34 unit tests covering:
|
|
105
117
|
- URL parsing (20+ tests)
|
|
106
118
|
- Output formatting (15+ tests)
|
|
@@ -108,6 +120,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
108
120
|
- Vitest configuration for fast testing
|
|
109
121
|
|
|
110
122
|
### Code Quality
|
|
123
|
+
|
|
111
124
|
- TypeScript strict mode enabled
|
|
112
125
|
- 0 compilation errors
|
|
113
126
|
- 0 implicit any types
|
|
@@ -119,6 +132,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
119
132
|
## Unreleased
|
|
120
133
|
|
|
121
134
|
### Planned Features
|
|
135
|
+
|
|
122
136
|
- [ ] Batch progress reporting with live updates
|
|
123
137
|
- [ ] Support for organization-wide archiving
|
|
124
138
|
- [ ] Integration tests for archive command
|
|
@@ -130,6 +144,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
130
144
|
- [ ] Undo/rollback capability (unarchive)
|
|
131
145
|
|
|
132
146
|
### Under Consideration
|
|
147
|
+
|
|
133
148
|
- Docker image distribution
|
|
134
149
|
- NPX support for one-time use
|
|
135
150
|
- Scheduled archiving via cron
|
package/docs/RELEASE.md
CHANGED
|
@@ -1,123 +1,177 @@
|
|
|
1
1
|
# Release Process
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This project uses **Changesets** for version management and publishing.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Overview
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The release process is **two-step and automated**:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
1. **Developer creates changesets** - Explicit intent for what's being released
|
|
10
|
+
2. **GitHub Actions automates the rest** - Creates version PR, then publishes
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
- `fix:` - Bug fixes → **patch** version bump (1.0.0 → 1.0.1)
|
|
13
|
-
- `BREAKING CHANGE:` - Breaking changes → **major** version bump (1.0.0 → 2.0.0)
|
|
14
|
-
- `chore:`, `docs:`, `test:` - No version bump
|
|
12
|
+
## For Contributors
|
|
15
13
|
|
|
16
|
-
###
|
|
14
|
+
### Creating a Changeset
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
When you've made changes that should be included in a release:
|
|
19
17
|
|
|
20
|
-
1.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
1. **Create a changeset file:**
|
|
19
|
+
```bash
|
|
20
|
+
bun run changeset:add
|
|
21
|
+
```
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
2. **Answer the prompts:**
|
|
24
|
+
- Which packages are affected? → Select `github-archiver`
|
|
25
|
+
- What's the type of change? → Choose:
|
|
26
|
+
- `patch` - bug fixes (1.0.0 → 1.0.1)
|
|
27
|
+
- `minor` - new features (1.0.0 → 1.1.0)
|
|
28
|
+
- `major` - breaking changes (1.0.0 → 2.0.0)
|
|
29
|
+
- Write a description of your change
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
3. **Commit the generated changeset file:**
|
|
32
|
+
```bash
|
|
33
|
+
git add .changeset/*.md
|
|
34
|
+
git commit -m "docs: add changeset for feature X"
|
|
35
|
+
```
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
- Short-lived, cryptographically-signed tokens for each publish
|
|
31
|
-
- Works with personal GitHub accounts
|
|
37
|
+
4. **Push your branch and open a PR as usual**
|
|
32
38
|
|
|
33
|
-
###
|
|
39
|
+
### Automated Release
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
- Release workflow uses Node 22+ (semantic-release requirement)
|
|
37
|
-
- CI tests on Node 18 and 22 for maximum compatibility
|
|
41
|
+
Once your PR is merged to `main`:
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
1. GitHub Actions detects the changeset files
|
|
44
|
+
2. Creates a "Version Packages" PR with:
|
|
45
|
+
- Updated `package.json` version
|
|
46
|
+
- Updated `CHANGELOG.md` with your descriptions
|
|
47
|
+
- GitHub links to commits and PRs
|
|
48
|
+
3. Merge the "Version Packages" PR
|
|
49
|
+
4. GitHub Actions automatically:
|
|
50
|
+
- Publishes to npm
|
|
51
|
+
- Creates a GitHub release
|
|
52
|
+
- Tags the commit with the version
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
### Changeset File Format
|
|
55
|
+
|
|
56
|
+
Example: `.changeset/excited-newts-talk.md`
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
---
|
|
60
|
+
"github-archiver": minor
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
Add support for custom GitHub token configuration in config file
|
|
48
64
|
```
|
|
49
65
|
|
|
50
|
-
|
|
66
|
+
**Note:** Changeset filenames are auto-generated with whimsical names (e.g., `silly-cats-dance.md`). Edit the description after generation if needed.
|
|
51
67
|
|
|
52
|
-
|
|
68
|
+
## For Maintainers
|
|
53
69
|
|
|
54
|
-
###
|
|
70
|
+
### Understanding Releases
|
|
55
71
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- **Organization or user**: `mynameistito`
|
|
60
|
-
- **Repository**: `github-archiver`
|
|
61
|
-
- **Workflow filename**: `release.yml`
|
|
62
|
-
4. Click **Set up connection**
|
|
63
|
-
5. (Recommended) Enable **"Require two-factor authentication and disallow tokens"**
|
|
72
|
+
**What triggers a release?**
|
|
73
|
+
- Any changeset file committed to main
|
|
74
|
+
- Automatic via GitHub Actions (no manual intervention needed)
|
|
64
75
|
|
|
65
|
-
|
|
76
|
+
**What happens?**
|
|
77
|
+
1. Action detects changeset files
|
|
78
|
+
2. Runs validation (tests, lint, typecheck, build)
|
|
79
|
+
3. Creates "Version Packages" PR with:
|
|
80
|
+
- Version bumps in `package.json`
|
|
81
|
+
- Updated `CHANGELOG.md` with GitHub links
|
|
82
|
+
- Changeset files consumed
|
|
83
|
+
4. After PR merge: Automatically publishes to npm
|
|
66
84
|
|
|
67
|
-
|
|
85
|
+
### Merging the "Version Packages" PR
|
|
68
86
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
When GitHub Actions creates a "Version Packages" PR:
|
|
88
|
+
- Review the version bump (patch/minor/major)
|
|
89
|
+
- Review the changelog entries with GitHub links
|
|
90
|
+
- Merge to trigger automatic publish
|
|
91
|
+
|
|
92
|
+
### Release Changelog
|
|
72
93
|
|
|
73
|
-
|
|
74
|
-
git commit -m "fix: handle empty repository list gracefully"
|
|
94
|
+
The changelog is auto-generated with GitHub links:
|
|
75
95
|
|
|
76
|
-
|
|
77
|
-
|
|
96
|
+
```markdown
|
|
97
|
+
## 1.1.0
|
|
78
98
|
|
|
79
|
-
|
|
99
|
+
### Minor Changes
|
|
80
100
|
|
|
81
|
-
#
|
|
82
|
-
git commit -m "chore: update dependencies"
|
|
83
|
-
git commit -m "docs: clarify installation steps"
|
|
84
|
-
git commit -m "test: add unit tests for parser"
|
|
101
|
+
- [abc123d](https://github.com/mynameistito/github-archiver/commit/abc123d) ([#42](https://github.com/mynameistito/github-archiver/pull/42)): Add custom token config support
|
|
85
102
|
```
|
|
86
103
|
|
|
87
|
-
|
|
104
|
+
### Manual Publishing (if needed)
|
|
88
105
|
|
|
89
|
-
If you
|
|
106
|
+
If automation fails, you can publish manually on the commit with updated versions:
|
|
90
107
|
|
|
91
108
|
```bash
|
|
92
|
-
|
|
109
|
+
bun run changeset:publish
|
|
93
110
|
```
|
|
94
111
|
|
|
95
|
-
|
|
112
|
+
### Troubleshooting
|
|
113
|
+
|
|
114
|
+
**Action not creating PR?**
|
|
115
|
+
- Check that changesets exist in `.changeset/` directory
|
|
116
|
+
- Verify `GITHUB_TOKEN` and `NPM_TOKEN` secrets are configured
|
|
117
|
+
- Review workflow logs in GitHub Actions
|
|
118
|
+
|
|
119
|
+
**Publish failed?**
|
|
120
|
+
- Verify `NPM_TOKEN` has publish permissions
|
|
121
|
+
- Check npm registry status
|
|
122
|
+
- Review the error in GitHub Actions logs
|
|
123
|
+
|
|
124
|
+
**Version bump incorrect?**
|
|
125
|
+
- Verify correct changeset type was selected (patch/minor/major)
|
|
126
|
+
- Check that description was provided
|
|
127
|
+
- Ensure changeset file syntax is valid (YAML front matter)
|
|
96
128
|
|
|
97
|
-
|
|
129
|
+
## Versioning Strategy
|
|
98
130
|
|
|
99
|
-
|
|
100
|
-
- Building the project
|
|
101
|
-
- Publishing to npm using Trusted Publishing
|
|
102
|
-
- Creating GitHub releases with changelog
|
|
103
|
-
- Managing version tags automatically
|
|
131
|
+
This project uses **Semantic Versioning**:
|
|
104
132
|
|
|
105
|
-
|
|
133
|
+
- **patch**: Bug fixes, minor improvements (1.0.0 → 1.0.1)
|
|
134
|
+
- **minor**: New features, backward compatible (1.0.0 → 1.1.0)
|
|
135
|
+
- **major**: Breaking changes, incompatible updates (1.0.0 → 2.0.0)
|
|
106
136
|
|
|
107
|
-
|
|
137
|
+
Choose the appropriate type when creating your changeset.
|
|
108
138
|
|
|
109
|
-
|
|
110
|
-
- Check that workflow file is named `release.yml`
|
|
111
|
-
- Verify GitHub Actions permissions are enabled
|
|
139
|
+
## GitHub Releases
|
|
112
140
|
|
|
113
|
-
|
|
141
|
+
After publishing, a GitHub Release is automatically created with:
|
|
142
|
+
- Release notes generated from CHANGELOG.md
|
|
143
|
+
- Direct link to the npm package
|
|
144
|
+
- Git tag for the release (v1.1.0, etc.)
|
|
114
145
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
146
|
+
## Environment & CI/CD
|
|
147
|
+
|
|
148
|
+
**Required Secrets:**
|
|
149
|
+
- `GITHUB_TOKEN` - Auto-provided by GitHub Actions
|
|
150
|
+
- `NPM_TOKEN` - Set in repository settings with publish permissions
|
|
151
|
+
|
|
152
|
+
**Node Version:** 22.x (tested on 24.x and 25.x in CI)
|
|
153
|
+
**Package Manager:** Bun
|
|
154
|
+
|
|
155
|
+
**Publishing Method:** OIDC trusted publishing with npm
|
|
156
|
+
|
|
157
|
+
## Trusted Publishing Setup
|
|
158
|
+
|
|
159
|
+
This project uses npm's **Trusted Publishing** feature for secure, tokenless package publishing.
|
|
160
|
+
|
|
161
|
+
### Setup (one-time)
|
|
162
|
+
|
|
163
|
+
1. Go to https://www.npmjs.com/package/github-archiver/settings
|
|
164
|
+
2. Under **Trusted Publisher**, click **GitHub Actions**
|
|
165
|
+
3. Fill in:
|
|
166
|
+
- **Organization or user**: `mynameistito`
|
|
167
|
+
- **Repository**: `github-archiver`
|
|
168
|
+
- **Workflow filename**: `release.yml`
|
|
169
|
+
4. Click **Set up connection**
|
|
170
|
+
5. (Recommended) Enable **"Require two-factor authentication and disallow tokens"**
|
|
171
|
+
|
|
172
|
+
That's it! No tokens to manage, rotate, or worry about.
|
|
118
173
|
|
|
119
|
-
|
|
174
|
+
## See Also
|
|
120
175
|
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
- Ensure no duplicate release tags exist
|
|
176
|
+
- [Contributing Guidelines](../CONTRIBUTING.md#release-process)
|
|
177
|
+
- [Changesets Documentation](https://github.com/changesets/changesets)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github-archiver",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Archive GitHub repositories via CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"github-archiver": "bin/github-archiver.js"
|
|
9
9
|
},
|
|
10
10
|
"engines": {
|
|
11
|
-
"node": ">=
|
|
11
|
+
"node": ">=22.0.0",
|
|
12
|
+
"bun": ">=1.0.0"
|
|
12
13
|
},
|
|
13
14
|
"scripts": {
|
|
14
15
|
"build": "tsx scripts/build.ts",
|
|
@@ -20,7 +21,11 @@
|
|
|
20
21
|
"tsc": "tsc --noEmit",
|
|
21
22
|
"test": "vitest",
|
|
22
23
|
"test:coverage": "vitest --coverage",
|
|
23
|
-
"
|
|
24
|
+
"changeset": "changeset",
|
|
25
|
+
"changeset:add": "changeset add",
|
|
26
|
+
"changeset:version": "changeset version",
|
|
27
|
+
"changeset:publish": "changeset publish",
|
|
28
|
+
"release": "changeset publish",
|
|
24
29
|
"prepublishOnly": "npm run build && npm run typecheck && npm run lint"
|
|
25
30
|
},
|
|
26
31
|
"dependencies": {
|
|
@@ -31,11 +36,11 @@
|
|
|
31
36
|
},
|
|
32
37
|
"devDependencies": {
|
|
33
38
|
"@biomejs/biome": "^2.3.11",
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
39
|
+
"@changesets/changelog-github": "^0.5.2",
|
|
40
|
+
"@changesets/cli": "^2.29.8",
|
|
41
|
+
"@changesets/get-github-info": "^0.7.0",
|
|
36
42
|
"@types/node": "^25.0.6",
|
|
37
43
|
"esbuild": "^0.27.2",
|
|
38
|
-
"semantic-release": "^25.0.2",
|
|
39
44
|
"tsx": "^4.21.0",
|
|
40
45
|
"typescript": "^5.9.3",
|
|
41
46
|
"ultracite": "^7.0.11",
|
|
@@ -52,6 +57,10 @@
|
|
|
52
57
|
"license": "MIT",
|
|
53
58
|
"repository": {
|
|
54
59
|
"type": "git",
|
|
55
|
-
"url": "https://github.com/mynameistito/github-archiver"
|
|
60
|
+
"url": "git+https://github.com/mynameistito/github-archiver.git"
|
|
61
|
+
},
|
|
62
|
+
"publishConfig": {
|
|
63
|
+
"access": "public",
|
|
64
|
+
"registry": "https://registry.npmjs.org/"
|
|
56
65
|
}
|
|
57
66
|
}
|