Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,13 @@ all: init-block
build:
@echo Building container binaries...
@$(SWIFT) --version
@$(SWIFT) build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION)
@$(SWIFT) build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION) $(BUILD_OPTIONS)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure it's a good approach.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the pre-commit hook I added a separate swift-format config file for format-only checking. Could we use swift format in lint mode to do this, and then perhaps it's just a matter of adjusting the existing lint rule file?

swift-fmt-check:
	@echo Applying the standard code formatting...
	@$(SWIFT) format lint --recursive --strict --configuration .swift-format-nolint $(SWIFT_SRC)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems swift-format does not have a rule for detecting unused imports.


.PHONY: cli
cli:
@echo Building container CLI...
@$(SWIFT) --version
@$(SWIFT) build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION) --product container
@$(SWIFT) build -c $(BUILD_CONFIGURATION) $(SWIFT_CONFIGURATION) --product container $(BUILD_OPTIONS)
@echo Installing container CLI to bin/...
@mkdir -p bin
@install "$(BUILD_BIN_DIR)/container" "bin/container"
Expand Down
55 changes: 55 additions & 0 deletions scripts/check-unused-imports.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash -e
# Copyright © 2026 Apple Inc. and the container project authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

echo "Checking existence of swiftlint..."

if ! command -v swiftlint >/dev/null; then
echo "swiftlint not found in PATH"
echo "please install swiftlint. You can run brew install swiftlint"
exit 1
fi

PROJECT_ROOT="$(realpath "${BASH_SOURCE[0]}/../../")"
BUILD_LOG=${PROJECT_ROOT}/.build/build.log
LINT_LOG=${PROJECT_ROOT}/.build/swiftlint.log

echo 'Building `container` with verbose flag'
if [ ! -f ${BUILD_LOG} ];
then
make -C ${PROJECT_ROOT} clean
make -C ${PROJECT_ROOT} BUILD_OPTIONS="-v &>${BUILD_LOG}"
fi

# Get changed Swift files from git diff main
CHANGED_SWIFT_FILES=$(git diff main --name-only | grep '\.swift$' || true)

if [ -z "$CHANGED_SWIFT_FILES" ]; then
echo "No Swift files changed, skipping swiftlint analysis"
touch ${LINT_LOG}
else
echo "Analyzing changed Swift files:"
# Convert to absolute paths and pass to swiftlint
ABSOLUTE_PATHS=()
while IFS= read -r file; do
if [ -n "$file" ]; then
echo " - $file"
ABSOLUTE_PATHS+=("${PROJECT_ROOT}/${file}")
fi
done <<< "$CHANGED_SWIFT_FILES"
swiftlint analyze --compiler-log-path ${BUILD_LOG} "${ABSOLUTE_PATHS[@]}" 2>/dev/null > ${LINT_LOG}

echo -e "\nUnused imports:\n"
cat ${LINT_LOG} | grep "Unused Import"
fi
Loading