Compare commits

...
2 Commits
Author SHA1 Message Date
herel 1faa8f1982 chore: Bump version to 0.7.0 and update changelog
Document the changes shipped since 0.2.0: the X-WS-* header
detection fix (0.5.0), the custom POP3 implementation (0.6.0) and
the dependency and toolchain upgrades (0.7.0). Retitle the 0.2.0
entry to 0.3.0 to match the version actually released in
Cargo.toml.
2026-08-28 15:23:34 +02:00
herel 94df2c8d4f build: Tag Docker image with version on main, SHA otherwise
Derive the Docker tag from the crate version when building on the
main branch and fall back to the short commit SHA on any other
branch. Update the run, clean, shell and push targets to use the
same tag instead of the implicit latest tag.
2026-08-28 15:23:26 +02:00
4 changed files with 59 additions and 11 deletions
+39 -1
View File
@@ -5,7 +5,45 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.2.0] - 2025-12-04 ## [0.7.0] - 2026-08-28
### Changed
- Upgraded dependencies: clap 4.6.6, imap 3.0.0-alpha.15, native-tls 0.2.18
- Migrated IMAP client to the imap 3.x `ClientBuilder` and `AppendCmd` APIs
- Docker images are now tagged with the crate version on main and the short commit SHA otherwise
- Upgraded build toolchain to Rust 1.98 (pinned via `rust-toolchain.toml`)
- Updated Docker images: builder `rust:1.98-trixie`, runtime Debian trixie with `libssl3t64`
### Removed
- Unused `imap-proto` dependency
- Unsound `lexical-core 0.7.6` dependency chain (RUSTSEC-2023-0086), `cargo audit` is now clean
## [0.6.0] - 2025-12-12
### Changed
- Replaced the third-party `rust-pop3-client` crate with a custom POP3 implementation
- POP3 messages are now retrieved as raw bytes over native-tls, without encoding or line ending conversions
- Reduced dependency footprint by dropping `rust-pop3-client`
### Fixed
- POP3 byte-stuffing (doubled leading dots) is now handled correctly
- Original email byte structure is preserved during retrieval
## [0.5.0] - 2025-12-10
### Fixed
- `X-WS-*` headers (e.g. `X-WS-Attachment-UUID`) are now detected as MIME headers so adjacent attachment headers (`Content-Type`, `Content-Disposition`) get normalized properly
### Added
- Test case for attachment header normalization
## [0.3.0] - 2025-12-04
### Added ### Added
Generated
+1 -1
View File
@@ -501,7 +501,7 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]] [[package]]
name = "rs_pop_imap_importer" name = "rs_pop_imap_importer"
version = "0.6.0" version = "0.7.0"
dependencies = [ dependencies = [
"clap", "clap",
"dotenvy", "dotenvy",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "rs_pop_imap_importer" name = "rs_pop_imap_importer"
version = "0.6.0" version = "0.7.0"
edition = "2024" edition = "2024"
[lib] [lib]
+18 -8
View File
@@ -3,6 +3,16 @@
# Variables # Variables
IMAGE_NAME = pop-imap-importer IMAGE_NAME = pop-imap-importer
DOCKER_PLATFORM = linux/amd64 DOCKER_PLATFORM = linux/amd64
VERSION = $(shell grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
GIT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
GIT_SHA = $(shell git rev-parse --short HEAD)
# Docker tag: version number on main branch, short commit SHA otherwise
ifeq ($(GIT_BRANCH),main)
DOCKER_TAG = $(VERSION)
else
DOCKER_TAG = $(GIT_SHA)
endif
# Default target # Default target
.PHONY: help .PHONY: help
@@ -36,29 +46,29 @@ test: ## Run all tests
# Docker targets # Docker targets
.PHONY: build .PHONY: build
build: ## Build the Docker image for linux/amd64 platform build: ## Build the Docker image for linux/amd64 platform (tagged with version on main, commit SHA otherwise)
docker build --platform=$(DOCKER_PLATFORM) -t $(IMAGE_NAME) . docker build --platform=$(DOCKER_PLATFORM) -t $(IMAGE_NAME):$(DOCKER_TAG) .
.PHONY: run .PHONY: run
run: ## Run the Docker container run: ## Run the Docker container
docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME) docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME):$(DOCKER_TAG)
.PHONY: run-with-env .PHONY: run-with-env
run-with-env: ## Run the Docker container with a custom .env file run-with-env: ## Run the Docker container with a custom .env file
docker run --platform=$(DOCKER_PLATFORM) --rm -it -v $(PWD)/.env:/app/.env $(IMAGE_NAME) docker run --platform=$(DOCKER_PLATFORM) --rm -it -v $(PWD)/.env:/app/.env $(IMAGE_NAME):$(DOCKER_TAG)
.PHONY: clean .PHONY: clean
clean: ## Remove the Docker image clean: ## Remove the Docker image
docker rmi $(IMAGE_NAME) docker rmi $(IMAGE_NAME):$(DOCKER_TAG)
.PHONY: push .PHONY: push
push: ## Push the Docker image to a registry (requires REPOSITORY variable) push: ## Push the Docker image to a registry (requires REPOSITORY variable)
ifndef REPOSITORY ifndef REPOSITORY
$(error REPOSITORY is not set. Please set it with: make push REPOSITORY=your-repo/image-name) $(error REPOSITORY is not set. Please set it with: make push REPOSITORY=your-repo/image-name)
endif endif
docker tag $(IMAGE_NAME) $(REPOSITORY):latest docker tag $(IMAGE_NAME):$(DOCKER_TAG) $(REPOSITORY):$(DOCKER_TAG)
docker push $(REPOSITORY):latest docker push $(REPOSITORY):$(DOCKER_TAG)
.PHONY: shell .PHONY: shell
shell: ## Run a shell in the Docker container shell: ## Run a shell in the Docker container
docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME) sh docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME):$(DOCKER_TAG) sh