{"owner":"simulot","repo":"immich-go","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["GEMINI.md"],"skills":{"GEMINI.md":"# GEMINI.md\n\nread instructions in .github/copilot-instructions.md for more details on development conventions and release note generation.\n\n\n## Project Overview\n\nThis project, `immich-go`, is a command-line tool written in Go. Its primary purpose is to provide an efficient way to upload large photo and video collections to a self-hosted [Immich](https://immich.app/) server.\n\nIt is designed as a cross-platform application (Windows, macOS, Linux, FreeBSD) with no external dependencies like Node.js or Docker, making it easy to install and use.\n\nKey features include:\n-   Uploading from multiple sources: local folders, Google Photos Takeout archives, iCloud, and even other Immich servers.\n-   Smart management of assets, including duplicate detection, photo stacking (bursts, RAW+JPEG), and metadata handling.\n-   A rich set of commands for interacting with Immich, such as `upload`, `archive`, and `stack`.\n\nThe project uses the Cobra library for its CLI structure and `goreleaser` to manage its release process.\n\n## Building and Running\n\n### Prerequisites\n\n-   Go (version 1.25 or higher, as specified in `go.mod`)\n\n### Building the Application\n\nTo build the application from the source, run the following command from the project root:\n\n```sh\ngo build -o immich-go main.go\n```\n\nFor a production-ready, statically linked binary similar to the CI build, use:\n\n```sh\nCGO_ENABLED=0 go build -ldflags=\"-s -w -extldflags=-static\" -o immich-go main.go\n```\n\n### Running the Application\n\nOnce built, the application can be run directly from the command line:\n\n```sh\n./immich-go --help\n```\n\nThe main commands are `upload`, `archive`, and `stack`. Here is a basic usage example:\n\n```sh\n./immich-go upload from-folder --server http://your-immich-server:2283 --api-key YOUR_API_KEY /path/to/photos\n```\n\n## Development\n\n### Testing\n\nThe project has both unit and end-to-end (E2E) tests.\n\n**Unit Tests:**\n\nRun all unit tests with race condition detection and coverage:\n\n```sh\ngo test -race -v -count=1 -coverprofile=coverage.out ./...\n```\n\n**End-to-End (E2E) Tests:**\n\nE2E tests require a running Immich server and are run against a specific client test suite.\n\n```sh\n# Navigate to the E2E client directory\ncd internal/e2e/client\n\n# Run the E2E tests\ngo test -v -tags=e2e -timeout=30m ./...\n```\n\n### Linting\n\nThe project uses `golangci-lint` for code quality. To run the linter, you can use the `golangci-lint` command:\n\n```sh\ngolangci-lint run\n```\n\nThis is also integrated into the CI pipeline.\n\n"},"files":{"GEMINI.md":"# GEMINI.md\n\nread instructions in .github/copilot-instructions.md for more details on development conventions and release note generation.\n\n\n## Project Overview\n\nThis project, `immich-go`, is a command-line tool written in Go. Its primary purpose is to provide an efficient way to upload large photo and video collections to a self-hosted [Immich](https://immich.app/) server.\n\nIt is designed as a cross-platform application (Windows, macOS, Linux, FreeBSD) with no external dependencies like Node.js or Docker, making it easy to install and use.\n\nKey features include:\n-   Uploading from multiple sources: local folders, Google Photos Takeout archives, iCloud, and even other Immich servers.\n-   Smart management of assets, including duplicate detection, photo stacking (bursts, RAW+JPEG), and metadata handling.\n-   A rich set of commands for interacting with Immich, such as `upload`, `archive`, and `stack`.\n\nThe project uses the Cobra library for its CLI structure and `goreleaser` to manage its release process.\n\n## Building and Running\n\n### Prerequisites\n\n-   Go (version 1.25 or higher, as specified in `go.mod`)\n\n### Building the Application\n\nTo build the application from the source, run the following command from the project root:\n\n```sh\ngo build -o immich-go main.go\n```\n\nFor a production-ready, statically linked binary similar to the CI build, use:\n\n```sh\nCGO_ENABLED=0 go build -ldflags=\"-s -w -extldflags=-static\" -o immich-go main.go\n```\n\n### Running the Application\n\nOnce built, the application can be run directly from the command line:\n\n```sh\n./immich-go --help\n```\n\nThe main commands are `upload`, `archive`, and `stack`. Here is a basic usage example:\n\n```sh\n./immich-go upload from-folder --server http://your-immich-server:2283 --api-key YOUR_API_KEY /path/to/photos\n```\n\n## Development\n\n### Testing\n\nThe project has both unit and end-to-end (E2E) tests.\n\n**Unit Tests:**\n\nRun all unit tests with race condition detection and coverage:\n\n```sh\ngo test -race -v -count=1 -coverprofile=coverage.out ./...\n```\n\n**End-to-End (E2E) Tests:**\n\nE2E tests require a running Immich server and are run against a specific client test suite.\n\n```sh\n# Navigate to the E2E client directory\ncd internal/e2e/client\n\n# Run the E2E tests\ngo test -v -tags=e2e -timeout=30m ./...\n```\n\n### Linting\n\nThe project uses `golangci-lint` for code quality. To run the linter, you can use the `golangci-lint` command:\n\n```sh\ngolangci-lint run\n```\n\nThis is also integrated into the CI pipeline.\n\n"},"items":[{"name":"GEMINI.md","path":"GEMINI.md","title":"GEMINI.md","content":"# GEMINI.md\n\nread instructions in .github/copilot-instructions.md for more details on development conventions and release note generation.\n\n\n## Project Overview\n\nThis project, `immich-go`, is a command-line tool written in Go. Its primary purpose is to provide an efficient way to upload large photo and video collections to a self-hosted [Immich](https://immich.app/) server.\n\nIt is designed as a cross-platform application (Windows, macOS, Linux, FreeBSD) with no external dependencies like Node.js or Docker, making it easy to install and use.\n\nKey features include:\n-   Uploading from multiple sources: local folders, Google Photos Takeout archives, iCloud, and even other Immich servers.\n-   Smart management of assets, including duplicate detection, photo stacking (bursts, RAW+JPEG), and metadata handling.\n-   A rich set of commands for interacting with Immich, such as `upload`, `archive`, and `stack`.\n\nThe project uses the Cobra library for its CLI structure and `goreleaser` to manage its release process.\n\n## Building and Running\n\n### Prerequisites\n\n-   Go (version 1.25 or higher, as specified in `go.mod`)\n\n### Building the Application\n\nTo build the application from the source, run the following command from the project root:\n\n```sh\ngo build -o immich-go main.go\n```\n\nFor a production-ready, statically linked binary similar to the CI build, use:\n\n```sh\nCGO_ENABLED=0 go build -ldflags=\"-s -w -extldflags=-static\" -o immich-go main.go\n```\n\n### Running the Application\n\nOnce built, the application can be run directly from the command line:\n\n```sh\n./immich-go --help\n```\n\nThe main commands are `upload`, `archive`, and `stack`. Here is a basic usage example:\n\n```sh\n./immich-go upload from-folder --server http://your-immich-server:2283 --api-key YOUR_API_KEY /path/to/photos\n```\n\n## Development\n\n### Testing\n\nThe project has both unit and end-to-end (E2E) tests.\n\n**Unit Tests:**\n\nRun all unit tests with race condition detection and coverage:\n\n```sh\ngo test -race -v -count=1 -coverprofile=coverage.out ./...\n```\n\n**End-to-End (E2E) Tests:**\n\nE2E tests require a running Immich server and are run against a specific client test suite.\n\n```sh\n# Navigate to the E2E client directory\ncd internal/e2e/client\n\n# Run the E2E tests\ngo test -v -tags=e2e -timeout=30m ./...\n```\n\n### Linting\n\nThe project uses `golangci-lint` for code quality. To run the linter, you can use the `golangci-lint` command:\n\n```sh\ngolangci-lint run\n```\n\nThis is also integrated into the CI pipeline.\n\n","category":"root","tokens":623}]}