Skip to content

feat: sync packages from existed package managers#20

Merged
yosuang merged 3 commits intodevfrom
feat-sync
Feb 5, 2026
Merged

feat: sync packages from existed package managers#20
yosuang merged 3 commits intodevfrom
feat-sync

Conversation

@yosuang
Copy link
Owner

@yosuang yosuang commented Feb 5, 2026

No description provided.

- Add CustomManagerMetadata struct with Buckets/Taps maps
- Extend PackageManagerConfig with Custom field
- Add TestConfig_CustomManagerMetadata with round-trip tests
- Backward compatible: omitempty ensures old configs load

feat(pkgmgr): add brew list support

- Implement Homebrew Manager with List() method
- Use 'brew list --json=v2' to fetch formulae and casks
- Parse JSON and map to pkgmgr.Package struct
- Add comprehensive test suite with exec mocking
- Install/Uninstall return ErrUnsupported (stubs)

Tests: go test ./... -run 'TestConfig_CustomManagerMetadata|TestBrewList_ParsesFormulaeAndCasks'
- Implement sync command to detect and list packages from Scoop/Brew
- Filter to supported managers only (exclude apt/powershell/pwsh)
- Convert pkgmgr.Package to config.PackageConfig
- Merge with existing config using config.MergePackages()
- Save updated config to disk
- Output concise summary per manager
- Error handling: warn on manager failure, continue with others
- Comprehensive test suite with 7 tests covering:
  - Merge preservation (existing packages not deleted)
  - Unsupported manager skip
  - Error continuation with partial failure
  - Empty manager list handling
  - Config save with partial failure
  - Package conversion
  - Manager filtering

Tests: go test ./... -run TestSync_
@yosuang yosuang merged commit 4a6e125 into dev Feb 5, 2026
1 check passed
@yosuang yosuang deleted the feat-sync branch February 5, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant