2020-04-19 14:17:02 +03:00
i f e q ( $( USE_REPO_TEST_DIR ) , 1 )
# This rule replaces the whole Makefile when we're trying to use /tmp repository temporary files
location = $( CURDIR) /$( word $( words $( MAKEFILE_LIST) ) ,$( MAKEFILE_LIST) )
self := $( location)
% :
@tmpdir= ` mktemp --tmpdir -d` ; \
echo Using temporary directory $$ tmpdir for test repositories ; \
USE_REPO_TEST_DIR = $( MAKE) -f $( self) --no-print-directory REPO_TEST_DIR = $$ tmpdir/ $@ ; \
STATUS = $$ ? ; rm -r " $$ tmpdir " ; exit $$ STATUS
e l s e
# This is the "normal" part of the Makefile
2016-11-04 14:58:55 +02:00
DIST := dist
2020-02-19 05:10:25 +02:00
DIST_DIRS := $( DIST) /binaries $( DIST) /release
2016-11-10 18:24:48 +02:00
IMPORT := code.gitea.io/gitea
2017-06-15 16:51:23 +03:00
2017-08-16 03:46:41 +03:00
GO ?= go
2019-04-14 18:06:43 +03:00
SHASUM ?= shasum -a 256
2023-04-17 17:46:25 +03:00
HAS_GO := $( shell hash $( GO) > /dev/null 2>& 1 && echo yes)
2020-03-09 02:11:39 +02:00
COMMA := ,
2020-02-02 04:43:35 +02:00
2024-09-10 05:23:07 +03:00
XGO_VERSION := go-1.23.x
2022-03-16 04:50:26 +02:00
2024-06-04 08:00:44 +03:00
AIR_PACKAGE ?= github.com/air-verse/air@v1
2025-01-25 22:14:09 +02:00
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.1.2
2024-09-10 05:23:07 +03:00
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0
2025-01-25 22:14:09 +02:00
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.63.4
2024-12-19 20:17:55 +02:00
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.12
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.6.0
2024-06-24 16:26:42 +03:00
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.31.0
2022-03-16 04:50:26 +02:00
XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
2024-04-12 15:52:39 +03:00
GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1
GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1
ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1
2025-01-25 22:14:09 +02:00
GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.1
2020-03-20 16:29:31 +02:00
2020-07-21 23:41:03 +03:00
DOCKER_IMAGE ?= gitea/gitea
DOCKER_TAG ?= latest
DOCKER_REF := $( DOCKER_IMAGE) :$( DOCKER_TAG)
2023-04-17 17:46:25 +03:00
i f e q ( $( HAS_GO ) , y e s )
2020-06-06 02:57:25 +03:00
CGO_EXTRA_CFLAGS := -DSQLITE_MAX_VARIABLE_NUMBER= 32766
CGO_CFLAGS ?= $( shell $( GO) env CGO_CFLAGS) $( CGO_EXTRA_CFLAGS)
2020-02-02 04:43:35 +02:00
e n d i f
2017-06-15 16:51:23 +03:00
2023-10-06 23:39:21 +03:00
i f e q ( $( GOOS ) , w i n d o w s )
IS_WINDOWS := yes
e l s e i f e q ( $( patsubst Windows %,Windows ,$ ( OS ) ) , W i n d o w s )
ifeq ( $( GOOS) ,)
IS_WINDOWS := yes
endif
e n d i f
i f e q ( $( IS_WINDOWS ) , y e s )
2021-05-29 10:37:21 +03:00
GOFLAGS := -v -buildmode= exe
EXECUTABLE ?= gitea.exe
2017-06-15 16:51:23 +03:00
e l s e
2020-08-25 00:46:41 +03:00
GOFLAGS := -v
2019-04-29 21:08:21 +03:00
EXECUTABLE ?= gitea
2020-07-27 23:13:15 +03:00
e n d i f
i f e q ( $( shell sed --version 2>/dev /null | grep -q GNU && echo gnu ) , g n u )
SED_INPLACE := sed -i
e l s e
SED_INPLACE := sed -i ''
2017-06-15 16:51:23 +03:00
e n d i f
2017-04-05 11:10:32 +03:00
EXTRA_GOFLAGS ?=
2023-06-19 04:53:16 +03:00
MAKE_VERSION := $( shell " $( MAKE) " -v | cat | head -n 1)
2020-02-01 22:15:32 +02:00
MAKE_EVIDENCE_DIR := .make_evidence
2019-04-02 19:10:11 +03:00
2021-06-02 18:34:11 +03:00
i f e q ( $( RACE_ENABLED ) , t r u e )
GOFLAGS += -race
GOTESTFLAGS += -race
2020-01-29 17:43:07 +02:00
e n d i f
2020-02-22 11:15:11 +02:00
STORED_VERSION_FILE := VERSION
2023-03-23 17:18:24 +02:00
HUGO_VERSION ?= 0.111.3
2020-02-22 11:15:11 +02:00
2023-06-20 08:37:32 +03:00
GITHUB_REF_TYPE ?= branch
GITHUB_REF_NAME ?= $( shell git rev-parse --abbrev-ref HEAD)
2023-06-18 06:26:49 +03:00
i f n e q ( $( GITHUB_REF_TYPE ) , b r a n c h )
VERSION ?= $( subst v,,$( GITHUB_REF_NAME) )
2023-06-23 10:52:15 +03:00
GITEA_VERSION ?= $( VERSION)
2018-07-12 06:32:01 +03:00
e l s e
2023-06-18 06:26:49 +03:00
ifneq ( $( GITHUB_REF_NAME) ,)
2024-05-23 02:34:52 +03:00
VERSION ?= $( subst release/v,,$( GITHUB_REF_NAME) ) -nightly
2018-07-12 06:32:01 +03:00
else
2021-05-04 19:16:23 +03:00
VERSION ?= main
2018-07-12 06:32:01 +03:00
endif
2020-02-22 11:15:11 +02:00
STORED_VERSION = $( shell cat $( STORED_VERSION_FILE) 2>/dev/null)
ifneq ( $( STORED_VERSION) ,)
GITEA_VERSION ?= $( STORED_VERSION)
else
GITEA_VERSION ?= $( shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//' )
endif
2018-07-12 06:32:01 +03:00
e n d i f
2023-04-24 18:43:19 +03:00
# if version = "main" then update version to "nightly"
i f e q ( $( VERSION ) , m a i n )
VERSION := main-nightly
e n d i f
2019-04-29 21:08:21 +03:00
LDFLAGS := $( LDFLAGS) -X " main.MakeVersion= $( MAKE_VERSION) " -X " main.Version= $( GITEA_VERSION) " -X " main.Tags= $( TAGS) "
2015-11-03 19:16:43 +02:00
2021-02-22 09:01:57 +02:00
LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64
2022-11-02 10:54:36 +02:00
GO_TEST_PACKAGES ?= $( filter-out $( shell $( GO) list code.gitea.io/gitea/models/migrations/...) code.gitea.io/gitea/tests/integration/migration-test code.gitea.io/gitea/tests code.gitea.io/gitea/tests/integration code.gitea.io/gitea/tests/e2e,$( shell $( GO) list ./... | grep -v /vendor/) )
2024-03-07 18:43:32 +02:00
MIGRATE_TEST_PACKAGES ?= $( shell $( GO) list code.gitea.io/gitea/models/migrations/...)
2019-12-05 05:41:38 +02:00
2021-04-02 03:11:04 +03:00
FOMANTIC_WORK_DIR := web_src/fomantic
2020-06-29 03:18:12 +03:00
2023-03-15 04:20:19 +02:00
WEBPACK_SOURCES := $( shell find web_src/js web_src/css -type f)
Add tailwindcss (#29357)
This will get tailwindcss working on a basic level. It provides only the
utility classes, e.g. no tailwind base which we don't need because we
have our own CSS reset. Without the base, we also do not have their CSS
variables so a small amount of features do not work and I removed the
generated classes for them.
***Note for future developers: This currently uses a `tw-` prefix, so we
use it like `tw-p-3`.***
<details>
<summary>Currently added CSS, all false-positives</summary>
```
.\!visible{
visibility: visible !important
}
.visible{
visibility: visible
}
.invisible{
visibility: hidden
}
.collapse{
visibility: collapse
}
.static{
position: static
}
.\!fixed{
position: fixed !important
}
.absolute{
position: absolute
}
.relative{
position: relative
}
.sticky{
position: sticky
}
.left-10{
left: 2.5rem
}
.isolate{
isolation: isolate
}
.float-right{
float: right
}
.float-left{
float: left
}
.mr-2{
margin-right: 0.5rem
}
.mr-3{
margin-right: 0.75rem
}
.\!block{
display: block !important
}
.block{
display: block
}
.inline-block{
display: inline-block
}
.inline{
display: inline
}
.flex{
display: flex
}
.inline-flex{
display: inline-flex
}
.\!table{
display: table !important
}
.inline-table{
display: inline-table
}
.table-caption{
display: table-caption
}
.table-cell{
display: table-cell
}
.table-column{
display: table-column
}
.table-column-group{
display: table-column-group
}
.table-footer-group{
display: table-footer-group
}
.table-header-group{
display: table-header-group
}
.table-row-group{
display: table-row-group
}
.table-row{
display: table-row
}
.flow-root{
display: flow-root
}
.inline-grid{
display: inline-grid
}
.contents{
display: contents
}
.list-item{
display: list-item
}
.\!hidden{
display: none !important
}
.hidden{
display: none
}
.flex-shrink{
flex-shrink: 1
}
.shrink{
flex-shrink: 1
}
.flex-grow{
flex-grow: 1
}
.grow{
flex-grow: 1
}
.border-collapse{
border-collapse: collapse
}
.select-all{
user-select: all
}
.resize{
resize: both
}
.flex-wrap{
flex-wrap: wrap
}
.overflow-visible{
overflow: visible
}
.rounded{
border-radius: 0.25rem
}
.border{
border-width: 1px
}
.text-justify{
text-align: justify
}
.uppercase{
text-transform: uppercase
}
.lowercase{
text-transform: lowercase
}
.capitalize{
text-transform: capitalize
}
.italic{
font-style: italic
}
.text-red{
color: var(--color-red)
}
.text-shadow{
color: var(--color-shadow)
}
.underline{
text-decoration-line: underline
}
.overline{
text-decoration-line: overline
}
.line-through{
text-decoration-line: line-through
}
.outline{
outline-style: solid
}
.ease-in{
transition-timing-function: cubic-bezier(0.4, 0, 1, 1)
}
.ease-in-out{
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1)
}
.ease-out{
transition-timing-function: cubic-bezier(0, 0, 0.2, 1)
}
```
</details>
---------
Co-authored-by: Giteabot <teabot@gitea.io>
2024-02-25 18:46:46 +02:00
WEBPACK_CONFIGS := webpack.config.js tailwind.config.js
2023-07-18 19:06:43 +03:00
WEBPACK_DEST := public/assets/js/index.js public/assets/css/index.css
2024-03-29 05:00:07 +02:00
WEBPACK_DEST_ENTRIES := public/assets/js public/assets/css public/assets/fonts
2020-03-03 21:51:11 +02:00
2019-12-05 05:41:38 +02:00
BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go
2020-01-27 03:05:38 +02:00
BINDATA_HASH := $( addsuffix .hash,$( BINDATA_DEST) )
2019-12-05 05:41:38 +02:00
2022-09-05 09:04:18 +03:00
GENERATED_GO_DEST := modules/charset/invisible_gen.go modules/charset/ambiguous_gen.go
2023-07-18 19:06:43 +03:00
SVG_DEST_DIR := public/assets/img/svg
2020-07-12 12:10:56 +03:00
2020-07-27 21:05:42 +03:00
AIR_TMP_DIR := .air
2022-09-04 01:20:46 +03:00
GO_LICENSE_TMP_DIR := .go-licenses
GO_LICENSE_FILE := assets/go-licenses.json
2020-03-09 02:11:39 +02:00
TAGS ?=
TAGS_SPLIT := $( subst $( COMMA) , ,$( TAGS) )
TAGS_EVIDENCE := $( MAKE_EVIDENCE_DIR) /tags
2024-08-07 18:29:08 +03:00
TEST_TAGS ?= $( TAGS_SPLIT) sqlite sqlite_unlock_notify
2020-12-17 16:00:47 +02:00
2022-09-04 01:20:46 +03:00
TAR_EXCLUDES := .git data indexers queues log node_modules $( EXECUTABLE) $( FOMANTIC_WORK_DIR) /node_modules $( DIST) $( MAKE_EVIDENCE_DIR) $( AIR_TMP_DIR) $( GO_LICENSE_TMP_DIR)
2021-04-09 08:08:14 +03:00
Clean some legacy files and move some build files (#23699)
* Clean the "tools" directory. The "tools" directory contains only two
files, move them.
* The "external_renderer.go" works like "cat" command to echo Stdin to
Stdout , to help testing.
* The `// gobuild: external_renderer` is incorrect, there should be no
space: `//gobuild: external_renderer`
* The `fmt.Print(os.Args[1])` is not a well-defined behavior, and it's
never used.
* The "watch.sh" is for "make watch", it's somewhat related to "build"
* After this PR, there is no "tools" directory, the project root
directory looks slightly simpler than before.
* Remove the legacy "contrib/autoboot.sh", there is no
"gogs_supervisord.sh"
* Remove the legacy "contrib/mysql.sql", it's never mentioned anywhere.
* Remove the legacy "contrib/pr/checkout.go", it has been broken for
long time, and it introduces unnecessary dependencies of the main code
base.
2023-03-25 22:22:51 +02:00
GO_DIRS := build cmd models modules routers services tests
2023-03-15 04:20:19 +02:00
WEB_DIRS := web_src/js web_src/css
2020-12-17 16:00:47 +02:00
2024-07-07 18:32:30 +03:00
ESLINT_FILES := web_src/js tools *.js *.ts tests/e2e
2024-03-18 00:12:36 +02:00
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
2024-07-10 04:46:08 +03:00
SPELLCHECK_FILES := $( GO_DIRS) $( WEB_DIRS) templates options/locale/locale_en-US.ini .github $( filter-out CHANGELOG.md, $( wildcard *.go *.js *.md *.yml *.yaml *.toml) )
2024-03-06 03:48:14 +02:00
EDITORCONFIG_FILES := templates .github/workflows options/locale/locale_en-US.ini
2024-02-09 05:59:39 +02:00
2020-03-09 02:11:39 +02:00
GO_SOURCES := $( wildcard *.go)
2023-05-07 07:41:33 +03:00
GO_SOURCES += $( shell find $( GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go)
2022-09-05 09:04:18 +03:00
GO_SOURCES += $( GENERATED_GO_DEST)
GO_SOURCES_NO_BINDATA := $( GO_SOURCES)
2020-03-09 02:11:39 +02:00
i f e q ( $( filter $ ( TAGS_SPLIT ) ,bindata ) , b i n d a t a )
GO_SOURCES += $( BINDATA_DEST)
2022-09-05 09:04:18 +03:00
GENERATED_GO_DEST += $( BINDATA_DEST)
2020-03-09 02:11:39 +02:00
e n d i f
2022-09-02 22:18:23 +03:00
# Force installation of playwright dependencies by setting this flag
i f d e f D E P S _ P L A Y W R I G H T
PLAYWRIGHT_FLAGS += --with-deps
e n d i f
2018-07-28 03:19:01 +03:00
SWAGGER_SPEC := templates/swagger/v1_json.tmpl
2024-02-18 11:52:02 +02:00
SWAGGER_SPEC_S_TMPL := s| "basePath" : *"/api/v1" | "basePath" : "{{AppSubUrl \| JSEscape}}/api/v1" | g
SWAGGER_SPEC_S_JSON := s| "basePath" : *"{{AppSubUrl \| JSEscape}}/api/v1" | "basePath" : "/api/v1" | g
2020-10-14 07:06:00 +03:00
SWAGGER_EXCLUDE := code.gitea.io/sdk
2019-04-01 18:27:40 +03:00
SWAGGER_NEWLINE_COMMAND := -e '$$a\'
2018-07-28 03:19:01 +03:00
2017-09-13 09:03:20 +03:00
TEST_MYSQL_HOST ?= mysql:3306
TEST_MYSQL_DBNAME ?= testgitea
TEST_MYSQL_USERNAME ?= root
TEST_MYSQL_PASSWORD ?=
TEST_PGSQL_HOST ?= pgsql:5432
TEST_PGSQL_DBNAME ?= testgitea
TEST_PGSQL_USERNAME ?= postgres
TEST_PGSQL_PASSWORD ?= postgres
2020-01-20 17:45:14 +02:00
TEST_PGSQL_SCHEMA ?= gtestschema
2024-10-03 04:00:56 +03:00
TEST_MINIO_ENDPOINT ?= minio:9000
2018-12-12 03:01:41 +02:00
TEST_MSSQL_HOST ?= mssql:1433
TEST_MSSQL_DBNAME ?= gitea
TEST_MSSQL_USERNAME ?= sa
TEST_MSSQL_PASSWORD ?= MwantsaSecurePassword1
2017-09-13 09:03:20 +03:00
2016-11-04 14:58:55 +02:00
.PHONY : all
2016-11-18 10:57:30 +02:00
all : build
2016-08-31 00:06:05 +03:00
2020-01-05 19:40:02 +02:00
.PHONY : help
2025-01-27 03:44:09 +02:00
help : Makefile ## print Makefile help information.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m[TARGETS] default target: build\033[0m\n\n\033[35mTargets:\033[0m\n"} /^[0-9A-Za-z._-]+:.*?##/ { printf " \033[36m%-45s\033[0m %s\n", $$1, $$2 }' Makefile #$(MAKEFILE_LIST)
@printf " \033[36m%-46s\033[0m %s\n" "test-e2e[#TestSpecificName]" "test end to end using playwright"
@printf " \033[36m%-46s\033[0m %s\n" "test[#TestSpecificName]" "run unit test"
@printf " \033[36m%-46s\033[0m %s\n" "test-sqlite[#TestSpecificName]" "run integration test for sqlite"
2020-01-05 19:40:02 +02:00
2019-12-05 05:41:38 +02:00
.PHONY : go -check
go-check :
2022-07-14 11:58:14 +03:00
$( eval MIN_GO_VERSION_STR := $( shell grep -Eo '^go\s+[0-9]+\.[0-9]+' go.mod | cut -d' ' -f2) )
$( eval MIN_GO_VERSION := $( shell printf "%03d%03d" $( shell echo '$(MIN_GO_VERSION_STR)' | tr '.' ' ' ) ) )
$( eval GO_VERSION := $( shell printf "%03d%03d" $( shell $( GO) version | grep -Eo '[0-9]+\.[0-9]+' | tr '.' ' ' ) ; ) )
2020-03-20 16:29:31 +02:00
@if [ " $( GO_VERSION) " -lt " $( MIN_GO_VERSION) " ] ; then \
2022-03-26 12:39:31 +02:00
echo " Gitea requires Go $( MIN_GO_VERSION_STR) or greater to build. You can get it at https://go.dev/dl/ " ; \
2019-12-05 05:41:38 +02:00
exit 1; \
fi
2020-01-14 02:06:54 +02:00
.PHONY : git -check
git-check :
@if git lfs >/dev/null 2>& 1 ; then : ; else \
echo "Gitea requires git with lfs support to run tests." ; \
exit 1; \
fi
2019-12-05 05:41:38 +02:00
.PHONY : node -check
node-check :
2022-03-26 12:39:31 +02:00
$( eval MIN_NODE_VERSION_STR := $( shell grep -Eo '"node":.*[0-9.]+"' package.json | sed -n 's/.*[^0-9.]\([0-9.]*\)"/\1/p' ) )
$( eval MIN_NODE_VERSION := $( shell printf "%03d%03d%03d" $( shell echo '$(MIN_NODE_VERSION_STR)' | tr '.' ' ' ) ) )
2020-03-26 00:21:33 +02:00
$( eval NODE_VERSION := $( shell printf "%03d%03d%03d" $( shell node -v | cut -c2- | tr '.' ' ' ) ; ) )
2019-12-05 05:41:38 +02:00
$( eval NPM_MISSING := $( shell hash npm > /dev/null 2>& 1 || echo 1) )
2020-03-20 16:29:31 +02:00
@if [ " $( NODE_VERSION) " -lt " $( MIN_NODE_VERSION) " -o " $( NPM_MISSING) " = "1" ] ; then \
2022-03-26 12:39:31 +02:00
echo " Gitea requires Node.js $( MIN_NODE_VERSION_STR) or greater and npm to build. You can get it at https://nodejs.org/en/download/ " ; \
2019-12-05 05:41:38 +02:00
exit 1; \
fi
.PHONY : clean -all
2025-01-27 03:44:09 +02:00
clean-all : clean ## delete backend, frontend and integration files
2021-05-08 12:57:48 +03:00
rm -rf $( WEBPACK_DEST_ENTRIES) node_modules
2019-12-05 05:41:38 +02:00
2016-11-04 14:58:55 +02:00
.PHONY : clean
2025-01-27 03:44:09 +02:00
clean : ## delete backend and integration files
2020-01-27 03:05:38 +02:00
rm -rf $( EXECUTABLE) $( DIST) $( BINDATA_DEST) $( BINDATA_HASH) \
2017-09-16 23:16:21 +03:00
integrations*.test \
2022-09-02 22:18:23 +03:00
e2e*.test \
2023-10-03 20:27:57 +03:00
tests/integration/gitea-integration-* \
tests/integration/indexers-* \
tests/mysql.ini tests/pgsql.ini tests/mssql.ini man/ \
tests/e2e/gitea-e2e-*/ \
tests/e2e/indexers-*/ \
tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/
2016-11-04 14:58:55 +02:00
.PHONY : fmt
2025-01-27 03:44:09 +02:00
fmt : ## format the Go code
2024-04-13 20:32:15 +03:00
@GOFUMPT_PACKAGE= $( GOFUMPT_PACKAGE) $( GO) run build/code-batch-process.go gitea-fmt -w '{file-list}'
2022-08-31 18:58:54 +03:00
$( eval TEMPLATES := $( shell find templates -type f -name '*.tmpl' ) )
2023-04-24 09:48:43 +03:00
@# strip whitespace after '{{' or '(' and before '}}' or ')' unless there is only
@# whitespace before it
@$( SED_INPLACE) \
-e 's/{{[ ]\{1,\}/{{/g' -e '/^[ ]\{1,\}}}/! s/[ ]\{1,\}}}/}}/g' \
-e 's/([ ]\{1,\}/(/g' -e '/^[ ]\{1,\})/! s/[ ]\{1,\})/)/g' \
$( TEMPLATES)
2016-11-04 14:58:55 +02:00
2022-10-16 11:11:17 +03:00
.PHONY : fmt -check
fmt-check : fmt
2023-03-19 03:47:47 +02:00
@diff= $$ ( git diff --color= always $( GO_SOURCES) templates $( WEB_DIRS) ) ; \
2022-10-16 11:11:17 +03:00
if [ -n " $$ diff " ] ; then \
echo "Please run 'make fmt' and commit the result:" ; \
echo " $$ {diff} " ; \
exit 1; \
fi
2020-02-11 21:42:03 +02:00
.PHONY : $( TAGS_EVIDENCE )
$(TAGS_EVIDENCE) :
@mkdir -p $( MAKE_EVIDENCE_DIR)
@echo " $( TAGS) " > $( TAGS_EVIDENCE)
i f n e q "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)"
TAGS_PREREQ := $( TAGS_EVIDENCE)
e n d i f
2017-06-15 16:51:23 +03:00
.PHONY : generate -swagger
2025-01-27 03:44:09 +02:00
generate-swagger : $( SWAGGER_SPEC ) ## generate the swagger spec from code comments
2022-09-05 09:04:18 +03:00
$(SWAGGER_SPEC) : $( GO_SOURCES_NO_BINDATA )
2022-03-16 04:50:26 +02:00
$( GO) run $( SWAGGER_PACKAGE) generate spec -x " $( SWAGGER_EXCLUDE) " -o './$(SWAGGER_SPEC)'
2018-07-28 03:19:01 +03:00
$( SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
2019-04-01 18:27:40 +03:00
$( SED_INPLACE) $( SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)'
2017-07-12 05:28:57 +03:00
2018-04-20 12:13:50 +03:00
.PHONY : swagger -check
swagger-check : generate -swagger
2023-03-19 03:47:47 +02:00
@diff= $$ ( git diff --color= always '$(SWAGGER_SPEC)' ) ; \
2018-04-20 12:13:50 +03:00
if [ -n " $$ diff " ] ; then \
echo "Please run 'make generate-swagger' and commit the result:" ; \
echo " $$ {diff} " ; \
exit 1; \
2020-11-29 23:39:36 +02:00
fi
2018-04-20 12:13:50 +03:00
2018-06-02 14:29:12 +03:00
.PHONY : swagger -validate
2025-01-27 03:44:09 +02:00
swagger-validate : ## check if the swagger spec is valid
2018-07-28 03:19:01 +03:00
$( SED_INPLACE) '$(SWAGGER_SPEC_S_JSON)' './$(SWAGGER_SPEC)'
2022-03-16 04:50:26 +02:00
$( GO) run $( SWAGGER_PACKAGE) validate './$(SWAGGER_SPEC)'
2018-07-28 03:19:01 +03:00
$( SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
2018-06-02 14:29:12 +03:00
2020-08-17 00:43:09 +03:00
.PHONY : checks
2025-01-27 03:44:09 +02:00
checks : checks -frontend checks -backend ## run various consistency checks
2020-03-29 14:56:58 +03:00
2020-08-17 00:43:09 +03:00
.PHONY : checks -frontend
2025-01-27 03:44:09 +02:00
checks-frontend : lockfile -check svg -check ## check frontend files
2020-08-17 00:43:09 +03:00
.PHONY : checks -backend
2025-01-27 03:44:09 +02:00
checks-backend : tidy -check swagger -check fmt -check swagger -validate security -check ## check backend files
2020-08-17 00:43:09 +03:00
.PHONY : lint
2025-01-27 03:44:09 +02:00
lint : lint -frontend lint -backend lint -spell ## lint everything
2020-03-29 14:56:58 +03:00
2023-04-22 21:53:00 +03:00
.PHONY : lint -fix
2025-01-27 03:44:09 +02:00
lint-fix : lint -frontend -fix lint -backend -fix lint -spell -fix ## lint everything and fix issues
2023-04-22 21:53:00 +03:00
2020-03-29 14:56:58 +03:00
.PHONY : lint -frontend
2025-01-27 03:44:09 +02:00
lint-frontend : lint -js lint -css ## lint frontend files
2023-04-22 21:53:00 +03:00
.PHONY : lint -frontend -fix
2025-01-27 03:44:09 +02:00
lint-frontend-fix : lint -js -fix lint -css -fix ## lint frontend files and fix issues
2023-04-22 21:53:00 +03:00
.PHONY : lint -backend
2025-01-27 03:44:09 +02:00
lint-backend : lint -go lint -go -vet lint -go -gopls lint -editorconfig ## lint backend files
2023-04-22 21:53:00 +03:00
.PHONY : lint -backend -fix
2025-01-27 03:44:09 +02:00
lint-backend-fix : lint -go -fix lint -go -vet lint -editorconfig ## lint backend files and fix issues
2023-04-22 21:53:00 +03:00
.PHONY : lint -js
2025-01-27 03:44:09 +02:00
lint-js : node_modules ## lint js files
2024-06-28 19:15:51 +03:00
npx eslint --color --max-warnings= 0 --ext js,ts,vue $( ESLINT_FILES)
2024-12-15 23:02:32 +02:00
npx vue-tsc
2023-04-22 21:53:00 +03:00
.PHONY : lint -js -fix
2025-01-27 03:44:09 +02:00
lint-js-fix : node_modules ## lint js files and fix issues
2024-06-28 19:15:51 +03:00
npx eslint --color --max-warnings= 0 --ext js,ts,vue $( ESLINT_FILES) --fix
2024-12-15 23:02:32 +02:00
npx vue-tsc
2023-04-22 21:53:00 +03:00
.PHONY : lint -css
2025-01-27 03:44:09 +02:00
lint-css : node_modules ## lint css files
2024-03-18 00:12:36 +02:00
npx stylelint --color --max-warnings= 0 $( STYLELINT_FILES)
2023-04-22 21:53:00 +03:00
.PHONY : lint -css -fix
2025-01-27 03:44:09 +02:00
lint-css-fix : node_modules ## lint css files and fix issues
2024-03-18 00:12:36 +02:00
npx stylelint --color --max-warnings= 0 $( STYLELINT_FILES) --fix
2023-04-22 21:53:00 +03:00
.PHONY : lint -swagger
2025-01-27 03:44:09 +02:00
lint-swagger : node_modules ## lint swagger files
2022-07-12 02:07:16 +03:00
npx spectral lint -q -F hint $( SWAGGER_SPEC)
2023-04-09 21:05:12 +03:00
.PHONY : lint -md
2025-01-27 03:44:09 +02:00
lint-md : node_modules ## lint markdown files
2024-07-10 04:46:08 +03:00
npx markdownlint *.md
2020-03-29 14:56:58 +03:00
2024-02-09 05:59:39 +02:00
.PHONY : lint -spell
2025-01-27 03:44:09 +02:00
lint-spell : ## lint spelling
2024-04-27 11:03:49 +03:00
@go run $( MISSPELL_PACKAGE) -dict tools/misspellings.csv -error $( SPELLCHECK_FILES)
2024-02-09 05:59:39 +02:00
.PHONY : lint -spell -fix
2025-01-27 03:44:09 +02:00
lint-spell-fix : ## lint spelling and fix issues
2024-04-27 11:03:49 +03:00
@go run $( MISSPELL_PACKAGE) -dict tools/misspellings.csv -w $( SPELLCHECK_FILES)
2024-02-09 05:59:39 +02:00
2023-04-22 21:53:00 +03:00
.PHONY : lint -go
2025-01-27 03:44:09 +02:00
lint-go : ## lint go files
2023-04-22 21:53:00 +03:00
$( GO) run $( GOLANGCI_LINT_PACKAGE) run
.PHONY : lint -go -fix
2025-01-27 03:44:09 +02:00
lint-go-fix : ## lint go files and fix issues
2023-04-22 21:53:00 +03:00
$( GO) run $( GOLANGCI_LINT_PACKAGE) run --fix
2023-05-12 04:21:28 +03:00
# workaround step for the lint-go-windows CI task because 'go run' can not
2023-04-22 21:53:00 +03:00
# have distinct GOOS/GOARCH for its build and run steps
.PHONY : lint -go -windows
lint-go-windows :
@GOOS= GOARCH = $( GO) install $( GOLANGCI_LINT_PACKAGE)
golangci-lint run
.PHONY : lint -go -vet
2025-01-27 03:44:09 +02:00
lint-go-vet : ## lint go files with vet
2023-04-22 21:53:00 +03:00
@echo "Running go vet..."
@GOOS= GOARCH = $( GO) build code.gitea.io/gitea-vet
2024-04-17 12:40:35 +03:00
@$( GO) vet -vettool= gitea-vet ./...
2023-04-22 21:53:00 +03:00
2024-06-05 04:22:38 +03:00
.PHONY : lint -go -gopls
2025-01-27 03:44:09 +02:00
lint-go-gopls : ## lint go files with gopls
2024-06-05 04:22:38 +03:00
@echo "Running gopls check..."
@GO= $( GO) GOPLS_PACKAGE = $( GOPLS_PACKAGE) tools/lint-go-gopls.sh $( GO_SOURCES_NO_BINDATA)
2023-04-22 21:53:00 +03:00
.PHONY : lint -editorconfig
lint-editorconfig :
2024-03-06 03:48:14 +02:00
@$( GO) run $( EDITORCONFIG_CHECKER_PACKAGE) $( EDITORCONFIG_FILES)
2020-08-17 00:43:09 +03:00
2023-05-25 04:33:31 +03:00
.PHONY : lint -actions
2025-01-27 03:44:09 +02:00
lint-actions : ## lint action workflow files
2023-05-25 04:33:31 +03:00
$( GO) run $( ACTIONLINT_PACKAGE)
2023-06-14 21:17:58 +03:00
.PHONY : lint -templates
2025-01-27 03:44:09 +02:00
lint-templates : .venv node_modules ## lint template files
2024-03-26 13:19:15 +02:00
@node tools/lint-templates-svg.js
2023-06-14 21:17:58 +03:00
@poetry run djlint $( shell find templates -type f -iname '*.tmpl' )
2023-09-08 05:24:06 +03:00
.PHONY : lint -yaml
2025-01-27 03:44:09 +02:00
lint-yaml : .venv ## lint yaml files
2023-09-08 05:24:06 +03:00
@poetry run yamllint .
2020-09-05 03:55:06 +03:00
.PHONY : watch
2025-01-27 03:44:09 +02:00
watch : ## watch everything and continuously rebuild
2024-03-18 00:12:36 +02:00
@bash tools/watch.sh
2020-09-05 03:55:06 +03:00
2020-04-12 06:50:59 +03:00
.PHONY : watch -frontend
2025-01-27 03:44:09 +02:00
watch-frontend : node -check node_modules ## watch frontend files and continuously rebuild
2023-05-24 23:11:04 +03:00
@rm -rf $( WEBPACK_DEST_ENTRIES)
2020-12-27 16:24:27 +02:00
NODE_ENV = development npx webpack --watch --progress
2020-04-12 06:50:59 +03:00
2020-07-27 21:05:42 +03:00
.PHONY : watch -backend
2025-01-27 03:44:09 +02:00
watch-backend : go -check ## watch backend files and continuously rebuild
2022-12-27 08:00:34 +02:00
GITEA_RUN_MODE = dev $( GO) run $( AIR_PACKAGE) -c .air.toml
2020-07-27 21:05:42 +03:00
2016-11-04 14:58:55 +02:00
.PHONY : test
2025-01-27 03:44:09 +02:00
test : test -frontend test -backend ## test everything
2021-04-08 13:41:57 +03:00
.PHONY : test -backend
2025-01-27 03:44:09 +02:00
test-backend : ## test frontend files
2021-07-17 20:09:56 +03:00
@echo " Running go test with $( GOTESTFLAGS) -tags ' $( TEST_TAGS) '... "
2022-11-02 10:54:36 +02:00
@$( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' $( GO_TEST_PACKAGES)
2017-05-24 19:13:18 +03:00
2021-04-08 13:41:57 +03:00
.PHONY : test -frontend
2025-01-27 03:44:09 +02:00
test-frontend : node_modules ## test backend files
2022-10-14 16:36:16 +03:00
npx vitest
2021-04-08 13:41:57 +03:00
2020-03-06 08:47:40 +02:00
.PHONY : test -check
2020-01-26 22:07:12 +02:00
test-check :
2020-12-03 03:54:30 +02:00
@echo "Running test-check..." ;
2020-01-26 22:07:12 +02:00
@diff= $$ ( git status -s) ; \
if [ -n " $$ diff " ] ; then \
2021-04-08 13:41:57 +03:00
echo "make test-backend has changed files in the source tree:" ; \
2020-01-26 22:07:12 +02:00
echo " $$ {diff} " ; \
echo "You should change the tests to create these files in a temporary directory." ; \
echo "Do not simply add these files to .gitignore" ; \
exit 1; \
2020-11-29 23:39:36 +02:00
fi
2020-01-26 22:07:12 +02:00
2019-10-16 16:42:42 +03:00
.PHONY : test \#%
test\#% :
2020-12-17 16:00:47 +02:00
@echo " Running go test with -tags ' $( TEST_TAGS) '... "
2022-11-02 10:54:36 +02:00
@$( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' -run $( subst .,/,$* ) $( GO_TEST_PACKAGES)
2019-10-16 16:42:42 +03:00
2017-09-07 20:22:15 +03:00
.PHONY : coverage
2017-09-13 15:57:55 +03:00
coverage :
2021-09-01 05:43:29 +03:00
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' coverage.out > coverage-bodged.out
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' integration.coverage.out > integration.coverage-bodged.out
2022-08-12 23:13:31 +03:00
$( GO) run build/gocovmerge.go integration.coverage-bodged.out coverage-bodged.out > coverage.all
2017-06-15 12:38:33 +03:00
.PHONY : unit -test -coverage
unit-test-coverage :
2021-07-17 20:09:56 +03:00
@echo " Running unit-test-coverage $( GOTESTFLAGS) -tags ' $( TEST_TAGS) '... "
2022-11-02 10:54:36 +02:00
@$( GO) test $( GOTESTFLAGS) -timeout= 20m -tags= '$(TEST_TAGS)' -cover -coverprofile coverage.out $( GO_TEST_PACKAGES) && echo "\n==>\033[32m Ok\033[m\n" || exit 1
2015-11-08 21:31:49 +02:00
2022-05-25 03:19:13 +03:00
.PHONY : tidy
2025-01-27 03:44:09 +02:00
tidy : ## run go mod tidy
2022-05-25 03:19:13 +03:00
$( eval MIN_GO_VERSION := $( shell grep -Eo '^go\s+[0-9]+\.[0-9.]+' go.mod | cut -d' ' -f2) )
$( GO) mod tidy -compat= $( MIN_GO_VERSION)
2022-10-10 21:45:02 +03:00
@$( MAKE) --no-print-directory $( GO_LICENSE_FILE)
2022-05-25 03:19:13 +03:00
2022-09-09 18:33:01 +03:00
vendor : go .mod go .sum
2022-05-25 03:19:13 +03:00
$( GO) mod vendor
2022-09-09 18:33:01 +03:00
@touch vendor
2017-05-02 16:22:21 +03:00
2022-09-02 04:58:09 +03:00
.PHONY : tidy -check
tidy-check : tidy
2023-03-19 03:47:47 +02:00
@diff= $$ ( git diff --color= always go.mod go.sum $( GO_LICENSE_FILE) ) ; \
2018-05-21 15:34:20 +03:00
if [ -n " $$ diff " ] ; then \
2022-05-25 03:19:13 +03:00
echo "Please run 'make tidy' and commit the result:" ; \
2018-05-21 15:34:20 +03:00
echo " $$ {diff} " ; \
exit 1; \
2020-11-29 23:39:36 +02:00
fi
2017-04-24 17:31:46 +03:00
2022-09-04 01:20:46 +03:00
.PHONY : go -licenses
2025-01-27 03:44:09 +02:00
go-licenses : $( GO_LICENSE_FILE ) ## regenerate go licenses
2022-09-04 01:20:46 +03:00
2022-09-09 18:33:01 +03:00
$(GO_LICENSE_FILE) : go .mod go .sum
2022-09-08 00:35:54 +03:00
-$( GO) run $( GO_LICENSES_PACKAGE) save . --force --save_path= $( GO_LICENSE_TMP_DIR) 2>/dev/null
$( GO) run build/generate-go-licenses.go $( GO_LICENSE_TMP_DIR) $( GO_LICENSE_FILE)
@rm -rf $( GO_LICENSE_TMP_DIR)
2022-09-04 01:20:46 +03:00
2020-04-19 14:17:02 +03:00
generate-ini-sqlite :
sed -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
2022-09-02 22:18:23 +03:00
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
tests/sqlite.ini.tmpl > tests/sqlite.ini
2020-04-19 14:17:02 +03:00
2017-04-25 10:24:51 +03:00
.PHONY : test -sqlite
2020-04-19 14:17:02 +03:00
test-sqlite : integrations .sqlite .test generate -ini -sqlite
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./integrations.sqlite.test
2017-04-25 10:24:51 +03:00
2019-04-04 19:22:10 +03:00
.PHONY : test -sqlite \#%
2020-04-19 14:17:02 +03:00
test-sqlite\#% : integrations .sqlite .test generate -ini -sqlite
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./integrations.sqlite.test -test.run $( subst .,/,$* )
2019-04-04 19:22:10 +03:00
2019-01-28 18:18:52 +02:00
.PHONY : test -sqlite -migration
2022-11-02 10:54:36 +02:00
test-sqlite-migration : migrations .sqlite .test migrations .individual .sqlite .test
2022-02-13 23:19:12 +02:00
2019-09-25 15:13:18 +03:00
generate-ini-mysql :
2017-09-13 09:03:20 +03:00
sed -e 's|{{TEST_MYSQL_HOST}}|${TEST_MYSQL_HOST}|g' \
2017-09-13 15:57:55 +03:00
-e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \
-e 's|{{TEST_MYSQL_USERNAME}}|${TEST_MYSQL_USERNAME}|g' \
-e 's|{{TEST_MYSQL_PASSWORD}}|${TEST_MYSQL_PASSWORD}|g' \
2020-04-19 14:17:02 +03:00
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
2022-09-02 22:18:23 +03:00
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
tests/mysql.ini.tmpl > tests/mysql.ini
2019-09-25 15:13:18 +03:00
.PHONY : test -mysql
test-mysql : integrations .mysql .test generate -ini -mysql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./integrations.mysql.test
2019-09-25 15:13:18 +03:00
.PHONY : test -mysql \#%
test-mysql\#% : integrations .mysql .test generate -ini -mysql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./integrations.mysql.test -test.run $( subst .,/,$* )
2019-09-25 15:13:18 +03:00
.PHONY : test -mysql -migration
2022-11-02 10:54:36 +02:00
test-mysql-migration : migrations .mysql .test migrations .individual .mysql .test
2019-09-25 15:13:18 +03:00
generate-ini-pgsql :
2017-09-13 15:57:55 +03:00
sed -e 's|{{TEST_PGSQL_HOST}}|${TEST_PGSQL_HOST}|g' \
-e 's|{{TEST_PGSQL_DBNAME}}|${TEST_PGSQL_DBNAME}|g' \
-e 's|{{TEST_PGSQL_USERNAME}}|${TEST_PGSQL_USERNAME}|g' \
-e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
2020-01-20 17:45:14 +02:00
-e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \
2024-10-03 04:00:56 +03:00
-e 's|{{TEST_MINIO_ENDPOINT}}|${TEST_MINIO_ENDPOINT}|g' \
2020-04-19 14:17:02 +03:00
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
2022-09-02 22:18:23 +03:00
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
tests/pgsql.ini.tmpl > tests/pgsql.ini
2016-11-24 15:40:56 +02:00
2019-09-25 15:13:18 +03:00
.PHONY : test -pgsql
test-pgsql : integrations .pgsql .test generate -ini -pgsql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./integrations.pgsql.test
2019-01-28 18:18:52 +02:00
2019-09-25 15:13:18 +03:00
.PHONY : test -pgsql \#%
test-pgsql\#% : integrations .pgsql .test generate -ini -pgsql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./integrations.pgsql.test -test.run $( subst .,/,$* )
2019-03-17 21:17:18 +02:00
2019-09-25 15:13:18 +03:00
.PHONY : test -pgsql -migration
2022-11-02 10:54:36 +02:00
test-pgsql-migration : migrations .pgsql .test migrations .individual .pgsql .test
2019-03-17 21:17:18 +02:00
2019-09-25 15:13:18 +03:00
generate-ini-mssql :
sed -e 's|{{TEST_MSSQL_HOST}}|${TEST_MSSQL_HOST}|g' \
-e 's|{{TEST_MSSQL_DBNAME}}|${TEST_MSSQL_DBNAME}|g' \
-e 's|{{TEST_MSSQL_USERNAME}}|${TEST_MSSQL_USERNAME}|g' \
-e 's|{{TEST_MSSQL_PASSWORD}}|${TEST_MSSQL_PASSWORD}|g' \
2020-04-19 14:17:02 +03:00
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
2022-09-02 22:18:23 +03:00
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
tests/mssql.ini.tmpl > tests/mssql.ini
2019-01-28 18:18:52 +02:00
2018-12-12 03:01:41 +02:00
.PHONY : test -mssql
2019-09-25 15:13:18 +03:00
test-mssql : integrations .mssql .test generate -ini -mssql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./integrations.mssql.test
2019-09-25 15:13:18 +03:00
.PHONY : test -mssql \#%
test-mssql\#% : integrations .mssql .test generate -ini -mssql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./integrations.mssql.test -test.run $( subst .,/,$* )
2018-12-12 03:01:41 +02:00
2019-01-28 18:18:52 +02:00
.PHONY : test -mssql -migration
2022-11-02 10:54:36 +02:00
test-mssql-migration : migrations .mssql .test migrations .individual .mssql .test
2022-09-02 22:18:23 +03:00
.PHONY : playwright
2024-02-22 05:19:13 +02:00
playwright : deps -frontend
2022-09-02 22:18:23 +03:00
npx playwright install $( PLAYWRIGHT_FLAGS)
.PHONY : test -e 2e %
test-e2e% : TEST_TYPE ?= e 2e
# Clear display env variable. Otherwise, chromium tests can fail.
DISPLAY =
.PHONY : test -e 2e
test-e2e : test -e 2e -sqlite
.PHONY : test -e 2e -sqlite
test-e2e-sqlite : playwright e 2e .sqlite .test generate -ini -sqlite
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./e2e.sqlite.test
.PHONY : test -e 2e -sqlite \#%
test-e2e-sqlite\#% : playwright e 2e .sqlite .test generate -ini -sqlite
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./e2e.sqlite.test -test.run TestE2e/$*
.PHONY : test -e 2e -mysql
test-e2e-mysql : playwright e 2e .mysql .test generate -ini -mysql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./e2e.mysql.test
.PHONY : test -e 2e -mysql \#%
test-e2e-mysql\#% : playwright e 2e .mysql .test generate -ini -mysql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./e2e.mysql.test -test.run TestE2e/$*
.PHONY : test -e 2e -pgsql
test-e2e-pgsql : playwright e 2e .pgsql .test generate -ini -pgsql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./e2e.pgsql.test
.PHONY : test -e 2e -pgsql \#%
test-e2e-pgsql\#% : playwright e 2e .pgsql .test generate -ini -pgsql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./e2e.pgsql.test -test.run TestE2e/$*
.PHONY : test -e 2e -mssql
test-e2e-mssql : playwright e 2e .mssql .test generate -ini -mssql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./e2e.mssql.test
.PHONY : test -e 2e -mssql \#%
test-e2e-mssql\#% : playwright e 2e .mssql .test generate -ini -mssql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./e2e.mssql.test -test.run TestE2e/$*
2019-01-28 18:18:52 +02:00
2017-06-20 14:23:16 +03:00
.PHONY : bench -sqlite
2020-04-19 14:17:02 +03:00
bench-sqlite : integrations .sqlite .test generate -ini -sqlite
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./integrations.sqlite.test -test.cpuprofile= cpu.out -test.run DontRunTests -test.bench .
2017-06-20 14:23:16 +03:00
.PHONY : bench -mysql
2019-09-25 15:13:18 +03:00
bench-mysql : integrations .mysql .test generate -ini -mysql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./integrations.mysql.test -test.cpuprofile= cpu.out -test.run DontRunTests -test.bench .
2017-06-20 14:23:16 +03:00
2019-02-11 19:09:50 +02:00
.PHONY : bench -mssql
2019-09-25 15:13:18 +03:00
bench-mssql : integrations .mssql .test generate -ini -mssql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./integrations.mssql.test -test.cpuprofile= cpu.out -test.run DontRunTests -test.bench .
2019-02-11 19:09:50 +02:00
2017-06-20 14:23:16 +03:00
.PHONY : bench -pgsql
2019-09-25 15:13:18 +03:00
bench-pgsql : integrations .pgsql .test generate -ini -pgsql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./integrations.pgsql.test -test.cpuprofile= cpu.out -test.run DontRunTests -test.bench .
2017-06-20 14:23:16 +03:00
2017-06-15 12:38:33 +03:00
.PHONY : integration -test -coverage
2019-09-25 15:13:18 +03:00
integration-test-coverage : integrations .cover .test generate -ini -mysql
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./integrations.cover.test -test.coverprofile= integration.coverage.out
2017-06-15 12:38:33 +03:00
2022-02-19 04:28:43 +02:00
.PHONY : integration -test -coverage -sqlite
integration-test-coverage-sqlite : integrations .cover .sqlite .test generate -ini -sqlite
2022-09-02 22:18:23 +03:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./integrations.cover.sqlite.test -test.coverprofile= integration.coverage.out
2022-02-19 04:28:43 +02:00
2020-01-14 02:06:54 +02:00
integrations.mysql.test : git -check $( GO_SOURCES )
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql.test
2019-09-25 15:13:18 +03:00
2020-01-14 02:06:54 +02:00
integrations.pgsql.test : git -check $( GO_SOURCES )
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.pgsql.test
2019-09-25 15:13:18 +03:00
2020-01-14 02:06:54 +02:00
integrations.mssql.test : git -check $( GO_SOURCES )
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mssql.test
2017-04-25 10:24:51 +03:00
2020-01-14 02:06:54 +02:00
integrations.sqlite.test : git -check $( GO_SOURCES )
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.sqlite.test -tags '$(TEST_TAGS)'
2017-06-15 12:38:33 +03:00
2020-01-16 21:21:35 +02:00
integrations.cover.test : git -check $( GO_SOURCES )
2022-11-02 10:54:36 +02:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -coverpkg $( shell echo $( GO_TEST_PACKAGES) | tr ' ' ',' ) -o integrations.cover.test
2017-06-15 12:38:33 +03:00
2022-02-19 04:28:43 +02:00
integrations.cover.sqlite.test : git -check $( GO_SOURCES )
2022-11-02 10:54:36 +02:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -coverpkg $( shell echo $( GO_TEST_PACKAGES) | tr ' ' ',' ) -o integrations.cover.sqlite.test -tags '$(TEST_TAGS)'
2022-02-19 04:28:43 +02:00
2019-09-25 15:13:18 +03:00
.PHONY : migrations .mysql .test
2022-11-02 10:54:36 +02:00
migrations.mysql.test : $( GO_SOURCES ) generate -ini -mysql
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql.test
2022-11-02 10:54:36 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini ./migrations.mysql.test
2019-09-25 15:13:18 +03:00
.PHONY : migrations .pgsql .test
2022-11-02 10:54:36 +02:00
migrations.pgsql.test : $( GO_SOURCES ) generate -ini -pgsql
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.pgsql.test
2022-11-02 10:54:36 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini ./migrations.pgsql.test
2019-09-25 15:13:18 +03:00
.PHONY : migrations .mssql .test
2022-11-02 10:54:36 +02:00
migrations.mssql.test : $( GO_SOURCES ) generate -ini -mssql
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mssql.test
2022-11-02 10:54:36 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini ./migrations.mssql.test
2019-01-28 18:18:52 +02:00
.PHONY : migrations .sqlite .test
2022-11-02 10:54:36 +02:00
migrations.sqlite.test : $( GO_SOURCES ) generate -ini -sqlite
2022-09-02 22:18:23 +03:00
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.sqlite.test -tags '$(TEST_TAGS)'
2022-11-02 10:54:36 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini ./migrations.sqlite.test
2019-01-28 18:18:52 +02:00
2021-03-24 20:27:22 +02:00
.PHONY : migrations .individual .mysql .test
migrations.individual.mysql.test : $( GO_SOURCES )
2024-03-07 18:43:32 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mysql.ini $( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' -p 1 $( MIGRATE_TEST_PACKAGES)
2021-03-24 20:27:22 +02:00
2023-10-03 20:27:57 +03:00
.PHONY : migrations .individual .sqlite .test \#%
2022-11-02 10:54:36 +02:00
migrations.individual.sqlite.test\#% : $( GO_SOURCES ) generate -ini -sqlite
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini $( GO) test $( GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
2021-03-24 20:27:22 +02:00
.PHONY : migrations .individual .pgsql .test
migrations.individual.pgsql.test : $( GO_SOURCES )
2024-03-07 18:43:32 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini $( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' -p 1 $( MIGRATE_TEST_PACKAGES)
2022-11-02 10:54:36 +02:00
.PHONY : migrations .individual .pgsql .test \#%
migrations.individual.pgsql.test\#% : $( GO_SOURCES ) generate -ini -pgsql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/pgsql.ini $( GO) test $( GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
2021-03-24 20:27:22 +02:00
.PHONY : migrations .individual .mssql .test
2022-11-02 10:54:36 +02:00
migrations.individual.mssql.test : $( GO_SOURCES ) generate -ini -mssql
2024-03-07 18:43:32 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini $( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' -p 1 $( MIGRATE_TEST_PACKAGES)
2022-11-02 10:54:36 +02:00
.PHONY : migrations .individual .mssql .test \#%
migrations.individual.mssql.test\#% : $( GO_SOURCES ) generate -ini -mssql
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/mssql.ini $( GO) test $( GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
2021-03-24 20:27:22 +02:00
.PHONY : migrations .individual .sqlite .test
2022-11-02 10:54:36 +02:00
migrations.individual.sqlite.test : $( GO_SOURCES ) generate -ini -sqlite
2024-03-07 18:43:32 +02:00
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini $( GO) test $( GOTESTFLAGS) -tags= '$(TEST_TAGS)' -p 1 $( MIGRATE_TEST_PACKAGES)
2022-11-02 10:54:36 +02:00
.PHONY : migrations .individual .sqlite .test \#%
migrations.individual.sqlite.test\#% : $( GO_SOURCES ) generate -ini -sqlite
GITEA_ROOT = " $( CURDIR) " GITEA_CONF = tests/sqlite.ini $( GO) test $( GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
2021-03-24 20:27:22 +02:00
2022-09-02 22:18:23 +03:00
e2e.mysql.test : $( GO_SOURCES )
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql.test
e2e.pgsql.test : $( GO_SOURCES )
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.pgsql.test
e2e.mssql.test : $( GO_SOURCES )
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mssql.test
e2e.sqlite.test : $( GO_SOURCES )
$( GO) test $( GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.sqlite.test -tags '$(TEST_TAGS)'
2016-11-07 16:31:44 +02:00
.PHONY : check
2016-11-07 14:41:47 +02:00
check : test
2020-02-11 21:42:03 +02:00
.PHONY : install $( TAGS_PREREQ )
2016-11-24 15:38:37 +02:00
install : $( wildcard *.go )
2020-06-06 02:57:25 +03:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
2016-08-05 22:46:26 +03:00
2016-11-04 14:58:55 +02:00
.PHONY : build
2025-01-27 03:44:09 +02:00
build : frontend backend ## build everything
2020-02-22 11:15:11 +02:00
.PHONY : frontend
2025-01-27 03:44:09 +02:00
frontend : $( WEBPACK_DEST ) ## build frontend files
2020-02-22 11:15:11 +02:00
.PHONY : backend
2025-01-27 03:44:09 +02:00
backend : go -check generate -backend $( EXECUTABLE ) ## build backend files
2020-02-22 11:15:11 +02:00
2022-09-05 09:04:18 +03:00
# We generate the backend before the frontend in case we in future we want to generate things in the frontend from generated files in backend
2020-02-22 11:15:11 +02:00
.PHONY : generate
2025-01-27 03:44:09 +02:00
generate : generate -backend ## run "go generate"
2022-09-09 18:33:01 +03:00
2022-09-05 09:04:18 +03:00
.PHONY : generate -backend
generate-backend : $( TAGS_PREREQ ) generate -go
2022-09-09 18:33:01 +03:00
.PHONY : generate -go
2022-09-05 09:04:18 +03:00
generate-go : $( TAGS_PREREQ )
2020-12-03 03:54:30 +02:00
@echo "Running go generate..."
2024-04-29 06:45:53 +03:00
@CC= GOOS = GOARCH = CGO_ENABLED = 0 $( GO) generate -tags '$(TAGS)' ./...
2016-07-25 21:48:17 +03:00
2022-09-11 10:02:18 +03:00
.PHONY : security -check
security-check :
2023-04-06 21:58:05 +03:00
go run $( GOVULNCHECK_PACKAGE) ./...
2022-09-11 10:02:18 +03:00
2020-02-11 21:42:03 +02:00
$(EXECUTABLE) : $( GO_SOURCES ) $( TAGS_PREREQ )
2022-01-15 01:16:05 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) build $( GOFLAGS) $( EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
2016-02-15 06:14:55 +02:00
2016-11-04 14:58:55 +02:00
.PHONY : release
2024-07-10 04:46:08 +03:00
release : frontend generate release -windows release -linux release -darwin release -freebsd release -copy release -compress vendor release -sources release -check
2016-12-05 00:48:36 +02:00
2020-02-19 05:10:25 +02:00
$(DIST_DIRS) :
mkdir -p $( DIST_DIRS)
2015-11-03 19:16:43 +02:00
2017-03-07 15:49:24 +02:00
.PHONY : release -windows
2020-02-19 05:10:25 +02:00
release-windows : | $( DIST_DIRS )
2024-12-30 04:37:59 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) run $( XGO_PACKAGE) -go $( XGO_VERSION) -buildmode exe -dest $( DIST) /binaries -tags 'osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$( VERSION) .
2021-04-15 12:02:44 +03:00
i f e q ( , $( findstring gogit ,$ ( TAGS ) ) )
2024-12-30 04:37:59 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) run $( XGO_PACKAGE) -go $( XGO_VERSION) -buildmode exe -dest $( DIST) /binaries -tags 'osusergo gogit $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$( VERSION) -gogit .
2021-04-15 12:02:44 +03:00
e n d i f
2017-03-07 15:49:24 +02:00
.PHONY : release -linux
2020-02-19 05:10:25 +02:00
release-linux : | $( DIST_DIRS )
2024-12-30 04:37:59 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) run $( XGO_PACKAGE) -go $( XGO_VERSION) -dest $( DIST) /binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets '$(LINUX_ARCHS)' -out gitea-$( VERSION) .
2017-03-07 15:49:24 +02:00
.PHONY : release -darwin
2020-02-19 05:10:25 +02:00
release-darwin : | $( DIST_DIRS )
2024-12-30 04:37:59 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) run $( XGO_PACKAGE) -go $( XGO_VERSION) -dest $( DIST) /binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'darwin-10.12/amd64,darwin-10.12/arm64' -out gitea-$( VERSION) .
2015-11-03 19:16:43 +02:00
2023-01-11 00:21:24 +02:00
.PHONY : release -freebsd
release-freebsd : | $( DIST_DIRS )
2024-12-30 04:37:59 +02:00
CGO_CFLAGS = " $( CGO_CFLAGS) " $( GO) run $( XGO_PACKAGE) -go $( XGO_VERSION) -dest $( DIST) /binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'freebsd/amd64' -out gitea-$( VERSION) .
2023-01-11 00:21:24 +02:00
2016-11-04 14:58:55 +02:00
.PHONY : release -copy
2020-02-19 05:10:25 +02:00
release-copy : | $( DIST_DIRS )
2022-06-05 05:42:24 +03:00
cd $( DIST) ; for file in ` find . -type f -name "*" ` ; do cp $$ { file} ./release/; done ;
2015-12-01 23:18:30 +02:00
2016-11-04 14:58:55 +02:00
.PHONY : release -check
2020-02-19 05:10:25 +02:00
release-check : | $( DIST_DIRS )
2019-04-14 23:33:24 +03:00
cd $( DIST) /release/; for file in ` find . -type f -name "*" ` ; do echo " checksumming $$ {file} " && $( SHASUM) ` echo $$ { file} | sed 's/^..//' ` > $$ { file} .sha256; done ;
2015-12-01 23:18:30 +02:00
2018-05-21 21:50:39 +03:00
.PHONY : release -compress
2020-02-19 05:10:25 +02:00
release-compress : | $( DIST_DIRS )
2023-07-27 01:51:02 +03:00
cd $( DIST) /release/; for file in ` find . -type f -name "*" ` ; do echo " compressing $$ {file} " && $( GO) run $( GXZ_PACKAGE) -k -9 $$ { file} ; done ;
2018-05-21 21:50:39 +03:00
2020-02-16 19:53:02 +02:00
.PHONY : release -sources
2021-04-09 08:08:14 +03:00
release-sources : | $( DIST_DIRS )
2020-02-22 11:15:11 +02:00
echo $( VERSION) > $( STORED_VERSION_FILE)
2021-04-09 08:08:14 +03:00
# bsdtar needs a ^ to prevent matching subdirectories
$( eval EXCL := --exclude= $( shell tar --help | grep -q bsdtar && echo "^" ) ./)
2022-04-25 19:41:07 +03:00
# use transform to a add a release-folder prefix; in bsdtar the transform parameter equivalent is -s
$( eval TRANSFORM := $( shell tar --help | grep -q bsdtar && echo " -s '/^./gitea-src- $( VERSION) /' " || echo " --transform 's|^./|gitea-src- $( VERSION) /|' " ) )
tar $( addprefix $( EXCL) ,$( TAR_EXCLUDES) ) $( TRANSFORM) -czf $( DIST) /release/gitea-src-$( VERSION) .tar.gz .
2020-02-22 11:15:11 +02:00
rm -f $( STORED_VERSION_FILE)
2020-02-16 19:53:02 +02:00
2022-02-12 09:08:53 +02:00
.PHONY : deps
2025-01-27 03:44:09 +02:00
deps : deps -frontend deps -backend deps -tools deps -py ## install dependencies
2023-06-14 21:17:58 +03:00
.PHONY : deps -py
2025-01-27 03:44:09 +02:00
deps-py : .venv ## install python dependencies
2022-02-12 09:08:53 +02:00
.PHONY : deps -frontend
2025-01-27 03:44:09 +02:00
deps-frontend : node_modules ## install frontend dependencies
2022-02-12 09:08:53 +02:00
.PHONY : deps -backend
2025-01-27 03:44:09 +02:00
deps-backend : ## install backend dependencies
2022-02-12 09:08:53 +02:00
$( GO) mod download
2023-03-10 08:13:17 +02:00
.PHONY : deps -tools
2025-01-27 03:44:09 +02:00
deps-tools : ## install tool dependencies
2024-07-28 20:27:24 +03:00
$( GO) install $( AIR_PACKAGE) & \
$( GO) install $( EDITORCONFIG_CHECKER_PACKAGE) & \
$( GO) install $( GOFUMPT_PACKAGE) & \
$( GO) install $( GOLANGCI_LINT_PACKAGE) & \
$( GO) install $( GXZ_PACKAGE) & \
$( GO) install $( MISSPELL_PACKAGE) & \
$( GO) install $( SWAGGER_PACKAGE) & \
$( GO) install $( XGO_PACKAGE) & \
$( GO) install $( GO_LICENSES_PACKAGE) & \
$( GO) install $( GOVULNCHECK_PACKAGE) & \
$( GO) install $( ACTIONLINT_PACKAGE) & \
$( GO) install $( GOPLS_PACKAGE) & \
wait
2022-02-12 09:08:53 +02:00
2019-12-05 05:41:38 +02:00
node_modules : package -lock .json
2020-11-30 01:16:04 +02:00
npm install --no-save
2020-01-28 09:30:39 +02:00
@touch node_modules
2019-06-19 05:59:47 +03:00
2023-06-14 21:17:58 +03:00
.venv : poetry .lock
2024-06-07 16:37:33 +03:00
poetry install
2023-06-14 21:17:58 +03:00
@touch .venv
2023-09-22 23:51:48 +03:00
.PHONY : update
2025-01-27 03:44:09 +02:00
update : update -js update -py ## update js and py dependencies
2023-09-22 23:51:48 +03:00
2023-06-27 22:44:17 +03:00
.PHONY : update -js
2025-01-27 03:44:09 +02:00
update-js : node -check | node_modules ## update js dependencies
2023-06-27 00:14:00 +03:00
npx updates -u -f package.json
2019-06-19 05:59:47 +03:00
rm -rf node_modules package-lock.json
npm install --package-lock
2024-07-24 03:42:21 +03:00
npx nolyfill install
npm install --package-lock
2020-07-28 00:01:25 +03:00
@touch node_modules
2019-06-19 05:59:47 +03:00
2023-06-27 22:44:17 +03:00
.PHONY : update -py
2025-01-27 03:44:09 +02:00
update-py : node -check | node_modules ## update py dependencies
2023-06-27 00:14:00 +03:00
npx updates -u -f pyproject.toml
rm -rf .venv poetry.lock
2024-06-07 16:37:33 +03:00
poetry install
2023-06-27 00:14:00 +03:00
@touch .venv
2020-01-21 07:17:58 +02:00
.PHONY : fomantic
2025-01-27 03:44:09 +02:00
fomantic : ## build fomantic files
2021-04-02 03:11:04 +03:00
rm -rf $( FOMANTIC_WORK_DIR) /build
2021-04-09 08:08:14 +03:00
cd $( FOMANTIC_WORK_DIR) && npm install --no-save
cp -f $( FOMANTIC_WORK_DIR) /theme.config.less $( FOMANTIC_WORK_DIR) /node_modules/fomantic-ui/src/theme.config
cp -rf $( FOMANTIC_WORK_DIR) /_site $( FOMANTIC_WORK_DIR) /node_modules/fomantic-ui/src/
2024-03-04 22:24:12 +02:00
$( SED_INPLACE) -e 's/ overrideBrowserslist\r/ overrideBrowserslist: ["defaults"]\r/g' $( FOMANTIC_WORK_DIR) /node_modules/fomantic-ui/tasks/config/tasks.js
2021-04-09 08:08:14 +03:00
cd $( FOMANTIC_WORK_DIR) && npx gulp -f node_modules/fomantic-ui/gulpfile.js build
2023-02-27 16:43:04 +02:00
# fomantic uses "touchstart" as click event for some browsers, it's not ideal, so we force fomantic to always use "click" as click event
$( SED_INPLACE) -e 's/clickEvent[ \t]*=/clickEvent = "click", unstableClickEvent =/g' $( FOMANTIC_WORK_DIR) /build/semantic.js
2022-06-10 15:24:02 +03:00
$( SED_INPLACE) -e 's/\r//g' $( FOMANTIC_WORK_DIR) /build/semantic.css $( FOMANTIC_WORK_DIR) /build/semantic.js
2021-08-29 22:57:07 +03:00
rm -f $( FOMANTIC_WORK_DIR) /build/*.min.*
2020-01-21 07:17:58 +02:00
2020-01-28 09:30:39 +02:00
.PHONY : webpack
2025-01-27 03:44:09 +02:00
webpack : $( WEBPACK_DEST ) ## build webpack files
2019-12-05 05:41:38 +02:00
2021-04-09 08:08:14 +03:00
$(WEBPACK_DEST) : $( WEBPACK_SOURCES ) $( WEBPACK_CONFIGS ) package -lock .json
@$( MAKE) -s node-check node_modules
2024-04-27 10:21:07 +03:00
@rm -rf $( WEBPACK_DEST_ENTRIES)
@echo "Running webpack..."
@BROWSERSLIST_IGNORE_OLD_DATA= true npx webpack
2020-01-28 09:30:39 +02:00
@touch $( WEBPACK_DEST)
2019-05-16 08:57:47 +03:00
2020-07-12 12:10:56 +03:00
.PHONY : svg
2025-01-27 03:44:09 +02:00
svg : node -check | node_modules ## build svg files
2020-07-12 12:10:56 +03:00
rm -rf $( SVG_DEST_DIR)
2024-03-18 00:12:36 +02:00
node tools/generate-svg.js
2020-07-12 12:10:56 +03:00
.PHONY : svg -check
svg-check : svg
2020-07-24 19:41:30 +03:00
@git add $( SVG_DEST_DIR)
2023-03-19 03:47:47 +02:00
@diff= $$ ( git diff --color= always --cached $( SVG_DEST_DIR) ) ; \
2020-07-12 12:10:56 +03:00
if [ -n " $$ diff " ] ; then \
2020-07-24 19:41:30 +03:00
echo " Please run 'make svg' and 'git add $( SVG_DEST_DIR) ' and commit the result: " ; \
2020-07-12 12:10:56 +03:00
echo " $$ {diff} " ; \
exit 1; \
2020-11-29 23:39:36 +02:00
fi
2020-07-12 12:10:56 +03:00
2022-01-15 22:06:29 +02:00
.PHONY : lockfile -check
lockfile-check :
npm install --package-lock-only
2023-03-19 03:47:47 +02:00
@diff= $$ ( git diff --color= always package-lock.json) ; \
2022-01-15 22:06:29 +02:00
if [ -n " $$ diff " ] ; then \
echo "package-lock.json is inconsistent with package.json" ; \
echo "Please run 'npm install --package-lock-only' and commit the result:" ; \
echo " $$ {diff} " ; \
exit 1; \
fi
2017-07-03 16:37:00 +03:00
.PHONY : update -translations
update-translations :
mkdir -p ./translations
cd ./translations && curl -L https://crowdin.com/download/project/gitea.zip > gitea.zip && unzip gitea.zip
rm ./translations/gitea.zip
$( SED_INPLACE) -e 's/="/=/g' -e 's/"$$//g' ./translations/*.ini
$( SED_INPLACE) -e 's/\\"/"/g' ./translations/*.ini
mv ./translations/*.ini ./options/locale/
2017-07-12 05:28:57 +03:00
rmdir ./translations
2017-07-28 08:51:20 +03:00
2020-09-02 19:57:08 +03:00
.PHONY : generate -license
2025-01-27 03:44:09 +02:00
generate-license : ## update license files
2022-07-04 06:33:55 +03:00
$( GO) run build/generate-licenses.go
2020-09-02 19:57:08 +03:00
.PHONY : generate -gitignore
2025-01-27 03:44:09 +02:00
generate-gitignore : ## update gitignore files
2022-07-04 06:33:55 +03:00
$( GO) run build/generate-gitignores.go
2020-09-02 19:57:08 +03:00
2017-07-28 08:51:20 +03:00
.PHONY : generate -images
2021-04-15 14:02:34 +03:00
generate-images : | node_modules
2024-06-29 18:37:18 +03:00
npm install --no-save fabric@6 imagemin-zopfli@7
2024-03-18 00:12:36 +02:00
node tools/generate-images.js $( TAGS)
2019-03-25 23:23:17 +02:00
2021-02-25 00:36:48 +02:00
.PHONY : generate -manpage
2025-01-27 03:44:09 +02:00
generate-manpage : ## generate manpage
2021-02-25 00:36:48 +02:00
@[ -f gitea ] || make backend
@mkdir -p man/man1/ man/man5
@./gitea docs --man > man/man1/gitea.1
@gzip -9 man/man1/gitea.1 && echo man/man1/gitea.1.gz created
Fix various typos (#20338)
* Fix various typos
Found via `codespell -q 3 -S ./options/locale,./options/license,./public/vendor -L actived,allways,attachements,ba,befores,commiter,pullrequest,pullrequests,readby,splitted,te,unknwon`
Co-authored-by: zeripath <art27@cantab.net>
2022-07-13 00:32:37 +03:00
@#TODO A small script that formats config-cheat-sheet.en-us.md nicely for use as a config man page
2021-02-25 00:36:48 +02:00
2020-07-21 23:41:03 +03:00
.PHONY : docker
docker :
docker build --disable-content-trust= false -t $( DOCKER_REF) .
# support also build args docker build --build-arg GITEA_VERSION=v1.2.3 --build-arg TAGS="bindata sqlite sqlite_unlock_notify" .
2020-04-19 14:17:02 +03:00
# This endif closes the if at the top of the file
2020-04-30 09:26:37 +03:00
e n d i f
2024-02-16 05:17:34 +02:00
# Disable parallel execution because it would break some targets that don't
# specify exact dependencies like 'backend' which does currently not depend
# on 'frontend' to enable Node.js-less builds from source tarballs.
.NOTPARALLEL :