diff --git a/README.md b/README.md index 58a2e148f..81d51dd99 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ -# Open-IM-Server - -

-Open source Instant Messaging Server -

+

+ + Open IM Server
+
+ ⭐️ Open source Instant Messaging Server ⭐️
+

A+ good first + diff --git a/script/githooks/commit-msg b/script/githooks/commit-msg new file mode 100644 index 000000000..7d5dab52e --- /dev/null +++ b/script/githooks/commit-msg @@ -0,0 +1,73 @@ + +#!/usr/bin/env bash + +# Copyright © 2023 OpenIMSDK. +# +# 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 +# +# http://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. +# +# ============================================================================== +# +# Store this file as .git/hooks/commit-msg in your repository in order to +# enforce checking for proper commit message format before actual commits. +# You may need to make the script executable by 'chmod +x .git/hooks/commit-msg'. + +# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint` +# go-gitlint --msg-file="$1" + +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. + +YELLOW="\e[93m" +GREEN="\e[32m" +RED="\e[31m" +ENDCOLOR="\e[0m" + +printMessage() { + printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" +} + +printSuccess() { + printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" +} + +printError() { + printf "${RED}OpenIM : $1${ENDCOLOR}\n" +} + +printMessage "Running the OpenIM commit-msg hook." + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} + +./tools/go-gitlint \ + --msg-file=$1 \ + --subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|test)(.*)?:\s?.*" \ + --subject-maxlen=150 \ + --subject-minlen=10 \ + --body-regex=".*" \ + --max-parents=1 + +if [ $? -ne 0 ] +then + printError "Please fix your commit message to match OpenIM coding standards" + printError "https://OpenIM.gitbook.io/docs/essential-documentation/contribute-to-OpenIM/software-contributions/submitting-code/code-submission-guidelines#commit-message-guidelines" + exit 1 +fi \ No newline at end of file diff --git a/script/githooks/commit-msg.sh b/script/githooks/commit-msg.sh deleted file mode 100644 index 255a60e97..000000000 --- a/script/githooks/commit-msg.sh +++ /dev/null @@ -1,25 +0,0 @@ - -#!/usr/bin/env bash - -# Copyright © 2023 OpenIMSDK. -# -# 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 -# -# http://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. -# -# ============================================================================== -# -# Store this file as .git/hooks/commit-msg in your repository in order to -# enforce checking for proper commit message format before actual commits. -# You may need to make the script executable by 'chmod +x .git/hooks/commit-msg'. - -# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint` -go-gitlint --msg-file="$1" diff --git a/script/githooks/pre-commit b/script/githooks/pre-commit new file mode 100644 index 000000000..9cd54db7e --- /dev/null +++ b/script/githooks/pre-commit @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Copyright © 2023 OpenIMSDK. +# +# 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 +# +# http://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. +# + +YELLOW="\e[93m" +GREEN="\e[32m" +RED="\e[31m" +ENDCOLOR="\e[0m" + +printMessage() { + printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" +} + +printSuccess() { + printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" +} + +printError() { + printf "${RED}OpenIM : $1${ENDCOLOR}\n" +} + +printMessage "Running local OpenIM pre-commit hook." + +#flutter format . +##https://gist.github.com/benmccallum/28e4f216d9d72f5965133e6c43aaff6e +limit=$(( 1 * 2**20 )) # 1MB + +function file_too_large(){ + filename=$0 + filesize=$(( $1 / 2**20 )) + + cat < /dev/null 2>&1 +then + against=HEAD +else + against=empty_tree +fi + +for file in $( git diff-index --cached --name-only $against ); do + file_size=$( ls -la $file | awk '{ print $5 }') + if [ "$file_size" -gt "$limit" ]; then + file_too_large $filename $file_size + exit 1; + fi +done diff --git a/script/githooks/pre-commit.sh b/script/githooks/pre-commit.sh deleted file mode 100644 index 752e97568..000000000 --- a/script/githooks/pre-commit.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIMSDK. -# -# 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 -# -# http://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. -# - -LC_ALL=C - -local_branch="$(git rev-parse --abbrev-ref HEAD)" - -valid_branch_regex="^(master|develop)$|(feature|release|hotfix)\/[a-z0-9._-]+$|^HEAD$" - -message="There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex. -Your commit will be rejected. You should rename your branch to a valid name and try again." -message2="If you're not familiar with the contribution process, please read our contributor documentation again --> https://github.com/OpenIMSDK/Open-IM-Server/blob/main/CONTRIBUTING.md" - - -if [[ ! $local_branch =~ $valid_branch_regex ]] -then - echo "$message" - echo "$message2" - exit 1 -fi - -exit 0 diff --git a/script/make-rules/common.mk b/script/make-rules/common.mk index ac9e6f605..9da3d381b 100644 --- a/script/make-rules/common.mk +++ b/script/make-rules/common.mk @@ -120,7 +120,7 @@ MAKEFLAGS += --no-print-directory endif # Copy githook scripts when execute makefile -COPY_GITHOOK:=$(shell cp -f script/githooks/* .git/hooks/; chmod +x .git/hooks/commit-msg') +COPY_GITHOOK:=$(shell cp -f script/githooks/* .git/hooks/; chmod +x .git/hooks/*) # COMMA: Concatenate multiple strings to form a list of strings COMMA := ,