All contributions welcome!
See CLAUDE.md for architecture details.
Requires Go 1.25+.
go build -o photo-copy ./cmd/photo-copyInstall golangci-lint (installation options):
# macOS
brew install golangci-lint
# or cross-platform
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latestRun linting and unit tests:
golangci-lint run ./...
go test ./...Integration tests exercise CLI commands end-to-end against mock HTTP servers for Flickr and Google Photos. They use a build tag and don't run with go test ./...:
go test ./internal/cli/ -tags integrationS3 integration testing is not included — S3 operations delegate to rclone, and rclone's own test coverage handles that layer. S3 unit tests cover command arg building, config generation, and binary resolution.
Update all bundled tool binaries:
./tools-bin/update.shUpdate a specific tool:
./tools-bin/update.sh rclone v1.73.2
./tools-bin/update.sh icloudpd 1.32.2
./tools-bin/update.sh osxphotos 0.75.6 # macOS onlyUploads and S3 downloads: JPEG, PNG, TIFF, GIF, HEIC, WebP, MP4, MOV, AVI, MKV
Flickr and iCloud downloads: All file types downloaded as-is from the service.
photo-copy is licensed under the MIT license