From 84ef7d0e555f54efbd48aaf9923220c5e5656452 Mon Sep 17 00:00:00 2001 From: LinkinStars Date: Fri, 17 Nov 2023 15:45:15 +0800 Subject: [PATCH] ci(asf): change the check-asf-header script to docker command via hawkeye-native --- Makefile | 4 + go.mod | 1 - go.sum | 1 - internal/service/mock/siteinfo_repo_mock.go | 216 ++++++++++++++++++++ script/check-asf-header.sh | 121 +---------- 5 files changed, 222 insertions(+), 121 deletions(-) diff --git a/Makefile b/Makefile index 921076c82..9371418a0 100644 --- a/Makefile +++ b/Makefile @@ -43,4 +43,8 @@ install-ui-packages: ui: @cd ui && pnpm pre-install && pnpm build && cd - +lint: generate + @bash ./script/check-asf-header.sh + @gofmt -w -l . + all: clean build diff --git a/go.mod b/go.mod index aeb708bbe..1a3b49f67 100644 --- a/go.mod +++ b/go.mod @@ -86,7 +86,6 @@ require ( github.com/golang/geo v0.0.0-20190812012225-f41920e961ce // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/subcommands v1.0.1 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.16 // indirect diff --git a/go.sum b/go.sum index 76d7399de..3b97bb544 100644 --- a/go.sum +++ b/go.sum @@ -316,7 +316,6 @@ github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbu github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/internal/service/mock/siteinfo_repo_mock.go b/internal/service/mock/siteinfo_repo_mock.go index 39e2c4241..abc1fe072 100644 --- a/internal/service/mock/siteinfo_repo_mock.go +++ b/internal/service/mock/siteinfo_repo_mock.go @@ -28,6 +28,7 @@ import ( reflect "reflect" entity "github.com/apache/incubator-answer/internal/entity" + schema "github.com/apache/incubator-answer/internal/schema" gomock "github.com/golang/mock/gomock" ) @@ -83,3 +84,218 @@ func (mr *MockSiteInfoRepoMockRecorder) SaveByType(ctx, siteType, data interface mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveByType", reflect.TypeOf((*MockSiteInfoRepo)(nil).SaveByType), ctx, siteType, data) } + +// MockSiteInfoCommonService is a mock of SiteInfoCommonService interface. +type MockSiteInfoCommonService struct { + ctrl *gomock.Controller + recorder *MockSiteInfoCommonServiceMockRecorder +} + +// MockSiteInfoCommonServiceMockRecorder is the mock recorder for MockSiteInfoCommonService. +type MockSiteInfoCommonServiceMockRecorder struct { + mock *MockSiteInfoCommonService +} + +// NewMockSiteInfoCommonService creates a new mock instance. +func NewMockSiteInfoCommonService(ctrl *gomock.Controller) *MockSiteInfoCommonService { + mock := &MockSiteInfoCommonService{ctrl: ctrl} + mock.recorder = &MockSiteInfoCommonServiceMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockSiteInfoCommonService) EXPECT() *MockSiteInfoCommonServiceMockRecorder { + return m.recorder +} + +// FormatAvatar mocks base method. +func (m *MockSiteInfoCommonService) FormatAvatar(ctx context.Context, originalAvatarData, email string, userStatus int) *schema.AvatarInfo { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FormatAvatar", ctx, originalAvatarData, email, userStatus) + ret0, _ := ret[0].(*schema.AvatarInfo) + return ret0 +} + +// FormatAvatar indicates an expected call of FormatAvatar. +func (mr *MockSiteInfoCommonServiceMockRecorder) FormatAvatar(ctx, originalAvatarData, email, userStatus interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FormatAvatar", reflect.TypeOf((*MockSiteInfoCommonService)(nil).FormatAvatar), ctx, originalAvatarData, email, userStatus) +} + +// FormatListAvatar mocks base method. +func (m *MockSiteInfoCommonService) FormatListAvatar(ctx context.Context, userList []*entity.User) map[string]*schema.AvatarInfo { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FormatListAvatar", ctx, userList) + ret0, _ := ret[0].(map[string]*schema.AvatarInfo) + return ret0 +} + +// FormatListAvatar indicates an expected call of FormatListAvatar. +func (mr *MockSiteInfoCommonServiceMockRecorder) FormatListAvatar(ctx, userList interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FormatListAvatar", reflect.TypeOf((*MockSiteInfoCommonService)(nil).FormatListAvatar), ctx, userList) +} + +// GetSiteBranding mocks base method. +func (m *MockSiteInfoCommonService) GetSiteBranding(ctx context.Context) (*schema.SiteBrandingResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteBranding", ctx) + ret0, _ := ret[0].(*schema.SiteBrandingResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteBranding indicates an expected call of GetSiteBranding. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteBranding(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteBranding", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteBranding), ctx) +} + +// GetSiteCustomCssHTML mocks base method. +func (m *MockSiteInfoCommonService) GetSiteCustomCssHTML(ctx context.Context) (*schema.SiteCustomCssHTMLResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteCustomCssHTML", ctx) + ret0, _ := ret[0].(*schema.SiteCustomCssHTMLResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteCustomCssHTML indicates an expected call of GetSiteCustomCssHTML. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteCustomCssHTML(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteCustomCssHTML", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteCustomCssHTML), ctx) +} + +// GetSiteGeneral mocks base method. +func (m *MockSiteInfoCommonService) GetSiteGeneral(ctx context.Context) (*schema.SiteGeneralResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteGeneral", ctx) + ret0, _ := ret[0].(*schema.SiteGeneralResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteGeneral indicates an expected call of GetSiteGeneral. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteGeneral(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteGeneral", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteGeneral), ctx) +} + +// GetSiteInfoByType mocks base method. +func (m *MockSiteInfoCommonService) GetSiteInfoByType(ctx context.Context, siteType string, resp interface{}) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteInfoByType", ctx, siteType, resp) + ret0, _ := ret[0].(error) + return ret0 +} + +// GetSiteInfoByType indicates an expected call of GetSiteInfoByType. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInfoByType(ctx, siteType, resp interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteInfoByType", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteInfoByType), ctx, siteType, resp) +} + +// GetSiteInterface mocks base method. +func (m *MockSiteInfoCommonService) GetSiteInterface(ctx context.Context) (*schema.SiteInterfaceResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteInterface", ctx) + ret0, _ := ret[0].(*schema.SiteInterfaceResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteInterface indicates an expected call of GetSiteInterface. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInterface(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteInterface", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteInterface), ctx) +} + +// GetSiteLegal mocks base method. +func (m *MockSiteInfoCommonService) GetSiteLegal(ctx context.Context) (*schema.SiteLegalResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteLegal", ctx) + ret0, _ := ret[0].(*schema.SiteLegalResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteLegal indicates an expected call of GetSiteLegal. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLegal(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteLegal", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteLegal), ctx) +} + +// GetSiteLogin mocks base method. +func (m *MockSiteInfoCommonService) GetSiteLogin(ctx context.Context) (*schema.SiteLoginResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteLogin", ctx) + ret0, _ := ret[0].(*schema.SiteLoginResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteLogin indicates an expected call of GetSiteLogin. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLogin(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteLogin", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteLogin), ctx) +} + +// GetSiteSeo mocks base method. +func (m *MockSiteInfoCommonService) GetSiteSeo(ctx context.Context) (*schema.SiteSeoResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteSeo", ctx) + ret0, _ := ret[0].(*schema.SiteSeoResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteSeo indicates an expected call of GetSiteSeo. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteSeo(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteSeo", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteSeo), ctx) +} + +// GetSiteTheme mocks base method. +func (m *MockSiteInfoCommonService) GetSiteTheme(ctx context.Context) (*schema.SiteThemeResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteTheme", ctx) + ret0, _ := ret[0].(*schema.SiteThemeResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteTheme indicates an expected call of GetSiteTheme. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteTheme(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteTheme", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteTheme), ctx) +} + +// GetSiteUsers mocks base method. +func (m *MockSiteInfoCommonService) GetSiteUsers(ctx context.Context) (*schema.SiteUsersResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteUsers", ctx) + ret0, _ := ret[0].(*schema.SiteUsersResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteUsers indicates an expected call of GetSiteUsers. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteUsers(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteUsers", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteUsers), ctx) +} + +// GetSiteWrite mocks base method. +func (m *MockSiteInfoCommonService) GetSiteWrite(ctx context.Context) (*schema.SiteWriteResp, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSiteWrite", ctx) + ret0, _ := ret[0].(*schema.SiteWriteResp) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSiteWrite indicates an expected call of GetSiteWrite. +func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteWrite(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteWrite", reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteWrite), ctx) +} diff --git a/script/check-asf-header.sh b/script/check-asf-header.sh index 939a26da7..dab3b63af 100755 --- a/script/check-asf-header.sh +++ b/script/check-asf-header.sh @@ -16,122 +16,5 @@ # specific language governing permissions and limitations # under the License. -# List of patterns to ignore using regular expressions -IGNORED_PATTERNS=("Makefile" "NOTICE" "README.md" "README_CN.md" "SECURITY.md" "go.mod" "go.sum" "DISCLAIMER" "LICENSE" "*.json" "*.svg" "*.png" "*.jpg" "*.ico" "plugin_list") - -# List of directories to ignore -IGNORED_DIRECTORIES=("answer-data" "release" "node_modules") - -# Recursive function to traverse directories and add ASF header -traverse_directory() { - local dir="$1" - - # Check if the current directory needs to be ignored - if is_directory_ignored "$dir"; then - return - fi - - # Iterate over all files and directories in the current directory - for file in "$dir"/*; do - if [ -d "$file" ]; then - # If it's a directory, recursively process the subdirectory - traverse_directory "$file" - elif [ -f "$file" ]; then - # If it's a file, check if ASF header needs to be added - process_file "$file" - fi - done -} - -process_file() { - local file="$1" - local filename=$(basename "$file") - - # Check if the file needs to be ignored - if is_file_ignored "$filename"; then - return - fi - - # Check if the file already contains ASF header - if has_asf_header "$file"; then - echo "File $file already contains ASF header. Skipping." - return - fi - - # Prompt the user to add ASF header - echo "ASF header needs to be added to file: $file" - read -p "Do you want to add ASF header? (y/n): " choice - - if [[ $choice == "y" || $choice == "Y" ]]; then - # Write ASF header to a temporary file - local temp_file=$(mktemp) - cat << EOF > "$temp_file" -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -EOF - - # Append the original file content to the temporary file - cat "$file" >> "$temp_file" - - # Overwrite the original file with the content of the temporary file - mv "$temp_file" "$file" - - echo "ASF header added to file: $file" - else - echo "Skipping file: $file" - fi -} - -# Check if the file needs to be ignored -is_file_ignored() { - local filename="$1" - for pattern in "${IGNORED_PATTERNS[@]}"; do - if [[ "$filename" == $pattern ]]; then - return 0 - fi - done - return 1 -} - -# Check if the directory needs to be ignored -is_directory_ignored() { - local directory="$1" - local dirname=$(basename "$directory") - for ignored_dir in "${IGNORED_DIRECTORIES[@]}"; do - if [ "$dirname" = "$ignored_dir" ]; then - return 0 - fi - done - return 1 -} - -# Check if the file already contains ASF header -has_asf_header() { - local file="$1" - local header=$(head -n 15 "$file") # Assuming ASF header is within the first 15 lines - if [[ $header == *"Licensed to the Apache Software Foundation (ASF)"* ]]; then - return 0 - else - return 1 - fi -} - -# Execute the script, starting from the current directory -traverse_directory "../" +docker run -it --rm -v $(pwd):/github/workspace ghcr.io/korandoru/hawkeye-native format +gofmt -w -l . \ No newline at end of file