diff --git a/.github/code-language-detector.yml b/.github/code-language-detector.yml
index 32a8c1f54..194c2474a 100644
--- a/.github/code-language-detector.yml
+++ b/.github/code-language-detector.yml
@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+# https://github.com/marketplace/actions/code-language-detector
directory: ./
file_types:
- .go
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index 154386ff5..55ee241d7 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -48,4 +48,4 @@ template: |
## Contributors to this $REPOSITORY release
- $CONTRIBUTORS
\ No newline at end of file
+ $CONTRIBUTORS
diff --git a/.github/standardizer.yml b/.github/standardizer.yml
new file mode 100644
index 000000000..fceb69df1
--- /dev/null
+++ b/.github/standardizer.yml
@@ -0,0 +1,50 @@
+# https://github.com/marketplace/actions/conformity-checker-for-project
+baseConfig:
+ searchDirectory: "./"
+ ignoreCase: false
+
+directoryNaming:
+ allowHyphens: true
+ allowUnderscores: false
+ mustBeLowercase: true
+
+fileNaming:
+ allowHyphens: true
+ allowUnderscores: true
+ mustBeLowercase: true
+
+ignoreFormats:
+ - "\\.log$"
+ - "\\.env$"
+ - "README\\.md$"
+ - "_test\\.go$"
+ - "\\.md$"
+ - _test\\.txt$
+ - LICENSE
+ - Dockerfile
+ - CODEOWNERS
+ - Makefile
+
+ignoreDirectories:
+ - "vendor"
+ - ".git"
+ - "deployments"
+ - "node_modules"
+ - "logs"
+ - "CHANGELOG"
+ - "components"
+ - "_output"
+ - "tools/openim-web"
+ - "CHANGELOG"
+ - "examples/Test_directory"
+ - test/testdata
+
+fileTypeSpecificNaming:
+ ".yaml":
+ allowHyphens: true
+ allowUnderscores: false
+ mustBeLowercase: true
+ ".go":
+ allowHyphens: false
+ allowUnderscores: true
+ mustBeLowercase: true
\ No newline at end of file
diff --git a/.github/workflows/openimci.yml b/.github/workflows/openimci.yml
index 5aeddd09a..f47283997 100644
--- a/.github/workflows/openimci.yml
+++ b/.github/workflows/openimci.yml
@@ -73,6 +73,9 @@ jobs:
- name: Code Typecheck Detector
uses: kubecub/typecheck@main
+ - name: Conformity Checker for Project
+ uses: kubecub/standardizer@main
+
- name: Module Operations
run: |
sudo make tidy
diff --git a/README_zh_CN.md b/README_zh_CN.md
index 7eabfa509..f42031165 100644
--- a/README_zh_CN.md
+++ b/README_zh_CN.md
@@ -52,7 +52,7 @@
## 🟢 扫描微信进群交流
-
+
## Ⓜ️ 关于 OpenIM
diff --git a/docs/images/Open-IM.png b/docs/images/Open-IM.png
deleted file mode 100644
index b61706550..000000000
Binary files a/docs/images/Open-IM.png and /dev/null differ
diff --git a/docs/images/Architecture.jpg b/docs/images/architecture.jpg
similarity index 100%
rename from docs/images/Architecture.jpg
rename to docs/images/architecture.jpg
diff --git a/docs/images/Wechat.jpg b/docs/images/wechat.jpg
similarity index 100%
rename from docs/images/Wechat.jpg
rename to docs/images/wechat.jpg
diff --git a/go.work b/go.work
index 02e4154d3..7cc1b80a1 100644
--- a/go.work
+++ b/go.work
@@ -4,7 +4,6 @@ use (
.
./tools/changelog
./tools/component
- ./tools/formitychecker
./tools/imctl
./tools/infra
./tools/ncpu
diff --git a/pkg/common/discoveryregister/direct/directResolver.go b/pkg/common/discoveryregister/direct/direct_resolver.go
similarity index 100%
rename from pkg/common/discoveryregister/direct/directResolver.go
rename to pkg/common/discoveryregister/direct/direct_resolver.go
diff --git a/scripts/lib/golang.sh b/scripts/lib/golang.sh
index 7b9d7e60c..f9648cbdb 100755
--- a/scripts/lib/golang.sh
+++ b/scripts/lib/golang.sh
@@ -314,9 +314,6 @@ openim::golang::setup_platforms
readonly OPENIM_CLIENT_TARGETS=(
changelog
component
- conversion-msg
- conversion-mysql
- formitychecker
imctl
infra
ncpu
diff --git a/scripts/lib/release.sh b/scripts/lib/release.sh
index c1fbd00a1..05e92377d 100755
--- a/scripts/lib/release.sh
+++ b/scripts/lib/release.sh
@@ -243,7 +243,7 @@ function openim::release::package_client_tarballs() {
local client_bins=("${OPENIM_CLIENT_BINARIES[@]}")
- # client_bins: changelog component conversion-msg conversion-mysql formitychecker imctl infra ncpu openim-web up35 versionchecker yamlfmt
+ # client_bins: changelog component imctl infra ncpu openim-web up35 versionchecker yamlfmt
# Copy client binclient_bins:aries
openim::log::info " Copy client binaries: ${client_bins[@]/#/${LOCAL_OUTPUT_BINTOOLSPATH}/${platform}/}"
openim::log::info " Copy client binaries to: ${release_stage}/client/bin"
diff --git a/scripts/make-rules/common-versions.mk b/scripts/make-rules/common-versions.mk
new file mode 100644
index 000000000..a4b15aca0
--- /dev/null
+++ b/scripts/make-rules/common-versions.mk
@@ -0,0 +1,17 @@
+# 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.
+
+# ==============================================================================
+# OpenIM Makefile Versions used
+#
diff --git a/scripts/make-rules/common.mk b/scripts/make-rules/common.mk
index f8537b6ca..ffbb69a55 100644
--- a/scripts/make-rules/common.mk
+++ b/scripts/make-rules/common.mk
@@ -78,6 +78,13 @@ VERSION := $(shell git describe --tags --always --match='v*')
# v2.3.3: git tag
endif
+# Helper function to get dependency version from go.mod
+get_gomod_version = $(shell go list -m $1 | awk '{print $$2}')
+define go_install
+$(info ===========> Installing $(1)@$(2))
+$(GO) install $(1)@$(2)
+endef
+
# Check if the tree is dirty. default to dirty(maybe u should commit?)
GIT_TREE_STATE:="dirty"
ifeq (, $(shell git status --porcelain 2>/dev/null))
diff --git a/scripts/make-rules/tools.mk b/scripts/make-rules/tools.mk
index 917c18cfe..b30febb64 100644
--- a/scripts/make-rules/tools.mk
+++ b/scripts/make-rules/tools.mk
@@ -238,6 +238,7 @@ install.rts:
@$(GO) install github.com/galeone/rts/cmd/rts@latest
# ================= kubecub openim tools =========================================
+# https://github.com/kubecub
## install.typecheck: install kubecub typecheck check for go code
.PHONY: install.typecheck
install.typecheck:
@@ -248,6 +249,11 @@ install.typecheck:
install.comment-lang-detector:
@$(GO) install github.com/kubecub/comment-lang-detector/cmd/cld@latest
+## install.standardizer: install kubecub standardizer check for go code standardize
+.PHONY: install.standardizer
+install.standardizer:
+ @$(GO) install github.com/kubecub/standardizer@latest
+
## tools.help: Display help information about the tools package
.PHONY: tools.help
tools.help: scripts/make-rules/tools.mk
diff --git a/scripts/verify-standardizer.sh b/scripts/verify-standardizer.sh
new file mode 100755
index 000000000..08a13b9a2
--- /dev/null
+++ b/scripts/verify-standardizer.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+# Copyright © 2023 OpenIM. All rights reserved.
+#
+# 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.
+
+# This script does a fast type check of script srnetes code for all platforms.
+# Usage: `scripts/verify-standardizer.sh`.
+
+OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
+source "${OPENIM_ROOT}/scripts/lib/init.sh"
+
+openim::golang::verify_go_version
+
+cd "${OPENIM_ROOT}"
+ret=0
+scripts/run-in-gopath.sh \
+make tools.verify.standardizer
+${OPENIM_ROOT}/_output/tools/standardizer || ret=$?
+if [[ $ret -ne 0 ]]; then
+ openim::log::error "Failed to check the directory name or file name. Your name may not meet the specification. Please check the configuration file and the directory or file name." >&2
+ openim::log::error "Please see https://github.com/kubecub/standardizer for more information." >&2
+ exit 1
+fi
diff --git a/test/testdata/requests/sendMessage.json b/test/testdata/requests/send-message.json
similarity index 100%
rename from test/testdata/requests/sendMessage.json
rename to test/testdata/requests/send-message.json
diff --git a/tools/formitychecker/README.md b/tools/formitychecker/README.md
deleted file mode 100644
index 7cabf8a66..000000000
--- a/tools/formitychecker/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# Development of a Go-Based Conformity Checker for Project File and Directory Naming Standards
-
-### 1. Project Overview
-
-#### Project Name
-
-- `GoConformityChecker`
-
-#### Functionality Description
-
-- Checks if the file and subdirectory names in a specified directory adhere to specific naming conventions.
-- Supports specific file types (e.g., `.go`, `.yml`, `.yaml`, `.md`, `.sh`, etc.).
-- Allows users to specify directories to be checked and directories to be ignored.
-- More read https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/code-conventions.md
-
-#### Naming Conventions
-
-- Go files: Only underscores are allowed.
-- YAML, YML, and Markdown files: Only hyphens are allowed.
-- Directories: Only underscores are allowed.
-
-### 2. File Structure
-
-- `main.go`: Entry point of the program, handles command-line arguments.
-- `checker/checker.go`: Contains the core logic.
-- `config/config.go`: Parses and stores configuration information.
-
-### 3. Core Code Design
-
-#### main.go
-
-- Parses command-line arguments, including the directory to be checked and directories to be ignored.
-- Calls the `checker` module for checking.
-
-#### config.go
-
-- Defines a configuration structure, such as directories to check and ignore.
-
-#### checker.go
-
-- Iterates through the specified directory.
-- Applies different naming rules based on file types and directory names.
-- Records files or directories that do not conform to the standards.
-
-### 4. Pseudocode Example
-
-#### main.go
-
-```go
-package main
-
-import (
- "flag"
- "fmt"
- "GoConformityChecker/checker"
-)
-
-func main() {
- // Parse command-line arguments
- var targetDir string
- var ignoreDirs string
- flag.StringVar(&targetDir, "target", ".", "Directory to check")
- flag.StringVar(&ignoreDirs, "ignore", "", "Directories to ignore")
- flag.Parse()
-
- // Call the checker
- err := checker.CheckDirectory(targetDir, ignoreDirs)
- if err != nil {
- fmt.Println("Error:", err)
- }
-}
-```
-
-#### checker.go
-
-```go
-package checker
-
-import (
- // Import necessary packages
-)
-
-func CheckDirectory(targetDir, ignoreDirs string) error {
- // Iterate through the directory, applying rules to check file and directory names
- // Return any found errors or non-conformities
- return nil
-}
-```
-
-### 5. Implementation Details
-
-- **File and Directory Traversal**: Use Go's `path/filepath` package to traverse directories and subdirectories.
-- **Naming Rules Checking**: Apply different regex expressions for naming checks based on file extensions.
-- **Error Handling and Reporting**: Record files or directories that do not conform and report to the user.
-
-### 6. Future Development and Extensions
-
-- Support more file types and naming rules.
-- Provide more detailed error reports, such as showing line numbers and specific naming mistakes.
-- Add a graphical or web interface for non-command-line users.
-
-The above is an overview of the entire project's design. Following this design, specific coding implementation can begin. Note that the actual implementation may need adjustments based on real-world conditions.
\ No newline at end of file
diff --git a/tools/formitychecker/checker/checker.go b/tools/formitychecker/checker/checker.go
deleted file mode 100644
index b17cc5427..000000000
--- a/tools/formitychecker/checker/checker.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright © 2024 OpenIM. All rights reserved.
-//
-// 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.
-
-package checker
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "regexp"
- "strings"
-
- "github.com/OpenIMSDK/tools/errs"
-
- "github.com/openimsdk/open-im-server/tools/formitychecker/config"
-)
-
-var (
- underscoreRegex = regexp.MustCompile(`^[a-zA-Z0-9_]+\.[a-zA-Z0-9]+$`)
- hyphenRegex = regexp.MustCompile(`^[a-zA-Z0-9\-]+\.[a-zA-Z0-9]+$`)
-)
-
-// CheckDirectory initiates the checking process for the specified directories using configuration from config.Config.
-func CheckDirectory(cfg *config.Config) error {
- ignoreMap := make(map[string]struct{})
- for _, dir := range cfg.IgnoreDirs {
- ignoreMap[dir] = struct{}{}
- }
-
- for _, targetDir := range cfg.TargetDirs {
- err := filepath.Walk(targetDir, func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return errs.Wrap(err, fmt.Sprintf("error walking directory '%s'", targetDir))
- }
-
- // Skip if the directory is in the ignore list
- dirName := filepath.Base(filepath.Dir(path))
- if _, ok := ignoreMap[dirName]; ok && info.IsDir() {
- return filepath.SkipDir
- }
-
- // Check the naming convention
- if err := checkNamingConvention(path, info); err != nil {
- fmt.Println(err)
- }
-
- return nil
- })
-
- if err != nil {
- return fmt.Errorf("error checking directory '%s': %w", targetDir, err)
- }
- }
-
- return nil
-}
-
-// checkNamingConvention checks if the file or directory name conforms to the standard naming conventions.
-func checkNamingConvention(path string, info os.FileInfo) error {
- fileName := info.Name()
-
- // Handle special cases for directories like .git
- if info.IsDir() && strings.HasPrefix(fileName, ".") {
- return nil // Skip special directories
- }
-
- // Extract the main part of the name (without extension for files)
- mainName := fileName
- if !info.IsDir() {
- mainName = strings.TrimSuffix(fileName, filepath.Ext(fileName))
- }
-
- // Determine the type of file and apply corresponding naming rule
- switch {
- case info.IsDir():
- if !isValidName(mainName, "_") { // Directory names must only contain underscores
- return fmt.Errorf("!!! invalid directory name: %s", path)
- }
- case strings.HasSuffix(fileName, ".go"):
- if !isValidName(mainName, "_") { // Go files must only contain underscores
- return fmt.Errorf("!!! invalid Go file name: %s", path)
- }
- case strings.HasSuffix(fileName, ".yml"), strings.HasSuffix(fileName, ".yaml"), strings.HasSuffix(fileName, ".md"):
- if !isValidName(mainName, "-") { // YML, YAML, and Markdown files must only contain hyphens
- return fmt.Errorf("!!! invalid file name: %s", path)
- }
- }
-
- return nil
-}
-
-// isValidName checks if the file name conforms to the specified rule (underscore or hyphen).
-func isValidName(name, charType string) bool {
- switch charType {
- case "_":
- return underscoreRegex.MatchString(name)
- case "-":
- return hyphenRegex.MatchString(name)
- default:
- return false
- }
-}
diff --git a/tools/formitychecker/config/config.go b/tools/formitychecker/config/config.go
deleted file mode 100644
index 0c4f6a16b..000000000
--- a/tools/formitychecker/config/config.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright © 2024 OpenIM. All rights reserved.
-//
-// 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.
-
-package config
-
-import (
- "strings"
-)
-
-// Config holds all the configuration parameters for the checker.
-type Config struct {
- TargetDirs []string // Directories to check
- IgnoreDirs []string // Directories to ignore
-}
-
-// NewConfig creates and returns a new Config instance.
-func NewConfig(targetDirs, ignoreDirs string) *Config {
- return &Config{
- TargetDirs: parseDirs(targetDirs),
- IgnoreDirs: parseDirs(ignoreDirs),
- }
-}
-
-// parseDirs splits a comma-separated string into a slice of directory names.
-func parseDirs(dirs string) []string {
- if dirs == "" {
- return nil
- }
- return strings.Split(dirs, ",")
-}
diff --git a/tools/formitychecker/formitychecker.go b/tools/formitychecker/formitychecker.go
deleted file mode 100644
index 2bedbfb32..000000000
--- a/tools/formitychecker/formitychecker.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright © 2024 OpenIM. All rights reserved.
-//
-// 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.
-
-package main
-
-import (
- "flag"
- "fmt"
-
- "github.com/openimsdk/open-im-server/tools/formitychecker/checker"
- "github.com/openimsdk/open-im-server/tools/formitychecker/config"
-)
-
-func main() {
- defaultTargetDirs := "."
- defaultIgnoreDirs := "components,.git"
-
- var targetDirs string
- var ignoreDirs string
- flag.StringVar(&targetDirs, "target", defaultTargetDirs, "Directories to check (default: current directory)")
- flag.StringVar(&ignoreDirs, "ignore", defaultIgnoreDirs, "Directories to ignore (default: A/, B/)")
- flag.Parse()
-
- conf := config.NewConfig(targetDirs, ignoreDirs)
-
- err := checker.CheckDirectory(conf)
- if err != nil {
- fmt.Println("Error:", err)
- }
-}
diff --git a/tools/formitychecker/go.mod b/tools/formitychecker/go.mod
deleted file mode 100644
index 698b77647..000000000
--- a/tools/formitychecker/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module github.com/openimsdk/open-im-server/tools/formitychecker
-
-go 1.19