mirror of
https://github.com/swift-server/swift-openapi-lambda.git
synced 2026-06-02 07:27:32 +00:00
Add quote api example (#20)
In preparation for a v2 release that will support the Lambda Runtime v2, I'm adding an end-to-end example project
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
##===----------------------------------------------------------------------===##
|
||||
##
|
||||
## This source file is part of the Swift OpenAPI Lambda open source project
|
||||
##
|
||||
## Copyright (c) 2023 Amazon.com, Inc. or its affiliates
|
||||
## and the Swift OpenAPI Lambda project authors
|
||||
## Licensed under Apache License v2.0
|
||||
##
|
||||
## See LICENSE.txt for license information
|
||||
## See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors
|
||||
##
|
||||
## SPDX-License-Identifier: Apache-2.0
|
||||
##
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
# ===----------------------------------------------------------------------===//
|
||||
#
|
||||
# This source file is part of the Swift.org open source project
|
||||
#
|
||||
# Copyright (c) 2024 Apple Inc. and the Swift project authors
|
||||
# Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
#
|
||||
# See https://swift.org/LICENSE.txt for license information
|
||||
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
#
|
||||
# ===----------------------------------------------------------------------===//
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
log() { printf -- "** %s\n" "$*" >&2; }
|
||||
error() { printf -- "** ERROR: %s\n" "$*" >&2; }
|
||||
fatal() { error "$@"; exit 1; }
|
||||
|
||||
|
||||
if [[ -f .swiftformatignore ]]; then
|
||||
log "Found swiftformatignore file..."
|
||||
|
||||
log "Running swift format format..."
|
||||
tr '\n' '\0' < .swiftformatignore| xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place
|
||||
|
||||
log "Running swift format lint..."
|
||||
|
||||
tr '\n' '\0' < .swiftformatignore | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel
|
||||
else
|
||||
log "Running swift format format..."
|
||||
git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place
|
||||
|
||||
log "Running swift format lint..."
|
||||
|
||||
git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel
|
||||
fi
|
||||
|
||||
|
||||
|
||||
log "Checking for modified files..."
|
||||
|
||||
GIT_PAGER='' git diff --exit-code '*.swift'
|
||||
|
||||
log "✅ Found no formatting issues."
|
||||
Executable
+112
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
##===----------------------------------------------------------------------===##
|
||||
##
|
||||
## This source file is part of the Swift OpenAPI Lambda open source project
|
||||
##
|
||||
## Copyright (c) 2023 Amazon.com, Inc. or its affiliates
|
||||
## and the Swift OpenAPI Lambda project authors
|
||||
## Licensed under Apache License v2.0
|
||||
##
|
||||
## See LICENSE.txt for license information
|
||||
## See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors
|
||||
##
|
||||
## SPDX-License-Identifier: Apache-2.0
|
||||
##
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
# ===----------------------------------------------------------------------===//
|
||||
#
|
||||
# This source file is part of the Swift.org open source project
|
||||
#
|
||||
# Copyright (c) 2024 Apple Inc. and the Swift project authors
|
||||
# Licensed under Apache License v2.0 with Runtime Library Exception
|
||||
#
|
||||
# See https://swift.org/LICENSE.txt for license information
|
||||
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
||||
#
|
||||
# ===----------------------------------------------------------------------===//
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
set +x
|
||||
|
||||
log() { printf -- "** %s\n" "$*" >&2; }
|
||||
error() { printf -- "** ERROR: %s\n" "$*" >&2; }
|
||||
fatal() { error "$@"; exit 1; }
|
||||
|
||||
test -n "${PROJECT_NAME:-}" || fatal "PROJECT_NAME unset"
|
||||
|
||||
if [ -f .license_header_template ]; then
|
||||
# allow projects to override the license header template
|
||||
expected_file_header_template=$(cat .license_header_template)
|
||||
else
|
||||
expected_file_header_template="@@===----------------------------------------------------------------------===@@
|
||||
@@
|
||||
@@ This source file is part of the ${PROJECT_NAME} open source project
|
||||
@@
|
||||
@@ Copyright (c) YEARS Apple Inc. and the ${PROJECT_NAME} project authors
|
||||
@@ Licensed under Apache License v2.0
|
||||
@@
|
||||
@@ See LICENSE.txt for license information
|
||||
@@ See CONTRIBUTORS.txt for the list of ${PROJECT_NAME} project authors
|
||||
@@
|
||||
@@ SPDX-License-Identifier: Apache-2.0
|
||||
@@
|
||||
@@===----------------------------------------------------------------------===@@"
|
||||
fi
|
||||
|
||||
paths_with_missing_license=( )
|
||||
|
||||
# file_excludes=".license_header_template
|
||||
# .licenseignore"
|
||||
# if [ -f .licenseignore ]; then
|
||||
# file_excludes=$(printf '%s\n%s' "$file_excludes" "$(cat .licenseignore)")
|
||||
# fi
|
||||
# file_paths=$(echo "$file_excludes" | tr '\n' '\0' | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files)
|
||||
file_paths=$(tr '\n' '\0' < .licenseignore | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files ":(exclude).licenseignore" ":(exclude).license_header_template" )
|
||||
echo $file_paths
|
||||
|
||||
while IFS= read -r file_path; do
|
||||
file_basename=$(basename -- "${file_path}")
|
||||
file_extension="${file_basename##*.}"
|
||||
|
||||
# shellcheck disable=SC2001 # We prefer to use sed here instead of bash search/replace
|
||||
case "${file_extension}" in
|
||||
swift) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
h) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
c) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
sh) expected_file_header=$(cat <(echo '#!/bin/bash') <(sed -e 's|@@|##|g' <<<"${expected_file_header_template}")) ;;
|
||||
kts) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
gradle) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
groovy) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
java) expected_file_header=$(sed -e 's|@@|//|g' <<<"${expected_file_header_template}") ;;
|
||||
py) expected_file_header=$(cat <(echo '#!/usr/bin/env python3') <(sed -e 's|@@|##|g' <<<"${expected_file_header_template}")) ;;
|
||||
rb) expected_file_header=$(cat <(echo '#!/usr/bin/env ruby') <(sed -e 's|@@|##|g' <<<"${expected_file_header_template}")) ;;
|
||||
in) expected_file_header=$(sed -e 's|@@|##|g' <<<"${expected_file_header_template}") ;;
|
||||
cmake) expected_file_header=$(sed -e 's|@@|##|g' <<<"${expected_file_header_template}") ;;
|
||||
*)
|
||||
error "Unsupported file extension ${file_extension} for file (exclude or update this script): ${file_path}"
|
||||
paths_with_missing_license+=("${file_path} ")
|
||||
;;
|
||||
esac
|
||||
expected_file_header_linecount=$(wc -l <<<"${expected_file_header}")
|
||||
|
||||
file_header=$(head -n "${expected_file_header_linecount}" "${file_path}")
|
||||
normalized_file_header=$(
|
||||
echo "${file_header}" \
|
||||
| sed -e 's/20[12][0123456789]-20[12][0123456789]/YEARS/' -e 's/20[12][0123456789]/YEARS/' \
|
||||
)
|
||||
|
||||
if ! diff -u \
|
||||
--label "Expected header" <(echo "${expected_file_header}") \
|
||||
--label "${file_path}" <(echo "${normalized_file_header}")
|
||||
then
|
||||
paths_with_missing_license+=("${file_path} ")
|
||||
fi
|
||||
done <<< "$file_paths"
|
||||
|
||||
if [ "${#paths_with_missing_license[@]}" -gt 0 ]; then
|
||||
fatal "❌ Found missing license header in files: ${paths_with_missing_license[*]}."
|
||||
fi
|
||||
|
||||
log "✅ Found no files with missing license header."
|
||||
Reference in New Issue
Block a user