From 80cc4f84e7741816ba05f772e6f76d65382fa77b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 17 May 2019 13:29:32 +0800 Subject: [PATCH 01/15] move code.gitea.io/gitea/modules/log to gitea.com/gitea/log as a standalone package --- cmd/admin.go | 2 +- cmd/convert.go | 2 +- cmd/migrate.go | 2 +- cmd/serv.go | 2 +- cmd/web.go | 2 +- cmd/web_graceful.go | 2 +- .../advanced/logging-documentation.en-us.md | 2 +- go.mod | 8 +- go.sum | 13 + integrations/testlogger.go | 2 +- main.go | 2 +- models/access.go | 2 +- models/action.go | 2 +- models/admin.go | 2 +- models/branches.go | 2 +- models/git_diff.go | 2 +- models/gpg_key.go | 2 +- models/helper_directory.go | 2 +- models/issue.go | 2 +- models/issue_assignees.go | 2 +- models/issue_comment.go | 2 +- models/issue_dependency.go | 2 +- models/issue_list.go | 2 +- models/issue_mail.go | 2 +- models/issue_milestone.go | 2 +- models/lfs_lock.go | 2 +- models/log.go | 2 +- models/login_source.go | 2 +- models/mail.go | 2 +- models/migrations/migrations.go | 2 +- models/migrations/v20.go | 2 +- models/migrations/v27.go | 2 +- models/migrations/v28.go | 2 +- models/migrations/v33.go | 2 +- models/migrations/v39.go | 2 +- models/migrations/v45.go | 2 +- models/migrations/v50.go | 2 +- models/migrations/v51.go | 2 +- models/migrations/v61.go | 2 +- models/migrations/v68.go | 2 +- models/migrations/v78.go | 2 +- models/migrations/v85.go | 2 +- models/models.go | 15 +- models/org.go | 2 +- models/org_team.go | 2 +- models/pull.go | 2 +- models/release.go | 2 +- models/repo.go | 2 +- models/repo_branch.go | 2 +- models/repo_indexer.go | 2 +- models/repo_mirror.go | 2 +- models/repo_permission.go | 2 +- models/repo_redirect.go | 2 +- models/review.go | 2 +- models/ssh_key.go | 2 +- models/status.go | 2 +- models/u2f.go | 2 +- models/unit.go | 2 +- models/update.go | 2 +- models/user.go | 2 +- models/user_openid.go | 2 +- models/webhook.go | 3 +- models/wiki.go | 2 +- modules/auth/auth.go | 2 +- modules/auth/ldap/ldap.go | 2 +- modules/auth/oauth2/oauth2.go | 2 +- modules/base/tool.go | 2 +- modules/context/api.go | 2 +- modules/context/auth.go | 2 +- modules/context/context.go | 2 +- modules/context/panic.go | 2 +- modules/context/permission.go | 2 +- modules/context/repo.go | 2 +- modules/cron/cron.go | 2 +- modules/git/repo_compare.go | 2 +- modules/git_log/log.go | 31 + modules/indexer/issues/indexer.go | 2 +- modules/indexer/issues/queue_disk.go | 2 +- modules/indexer/issues/queue_redis.go | 2 +- modules/indexer/repo.go | 2 +- modules/lfs/locks.go | 2 +- modules/lfs/server.go | 2 +- modules/log/conn_test.go | 239 ------ modules/log/console_test.go | 137 ---- modules/log/file_test.go | 245 ------- modules/log/level_test.go | 55 -- modules/log/log_test.go | 154 ---- modules/log/smtp_test.go | 86 --- modules/log/writer_test.go | 277 ------- modules/mailer/mailer.go | 2 +- modules/markup/external/external.go | 2 +- modules/markup/markup.go | 2 +- modules/markup/orgmode/orgmode.go | 2 +- modules/migrations/gitea.go | 2 +- modules/migrations/github.go | 2 +- modules/migrations/migrate.go | 2 +- modules/notification/indexer/indexer.go | 2 +- modules/notification/mail/mail.go | 2 +- modules/notification/ui/ui.go | 2 +- modules/pprof/pprof.go | 2 +- modules/private/branch.go | 67 ++ modules/private/push_update.go | 40 + modules/private/repository.go | 68 ++ modules/private/wiki.go | 33 + modules/repofiles/temp_repo.go | 2 +- modules/repofiles/update.go | 2 +- modules/setting/cache.go | 2 +- modules/setting/cors.go | 2 +- modules/setting/cron.go | 2 +- modules/setting/git.go | 2 +- modules/setting/log.go | 2 +- modules/setting/mailer.go | 2 +- modules/setting/markup.go | 2 +- modules/setting/repository.go | 2 +- modules/setting/session.go | 2 +- modules/setting/setting.go | 2 +- modules/ssh/ssh.go | 2 +- modules/templates/dynamic.go | 2 +- modules/templates/helper.go | 2 +- modules/templates/static.go | 2 +- modules/util/url.go | 2 +- routers/admin/auths.go | 2 +- routers/admin/notice.go | 2 +- routers/admin/repos.go | 2 +- routers/admin/users.go | 2 +- routers/api/v1/admin/user.go | 2 +- routers/api/v1/api.go | 2 +- routers/api/v1/convert/convert.go | 2 +- routers/api/v1/repo/pull.go | 2 +- routers/api/v1/repo/repo.go | 2 +- routers/home.go | 2 +- routers/init.go | 2 +- routers/install.go | 2 +- routers/org/members.go | 2 +- routers/org/org.go | 2 +- routers/org/setting.go | 2 +- routers/org/teams.go | 2 +- routers/private/hook.go | 2 +- routers/private/push_update.go | 2 +- routers/private/serv.go | 2 +- routers/repo/attachment.go | 2 +- routers/repo/blame.go | 2 +- routers/repo/branch.go | 2 +- routers/repo/commit.go | 2 +- routers/repo/compare.go | 2 +- routers/repo/download.go | 2 +- routers/repo/editor.go | 2 +- routers/repo/http.go | 3 +- routers/repo/issue.go | 2 +- routers/repo/issue_label.go | 2 +- routers/repo/issue_watch.go | 2 +- routers/repo/pull.go | 2 +- routers/repo/pull_review.go | 2 +- routers/repo/release.go | 2 +- routers/repo/repo.go | 2 +- routers/repo/setting.go | 2 +- routers/repo/setting_protected_branch.go | 2 +- routers/repo/topic.go | 2 +- routers/repo/view.go | 2 +- routers/repo/wiki.go | 2 +- routers/routes/routes.go | 2 +- routers/user/auth.go | 2 +- routers/user/auth_openid.go | 2 +- routers/user/home.go | 2 +- routers/user/oauth.go | 2 +- routers/user/setting/account.go | 2 +- routers/user/setting/oauth2.go | 2 +- routers/user/setting/profile.go | 2 +- routers/user/setting/security_openid.go | 2 +- vendor/code.gitea.io/log/.drone.yml | 14 + vendor/code.gitea.io/log/README.md | 1 + .../code.gitea.io}/log/colors.go | 8 +- .../code.gitea.io}/log/colors_router.go | 0 vendor/code.gitea.io/log/configuration.go | 99 +++ {modules => vendor/code.gitea.io}/log/conn.go | 5 +- vendor/code.gitea.io/log/console.go | 88 +++ .../code.gitea.io}/log/console_windows.go | 0 .../code.gitea.io}/log/errors.go | 0 .../code.gitea.io}/log/event.go | 4 +- {modules => vendor/code.gitea.io}/log/file.go | 4 +- vendor/code.gitea.io/log/flags.go | 108 +++ vendor/code.gitea.io/log/go.mod | 9 + vendor/code.gitea.io/log/go.sum | 12 + .../code.gitea.io}/log/level.go | 0 vendor/code.gitea.io/log/log.go | 289 ++++++++ vendor/code.gitea.io/log/log_map.go | 56 ++ .../code.gitea.io}/log/logger.go | 0 .../code.gitea.io}/log/provider.go | 0 {modules => vendor/code.gitea.io}/log/smtp.go | 4 + .../code.gitea.io}/log/stack.go | 0 vendor/code.gitea.io/log/writer.go | 273 +++++++ vendor/gitea.com/gitea/log/README.md | 1 + vendor/gitea.com/gitea/log/colors.go | 428 +++++++++++ vendor/gitea.com/gitea/log/colors_router.go | 83 +++ vendor/gitea.com/gitea/log/conn.go | 121 ++++ .../gitea.com/gitea}/log/console.go | 0 vendor/gitea.com/gitea/log/console_windows.go | 43 ++ vendor/gitea.com/gitea/log/errors.go | 62 ++ vendor/gitea.com/gitea/log/event.go | 335 +++++++++ vendor/gitea.com/gitea/log/file.go | 259 +++++++ .../gitea.com/gitea}/log/flags.go | 2 +- vendor/gitea.com/gitea/log/go.mod | 9 + vendor/gitea.com/gitea/log/go.sum | 12 + vendor/gitea.com/gitea/log/level.go | 111 +++ .../gitea.com/gitea}/log/log.go | 2 +- vendor/gitea.com/gitea/log/logger.go | 152 ++++ vendor/gitea.com/gitea/log/provider.go | 26 + vendor/gitea.com/gitea/log/smtp.go | 111 +++ vendor/gitea.com/gitea/log/stack.go | 83 +++ .../gitea.com/gitea}/log/writer.go | 5 +- .../gitea.com/xorm/gitea_log_bridge/bridge.go | 120 +++ vendor/gitea.com/xorm/gitea_log_bridge/go.mod | 8 + vendor/gitea.com/xorm/gitea_log_bridge/go.sum | 25 + vendor/github.com/go-xorm/core/cache.go | 4 + vendor/github.com/go-xorm/core/circle.yml | 15 - vendor/github.com/go-xorm/core/column.go | 11 +- vendor/github.com/go-xorm/core/converstion.go | 4 + vendor/github.com/go-xorm/core/db.go | 280 ++----- vendor/github.com/go-xorm/core/dialect.go | 4 + vendor/github.com/go-xorm/core/driver.go | 4 + vendor/github.com/go-xorm/core/error.go | 4 + vendor/github.com/go-xorm/core/filter.go | 4 + vendor/github.com/go-xorm/core/go.mod | 8 +- vendor/github.com/go-xorm/core/go.sum | 9 + vendor/github.com/go-xorm/core/ilogger.go | 4 + vendor/github.com/go-xorm/core/index.go | 16 +- vendor/github.com/go-xorm/core/mapper.go | 4 + vendor/github.com/go-xorm/core/pk.go | 4 + vendor/github.com/go-xorm/core/rows.go | 4 + vendor/github.com/go-xorm/core/scan.go | 11 + vendor/github.com/go-xorm/core/stmt.go | 165 +++++ vendor/github.com/go-xorm/core/table.go | 4 + vendor/github.com/go-xorm/core/tx.go | 153 ++++ vendor/github.com/go-xorm/core/type.go | 18 +- .../mattn/go-isatty/isatty_others.go | 2 +- .../{isatty_linux.go => isatty_tcgets.go} | 2 +- .../appengine/internal/api.go | 17 +- .../appengine/internal/api_pre17.go | 682 ------------------ .../appengine/internal/identity.go | 47 +- .../appengine/internal/identity_classic.go | 4 + .../appengine/internal/identity_flex.go | 11 + .../appengine/internal/main.go | 1 + .../appengine/internal/main_common.go | 7 + .../appengine/internal/main_vm.go | 21 + vendor/modules.txt | 16 +- 245 files changed, 3968 insertions(+), 2322 deletions(-) create mode 100644 modules/git_log/log.go delete mode 100644 modules/log/conn_test.go delete mode 100644 modules/log/console_test.go delete mode 100644 modules/log/file_test.go delete mode 100644 modules/log/level_test.go delete mode 100644 modules/log/log_test.go delete mode 100644 modules/log/smtp_test.go delete mode 100644 modules/log/writer_test.go create mode 100644 modules/private/branch.go create mode 100644 modules/private/push_update.go create mode 100644 modules/private/repository.go create mode 100644 modules/private/wiki.go create mode 100644 vendor/code.gitea.io/log/.drone.yml create mode 100644 vendor/code.gitea.io/log/README.md rename {modules => vendor/code.gitea.io}/log/colors.go (98%) rename {modules => vendor/code.gitea.io}/log/colors_router.go (100%) create mode 100644 vendor/code.gitea.io/log/configuration.go rename {modules => vendor/code.gitea.io}/log/conn.go (97%) create mode 100644 vendor/code.gitea.io/log/console.go rename {modules => vendor/code.gitea.io}/log/console_windows.go (100%) rename {modules => vendor/code.gitea.io}/log/errors.go (100%) rename {modules => vendor/code.gitea.io}/log/event.go (99%) rename {modules => vendor/code.gitea.io}/log/file.go (98%) create mode 100644 vendor/code.gitea.io/log/flags.go create mode 100644 vendor/code.gitea.io/log/go.mod create mode 100644 vendor/code.gitea.io/log/go.sum rename {modules => vendor/code.gitea.io}/log/level.go (100%) create mode 100644 vendor/code.gitea.io/log/log.go create mode 100644 vendor/code.gitea.io/log/log_map.go rename {modules => vendor/code.gitea.io}/log/logger.go (100%) rename {modules => vendor/code.gitea.io}/log/provider.go (100%) rename {modules => vendor/code.gitea.io}/log/smtp.go (97%) rename {modules => vendor/code.gitea.io}/log/stack.go (100%) create mode 100644 vendor/code.gitea.io/log/writer.go create mode 100644 vendor/gitea.com/gitea/log/README.md create mode 100644 vendor/gitea.com/gitea/log/colors.go create mode 100644 vendor/gitea.com/gitea/log/colors_router.go create mode 100644 vendor/gitea.com/gitea/log/conn.go rename {modules => vendor/gitea.com/gitea}/log/console.go (100%) create mode 100644 vendor/gitea.com/gitea/log/console_windows.go create mode 100644 vendor/gitea.com/gitea/log/errors.go create mode 100644 vendor/gitea.com/gitea/log/event.go create mode 100644 vendor/gitea.com/gitea/log/file.go rename {modules => vendor/gitea.com/gitea}/log/flags.go (99%) create mode 100644 vendor/gitea.com/gitea/log/go.mod create mode 100644 vendor/gitea.com/gitea/log/go.sum create mode 100644 vendor/gitea.com/gitea/log/level.go rename {modules => vendor/gitea.com/gitea}/log/log.go (99%) create mode 100644 vendor/gitea.com/gitea/log/logger.go create mode 100644 vendor/gitea.com/gitea/log/provider.go create mode 100644 vendor/gitea.com/gitea/log/smtp.go create mode 100644 vendor/gitea.com/gitea/log/stack.go rename {modules => vendor/gitea.com/gitea}/log/writer.go (99%) create mode 100644 vendor/gitea.com/xorm/gitea_log_bridge/bridge.go create mode 100644 vendor/gitea.com/xorm/gitea_log_bridge/go.mod create mode 100644 vendor/gitea.com/xorm/gitea_log_bridge/go.sum delete mode 100644 vendor/github.com/go-xorm/core/circle.yml create mode 100644 vendor/github.com/go-xorm/core/go.sum create mode 100644 vendor/github.com/go-xorm/core/stmt.go create mode 100644 vendor/github.com/go-xorm/core/tx.go rename vendor/github.com/mattn/go-isatty/{isatty_linux.go => isatty_tcgets.go} (95%) delete mode 100644 vendor/google.golang.org/appengine/internal/api_pre17.go create mode 100644 vendor/google.golang.org/appengine/internal/identity_flex.go create mode 100644 vendor/google.golang.org/appengine/internal/main_common.go diff --git a/cmd/admin.go b/cmd/admin.go index 4c4d6f9b66e37..778de5df03662 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/urfave/cli" diff --git a/cmd/convert.go b/cmd/convert.go index cb0510c722fc8..1a2e66d6a2e49 100644 --- a/cmd/convert.go +++ b/cmd/convert.go @@ -8,7 +8,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/urfave/cli" diff --git a/cmd/migrate.go b/cmd/migrate.go index dde50a455f07f..595d92fc16e27 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -7,7 +7,7 @@ package cmd import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/migrations" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/urfave/cli" diff --git a/cmd/serv.go b/cmd/serv.go index 2ea89757dba88..9f96acf672e11 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -17,10 +17,10 @@ import ( "time" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/pprof" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/dgrijalva/jwt-go" diff --git a/cmd/web.go b/cmd/web.go index d8bcba76d10cc..3960e7e205692 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -13,7 +13,7 @@ import ( "os" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers/routes" diff --git a/cmd/web_graceful.go b/cmd/web_graceful.go index 53f407ce9e345..44565fc4ffeda 100644 --- a/cmd/web_graceful.go +++ b/cmd/web_graceful.go @@ -10,7 +10,7 @@ import ( "crypto/tls" "net/http" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/facebookgo/grace/gracehttp" ) diff --git a/docs/content/doc/advanced/logging-documentation.en-us.md b/docs/content/doc/advanced/logging-documentation.en-us.md index 790e750084efd..4d4b6f6b18623 100644 --- a/docs/content/doc/advanced/logging-documentation.en-us.md +++ b/docs/content/doc/advanced/logging-documentation.en-us.md @@ -43,7 +43,7 @@ will log anything that is logged using the go logger at the INFO level. ### The "Default" logger -Calls to `log.Info`, `log.Debug`, `log.Error` etc. from the `code.gitea.io/gitea/modules/log` package will log to this logger. +Calls to `log.Info`, `log.Debug`, `log.Error` etc. from the `code.gitea.io/log` package will log to this logger. You can configure the outputs of this logger by setting the `MODE` value in the `[log]` section of the configuration. diff --git a/go.mod b/go.mod index b1a638ed74fb7..a5fa0687cd572 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,8 @@ module code.gitea.io/gitea go 1.12 require ( + code.gitea.io/log v0.0.0-20190608101221-52ddba89623c + gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 github.com/BurntSushi/toml v0.3.1 // indirect github.com/PuerkitoBio/goquery v0.0.0-20170324135448-ed7d758e9a34 github.com/RoaringBitmap/roaring v0.4.7 // indirect @@ -54,9 +56,9 @@ require ( github.com/go-macaron/session v0.0.0-20190131233854-0a0a789bf193 github.com/go-macaron/toolbox v0.0.0-20180818072302-a77f45a7ce90 github.com/go-redis/redis v6.15.2+incompatible - github.com/go-sql-driver/mysql v1.4.0 + github.com/go-sql-driver/mysql v1.4.1 github.com/go-xorm/builder v0.3.3 - github.com/go-xorm/core v0.6.0 + github.com/go-xorm/core v0.6.2 github.com/go-xorm/xorm v0.0.0-20190116032649-a6300f2a45e0 github.com/gogits/chardet v0.0.0-20150115103509-2404f7772561 github.com/gogits/cron v0.0.0-20160810035002-7f3990acf183 @@ -81,7 +83,7 @@ require ( github.com/lunny/log v0.0.0-20160921050905-7887c61bf0de // indirect github.com/lunny/nodb v0.0.0-20160621015157-fc1ef06ad4af // indirect github.com/markbates/goth v1.49.0 - github.com/mattn/go-isatty v0.0.7 + github.com/mattn/go-isatty v0.0.8 // indirect github.com/mattn/go-oci8 v0.0.0-20190320171441-14ba190cf52d // indirect github.com/mattn/go-sqlite3 v1.10.0 github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect diff --git a/go.sum b/go.sum index f6542fbe49dae..d153b364a4cdc 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,10 @@ cloud.google.com/go v0.30.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +code.gitea.io/log v0.0.0-20190608101221-52ddba89623c h1:kdIAfVRLU+oku2e8k+UZcxYuffXWfxDoPs1HYkZzc3k= +code.gitea.io/log v0.0.0-20190608101221-52ddba89623c/go.mod h1:YOBHMQw/14CwuwNStgQyvnzoDJEO6ARjcSdD48QRzhM= +gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 h1:y9Ep7Fhwz3D7mko8XRwbpGahnZNaPkJ43Qg/d6Ss9EU= +gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4/go.mod h1:1nV03yHcYc8sGKHpWDe++gxd7yoMDdNOWhIhuykDSnI= +gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 h1:LXbSEMTPH9SdHw4DRgjBdwpzTbmq24Bb34lgf8hlRMw= +gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6/go.mod h1:Tw+QIrkZ1rrDYCNRnfPFPfCnu0265uOLB3bMhJqZRDk= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/goquery v0.0.0-20170324135448-ed7d758e9a34 h1:UsHpWO0Elp6NaWVARdZHjiYwkhrspHVEGsyIKPb9OI8= @@ -124,6 +130,8 @@ github.com/go-xorm/builder v0.3.3 h1:v8grgrwOGv/iHXIEhIvOwHZIPLrpxRKSX8yWSMLFn/4 github.com/go-xorm/builder v0.3.3/go.mod h1:v8mE3MFBgtL+RGFNfUnAMUqqfk/Y4W5KuwCFQIEpQLk= github.com/go-xorm/core v0.6.0 h1:tp6hX+ku4OD9khFZS8VGBDRY3kfVCtelPfmkgCyHxL0= github.com/go-xorm/core v0.6.0/go.mod h1:d8FJ9Br8OGyQl12MCclmYBuBqqxsyeedpXciV5Myih8= +github.com/go-xorm/core v0.6.2 h1:EJLcSxf336POJr670wKB55Mah9f93xzvGYzNRgnT8/Y= +github.com/go-xorm/core v0.6.2/go.mod h1:bwPIfLdm/FzWgVUH8WPVlr+uJhscvNGFcaZKXsI3n2c= github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y= github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= github.com/go-xorm/xorm v0.0.0-20190116032649-a6300f2a45e0 h1:GBnJjWjp2SGXBZsyZfYksyp7QocvQwf9vZQ0NRN2FXM= @@ -223,6 +231,8 @@ github.com/markbates/goth v1.49.0 h1:qQ4Ti4WaqAxNAggOC+4s5M85sMVfMJwQn/Xkp73wfgI github.com/markbates/goth v1.49.0/go.mod h1:zZmAw0Es0Dpm7TT/4AdN14QrkiWLMrrU9Xei1o+/mdA= github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-oci8 v0.0.0-20190320171441-14ba190cf52d h1:m+dSK37rFf2fqppZhg15yI2IwC9BtucBiRwSDm9VL8g= github.com/mattn/go-oci8 v0.0.0-20190320171441-14ba190cf52d/go.mod h1:/M9VLO+lUPmxvoOK2PfWRZ8mTtB4q1Hy9lEGijv9Nr8= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -362,6 +372,7 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e h1:nFYrTHrdrAOpShe27kaFHjsqY golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190618155005-516e3c20635f h1:dHNZYIYdq2QuU6w73vZ/DzesPbVlZVYZTtTZmrnsbQ8= golang.org/x/sys v0.0.0-20190618155005-516e3c20635f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= @@ -376,6 +387,8 @@ golang.org/x/tools v0.0.0-20190618163018-fdf1049a943a/go.mod h1:/rFqwRUd4F7ZHNgw google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 h1:nn6Zav2sOQHCFJHEspya8KqxhFwKci30UxHy3HXPTyQ= diff --git a/integrations/testlogger.go b/integrations/testlogger.go index 43a1471f66040..7410d5f878b45 100644 --- a/integrations/testlogger.go +++ b/integrations/testlogger.go @@ -12,7 +12,7 @@ import ( "strings" "testing" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) var prefix string diff --git a/main.go b/main.go index 30dbf2766224c..c33a4953c2b18 100644 --- a/main.go +++ b/main.go @@ -13,7 +13,7 @@ import ( "strings" "code.gitea.io/gitea/cmd" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" // register supported doc types diff --git a/models/access.go b/models/access.go index 3cdfc62f2179f..d4b31a8f35e33 100644 --- a/models/access.go +++ b/models/access.go @@ -8,7 +8,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // AccessMode specifies the users access mode diff --git a/models/action.go b/models/action.go index ee5d052509337..a062046014533 100644 --- a/models/action.go +++ b/models/action.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/admin.go b/models/admin.go index 4480d1148050e..a965f11a33070 100644 --- a/models/admin.go +++ b/models/admin.go @@ -8,7 +8,7 @@ import ( "fmt" "os" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" "github.com/Unknwon/com" diff --git a/models/branches.go b/models/branches.go index df3b69aa21888..9143c3f47bbc6 100644 --- a/models/branches.go +++ b/models/branches.go @@ -9,7 +9,7 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/models/git_diff.go b/models/git_diff.go index a6ea7306d491f..79f10ec1eef0d 100644 --- a/models/git_diff.go +++ b/models/git_diff.go @@ -22,7 +22,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/models/gpg_key.go b/models/gpg_key.go index 8300cdbd21410..a3c2c0df706b8 100644 --- a/models/gpg_key.go +++ b/models/gpg_key.go @@ -16,7 +16,7 @@ import ( "time" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" "github.com/go-xorm/xorm" diff --git a/models/helper_directory.go b/models/helper_directory.go index 417402b41c327..58f22080ea33d 100644 --- a/models/helper_directory.go +++ b/models/helper_directory.go @@ -11,7 +11,7 @@ import ( "path/filepath" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/models/issue.go b/models/issue.go index 27298b8a86d2f..3ee2a9016e717 100644 --- a/models/issue.go +++ b/models/issue.go @@ -13,7 +13,7 @@ import ( "strings" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/issue_assignees.go b/models/issue_assignees.go index f6a2afe2c9a75..ef7482a6444d9 100644 --- a/models/issue_assignees.go +++ b/models/issue_assignees.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" api "code.gitea.io/gitea/modules/structs" "github.com/go-xorm/xorm" diff --git a/models/issue_comment.go b/models/issue_comment.go index d75d9d7db1f6e..8ca5a1058cd02 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -20,7 +20,7 @@ import ( api "code.gitea.io/gitea/modules/structs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/util" ) diff --git a/models/issue_dependency.go b/models/issue_dependency.go index ffa972c1060b1..a96575411abd3 100644 --- a/models/issue_dependency.go +++ b/models/issue_dependency.go @@ -5,7 +5,7 @@ package models import ( - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" ) diff --git a/models/issue_list.go b/models/issue_list.go index 4ddb32da1311d..ee9dbe5d26801 100644 --- a/models/issue_list.go +++ b/models/issue_list.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/builder" ) diff --git a/models/issue_mail.go b/models/issue_mail.go index 01a12b16d2a8e..db0e8a97e6481 100644 --- a/models/issue_mail.go +++ b/models/issue_mail.go @@ -10,7 +10,7 @@ import ( "github.com/Unknwon/com" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" ) diff --git a/models/issue_milestone.go b/models/issue_milestone.go index f279dda195e7d..4b4887248f144 100644 --- a/models/issue_milestone.go +++ b/models/issue_milestone.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/lfs_lock.go b/models/lfs_lock.go index a27a6f495e3d0..ebf9694a0baf9 100644 --- a/models/lfs_lock.go +++ b/models/lfs_lock.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" api "code.gitea.io/gitea/modules/structs" "github.com/go-xorm/xorm" ) diff --git a/models/log.go b/models/log.go index 38d6caf07c979..cd70c0e757d1f 100644 --- a/models/log.go +++ b/models/log.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/core" ) diff --git a/models/login_source.go b/models/login_source.go index 8eefec4ae5873..7f8a7e9aa1ab9 100644 --- a/models/login_source.go +++ b/models/login_source.go @@ -21,7 +21,7 @@ import ( "code.gitea.io/gitea/modules/auth/ldap" "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/auth/pam" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" ) diff --git a/models/mail.go b/models/mail.go index 2bb07607a4119..c3c629792eb82 100644 --- a/models/mail.go +++ b/models/mail.go @@ -11,7 +11,7 @@ import ( "path" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/mailer" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index e8fb42c492ea7..13fca1003573b 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -22,7 +22,7 @@ import ( ini "gopkg.in/ini.v1" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/models/migrations/v20.go b/models/migrations/v20.go index ded99e09ce147..3d01296d64bc8 100644 --- a/models/migrations/v20.go +++ b/models/migrations/v20.go @@ -13,7 +13,7 @@ import ( "path/filepath" "strconv" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v27.go b/models/migrations/v27.go index e87c7ab68f582..16c542377e6bd 100644 --- a/models/migrations/v27.go +++ b/models/migrations/v27.go @@ -8,7 +8,7 @@ import ( "fmt" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v28.go b/models/migrations/v28.go index a30cbf2afbe4f..c4179053c3cbe 100644 --- a/models/migrations/v28.go +++ b/models/migrations/v28.go @@ -11,7 +11,7 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v33.go b/models/migrations/v33.go index ae7612e68cdd7..f550276551c55 100644 --- a/models/migrations/v33.go +++ b/models/migrations/v33.go @@ -7,7 +7,7 @@ package migrations import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v39.go b/models/migrations/v39.go index 1312cb33134b5..b860e88f3bdf7 100644 --- a/models/migrations/v39.go +++ b/models/migrations/v39.go @@ -9,7 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v45.go b/models/migrations/v45.go index 92cb81781975c..8fd1474c6d154 100644 --- a/models/migrations/v45.go +++ b/models/migrations/v45.go @@ -5,7 +5,7 @@ package migrations import ( - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v50.go b/models/migrations/v50.go index a15914f0ee60c..ee21ffda614f9 100644 --- a/models/migrations/v50.go +++ b/models/migrations/v50.go @@ -7,7 +7,7 @@ package migrations import ( "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v51.go b/models/migrations/v51.go index 85e903bbe7d5c..a930d7afa09b7 100644 --- a/models/migrations/v51.go +++ b/models/migrations/v51.go @@ -6,7 +6,7 @@ package migrations import ( "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v61.go b/models/migrations/v61.go index 8d9b7e2d23398..fed47af836394 100644 --- a/models/migrations/v61.go +++ b/models/migrations/v61.go @@ -9,7 +9,7 @@ import ( "os" "path" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/migrations/v68.go b/models/migrations/v68.go index d9e80ca80eb4f..53d9eaf6b7e92 100644 --- a/models/migrations/v68.go +++ b/models/migrations/v68.go @@ -9,7 +9,7 @@ import ( "regexp" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v78.go b/models/migrations/v78.go index 310c479d01b74..01c102bfa1f39 100644 --- a/models/migrations/v78.go +++ b/models/migrations/v78.go @@ -8,7 +8,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-xorm/core" "github.com/go-xorm/xorm" diff --git a/models/migrations/v85.go b/models/migrations/v85.go index d511628b8d544..f113532f08672 100644 --- a/models/migrations/v85.go +++ b/models/migrations/v85.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" ) diff --git a/models/models.go b/models/models.go index 5752a8edd6dcf..166e7a6bf51f5 100644 --- a/models/models.go +++ b/models/models.go @@ -18,11 +18,13 @@ import ( "code.gitea.io/gitea/modules/setting" - // Needed for the MySQL driver - _ "github.com/go-sql-driver/mysql" + bridge "gitea.com/xorm/gitea_log_bridge" "github.com/go-xorm/core" "github.com/go-xorm/xorm" + // Needed for the MySQL driver + _ "github.com/go-sql-driver/mysql" + // Needed for the Postgresql driver _ "github.com/lib/pq" @@ -263,8 +265,7 @@ func NewTestEngine(x *xorm.Engine) (err error) { } x.SetMapper(core.GonicMapper{}) - x.SetLogger(NewXORMLogger(!setting.ProdMode)) - x.ShowSQL(!setting.ProdMode) + x.SetLogger(bridge.NewGiteaLogger("xorm", !setting.ProdMode)) return x.StoreEngine("InnoDB").Sync2(tables...) } @@ -276,15 +277,11 @@ func SetEngine() (err error) { } x.SetMapper(core.GonicMapper{}) - // WARNING: for serv command, MUST remove the output to os.stdout, - // so use log file to instead print to stdout. - x.SetLogger(NewXORMLogger(setting.LogSQL)) - x.ShowSQL(setting.LogSQL) + x.SetLogger(bridge.NewGiteaLogger("xorm", setting.LogSQL)) if DbCfg.Type == "mysql" { x.SetMaxIdleConns(0) x.SetConnMaxLifetime(3 * time.Second) } - return nil } diff --git a/models/org.go b/models/org.go index 65002eadff148..bcf378f161b3f 100644 --- a/models/org.go +++ b/models/org.go @@ -11,7 +11,7 @@ import ( "os" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/structs" "github.com/Unknwon/com" diff --git a/models/org_team.go b/models/org_team.go index dcf07437403d3..4cecbc7b917f9 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -11,7 +11,7 @@ import ( "sort" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/models/pull.go b/models/pull.go index 38976d37ecddd..3ac21f59c9427 100644 --- a/models/pull.go +++ b/models/pull.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" diff --git a/models/release.go b/models/release.go index 28a2891013582..6a046d806b4fd 100644 --- a/models/release.go +++ b/models/release.go @@ -10,7 +10,7 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" diff --git a/models/repo.go b/models/repo.go index 215222e27941b..ae27a59f9585e 100644 --- a/models/repo.go +++ b/models/repo.go @@ -27,7 +27,7 @@ import ( "code.gitea.io/gitea/modules/avatar" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/process" diff --git a/models/repo_branch.go b/models/repo_branch.go index dee6ef3d7e267..3bcc21cb379a6 100644 --- a/models/repo_branch.go +++ b/models/repo_branch.go @@ -9,7 +9,7 @@ import ( "fmt" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // CanCreateBranch returns true if repository meets the requirements for creating new branches. diff --git a/models/repo_indexer.go b/models/repo_indexer.go index 140ec66c0355c..b95ee8c016a4e 100644 --- a/models/repo_indexer.go +++ b/models/repo_indexer.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/indexer" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/ethantkoenig/rupture" diff --git a/models/repo_mirror.go b/models/repo_mirror.go index 7579231d8cf52..de14efe816fb4 100644 --- a/models/repo_mirror.go +++ b/models/repo_mirror.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/sync" diff --git a/models/repo_permission.go b/models/repo_permission.go index 25239f4dd4d6c..a9d5ffd7c0c3b 100644 --- a/models/repo_permission.go +++ b/models/repo_permission.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // Permission contains all the permissions related variables to a repository for a user diff --git a/models/repo_redirect.go b/models/repo_redirect.go index 8847a0889c424..c06c8b5799fac 100644 --- a/models/repo_redirect.go +++ b/models/repo_redirect.go @@ -5,7 +5,7 @@ package models import ( - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "strings" ) diff --git a/models/review.go b/models/review.go index 5f856fbd8973b..3228af8d4dc9f 100644 --- a/models/review.go +++ b/models/review.go @@ -7,7 +7,7 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/ssh_key.go b/models/ssh_key.go index 15a10826d8ea1..c858528f9930f 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -19,7 +19,7 @@ import ( "sync" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/models/status.go b/models/status.go index 384f5693dcf56..f17c8ce4102e5 100644 --- a/models/status.go +++ b/models/status.go @@ -10,7 +10,7 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/u2f.go b/models/u2f.go index 1224b4a5fbed9..dd9be1f9c432f 100644 --- a/models/u2f.go +++ b/models/u2f.go @@ -5,7 +5,7 @@ package models import ( - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" "github.com/tstranex/u2f" diff --git a/models/unit.go b/models/unit.go index 9f5c8d3cbbf60..2dfece0ede12d 100644 --- a/models/unit.go +++ b/models/unit.go @@ -8,7 +8,7 @@ import ( "fmt" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // UnitType is Unit's Type diff --git a/models/update.go b/models/update.go index 3eb0990d3dea9..e9939f7b7b27b 100644 --- a/models/update.go +++ b/models/update.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/util" ) diff --git a/models/user.go b/models/user.go index 4dc9aec6504f0..780471580335f 100644 --- a/models/user.go +++ b/models/user.go @@ -25,7 +25,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs" diff --git a/models/user_openid.go b/models/user_openid.go index 49edc1db218da..a3bf2003e50e4 100644 --- a/models/user_openid.go +++ b/models/user_openid.go @@ -8,7 +8,7 @@ import ( "errors" "code.gitea.io/gitea/modules/auth/openid" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) var ( diff --git a/models/webhook.go b/models/webhook.go index e3e11e59633f4..6601f0d717591 100644 --- a/models/webhook.go +++ b/models/webhook.go @@ -19,11 +19,12 @@ import ( "strings" "time" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/sync" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" + "github.com/Unknwon/com" gouuid "github.com/satori/go.uuid" ) diff --git a/models/wiki.go b/models/wiki.go index 9ae3386333298..fcf8d054a7e33 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -12,7 +12,7 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/sync" "github.com/Unknwon/com" diff --git a/modules/auth/auth.go b/modules/auth/auth.go index 2a2ee404928cb..6b91e79025202 100644 --- a/modules/auth/auth.go +++ b/modules/auth/auth.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" diff --git a/modules/auth/ldap/ldap.go b/modules/auth/ldap/ldap.go index ddeaf12430e13..b93e9ad18dd0c 100644 --- a/modules/auth/ldap/ldap.go +++ b/modules/auth/ldap/ldap.go @@ -11,7 +11,7 @@ import ( "fmt" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ldap "gopkg.in/ldap.v3" ) diff --git a/modules/auth/oauth2/oauth2.go b/modules/auth/oauth2/oauth2.go index a2d7116211cf7..9f7d0434f53ea 100644 --- a/modules/auth/oauth2/oauth2.go +++ b/modules/auth/oauth2/oauth2.go @@ -8,7 +8,7 @@ import ( "math" "net/http" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-xorm/xorm" diff --git a/modules/base/tool.go b/modules/base/tool.go index 4893abff71ddf..b51ee91f83a00 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -29,7 +29,7 @@ import ( "unicode/utf8" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/modules/context/api.go b/modules/context/api.go index 9be3fb512cf3c..7791a308c7af0 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "gopkg.in/macaron.v1" diff --git a/modules/context/auth.go b/modules/context/auth.go index 772403bda9be9..31ef6a88e80e9 100644 --- a/modules/context/auth.go +++ b/modules/context/auth.go @@ -8,7 +8,7 @@ package context import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/go-macaron/csrf" macaron "gopkg.in/macaron.v1" diff --git a/modules/context/context.go b/modules/context/context.go index b7c77ac4605ee..fe6592d4c23e0 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -17,7 +17,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "github.com/Unknwon/com" diff --git a/modules/context/panic.go b/modules/context/panic.go index 8ed91dea65f4a..b4e0e5ef8aa17 100644 --- a/modules/context/panic.go +++ b/modules/context/panic.go @@ -19,7 +19,7 @@ package context import ( "fmt" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) diff --git a/modules/context/permission.go b/modules/context/permission.go index 6ac935686b4b4..f4ba70b454f87 100644 --- a/modules/context/permission.go +++ b/modules/context/permission.go @@ -6,7 +6,7 @@ package context import ( "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) diff --git a/modules/context/repo.go b/modules/context/repo.go index 096f3c0a5d216..aebc1ba5a0579 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/modules/cron/cron.go b/modules/cron/cron.go index 24457f5013090..42548df99f0cc 100644 --- a/modules/cron/cron.go +++ b/modules/cron/cron.go @@ -10,7 +10,7 @@ import ( "github.com/gogits/cron" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/git/repo_compare.go b/modules/git/repo_compare.go index ddc81097208b6..c569afbe41ec1 100644 --- a/modules/git/repo_compare.go +++ b/modules/git/repo_compare.go @@ -14,7 +14,7 @@ import ( "strings" "time" - logger "code.gitea.io/gitea/modules/log" + logger "code.gitea.io/log" ) // CompareInfo represents needed information for comparing references. diff --git a/modules/git_log/log.go b/modules/git_log/log.go new file mode 100644 index 0000000000000..a2cf04d598cde --- /dev/null +++ b/modules/git_log/log.go @@ -0,0 +1,31 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package git_log + +import ( + "fmt" + "os" + "path" + + "code.gitea.io/log" +) + +// GitLogger logger for git +var GitLogger *log.Logger + +// NewGitLogger create a logger for git +// FIXME: use same log level as other loggers. +func NewGitLogger(logPath string) { + path := path.Dir(logPath) + + if err := os.MkdirAll(path, os.ModePerm); err != nil { + log.Fatal("Failed to create dir %s: %v", path, err) + } + + GitLogger = &log.Logger{ + MultiChannelledLog: log.NewMultiChannelledLog("git", 0), + } + GitLogger.SetLogger("file", "file", fmt.Sprintf(`{"level":"TRACE","filename":"%s","rotate":true,"maxsize":%d,"daily":true,"maxdays":7,"compress":true,"compressionLevel":-1, "stacktraceLevel":"NONE"}`, logPath, 1<<28)) +} diff --git a/modules/indexer/issues/indexer.go b/modules/indexer/issues/indexer.go index df8bfd6305912..e0822c7d4599c 100644 --- a/modules/indexer/issues/indexer.go +++ b/modules/indexer/issues/indexer.go @@ -8,7 +8,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" ) diff --git a/modules/indexer/issues/queue_disk.go b/modules/indexer/issues/queue_disk.go index e5ac2a79812ae..c4224e2ada124 100644 --- a/modules/indexer/issues/queue_disk.go +++ b/modules/indexer/issues/queue_disk.go @@ -8,7 +8,7 @@ import ( "encoding/json" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/lunny/levelqueue" ) diff --git a/modules/indexer/issues/queue_redis.go b/modules/indexer/issues/queue_redis.go index aeccd7920ce8f..d4706174daa46 100644 --- a/modules/indexer/issues/queue_redis.go +++ b/modules/indexer/issues/queue_redis.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-redis/redis" ) diff --git a/modules/indexer/repo.go b/modules/indexer/repo.go index 287d23854b2d8..1e1c998a1ce56 100644 --- a/modules/indexer/repo.go +++ b/modules/indexer/repo.go @@ -7,7 +7,7 @@ package indexer import ( "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/blevesearch/bleve" diff --git a/modules/lfs/locks.go b/modules/lfs/locks.go index 4516ba01aee53..98ccf7d54aabd 100644 --- a/modules/lfs/locks.go +++ b/modules/lfs/locks.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" ) diff --git a/modules/lfs/server.go b/modules/lfs/server.go index bf5355acfc3b1..5c031dcf69000 100644 --- a/modules/lfs/server.go +++ b/modules/lfs/server.go @@ -14,7 +14,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/dgrijalva/jwt-go" diff --git a/modules/log/conn_test.go b/modules/log/conn_test.go deleted file mode 100644 index cc3d758fa98f9..0000000000000 --- a/modules/log/conn_test.go +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "io/ioutil" - "net" - "strings" - "sync" - "testing" - "time" - - "github.com/stretchr/testify/assert" -) - -func listenReadAndClose(t *testing.T, l net.Listener, expected string) { - conn, err := l.Accept() - assert.NoError(t, err) - defer conn.Close() - written, err := ioutil.ReadAll(conn) - - assert.NoError(t, err) - assert.Equal(t, expected, string(written)) -} - -func TestConnLogger(t *testing.T) { - var written []byte - - protocol := "tcp" - address := ":3099" - - l, err := net.Listen(protocol, address) - if err != nil { - t.Fatal(err) - } - defer l.Close() - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - - logger := NewConn() - connLogger := logger.(*ConnLogger) - - logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"reconnectOnMsg\":%t,\"reconnect\":%t,\"net\":\"%s\",\"addr\":\"%s\"}", prefix, level.String(), flags, true, true, protocol, address)) - - assert.Equal(t, flags, connLogger.Flags) - assert.Equal(t, level, connLogger.Level) - assert.Equal(t, level, logger.GetLevel()) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - var wg sync.WaitGroup - wg.Add(2) - go func() { - defer wg.Done() - listenReadAndClose(t, l, expected) - }() - go func() { - defer wg.Done() - err := logger.LogEvent(&event) - assert.NoError(t, err) - }() - wg.Wait() - - written = written[:0] - - event.level = WARN - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - wg.Add(2) - go func() { - defer wg.Done() - listenReadAndClose(t, l, expected) - }() - go func() { - defer wg.Done() - err := logger.LogEvent(&event) - assert.NoError(t, err) - }() - wg.Wait() - - logger.Close() -} - -func TestConnLoggerBadConfig(t *testing.T) { - logger := NewConn() - - err := logger.Init("{") - assert.Equal(t, "unexpected end of JSON input", err.Error()) - logger.Close() -} - -func TestConnLoggerCloseBeforeSend(t *testing.T) { - protocol := "tcp" - address := ":3099" - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - - logger := NewConn() - - logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"reconnectOnMsg\":%t,\"reconnect\":%t,\"net\":\"%s\",\"addr\":\"%s\"}", prefix, level.String(), flags, false, false, protocol, address)) - logger.Close() -} - -func TestConnLoggerFailConnect(t *testing.T) { - protocol := "tcp" - address := ":3099" - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - - logger := NewConn() - - logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"reconnectOnMsg\":%t,\"reconnect\":%t,\"net\":\"%s\",\"addr\":\"%s\"}", prefix, level.String(), flags, false, false, protocol, address)) - - assert.Equal(t, level, logger.GetLevel()) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - //dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - err := logger.LogEvent(&event) - assert.Error(t, err) - - logger.Close() -} - -func TestConnLoggerClose(t *testing.T) { - var written []byte - - protocol := "tcp" - address := ":3099" - - l, err := net.Listen(protocol, address) - if err != nil { - t.Fatal(err) - } - defer l.Close() - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - - logger := NewConn() - connLogger := logger.(*ConnLogger) - - logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"reconnectOnMsg\":%t,\"reconnect\":%t,\"net\":\"%s\",\"addr\":\"%s\"}", prefix, level.String(), flags, false, false, protocol, address)) - - assert.Equal(t, flags, connLogger.Flags) - assert.Equal(t, level, connLogger.Level) - assert.Equal(t, level, logger.GetLevel()) - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - var wg sync.WaitGroup - wg.Add(2) - go func() { - defer wg.Done() - err := logger.LogEvent(&event) - assert.NoError(t, err) - logger.Close() - }() - go func() { - defer wg.Done() - listenReadAndClose(t, l, expected) - }() - wg.Wait() - - logger = NewConn() - connLogger = logger.(*ConnLogger) - - logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"reconnectOnMsg\":%t,\"reconnect\":%t,\"net\":\"%s\",\"addr\":\"%s\"}", prefix, level.String(), flags, false, true, protocol, address)) - - assert.Equal(t, flags, connLogger.Flags) - assert.Equal(t, level, connLogger.Level) - assert.Equal(t, level, logger.GetLevel()) - - written = written[:0] - - event.level = WARN - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - wg.Add(2) - go func() { - defer wg.Done() - listenReadAndClose(t, l, expected) - }() - go func() { - defer wg.Done() - err := logger.LogEvent(&event) - assert.NoError(t, err) - logger.Close() - - }() - wg.Wait() - logger.Flush() - logger.Close() -} diff --git a/modules/log/console_test.go b/modules/log/console_test.go deleted file mode 100644 index a028b5b875ef2..0000000000000 --- a/modules/log/console_test.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/assert" -) - -func TestConsoleLoggerBadConfig(t *testing.T) { - logger := NewConsoleLogger() - - err := logger.Init("{") - assert.Equal(t, "unexpected end of JSON input", err.Error()) - logger.Close() -} - -func TestConsoleLoggerMinimalConfig(t *testing.T) { - for _, level := range Levels() { - var written []byte - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written = p - closed = close - }, - } - prefix := "" - flags := LstdFlags - - cw := NewConsoleLogger() - realCW := cw.(*ConsoleLogger) - cw.Init(fmt.Sprintf("{\"level\":\"%s\"}", level)) - nwc := realCW.out.(*nopWriteCloser) - nwc.w = c - - assert.Equal(t, flags, realCW.Flags) - assert.Equal(t, FromString(level), realCW.Level) - assert.Equal(t, FromString(level), cw.GetLevel()) - assert.Equal(t, prefix, realCW.Prefix) - assert.Equal(t, "", string(written)) - cw.Close() - assert.Equal(t, false, closed) - - } -} - -func TestConsoleLogger(t *testing.T) { - var written []byte - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written = p - closed = close - }, - } - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - - cw := NewConsoleLogger() - realCW := cw.(*ConsoleLogger) - realCW.Colorize = false - nwc := realCW.out.(*nopWriteCloser) - nwc.w = c - - cw.Init(fmt.Sprintf("{\"expression\":\"FILENAME\",\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d}", prefix, level.String(), flags)) - - assert.Equal(t, flags, realCW.Flags) - assert.Equal(t, level, realCW.Level) - assert.Equal(t, level, cw.GetLevel()) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - cw.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = DEBUG - expected = "" - cw.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - - event.level = TRACE - expected = "" - cw.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - - nonMatchEvent := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FI_LENAME", - line: 1, - time: date, - } - event.level = INFO - expected = "" - cw.LogEvent(&nonMatchEvent) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - - event.level = WARN - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - cw.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - cw.Close() - assert.Equal(t, false, closed) -} diff --git a/modules/log/file_test.go b/modules/log/file_test.go deleted file mode 100644 index 38279315ab363..0000000000000 --- a/modules/log/file_test.go +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "compress/gzip" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/assert" -) - -func TestFileLoggerFails(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "TestFileLogger") - assert.NoError(t, err) - defer os.RemoveAll(tmpDir) - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - //filename := filepath.Join(tmpDir, "test.log") - - fileLogger := NewFileLogger() - //realFileLogger, ok := fileLogger.(*FileLogger) - //assert.Equal(t, true, ok) - - // Fail if there is bad json - err = fileLogger.Init("{") - assert.Error(t, err) - - // Fail if there is no filename - err = fileLogger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"filename\":\"%s\"}", prefix, level.String(), flags, "")) - assert.Error(t, err) - - // Fail if the file isn't a filename - err = fileLogger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"filename\":\"%s\"}", prefix, level.String(), flags, filepath.ToSlash(tmpDir))) - assert.Error(t, err) - -} - -func TestFileLogger(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "TestFileLogger") - assert.NoError(t, err) - defer os.RemoveAll(tmpDir) - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - filename := filepath.Join(tmpDir, "test.log") - - fileLogger := NewFileLogger() - realFileLogger, ok := fileLogger.(*FileLogger) - assert.Equal(t, true, ok) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - - fileLogger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"filename\":\"%s\",\"maxsize\":%d,\"compress\":false}", prefix, level.String(), flags, filepath.ToSlash(filename), len(expected)*2)) - - assert.Equal(t, flags, realFileLogger.Flags) - assert.Equal(t, level, realFileLogger.Level) - assert.Equal(t, level, fileLogger.GetLevel()) - - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err := ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - event.level = DEBUG - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - event.level = TRACE - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - event.level = WARN - expected += fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - // Should rotate - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename + fmt.Sprintf(".%s.%03d", time.Now().Format("2006-01-02"), 1)) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - assert.Equal(t, expected, string(logData)) - - for num := 2; num <= 999; num++ { - file, err := os.OpenFile(filename+fmt.Sprintf(".%s.%03d", time.Now().Format("2006-01-02"), num), os.O_RDONLY|os.O_CREATE, 0666) - assert.NoError(t, err) - file.Close() - } - err = realFileLogger.DoRotate() - assert.Error(t, err) - - expected += fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - // Should fail to rotate - expected += fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - fileLogger.Close() -} - -func TestCompressFileLogger(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "TestFileLogger") - assert.NoError(t, err) - defer os.RemoveAll(tmpDir) - - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - filename := filepath.Join(tmpDir, "test.log") - - fileLogger := NewFileLogger() - realFileLogger, ok := fileLogger.(*FileLogger) - assert.Equal(t, true, ok) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - - fileLogger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"filename\":\"%s\",\"maxsize\":%d,\"compress\":true}", prefix, level.String(), flags, filepath.ToSlash(filename), len(expected)*2)) - - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err := ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - event.level = WARN - expected += fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - fileLogger.LogEvent(&event) - fileLogger.Flush() - logData, err = ioutil.ReadFile(filename) - assert.NoError(t, err) - assert.Equal(t, expected, string(logData)) - - // Should rotate - fileLogger.LogEvent(&event) - fileLogger.Flush() - - for num := 2; num <= 999; num++ { - file, err := os.OpenFile(filename+fmt.Sprintf(".%s.%03d.gz", time.Now().Format("2006-01-02"), num), os.O_RDONLY|os.O_CREATE, 0666) - assert.NoError(t, err) - file.Close() - } - err = realFileLogger.DoRotate() - assert.Error(t, err) -} - -func TestCompressOldFile(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "TestFileLogger") - assert.NoError(t, err) - defer os.RemoveAll(tmpDir) - fname := filepath.Join(tmpDir, "test") - nonGzip := filepath.Join(tmpDir, "test-nonGzip") - - f, err := os.OpenFile(fname, os.O_CREATE|os.O_WRONLY, 0660) - assert.NoError(t, err) - ng, err := os.OpenFile(nonGzip, os.O_CREATE|os.O_WRONLY, 0660) - assert.NoError(t, err) - - for i := 0; i < 999; i++ { - f.WriteString("This is a test file\n") - ng.WriteString("This is a test file\n") - } - f.Close() - ng.Close() - - err = compressOldLogFile(fname, -1) - assert.NoError(t, err) - - _, err = os.Lstat(fname + ".gz") - assert.NoError(t, err) - - f, err = os.Open(fname + ".gz") - assert.NoError(t, err) - zr, err := gzip.NewReader(f) - assert.NoError(t, err) - data, err := ioutil.ReadAll(zr) - assert.NoError(t, err) - original, err := ioutil.ReadFile(nonGzip) - assert.NoError(t, err) - assert.Equal(t, original, data) -} diff --git a/modules/log/level_test.go b/modules/log/level_test.go deleted file mode 100644 index 40f6310bfda5a..0000000000000 --- a/modules/log/level_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "encoding/json" - "fmt" - "testing" - - "github.com/stretchr/testify/assert" -) - -type testLevel struct { - Level Level `json:"level"` -} - -func TestLevelMarshalUnmarshalJSON(t *testing.T) { - levelBytes, err := json.Marshal(testLevel{ - Level: INFO, - }) - assert.NoError(t, err) - assert.Equal(t, string(makeTestLevelBytes(INFO.String())), string(levelBytes)) - - var testLevel testLevel - err = json.Unmarshal(levelBytes, &testLevel) - assert.NoError(t, err) - assert.Equal(t, INFO, testLevel.Level) - - err = json.Unmarshal(makeTestLevelBytes(`FOFOO`), &testLevel) - assert.NoError(t, err) - assert.Equal(t, INFO, testLevel.Level) - - err = json.Unmarshal([]byte(fmt.Sprintf(`{"level":%d}`, 2)), &testLevel) - assert.NoError(t, err) - assert.Equal(t, INFO, testLevel.Level) - - err = json.Unmarshal([]byte(fmt.Sprintf(`{"level":%d}`, 10012)), &testLevel) - assert.NoError(t, err) - assert.Equal(t, INFO, testLevel.Level) - - err = json.Unmarshal([]byte(`{"level":{}}`), &testLevel) - assert.NoError(t, err) - assert.Equal(t, INFO, testLevel.Level) - - assert.Equal(t, INFO.String(), Level(1001).String()) - - err = json.Unmarshal([]byte(`{"level":{}`), &testLevel.Level) - assert.Error(t, err) -} - -func makeTestLevelBytes(level string) []byte { - return []byte(fmt.Sprintf(`{"level":"%s"}`, level)) -} diff --git a/modules/log/log_test.go b/modules/log/log_test.go deleted file mode 100644 index 9e3d7527b23dc..0000000000000 --- a/modules/log/log_test.go +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/assert" -) - -func baseConsoleTest(t *testing.T, logger *Logger) (chan []byte, chan bool) { - written := make(chan []byte) - closed := make(chan bool) - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written <- p - closed <- close - }, - } - m := logger.MultiChannelledLog - - channelledLog := m.GetEventLogger("console") - assert.NotEmpty(t, channelledLog) - realChanLog, ok := channelledLog.(*ChannelledLog) - assert.Equal(t, true, ok) - realCL, ok := realChanLog.loggerProvider.(*ConsoleLogger) - assert.Equal(t, true, ok) - assert.Equal(t, INFO, realCL.Level) - realCL.out = c - - format := "test: %s" - args := []interface{}{"A"} - - logger.Log(0, INFO, format, args...) - line := <-written - assert.Contains(t, string(line), fmt.Sprintf(format, args...)) - assert.Equal(t, false, <-closed) - - format = "test2: %s" - logger.Warn(format, args...) - line = <-written - - assert.Contains(t, string(line), fmt.Sprintf(format, args...)) - assert.Equal(t, false, <-closed) - - format = "testerror: %s" - logger.Error(format, args...) - line = <-written - assert.Contains(t, string(line), fmt.Sprintf(format, args...)) - assert.Equal(t, false, <-closed) - return written, closed -} - -func TestNewLoggerUnexported(t *testing.T) { - level := INFO - logger := newLogger("UNEXPORTED", 0) - err := logger.SetLogger("console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String())) - assert.NoError(t, err) - out := logger.MultiChannelledLog.GetEventLogger("console") - assert.NotEmpty(t, out) - chanlog, ok := out.(*ChannelledLog) - assert.Equal(t, true, ok) - assert.Equal(t, "console", chanlog.provider) - assert.Equal(t, INFO, logger.GetLevel()) - baseConsoleTest(t, logger) -} - -func TestNewLoggger(t *testing.T) { - level := INFO - logger := NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String())) - - assert.Equal(t, INFO, GetLevel()) - assert.Equal(t, false, IsTrace()) - assert.Equal(t, false, IsDebug()) - assert.Equal(t, true, IsInfo()) - assert.Equal(t, true, IsWarn()) - assert.Equal(t, true, IsError()) - - written, closed := baseConsoleTest(t, logger) - - format := "test: %s" - args := []interface{}{"A"} - - Log(0, INFO, format, args...) - line := <-written - assert.Contains(t, string(line), fmt.Sprintf(format, args...)) - assert.Equal(t, false, <-closed) - - Info(format, args...) - line = <-written - assert.Contains(t, string(line), fmt.Sprintf(format, args...)) - assert.Equal(t, false, <-closed) - - go DelLogger("console") - line = <-written - assert.Equal(t, "", string(line)) - assert.Equal(t, true, <-closed) -} - -func TestNewLogggerRecreate(t *testing.T) { - level := INFO - NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String())) - - assert.Equal(t, INFO, GetLevel()) - assert.Equal(t, false, IsTrace()) - assert.Equal(t, false, IsDebug()) - assert.Equal(t, true, IsInfo()) - assert.Equal(t, true, IsWarn()) - assert.Equal(t, true, IsError()) - - format := "test: %s" - args := []interface{}{"A"} - - Log(0, INFO, format, args...) - - NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String())) - - assert.Equal(t, INFO, GetLevel()) - assert.Equal(t, false, IsTrace()) - assert.Equal(t, false, IsDebug()) - assert.Equal(t, true, IsInfo()) - assert.Equal(t, true, IsWarn()) - assert.Equal(t, true, IsError()) - - Log(0, INFO, format, args...) - - assert.Panics(t, func() { - NewLogger(0, "console", "console", fmt.Sprintf(`{"level":"%s"`, level.String())) - }) - - go DelLogger("console") - - // We should be able to redelete without a problem - go DelLogger("console") - -} - -func TestNewNamedLogger(t *testing.T) { - level := INFO - err := NewNamedLogger("test", 0, "console", "console", fmt.Sprintf(`{"level":"%s"}`, level.String())) - assert.NoError(t, err) - logger := NamedLoggers["test"] - assert.Equal(t, level, logger.GetLevel()) - - written, closed := baseConsoleTest(t, logger) - go DelNamedLogger("test") - line := <-written - assert.Equal(t, "", string(line)) - assert.Equal(t, true, <-closed) -} diff --git a/modules/log/smtp_test.go b/modules/log/smtp_test.go deleted file mode 100644 index 216d55521549a..0000000000000 --- a/modules/log/smtp_test.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "net/smtp" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/assert" -) - -func TestSMTPLogger(t *testing.T) { - prefix := "TestPrefix " - level := INFO - flags := LstdFlags | LUTC | Lfuncname - username := "testuser" - password := "testpassword" - host := "testhost" - subject := "testsubject" - sendTos := []string{"testto1", "testto2"} - - logger := NewSMTPLogger() - smtpLogger, ok := logger.(*SMTPLogger) - assert.Equal(t, true, ok) - - err := logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"username\":\"%s\",\"password\":\"%s\",\"host\":\"%s\",\"subject\":\"%s\",\"sendTos\":[\"%s\",\"%s\"]}", prefix, level.String(), flags, username, password, host, subject, sendTos[0], sendTos[1])) - assert.NoError(t, err) - - assert.Equal(t, flags, smtpLogger.Flags) - assert.Equal(t, level, smtpLogger.Level) - assert.Equal(t, level, logger.GetLevel()) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - - var envToHost string - var envFrom string - var envTo []string - var envMsg []byte - smtpLogger.sendMailFn = func(addr string, a smtp.Auth, from string, to []string, msg []byte) error { - envToHost = addr - envFrom = from - envTo = to - envMsg = msg - return nil - } - - err = logger.LogEvent(&event) - assert.NoError(t, err) - assert.Equal(t, host, envToHost) - assert.Equal(t, username, envFrom) - assert.Equal(t, sendTos, envTo) - assert.Contains(t, string(envMsg), expected) - - logger.Flush() - - event.level = WARN - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - err = logger.LogEvent(&event) - assert.NoError(t, err) - assert.Equal(t, host, envToHost) - assert.Equal(t, username, envFrom) - assert.Equal(t, sendTos, envTo) - assert.Contains(t, string(envMsg), expected) - - logger.Close() -} diff --git a/modules/log/writer_test.go b/modules/log/writer_test.go deleted file mode 100644 index 886dd58fb38fd..0000000000000 --- a/modules/log/writer_test.go +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/assert" -) - -type CallbackWriteCloser struct { - callback func([]byte, bool) -} - -func (c CallbackWriteCloser) Write(p []byte) (int, error) { - c.callback(p, false) - return len(p), nil -} - -func (c CallbackWriteCloser) Close() error { - c.callback(nil, true) - return nil -} - -func TestBaseLogger(t *testing.T) { - var written []byte - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written = p - closed = close - }, - } - prefix := "TestPrefix " - b := WriterLogger{ - out: c, - Level: INFO, - Flags: LstdFlags | LUTC, - Prefix: prefix, - } - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) - - dateString := date.UTC().Format("2006/01/02 15:04:05") - - event := Event{ - level: INFO, - msg: "TEST MSG", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - assert.Equal(t, INFO, b.GetLevel()) - - expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = DEBUG - expected = "" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - - event.level = TRACE - expected = "" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - - event.level = WARN - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = ERROR - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = CRITICAL - expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - b.Close() - assert.Equal(t, true, closed) -} - -func TestBaseLoggerDated(t *testing.T) { - var written []byte - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written = p - closed = close - }, - } - prefix := "" - b := WriterLogger{ - out: c, - Level: WARN, - Flags: Ldate | Ltime | Lmicroseconds | Lshortfile | Llevel, - Prefix: prefix, - } - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 115, location) - - dateString := date.Format("2006/01/02 15:04:05.000000") - - event := Event{ - level: WARN, - msg: "TEST MESSAGE TEST\n", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - assert.Equal(t, WARN, b.GetLevel()) - - expected := fmt.Sprintf("%s%s %s:%d [%s] %s", prefix, dateString, "FILENAME", event.line, strings.ToUpper(event.level.String()), event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = INFO - expected = "" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = ERROR - expected = fmt.Sprintf("%s%s %s:%d [%s] %s", prefix, dateString, "FILENAME", event.line, strings.ToUpper(event.level.String()), event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = DEBUG - expected = "" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = CRITICAL - expected = fmt.Sprintf("%s%s %s:%d [%s] %s", prefix, dateString, "FILENAME", event.line, strings.ToUpper(event.level.String()), event.msg) - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.level = TRACE - expected = "" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - b.Close() - assert.Equal(t, true, closed) -} - -func TestBaseLoggerMultiLineNoFlagsRegexp(t *testing.T) { - var written []byte - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - written = p - closed = close - }, - } - prefix := "" - b := WriterLogger{ - Level: DEBUG, - StacktraceLevel: ERROR, - Flags: -1, - Prefix: prefix, - Expression: "FILENAME", - } - b.NewWriterLogger(c) - - location, _ := time.LoadLocation("EST") - - date := time.Date(2019, time.January, 13, 22, 3, 30, 115, location) - - event := Event{ - level: DEBUG, - msg: "TEST\nMESSAGE\nTEST", - caller: "CALLER", - filename: "FULL/FILENAME", - line: 1, - time: date, - } - - assert.Equal(t, DEBUG, b.GetLevel()) - - expected := "TEST\n\tMESSAGE\n\tTEST\n" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.filename = "ELSEWHERE" - - b.LogEvent(&event) - assert.Equal(t, "", string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event.caller = "FILENAME" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - - event = Event{ - level: DEBUG, - msg: "TEST\nFILENAME\nTEST", - caller: "CALLER", - filename: "FULL/ELSEWHERE", - line: 1, - time: date, - } - expected = "TEST\n\tFILENAME\n\tTEST\n" - b.LogEvent(&event) - assert.Equal(t, expected, string(written)) - assert.Equal(t, false, closed) - written = written[:0] - -} - -func TestBrokenRegexp(t *testing.T) { - var closed bool - - c := CallbackWriteCloser{ - callback: func(p []byte, close bool) { - closed = close - }, - } - - b := WriterLogger{ - Level: DEBUG, - StacktraceLevel: ERROR, - Flags: -1, - Prefix: prefix, - Expression: "\\", - } - b.NewWriterLogger(c) - assert.Empty(t, b.regexp) - b.Close() - assert.Equal(t, true, closed) -} diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go index d19ae7b2f42ee..2baca8fce9351 100644 --- a/modules/mailer/mailer.go +++ b/modules/mailer/mailer.go @@ -18,7 +18,7 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/jaytaylor/html2text" diff --git a/modules/markup/external/external.go b/modules/markup/external/external.go index 02cf61be16198..18bce3ebff7a0 100644 --- a/modules/markup/external/external.go +++ b/modules/markup/external/external.go @@ -13,7 +13,7 @@ import ( "runtime" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/markup/markup.go b/modules/markup/markup.go index dc43b533c022a..9e42e4962144c 100644 --- a/modules/markup/markup.go +++ b/modules/markup/markup.go @@ -8,7 +8,7 @@ import ( "path/filepath" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // Init initialize regexps for markdown parsing diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index f63155201ed9c..43caf6c941e09 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -5,7 +5,7 @@ package markup import ( - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" diff --git a/modules/migrations/gitea.go b/modules/migrations/gitea.go index 4e930fa8318ab..313bc2dd710b1 100644 --- a/modules/migrations/gitea.go +++ b/modules/migrations/gitea.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/modules/migrations/github.go b/modules/migrations/github.go index 6847787aceff9..412cf30b40818 100644 --- a/modules/migrations/github.go +++ b/modules/migrations/github.go @@ -12,7 +12,7 @@ import ( "net/url" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/migrations/base" "github.com/google/go-github/v24/github" diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 4b1229f9495c0..6661446760489 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -9,7 +9,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/migrations/base" ) diff --git a/modules/notification/indexer/indexer.go b/modules/notification/indexer/indexer.go index 66614b2c20c7e..316a1fb017c4e 100644 --- a/modules/notification/indexer/indexer.go +++ b/modules/notification/indexer/indexer.go @@ -7,7 +7,7 @@ package indexer import ( "code.gitea.io/gitea/models" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification/base" ) diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go index 9d0db4f415197..3ed68d7623d05 100644 --- a/modules/notification/mail/mail.go +++ b/modules/notification/mail/mail.go @@ -6,7 +6,7 @@ package mail import ( "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification/base" ) diff --git a/modules/notification/ui/ui.go b/modules/notification/ui/ui.go index 22089158f5b72..19f652eb795a9 100644 --- a/modules/notification/ui/ui.go +++ b/modules/notification/ui/ui.go @@ -7,7 +7,7 @@ package ui import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification/base" ) diff --git a/modules/pprof/pprof.go b/modules/pprof/pprof.go index 80ad67be3a81b..782b0dcb8b15c 100644 --- a/modules/pprof/pprof.go +++ b/modules/pprof/pprof.go @@ -10,7 +10,7 @@ import ( "runtime" "runtime/pprof" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // DumpMemProfileForUsername dumps a memory profile at pprofDataPath as memprofile__ diff --git a/modules/private/branch.go b/modules/private/branch.go new file mode 100644 index 0000000000000..64ae3cdf88568 --- /dev/null +++ b/modules/private/branch.go @@ -0,0 +1,67 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package private + +import ( + "encoding/json" + "fmt" + + "code.gitea.io/gitea/models" + log "code.gitea.io/gitea/modules/git_log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" +) + +// GetProtectedBranchBy get protected branch information +func GetProtectedBranchBy(repoID int64, branchName string) (*models.ProtectedBranch, error) { + // Ask for running deliver hook and test pull request tasks. + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/branch/%d/%s", repoID, util.PathEscapeSegments(branchName)) + log.GitLogger.Trace("GetProtectedBranchBy: %s", reqURL) + + resp, err := newInternalRequest(reqURL, "GET").Response() + if err != nil { + return nil, err + } + + var branch models.ProtectedBranch + if err := json.NewDecoder(resp.Body).Decode(&branch); err != nil { + return nil, err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return nil, fmt.Errorf("Failed to get protected branch: %s", decodeJSONError(resp).Err) + } + + return &branch, nil +} + +// CanUserPush returns if user can push +func CanUserPush(protectedBranchID, userID int64) (bool, error) { + // Ask for running deliver hook and test pull request tasks. + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/protectedbranch/%d/%d", protectedBranchID, userID) + log.GitLogger.Trace("CanUserPush: %s", reqURL) + + resp, err := newInternalRequest(reqURL, "GET").Response() + if err != nil { + return false, err + } + + var canPush = make(map[string]interface{}) + if err := json.NewDecoder(resp.Body).Decode(&canPush); err != nil { + return false, err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return false, fmt.Errorf("Failed to retrieve push user: %s", decodeJSONError(resp).Err) + } + + return canPush["can_push"].(bool), nil +} diff --git a/modules/private/push_update.go b/modules/private/push_update.go new file mode 100644 index 0000000000000..0e294d781ca46 --- /dev/null +++ b/modules/private/push_update.go @@ -0,0 +1,40 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package private + +import ( + "encoding/json" + "fmt" + + "code.gitea.io/gitea/models" + log "code.gitea.io/gitea/modules/git_log" + "code.gitea.io/gitea/modules/setting" +) + +// PushUpdate update publick key updates +func PushUpdate(opt models.PushUpdateOptions) error { + // Ask for running deliver hook and test pull request tasks. + reqURL := setting.LocalURL + "api/internal/push/update" + log.GitLogger.Trace("PushUpdate: %s", reqURL) + + body, err := json.Marshal(&opt) + if err != nil { + return err + } + + resp, err := newInternalRequest(reqURL, "POST").Body(body).Response() + if err != nil { + return err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return fmt.Errorf("Failed to update public key: %s", decodeJSONError(resp).Err) + } + + return nil +} diff --git a/modules/private/repository.go b/modules/private/repository.go new file mode 100644 index 0000000000000..5a74f1a6a3dc3 --- /dev/null +++ b/modules/private/repository.go @@ -0,0 +1,68 @@ +// Copyright 2018 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package private + +import ( + "encoding/json" + "fmt" + "net/url" + + "code.gitea.io/gitea/models" + log "code.gitea.io/gitea/modules/git_log" + "code.gitea.io/gitea/modules/setting" +) + +// GetRepository return the repository by its ID and a bool about if it's allowed to have PR +func GetRepository(repoID int64) (*models.Repository, bool, error) { + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repository/%d", repoID) + log.GitLogger.Trace("GetRepository: %s", reqURL) + + resp, err := newInternalRequest(reqURL, "GET").Response() + if err != nil { + return nil, false, err + } + + var repoInfo struct { + Repository *models.Repository + AllowPullRequest bool + } + if err := json.NewDecoder(resp.Body).Decode(&repoInfo); err != nil { + return nil, false, err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return nil, false, fmt.Errorf("failed to retrieve repository: %s", decodeJSONError(resp).Err) + } + + return repoInfo.Repository, repoInfo.AllowPullRequest, nil +} + +// ActivePullRequest returns an active pull request if it exists +func ActivePullRequest(baseRepoID int64, headRepoID int64, baseBranch, headBranch string) (*models.PullRequest, error) { + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/active-pull-request?baseRepoID=%d&headRepoID=%d&baseBranch=%s&headBranch=%s", baseRepoID, headRepoID, url.QueryEscape(baseBranch), url.QueryEscape(headBranch)) + log.GitLogger.Trace("ActivePullRequest: %s", reqURL) + + resp, err := newInternalRequest(reqURL, "GET").Response() + if err != nil { + return nil, err + } + + var pr *models.PullRequest + if err := json.NewDecoder(resp.Body).Decode(&pr); err != nil { + return nil, err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return nil, fmt.Errorf("failed to retrieve pull request: %s", decodeJSONError(resp).Err) + } + + return pr, nil +} diff --git a/modules/private/wiki.go b/modules/private/wiki.go new file mode 100644 index 0000000000000..ac4d54d26e82a --- /dev/null +++ b/modules/private/wiki.go @@ -0,0 +1,33 @@ +// Copyright 2018 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package private + +import ( + "fmt" + + log "code.gitea.io/gitea/modules/git_log" + "code.gitea.io/gitea/modules/setting" +) + +// InitWiki initwiki via repo id +func InitWiki(repoID int64) error { + // Ask for running deliver hook and test pull request tasks. + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/wiki/init", repoID) + log.GitLogger.Trace("InitWiki: %s", reqURL) + + resp, err := newInternalRequest(reqURL, "GET").Response() + if err != nil { + return err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return fmt.Errorf("Failed to init wiki: %s", decodeJSONError(resp).Err) + } + + return nil +} diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index ec35628676fcf..195f5a4050348 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -17,7 +17,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index f011017a5e87a..4e9a92c1b35e1 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -17,7 +17,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" ) diff --git a/modules/setting/cache.go b/modules/setting/cache.go index babb62baeae14..84508c54a9f4a 100644 --- a/modules/setting/cache.go +++ b/modules/setting/cache.go @@ -8,7 +8,7 @@ import ( "strings" "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // Cache represents cache settings diff --git a/modules/setting/cors.go b/modules/setting/cors.go index c1c3bfb813499..4d2ff3314493e 100644 --- a/modules/setting/cors.go +++ b/modules/setting/cors.go @@ -7,7 +7,7 @@ package setting import ( "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/go-macaron/cors" ) diff --git a/modules/setting/cron.go b/modules/setting/cron.go index c544c6c22878e..2162f47e535bd 100644 --- a/modules/setting/cron.go +++ b/modules/setting/cron.go @@ -7,7 +7,7 @@ package setting import ( "time" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) var ( diff --git a/modules/setting/git.go b/modules/setting/git.go index 4163f1039d4ee..26753f53f09a6 100644 --- a/modules/setting/git.go +++ b/modules/setting/git.go @@ -8,7 +8,7 @@ import ( "time" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" version "github.com/mcuadros/go-version" ) diff --git a/modules/setting/log.go b/modules/setting/log.go index 5e2d2d769d701..0500ab517ccdf 100644 --- a/modules/setting/log.go +++ b/modules/setting/log.go @@ -12,7 +12,7 @@ import ( "path/filepath" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ini "gopkg.in/ini.v1" ) diff --git a/modules/setting/mailer.go b/modules/setting/mailer.go index 3101ed54528ba..b40a281da0453 100644 --- a/modules/setting/mailer.go +++ b/modules/setting/mailer.go @@ -7,7 +7,7 @@ package setting import ( "net/mail" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" shellquote "github.com/kballard/go-shellquote" ) diff --git a/modules/setting/markup.go b/modules/setting/markup.go index 41f3cdd3a199d..57f807509e8db 100644 --- a/modules/setting/markup.go +++ b/modules/setting/markup.go @@ -8,7 +8,7 @@ import ( "regexp" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // ExternalMarkupParsers represents the external markup parsers diff --git a/modules/setting/repository.go b/modules/setting/repository.go index 98e3d6e82624d..dbcd08456a79e 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -9,7 +9,7 @@ import ( "path/filepath" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/modules/setting/session.go b/modules/setting/session.go index 313c3c76b5a47..80a85b82cfc6e 100644 --- a/modules/setting/session.go +++ b/modules/setting/session.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" // This ensures that VirtualSessionProvider is available _ "code.gitea.io/gitea/modules/session" diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 43a61aa7faeed..00094f108d0e1 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -23,7 +23,7 @@ import ( "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" _ "code.gitea.io/gitea/modules/minwinsvc" // import minwinsvc for windows services "code.gitea.io/gitea/modules/user" diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go index c5251ef23aca1..9e975c1285da5 100644 --- a/modules/ssh/ssh.go +++ b/modules/ssh/ssh.go @@ -22,7 +22,7 @@ import ( "golang.org/x/crypto/ssh" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go index d7c04ccb09d8d..9f1aafa1afe5e 100644 --- a/modules/templates/dynamic.go +++ b/modules/templates/dynamic.go @@ -12,7 +12,7 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" "gopkg.in/macaron.v1" diff --git a/modules/templates/helper.go b/modules/templates/helper.go index c4551bb4be4da..8efac4a772f26 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -24,7 +24,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" diff --git a/modules/templates/static.go b/modules/templates/static.go index 3aabe17e4fcb0..0dd8f79608cae 100644 --- a/modules/templates/static.go +++ b/modules/templates/static.go @@ -15,7 +15,7 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" "gopkg.in/macaron.v1" diff --git a/modules/util/url.go b/modules/util/url.go index 263255fcd3d6d..0705682506f6f 100644 --- a/modules/util/url.go +++ b/modules/util/url.go @@ -9,7 +9,7 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/admin/auths.go b/routers/admin/auths.go index 40b7df108d9b5..63f62f3780e1f 100644 --- a/routers/admin/auths.go +++ b/routers/admin/auths.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/routers/admin/notice.go b/routers/admin/notice.go index d2c067c143bfd..c0a904a979ed7 100644 --- a/routers/admin/notice.go +++ b/routers/admin/notice.go @@ -9,7 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/routers/admin/repos.go b/routers/admin/repos.go index d345c8e76ab03..0f0a6b5e76518 100644 --- a/routers/admin/repos.go +++ b/routers/admin/repos.go @@ -8,7 +8,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" ) diff --git a/routers/admin/users.go b/routers/admin/users.go index 8a99de01c207b..0a21b091ca86f 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" ) diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go index 6dc3b0325b1e9..968a7ff34e2e2 100644 --- a/routers/api/v1/admin/user.go +++ b/routers/api/v1/admin/user.go @@ -8,7 +8,7 @@ package admin import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/convert" diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 2268c1be38e05..38c2bcfa9330e 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -63,7 +63,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/admin" diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index 80c0811aedc0d..e7c6a930570a5 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index d99c9a00c99ae..bb3a2f1a65458 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" api "code.gitea.io/gitea/modules/structs" diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 26cfff51ce76b..a18b6cad8999b 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/home.go b/routers/home.go index dbe27bd425c34..9c9acee4c80a0 100644 --- a/routers/home.go +++ b/routers/home.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/search" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/init.go b/routers/init.go index e431260687e8d..4766a326739f5 100644 --- a/routers/init.go +++ b/routers/init.go @@ -15,12 +15,12 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/mailer" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/external" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/ssh" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) diff --git a/routers/install.go b/routers/install.go index c95abebea76c2..b87adbce60fbc 100644 --- a/routers/install.go +++ b/routers/install.go @@ -20,7 +20,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/user" ) diff --git a/routers/org/members.go b/routers/org/members.go index d65bc2a00844a..44605ca965808 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/org/org.go b/routers/org/org.go index 3821b32216e77..5244f8d79683d 100644 --- a/routers/org/org.go +++ b/routers/org/org.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/org/setting.go b/routers/org/setting.go index 0526a96e6fa87..e978d95ce8685 100644 --- a/routers/org/setting.go +++ b/routers/org/setting.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" userSetting "code.gitea.io/gitea/routers/user/setting" diff --git a/routers/org/teams.go b/routers/org/teams.go index f662bd92e2ccf..7371424030b3b 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/routers/utils" ) diff --git a/routers/private/hook.go b/routers/private/hook.go index 3da5e38edb50b..ee2a44158e5e7 100644 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/util" diff --git a/routers/private/push_update.go b/routers/private/push_update.go index 733490ce1cd75..06234242741b5 100644 --- a/routers/private/push_update.go +++ b/routers/private/push_update.go @@ -10,8 +10,8 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/repofiles" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) diff --git a/routers/private/serv.go b/routers/private/serv.go index 90579a3dcce16..95ad9b28bf6de 100644 --- a/routers/private/serv.go +++ b/routers/private/serv.go @@ -11,7 +11,7 @@ import ( "strings" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 8913e630150cc..4de6ad5eb35eb 100644 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/repo/blame.go b/routers/repo/blame.go index 2b2f45f0bb9f1..afe46da77f98a 100644 --- a/routers/repo/blame.go +++ b/routers/repo/blame.go @@ -19,7 +19,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/repo/branch.go b/routers/repo/branch.go index 05d64fb4c8d0e..9476eec1a87de 100644 --- a/routers/repo/branch.go +++ b/routers/repo/branch.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/util" ) diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 4dbedea2a08d2..8744b1cc18e5b 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" ) diff --git a/routers/repo/compare.go b/routers/repo/compare.go index a85084791d371..946c1b6cd60d6 100644 --- a/routers/repo/compare.go +++ b/routers/repo/compare.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/repo/download.go b/routers/repo/download.go index 2da8b109ca957..8bc6be37aaffe 100644 --- a/routers/repo/download.go +++ b/routers/repo/download.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // ServeData download file from io.Reader diff --git a/routers/repo/editor.go b/routers/repo/editor.go index 062ecfebf777b..6d98b48f217f1 100644 --- a/routers/repo/editor.go +++ b/routers/repo/editor.go @@ -16,7 +16,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" diff --git a/routers/repo/http.go b/routers/repo/http.go index 30722094489f0..a8060a616d414 100644 --- a/routers/repo/http.go +++ b/routers/repo/http.go @@ -22,9 +22,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // HTTP implmentation git smart HTTP protocol @@ -205,6 +205,7 @@ func HTTP(ctx *context.Context) { token.UpdatedUnix = util.TimeStampNow() if err = models.UpdateAccessToken(token); err != nil { ctx.ServerError("UpdateAccessToken", err) + return } } else if !models.IsErrAccessTokenNotExist(err) && !models.IsErrAccessTokenEmpty(err) { log.Error("GetAccessTokenBySha: %v", err) diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 3904d29532fde..2e64d93d8e6ba 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -20,7 +20,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/setting" diff --git a/routers/repo/issue_label.go b/routers/repo/issue_label.go index cae6535c799bd..9fb28e4d581a8 100644 --- a/routers/repo/issue_label.go +++ b/routers/repo/issue_label.go @@ -9,7 +9,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/issue_watch.go b/routers/repo/issue_watch.go index eae663495ae6e..fc3f5d6c848de 100644 --- a/routers/repo/issue_watch.go +++ b/routers/repo/issue_watch.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // IssueWatch sets issue watching diff --git a/routers/repo/pull.go b/routers/repo/pull.go index 36b0d047b1019..c594a868580a7 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" "code.gitea.io/gitea/modules/setting" diff --git a/routers/repo/pull_review.go b/routers/repo/pull_review.go index 7576ebe90bbf6..259f7da5afd70 100644 --- a/routers/repo/pull_review.go +++ b/routers/repo/pull_review.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/notification" ) diff --git a/routers/repo/release.go b/routers/repo/release.go index fdef533f10525..112ac13a85b80 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 49483a64e4e25..02a42c7dcf1f6 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 757295069e90c..1e93717ffca6c 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -22,7 +22,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" diff --git a/routers/repo/setting_protected_branch.go b/routers/repo/setting_protected_branch.go index b5a115b6a464d..ba631f47440e6 100644 --- a/routers/repo/setting_protected_branch.go +++ b/routers/repo/setting_protected_branch.go @@ -13,7 +13,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/repo/topic.go b/routers/repo/topic.go index 4a1194bc2dceb..b379479a49a15 100644 --- a/routers/repo/topic.go +++ b/routers/repo/topic.go @@ -9,7 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // TopicsPost response for creating repository diff --git a/routers/repo/view.go b/routers/repo/view.go index edaf24017ce6d..4551b9ebebc9e 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -20,7 +20,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index 43149c034061b..deb2de86780db 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -16,7 +16,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/util" diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 744088a9d7b1e..b80648022e171 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/gzip" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/metrics" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/public" diff --git a/routers/user/auth.go b/routers/user/auth.go index 0731e34675613..4b2822817e434 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -16,7 +16,7 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/user/auth_openid.go b/routers/user/auth_openid.go index f98c07acd79f8..418a1c2e4e243 100644 --- a/routers/user/auth_openid.go +++ b/routers/user/auth_openid.go @@ -14,7 +14,7 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" diff --git a/routers/user/home.go b/routers/user/home.go index 9ccd5bdb2681c..52423214b08f6 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -14,7 +14,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/user/oauth.go b/routers/user/oauth.go index 924bac8ef6c49..2f613eaaa943d 100644 --- a/routers/user/oauth.go +++ b/routers/user/oauth.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go index 3fd6a8db5ee0a..32233cff64405 100644 --- a/routers/user/setting/account.go +++ b/routers/user/setting/account.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/user/setting/oauth2.go b/routers/user/setting/oauth2.go index 265e32642b016..aee69b2289655 100644 --- a/routers/user/setting/oauth2.go +++ b/routers/user/setting/oauth2.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/routers/user/setting/profile.go b/routers/user/setting/profile.go index 163bc869b4a16..54799acf7ca29 100644 --- a/routers/user/setting/profile.go +++ b/routers/user/setting/profile.go @@ -15,7 +15,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "github.com/Unknwon/com" diff --git a/routers/user/setting/security_openid.go b/routers/user/setting/security_openid.go index 6813765f6f336..c287d3883fba1 100644 --- a/routers/user/setting/security_openid.go +++ b/routers/user/setting/security_openid.go @@ -9,7 +9,7 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/auth/openid" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" ) diff --git a/vendor/code.gitea.io/log/.drone.yml b/vendor/code.gitea.io/log/.drone.yml new file mode 100644 index 0000000000000..2370efd530f1c --- /dev/null +++ b/vendor/code.gitea.io/log/.drone.yml @@ -0,0 +1,14 @@ +kind: pipeline +name: default + +steps: +- name: test + image: golang:1.10 + commands: + - go get -t -d -v ./... + - go build -v + - go test -v -race -coverprofile=coverage.txt -covermode=atomic + when: + event: + - pull_request + - push \ No newline at end of file diff --git a/vendor/code.gitea.io/log/README.md b/vendor/code.gitea.io/log/README.md new file mode 100644 index 0000000000000..70a7d6f33a8cb --- /dev/null +++ b/vendor/code.gitea.io/log/README.md @@ -0,0 +1 @@ +# Don't Use, Just An Experiment Project \ No newline at end of file diff --git a/modules/log/colors.go b/vendor/code.gitea.io/log/colors.go similarity index 98% rename from modules/log/colors.go rename to vendor/code.gitea.io/log/colors.go index c29741634f5e1..0ec8ce4ba86da 100644 --- a/modules/log/colors.go +++ b/vendor/code.gitea.io/log/colors.go @@ -208,7 +208,7 @@ normalLoop: if i > lasti { written, err := c.w.Write(bytes[lasti:i]) - totalWritten += written + totalWritten = totalWritten + written if err != nil { return totalWritten, err } @@ -243,7 +243,7 @@ normalLoop: if bytes[j] == 'm' { if c.mode == allowColor { written, err := c.w.Write(bytes[i : j+1]) - totalWritten += written + totalWritten = totalWritten + written if err != nil { return totalWritten, err } @@ -278,7 +278,7 @@ func ColorSprintf(format string, args ...interface{}) string { } return fmt.Sprintf(format, v...) } - return format + return fmt.Sprintf(format) } // ColorFprintf will write to the provided writer similar to ColorSprintf @@ -290,7 +290,7 @@ func ColorFprintf(w io.Writer, format string, args ...interface{}) (int, error) } return fmt.Fprintf(w, format, v...) } - return fmt.Fprint(w, format) + return fmt.Fprintf(w, format) } // ColorFormatted structs provide their own colored string when formatted with ColorSprintf diff --git a/modules/log/colors_router.go b/vendor/code.gitea.io/log/colors_router.go similarity index 100% rename from modules/log/colors_router.go rename to vendor/code.gitea.io/log/colors_router.go diff --git a/vendor/code.gitea.io/log/configuration.go b/vendor/code.gitea.io/log/configuration.go new file mode 100644 index 0000000000000..9f42f9f7e116c --- /dev/null +++ b/vendor/code.gitea.io/log/configuration.go @@ -0,0 +1,99 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "encoding/json" + "fmt" + "io/ioutil" +) + +type ourConfig struct { + name string + bufferLen int64 + subname string + provider string + config string +} + +// ConfigureFromFile configures logging from a provided file +func ConfigureFromFile(filename string) error { + bytes, err := ioutil.ReadFile(filename) + if err != nil { + return err + } + return ConfigureFromBytes(bytes) +} + +// ConfigureFromBytes configures logging from provided []byte +func ConfigureFromBytes(config []byte) error { + configs := []ourConfig{} + configMap := make(map[string]interface{}) + + err := json.Unmarshal(config, &configMap) + if err != nil { + return err + } + + defaultBufferLen, ok := configMap["DEFAULT_BUFFER_LEN"].(int64) + if !ok || defaultBufferLen == 0 { + defaultBufferLen = 1000 + } + + for name, loggerconfigInterface := range configMap { + if name == "DEFAULT_BUFFER_LEN" { + continue + } + loggerconfig, ok := loggerconfigInterface.(map[string]interface{}) + if !ok { + return &ErrBadConfig{ + message: fmt.Sprintf("Bad configuration for %s", name), + } + } + for subname, subloggerconfigInterface := range loggerconfig { + subloggerconfig, ok := subloggerconfigInterface.(map[string]interface{}) + if !ok { + return &ErrBadConfig{ + message: fmt.Sprintf("Bad configuration for %s:%s", name, subname), + } + } + bufferLen, ok := loggerconfig["bufferLen"].(int64) + if !ok || bufferLen == 0 { + bufferLen = defaultBufferLen + } + provider, ok := subloggerconfig["provider"].(string) + if !ok || provider == "" { + provider = subname + } + subconfigInterface, ok := subloggerconfig["config"] + + subconfig, err := json.Marshal(subconfigInterface) + if err != nil { + return &ErrBadConfig{ + message: fmt.Sprintf("Bad configuration for %s:%s, provider %s: %v", name, subname, provider, err), + } + } + configs = append(configs, ourConfig{ + name: name, + subname: subname, + bufferLen: bufferLen, + provider: provider, + config: string(subconfig), + }) + } + } + if len(configs) == 0 { + return &ErrBadConfig{ + message: fmt.Sprintf("Bad configuration. No loggers."), + } + } + for _, c := range configs { + err = NewNamedLogger(c.name, c.bufferLen, c.subname, c.provider, c.config) + if err != nil { + return err + } + } + return nil +} diff --git a/modules/log/conn.go b/vendor/code.gitea.io/log/conn.go similarity index 97% rename from modules/log/conn.go rename to vendor/code.gitea.io/log/conn.go index 88166645265d9..bd76855168820 100644 --- a/modules/log/conn.go +++ b/vendor/code.gitea.io/log/conn.go @@ -67,10 +67,7 @@ func (i *connWriter) connect() error { } if tcpConn, ok := conn.(*net.TCPConn); ok { - err = tcpConn.SetKeepAlive(true) - if err != nil { - return err - } + tcpConn.SetKeepAlive(true) } i.innerWriter = conn diff --git a/vendor/code.gitea.io/log/console.go b/vendor/code.gitea.io/log/console.go new file mode 100644 index 0000000000000..3e4a42089d5ed --- /dev/null +++ b/vendor/code.gitea.io/log/console.go @@ -0,0 +1,88 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "encoding/json" + "io" + "os" +) + +// CanColorStdout reports if we can color the Stdout +// Although we could do terminal sniffing and the like - in reality +// most tools on *nix are happy to display ansi colors. +// We will terminal sniff on Windows in console_windows.go +var CanColorStdout = true + +// CanColorStderr reports if we can color the Stderr +var CanColorStderr = true + +type nopWriteCloser struct { + w io.WriteCloser +} + +func (n *nopWriteCloser) Write(p []byte) (int, error) { + return n.w.Write(p) +} + +func (n *nopWriteCloser) Close() error { + return nil +} + +// ConsoleLogger implements LoggerProvider and writes messages to terminal. +type ConsoleLogger struct { + WriterLogger + Stderr bool `json:"stderr"` +} + +// NewConsoleLogger create ConsoleLogger returning as LoggerProvider. +func NewConsoleLogger() LoggerProvider { + log := &ConsoleLogger{} + log.NewWriterLogger(&nopWriteCloser{ + w: os.Stdout, + }) + return log +} + +// Init inits connection writer with json config. +// json config only need key "level". +func (log *ConsoleLogger) Init(config string) error { + err := json.Unmarshal([]byte(config), log) + if err != nil { + return err + } + configMap := map[string]interface{}{} + _ = json.Unmarshal([]byte(config), &configMap) + _, has := configMap["colorize"] + + if log.Stderr { + if !has { + log.Colorize = CanColorStderr + } + log.NewWriterLogger(&nopWriteCloser{ + w: os.Stderr, + }) + } else { + if !has { + log.Colorize = CanColorStdout + } + log.NewWriterLogger(log.out) + } + return nil +} + +// Flush when log should be flushed +func (log *ConsoleLogger) Flush() { +} + +// GetName returns the default name for this implementation +func (log *ConsoleLogger) GetName() string { + return "console" +} + +func init() { + Register("console", NewConsoleLogger) +} diff --git a/modules/log/console_windows.go b/vendor/code.gitea.io/log/console_windows.go similarity index 100% rename from modules/log/console_windows.go rename to vendor/code.gitea.io/log/console_windows.go diff --git a/modules/log/errors.go b/vendor/code.gitea.io/log/errors.go similarity index 100% rename from modules/log/errors.go rename to vendor/code.gitea.io/log/errors.go diff --git a/modules/log/event.go b/vendor/code.gitea.io/log/event.go similarity index 99% rename from modules/log/event.go rename to vendor/code.gitea.io/log/event.go index 37efa3c2306aa..2ec1f9587d54d 100644 --- a/modules/log/event.go +++ b/vendor/code.gitea.io/log/event.go @@ -79,7 +79,7 @@ func (l *ChannelledLog) Start() { return } l.loggerProvider.Flush() - case <-l.close: + case _, _ = <-l.close: l.closeLogger() return } @@ -104,6 +104,7 @@ func (l *ChannelledLog) closeLogger() { l.loggerProvider.Flush() l.loggerProvider.Close() l.closed <- true + return } // Close this ChannelledLog @@ -227,6 +228,7 @@ func (m *MultiChannelledLog) closeLoggers() { } m.mutex.Unlock() m.closed <- true + return } // Start processing the MultiChannelledLog diff --git a/modules/log/file.go b/vendor/code.gitea.io/log/file.go similarity index 98% rename from modules/log/file.go rename to vendor/code.gitea.io/log/file.go index 877820b8bea4e..cdda85d626ffa 100644 --- a/modules/log/file.go +++ b/vendor/code.gitea.io/log/file.go @@ -223,7 +223,7 @@ func compressOldLogFile(fname string, compressionLevel int) error { func (log *FileLogger) deleteOldLog() { dir := filepath.Dir(log.Filename) - _ = filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { + filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { defer func() { if r := recover(); r != nil { returnErr = fmt.Errorf("Unable to delete old log '%s', error: %+v", path, r) @@ -246,7 +246,7 @@ func (log *FileLogger) deleteOldLog() { // there are no buffering messages in file logger in memory. // flush file means sync file from disk. func (log *FileLogger) Flush() { - _ = log.mw.fd.Sync() + log.mw.fd.Sync() } // GetName returns the default name for this implementation diff --git a/vendor/code.gitea.io/log/flags.go b/vendor/code.gitea.io/log/flags.go new file mode 100644 index 0000000000000..56f06f4eecec8 --- /dev/null +++ b/vendor/code.gitea.io/log/flags.go @@ -0,0 +1,108 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "encoding/json" + "strings" +) + +// Flags represents the logging flags for a logger +type Flags int + +// These flags define which text to prefix to each log entry generated +// by the Logger. Bits are or'ed together to control what's printed. +// There is no control over the order they appear (the order listed +// here) or the format they present (as described in the comments). +// The prefix is followed by a colon only if more than time is stated +// is specified. For example, flags Ldate | Ltime +// produce, 2009/01/23 01:23:23 message. +// The standard is: +// 2009/01/23 01:23:23 ...a/logger/c/d.go:23:runtime.Caller() [I]: message +const ( + Ldate Flags = 1 << iota // the date in the local time zone: 2009/01/23 + Ltime // the time in the local time zone: 01:23:23 + Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime. + Llongfile // full file name and line number: /a/logger/c/d.go:23 + Lshortfile // final file name element and line number: d.go:23. overrides Llongfile + Lfuncname // function name of the caller: runtime.Caller() + Lshortfuncname // last part of the function name + LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone + Llevelinitial // Initial character of the provided level in brackets eg. [I] for info + Llevel // Provided level in brackets [INFO] + + // Last 20 characters of the filename + Lmedfile = Lshortfile | Llongfile + + // LstdFlags is the initial value for the standard logger + LstdFlags = Ldate | Ltime | Lmedfile | Lshortfuncname | Llevelinitial +) + +var flagOrder = []string{ + "date", + "time", + "microseconds", + "longfile", + "shortfile", + "funcname", + "shortfuncname", + "utc", + "levelinitial", + "level", +} + +// UnmarshalJSON converts a series of bytes to a flag +func (f *Flags) UnmarshalJSON(b []byte) error { + // OK first of all try an int + var i int + if err := json.Unmarshal(b, &i); err == nil { + *f = Flags(i) + return nil + } + var s string + if err := json.Unmarshal(b, &s); err != nil { + return err + } + *f = FlagsFromString(s) + return nil +} + +// MarshalJSON converts Flags to JSON +func (f Flags) MarshalJSON() ([]byte, error) { + stringFlags := []string{} + w := f + if w&LstdFlags == LstdFlags { + stringFlags = append(stringFlags, "stdflags") + w = w ^ LstdFlags + } + if w&Lmedfile == Lmedfile { + stringFlags = append(stringFlags, "medfile") + w = w ^ Lmedfile + } + for i, k := range flagOrder { + v := Flags(1 << uint64(i)) + if w&v == v && v != 0 { + stringFlags = append(stringFlags, k) + } + } + if len(stringFlags) == 0 { + stringFlags = append(stringFlags, "none") + } + return json.Marshal(strings.Join(stringFlags, ", ")) +} + +// FlagsFromString takes a comma separated list of flags and returns +// the flags for this string +func FlagsFromString(from string) Flags { + flags := Flags(0) + for _, flag := range strings.Split(strings.ToLower(from), ",") { + for f, k := range flagOrder { + if k == strings.TrimSpace(flag) { + flags = flags | Flags(1< 0 { + logger.Level = level[0] + } + logger.createExpression() +} + +func (logger *WriterLogger) createExpression() { + if len(logger.Expression) > 0 { + var err error + logger.regexp, err = regexp.Compile(logger.Expression) + if err != nil { + logger.regexp = nil + } + } +} + +// GetLevel returns the logging level for this logger +func (logger *WriterLogger) GetLevel() Level { + return logger.Level +} + +// GetStacktraceLevel returns the stacktrace logging level for this logger +func (logger *WriterLogger) GetStacktraceLevel() Level { + return logger.StacktraceLevel +} + +// Copy of cheap integer to fixed-width decimal to ascii from logger. +func itoa(buf *[]byte, i int, wid int) { + var logger [20]byte + bp := len(logger) - 1 + for i >= 10 || wid > 1 { + wid-- + q := i / 10 + logger[bp] = byte('0' + i - q*10) + bp-- + i = q + } + // i < 10 + logger[bp] = byte('0' + i) + *buf = append(*buf, logger[bp:]...) +} + +func (logger *WriterLogger) createMsg(buf *[]byte, event *Event) { + *buf = append(*buf, logger.Prefix...) + t := event.time + if logger.Flags&(Ldate|Ltime|Lmicroseconds) != 0 { + if logger.Colorize { + *buf = append(*buf, fgCyanBytes...) + } + if logger.Flags&LUTC != 0 { + t = t.UTC() + } + if logger.Flags&Ldate != 0 { + year, month, day := t.Date() + itoa(buf, year, 4) + *buf = append(*buf, '/') + itoa(buf, int(month), 2) + *buf = append(*buf, '/') + itoa(buf, day, 2) + *buf = append(*buf, ' ') + } + if logger.Flags&(Ltime|Lmicroseconds) != 0 { + hour, min, sec := t.Clock() + itoa(buf, hour, 2) + *buf = append(*buf, ':') + itoa(buf, min, 2) + *buf = append(*buf, ':') + itoa(buf, sec, 2) + if logger.Flags&Lmicroseconds != 0 { + *buf = append(*buf, '.') + itoa(buf, t.Nanosecond()/1e3, 6) + } + *buf = append(*buf, ' ') + } + if logger.Colorize { + *buf = append(*buf, resetBytes...) + } + + } + if logger.Flags&(Lshortfile|Llongfile) != 0 { + if logger.Colorize { + *buf = append(*buf, fgGreenBytes...) + } + file := event.filename + if logger.Flags&Lmedfile == Lmedfile { + startIndex := len(file) - 20 + if startIndex > 0 { + file = "..." + file[startIndex:] + } + } else if logger.Flags&Lshortfile != 0 { + startIndex := strings.LastIndexByte(file, '/') + if startIndex > 0 && startIndex < len(file) { + file = file[startIndex+1:] + } + } + *buf = append(*buf, file...) + *buf = append(*buf, ':') + itoa(buf, event.line, -1) + if logger.Flags&(Lfuncname|Lshortfuncname) != 0 { + *buf = append(*buf, ':') + } else { + if logger.Colorize { + *buf = append(*buf, resetBytes...) + } + *buf = append(*buf, ' ') + } + } + if logger.Flags&(Lfuncname|Lshortfuncname) != 0 { + if logger.Colorize { + *buf = append(*buf, fgGreenBytes...) + } + funcname := event.caller + if logger.Flags&Lshortfuncname != 0 { + lastIndex := strings.LastIndexByte(funcname, '.') + if lastIndex > 0 && len(funcname) > lastIndex+1 { + funcname = funcname[lastIndex+1:] + } + } + *buf = append(*buf, funcname...) + if logger.Colorize { + *buf = append(*buf, resetBytes...) + } + *buf = append(*buf, ' ') + + } + if logger.Flags&(Llevel|Llevelinitial) != 0 { + level := strings.ToUpper(event.level.String()) + if logger.Colorize { + *buf = append(*buf, levelToColor[event.level]...) + } + *buf = append(*buf, '[') + if logger.Flags&Llevelinitial != 0 { + *buf = append(*buf, level[0]) + } else { + *buf = append(*buf, level...) + } + *buf = append(*buf, ']') + if logger.Colorize { + *buf = append(*buf, resetBytes...) + } + *buf = append(*buf, ' ') + } + + var msg = []byte(event.msg) + if len(msg) > 0 && msg[len(msg)-1] == '\n' { + msg = msg[:len(msg)-1] + } + + pawMode := allowColor + if !logger.Colorize { + pawMode = removeColor + } + + baw := byteArrayWriter(*buf) + (&protectedANSIWriter{ + w: &baw, + mode: pawMode, + }).Write([]byte(msg)) + *buf = baw + + if event.stacktrace != "" && logger.StacktraceLevel <= event.level { + lines := bytes.Split([]byte(event.stacktrace), []byte("\n")) + if len(lines) > 1 { + for _, line := range lines { + *buf = append(*buf, "\n\t"...) + *buf = append(*buf, line...) + } + } + *buf = append(*buf, '\n') + } + *buf = append(*buf, '\n') +} + +// LogEvent logs the event to the internal writer +func (logger *WriterLogger) LogEvent(event *Event) error { + if logger.Level > event.level { + return nil + } + + logger.mu.Lock() + defer logger.mu.Unlock() + if !logger.Match(event) { + return nil + } + var buf []byte + logger.createMsg(&buf, event) + _, err := logger.out.Write(buf) + return err +} + +// Match checks if the given event matches the logger's regexp expression +func (logger *WriterLogger) Match(event *Event) bool { + if logger.regexp == nil { + return true + } + if logger.regexp.Match([]byte(fmt.Sprintf("%s:%d:%s", event.filename, event.line, event.caller))) { + return true + } + // Match on the non-colored msg - therefore strip out colors + var msg []byte + baw := byteArrayWriter(msg) + (&protectedANSIWriter{ + w: &baw, + mode: removeColor, + }).Write([]byte(event.msg)) + msg = baw + if logger.regexp.Match(msg) { + return true + } + return false +} + +// Close the base logger +func (logger *WriterLogger) Close() { + logger.mu.Lock() + defer logger.mu.Unlock() + if logger.out != nil { + logger.out.Close() + } +} + +// GetName returns empty for these provider loggers +func (logger *WriterLogger) GetName() string { + return "" +} diff --git a/vendor/gitea.com/gitea/log/README.md b/vendor/gitea.com/gitea/log/README.md new file mode 100644 index 0000000000000..70a7d6f33a8cb --- /dev/null +++ b/vendor/gitea.com/gitea/log/README.md @@ -0,0 +1 @@ +# Don't Use, Just An Experiment Project \ No newline at end of file diff --git a/vendor/gitea.com/gitea/log/colors.go b/vendor/gitea.com/gitea/log/colors.go new file mode 100644 index 0000000000000..0ec8ce4ba86da --- /dev/null +++ b/vendor/gitea.com/gitea/log/colors.go @@ -0,0 +1,428 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "fmt" + "io" + "reflect" + "strconv" + "strings" +) + +const escape = "\033" + +// ColorAttribute defines a single SGR Code +type ColorAttribute int + +// Base ColorAttributes +const ( + Reset ColorAttribute = iota + Bold + Faint + Italic + Underline + BlinkSlow + BlinkRapid + ReverseVideo + Concealed + CrossedOut +) + +// Foreground text colors +const ( + FgBlack ColorAttribute = iota + 30 + FgRed + FgGreen + FgYellow + FgBlue + FgMagenta + FgCyan + FgWhite +) + +// Foreground Hi-Intensity text colors +const ( + FgHiBlack ColorAttribute = iota + 90 + FgHiRed + FgHiGreen + FgHiYellow + FgHiBlue + FgHiMagenta + FgHiCyan + FgHiWhite +) + +// Background text colors +const ( + BgBlack ColorAttribute = iota + 40 + BgRed + BgGreen + BgYellow + BgBlue + BgMagenta + BgCyan + BgWhite +) + +// Background Hi-Intensity text colors +const ( + BgHiBlack ColorAttribute = iota + 100 + BgHiRed + BgHiGreen + BgHiYellow + BgHiBlue + BgHiMagenta + BgHiCyan + BgHiWhite +) + +var colorAttributeToString = map[ColorAttribute]string{ + Reset: "Reset", + Bold: "Bold", + Faint: "Faint", + Italic: "Italic", + Underline: "Underline", + BlinkSlow: "BlinkSlow", + BlinkRapid: "BlinkRapid", + ReverseVideo: "ReverseVideo", + Concealed: "Concealed", + CrossedOut: "CrossedOut", + FgBlack: "FgBlack", + FgRed: "FgRed", + FgGreen: "FgGreen", + FgYellow: "FgYellow", + FgBlue: "FgBlue", + FgMagenta: "FgMagenta", + FgCyan: "FgCyan", + FgWhite: "FgWhite", + FgHiBlack: "FgHiBlack", + FgHiRed: "FgHiRed", + FgHiGreen: "FgHiGreen", + FgHiYellow: "FgHiYellow", + FgHiBlue: "FgHiBlue", + FgHiMagenta: "FgHiMagenta", + FgHiCyan: "FgHiCyan", + FgHiWhite: "FgHiWhite", + BgBlack: "BgBlack", + BgRed: "BgRed", + BgGreen: "BgGreen", + BgYellow: "BgYellow", + BgBlue: "BgBlue", + BgMagenta: "BgMagenta", + BgCyan: "BgCyan", + BgWhite: "BgWhite", + BgHiBlack: "BgHiBlack", + BgHiRed: "BgHiRed", + BgHiGreen: "BgHiGreen", + BgHiYellow: "BgHiYellow", + BgHiBlue: "BgHiBlue", + BgHiMagenta: "BgHiMagenta", + BgHiCyan: "BgHiCyan", + BgHiWhite: "BgHiWhite", +} + +func (c *ColorAttribute) String() string { + return colorAttributeToString[*c] +} + +var colorAttributeFromString = map[string]ColorAttribute{} + +// ColorAttributeFromString will return a ColorAttribute given a string +func ColorAttributeFromString(from string) ColorAttribute { + lowerFrom := strings.TrimSpace(strings.ToLower(from)) + return colorAttributeFromString[lowerFrom] +} + +// ColorString converts a list of ColorAttributes to a color string +func ColorString(attrs ...ColorAttribute) string { + return string(ColorBytes(attrs...)) +} + +// ColorBytes converts a list of ColorAttributes to a byte array +func ColorBytes(attrs ...ColorAttribute) []byte { + bytes := make([]byte, 0, 20) + bytes = append(bytes, escape[0], '[') + if len(attrs) > 0 { + bytes = append(bytes, strconv.Itoa(int(attrs[0]))...) + for _, a := range attrs[1:] { + bytes = append(bytes, ';') + bytes = append(bytes, strconv.Itoa(int(a))...) + } + } else { + bytes = append(bytes, strconv.Itoa(int(Bold))...) + } + bytes = append(bytes, 'm') + return bytes +} + +var levelToColor = map[Level]string{ + TRACE: ColorString(Bold, FgCyan), + DEBUG: ColorString(Bold, FgBlue), + INFO: ColorString(Bold, FgGreen), + WARN: ColorString(Bold, FgYellow), + ERROR: ColorString(Bold, FgRed), + CRITICAL: ColorString(Bold, BgMagenta), + FATAL: ColorString(Bold, BgRed), + NONE: ColorString(Reset), +} + +var resetBytes = ColorBytes(Reset) +var fgCyanBytes = ColorBytes(FgCyan) +var fgGreenBytes = ColorBytes(FgGreen) +var fgBoldBytes = ColorBytes(Bold) + +type protectedANSIWriterMode int + +const ( + escapeAll protectedANSIWriterMode = iota + allowColor + removeColor +) + +type protectedANSIWriter struct { + w io.Writer + mode protectedANSIWriterMode +} + +// Write will protect against unusual characters +func (c *protectedANSIWriter) Write(bytes []byte) (int, error) { + end := len(bytes) + totalWritten := 0 +normalLoop: + for i := 0; i < end; { + lasti := i + + if c.mode == escapeAll { + for i < end && (bytes[i] >= ' ' || bytes[i] == '\n' || bytes[i] == '\t') { + i++ + } + } else { + // Allow tabs if we're not escaping everything + for i < end && (bytes[i] >= ' ' || bytes[i] == '\t') { + i++ + } + } + + if i > lasti { + written, err := c.w.Write(bytes[lasti:i]) + totalWritten = totalWritten + written + if err != nil { + return totalWritten, err + } + + } + if i >= end { + break + } + + // If we're not just escaping all we should prefix all newlines with a \t + if c.mode != escapeAll { + if bytes[i] == '\n' { + written, err := c.w.Write([]byte{'\n', '\t'}) + if written > 0 { + totalWritten++ + } + if err != nil { + return totalWritten, err + } + i++ + continue normalLoop + } + + if bytes[i] == escape[0] && i+1 < end && bytes[i+1] == '[' { + for j := i + 2; j < end; j++ { + if bytes[j] >= '0' && bytes[j] <= '9' { + continue + } + if bytes[j] == ';' { + continue + } + if bytes[j] == 'm' { + if c.mode == allowColor { + written, err := c.w.Write(bytes[i : j+1]) + totalWritten = totalWritten + written + if err != nil { + return totalWritten, err + } + } else { + totalWritten = j + } + i = j + 1 + continue normalLoop + } + break + } + } + } + + // Process naughty character + if _, err := fmt.Fprintf(c.w, `\%#o03d`, bytes[i]); err != nil { + return totalWritten, err + } + i++ + totalWritten++ + } + return totalWritten, nil +} + +// ColorSprintf returns a colored string from a format and arguments +// arguments will be wrapped in ColoredValues to protect against color spoofing +func ColorSprintf(format string, args ...interface{}) string { + if len(args) > 0 { + v := make([]interface{}, len(args)) + for i := 0; i < len(v); i++ { + v[i] = NewColoredValuePointer(&args[i]) + } + return fmt.Sprintf(format, v...) + } + return fmt.Sprintf(format) +} + +// ColorFprintf will write to the provided writer similar to ColorSprintf +func ColorFprintf(w io.Writer, format string, args ...interface{}) (int, error) { + if len(args) > 0 { + v := make([]interface{}, len(args)) + for i := 0; i < len(v); i++ { + v[i] = NewColoredValuePointer(&args[i]) + } + return fmt.Fprintf(w, format, v...) + } + return fmt.Fprintf(w, format) +} + +// ColorFormatted structs provide their own colored string when formatted with ColorSprintf +type ColorFormatted interface { + // ColorFormat provides the colored representation of the value + ColorFormat(s fmt.State) +} + +var colorFormattedType = reflect.TypeOf((*ColorFormatted)(nil)).Elem() + +// ColoredValue will Color the provided value +type ColoredValue struct { + colorBytes *[]byte + resetBytes *[]byte + Value *interface{} +} + +// NewColoredValue is a helper function to create a ColoredValue from a Value +// If no color is provided it defaults to Bold with standard Reset +// If a ColoredValue is provided it is not changed +func NewColoredValue(value interface{}, color ...ColorAttribute) *ColoredValue { + return NewColoredValuePointer(&value, color...) +} + +// NewColoredValuePointer is a helper function to create a ColoredValue from a Value Pointer +// If no color is provided it defaults to Bold with standard Reset +// If a ColoredValue is provided it is not changed +func NewColoredValuePointer(value *interface{}, color ...ColorAttribute) *ColoredValue { + if val, ok := (*value).(*ColoredValue); ok { + return val + } + if len(color) > 0 { + bytes := ColorBytes(color...) + return &ColoredValue{ + colorBytes: &bytes, + resetBytes: &resetBytes, + Value: value, + } + } + return &ColoredValue{ + colorBytes: &fgBoldBytes, + resetBytes: &resetBytes, + Value: value, + } + +} + +// NewColoredValueBytes creates a value from the provided value with color bytes +// If a ColoredValue is provided it is not changed +func NewColoredValueBytes(value interface{}, colorBytes *[]byte) *ColoredValue { + if val, ok := value.(*ColoredValue); ok { + return val + } + return &ColoredValue{ + colorBytes: colorBytes, + resetBytes: &resetBytes, + Value: &value, + } +} + +// NewColoredIDValue is a helper function to create a ColoredValue from a Value +// The Value will be colored with FgCyan +// If a ColoredValue is provided it is not changed +func NewColoredIDValue(value interface{}) *ColoredValue { + return NewColoredValueBytes(&value, &fgCyanBytes) +} + +// Format will format the provided value and protect against ANSI color spoofing within the value +// If the wrapped value is ColorFormatted and the format is "%-v" then its ColorString will +// be used. It is presumed that this ColorString is safe. +func (cv *ColoredValue) Format(s fmt.State, c rune) { + if c == 'v' && s.Flag('-') { + if val, ok := (*cv.Value).(ColorFormatted); ok { + val.ColorFormat(s) + return + } + v := reflect.ValueOf(*cv.Value) + t := v.Type() + + if reflect.PtrTo(t).Implements(colorFormattedType) { + vp := reflect.New(t) + vp.Elem().Set(v) + val := vp.Interface().(ColorFormatted) + val.ColorFormat(s) + return + } + } + s.Write([]byte(*cv.colorBytes)) + fmt.Fprintf(&protectedANSIWriter{w: s}, fmtString(s, c), *(cv.Value)) + s.Write([]byte(*cv.resetBytes)) +} + +// SetColorBytes will allow a user to set the colorBytes of a colored value +func (cv *ColoredValue) SetColorBytes(colorBytes []byte) { + cv.colorBytes = &colorBytes +} + +// SetColorBytesPointer will allow a user to set the colorBytes pointer of a colored value +func (cv *ColoredValue) SetColorBytesPointer(colorBytes *[]byte) { + cv.colorBytes = colorBytes +} + +// SetResetBytes will allow a user to set the resetBytes pointer of a colored value +func (cv *ColoredValue) SetResetBytes(resetBytes []byte) { + cv.resetBytes = &resetBytes +} + +// SetResetBytesPointer will allow a user to set the resetBytes pointer of a colored value +func (cv *ColoredValue) SetResetBytesPointer(resetBytes *[]byte) { + cv.resetBytes = resetBytes +} + +func fmtString(s fmt.State, c rune) string { + var width, precision string + base := make([]byte, 0, 8) + base = append(base, '%') + for _, c := range []byte(" +-#0") { + if s.Flag(int(c)) { + base = append(base, c) + } + } + if w, ok := s.Width(); ok { + width = strconv.Itoa(w) + } + if p, ok := s.Precision(); ok { + precision = "." + strconv.Itoa(p) + } + return fmt.Sprintf("%s%s%s%c", base, width, precision, c) +} + +func init() { + for attr, from := range colorAttributeToString { + colorAttributeFromString[strings.ToLower(from)] = attr + } +} diff --git a/vendor/gitea.com/gitea/log/colors_router.go b/vendor/gitea.com/gitea/log/colors_router.go new file mode 100644 index 0000000000000..e291a0da99daa --- /dev/null +++ b/vendor/gitea.com/gitea/log/colors_router.go @@ -0,0 +1,83 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "time" +) + +var statusToColor = map[int][]byte{ + 100: ColorBytes(Bold), + 200: ColorBytes(FgGreen), + 300: ColorBytes(FgYellow), + 304: ColorBytes(FgCyan), + 400: ColorBytes(Bold, FgRed), + 401: ColorBytes(Bold, FgMagenta), + 403: ColorBytes(Bold, FgMagenta), + 500: ColorBytes(Bold, BgRed), +} + +// ColoredStatus addes colors for HTTP status +func ColoredStatus(status int, s ...string) *ColoredValue { + color, ok := statusToColor[status] + if !ok { + color, ok = statusToColor[(status/100)*100] + } + if !ok { + color = fgBoldBytes + } + if len(s) > 0 { + return NewColoredValueBytes(s[0], &color) + } + return NewColoredValueBytes(status, &color) +} + +var methodToColor = map[string][]byte{ + "GET": ColorBytes(FgBlue), + "POST": ColorBytes(FgGreen), + "DELETE": ColorBytes(FgRed), + "PATCH": ColorBytes(FgCyan), + "PUT": ColorBytes(FgYellow, Faint), + "HEAD": ColorBytes(FgBlue, Faint), +} + +// ColoredMethod addes colors for HtTP methos on log +func ColoredMethod(method string) *ColoredValue { + color, ok := methodToColor[method] + if !ok { + return NewColoredValueBytes(method, &fgBoldBytes) + } + return NewColoredValueBytes(method, &color) +} + +var ( + durations = []time.Duration{ + 10 * time.Millisecond, + 100 * time.Millisecond, + 1 * time.Second, + 5 * time.Second, + 10 * time.Second, + } + + durationColors = [][]byte{ + ColorBytes(FgGreen), + ColorBytes(Bold), + ColorBytes(FgYellow), + ColorBytes(FgRed, Bold), + ColorBytes(BgRed), + } + + wayTooLong = ColorBytes(BgMagenta) +) + +// ColoredTime addes colors for time on log +func ColoredTime(duration time.Duration) *ColoredValue { + for i, k := range durations { + if duration < k { + return NewColoredValueBytes(duration, &durationColors[i]) + } + } + return NewColoredValueBytes(duration, &wayTooLong) +} diff --git a/vendor/gitea.com/gitea/log/conn.go b/vendor/gitea.com/gitea/log/conn.go new file mode 100644 index 0000000000000..bd76855168820 --- /dev/null +++ b/vendor/gitea.com/gitea/log/conn.go @@ -0,0 +1,121 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "encoding/json" + "io" + "net" +) + +type connWriter struct { + innerWriter io.WriteCloser + ReconnectOnMsg bool `json:"reconnectOnMsg"` + Reconnect bool `json:"reconnect"` + Net string `json:"net"` + Addr string `json:"addr"` +} + +// Close the inner writer +func (i *connWriter) Close() error { + if i.innerWriter != nil { + return i.innerWriter.Close() + } + return nil +} + +// Write the data to the connection +func (i *connWriter) Write(p []byte) (int, error) { + if i.neededConnectOnMsg() { + if err := i.connect(); err != nil { + return 0, err + } + } + + if i.ReconnectOnMsg { + defer i.innerWriter.Close() + } + + return i.innerWriter.Write(p) +} + +func (i *connWriter) neededConnectOnMsg() bool { + if i.Reconnect { + i.Reconnect = false + return true + } + + if i.innerWriter == nil { + return true + } + + return i.ReconnectOnMsg +} + +func (i *connWriter) connect() error { + if i.innerWriter != nil { + i.innerWriter.Close() + i.innerWriter = nil + } + + conn, err := net.Dial(i.Net, i.Addr) + if err != nil { + return err + } + + if tcpConn, ok := conn.(*net.TCPConn); ok { + tcpConn.SetKeepAlive(true) + } + + i.innerWriter = conn + return nil +} + +// ConnLogger implements LoggerProvider. +// it writes messages in keep-live tcp connection. +type ConnLogger struct { + WriterLogger + ReconnectOnMsg bool `json:"reconnectOnMsg"` + Reconnect bool `json:"reconnect"` + Net string `json:"net"` + Addr string `json:"addr"` +} + +// NewConn creates new ConnLogger returning as LoggerProvider. +func NewConn() LoggerProvider { + conn := new(ConnLogger) + conn.Level = TRACE + return conn +} + +// Init inits connection writer with json config. +// json config only need key "level". +func (log *ConnLogger) Init(jsonconfig string) error { + err := json.Unmarshal([]byte(jsonconfig), log) + if err != nil { + return err + } + log.NewWriterLogger(&connWriter{ + ReconnectOnMsg: log.ReconnectOnMsg, + Reconnect: log.Reconnect, + Net: log.Net, + Addr: log.Addr, + }, log.Level) + return nil +} + +// Flush does nothing for this implementation +func (log *ConnLogger) Flush() { +} + +// GetName returns the default name for this implementation +func (log *ConnLogger) GetName() string { + return "conn" +} + +func init() { + Register("conn", NewConn) +} diff --git a/modules/log/console.go b/vendor/gitea.com/gitea/log/console.go similarity index 100% rename from modules/log/console.go rename to vendor/gitea.com/gitea/log/console.go diff --git a/vendor/gitea.com/gitea/log/console_windows.go b/vendor/gitea.com/gitea/log/console_windows.go new file mode 100644 index 0000000000000..61469aacf8675 --- /dev/null +++ b/vendor/gitea.com/gitea/log/console_windows.go @@ -0,0 +1,43 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "os" + + "github.com/mattn/go-isatty" + "golang.org/x/sys/windows" +) + +func enableVTMode(console windows.Handle) bool { + mode := uint32(0) + err := windows.GetConsoleMode(console, &mode) + if err != nil { + return false + } + + // EnableVirtualTerminalProcessing is the console mode to allow ANSI code + // interpretation on the console. See: + // https://docs.microsoft.com/en-us/windows/console/setconsolemode + // It only works on windows 10. Earlier terminals will fail with an err which we will + // handle to say don't color + mode = mode | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING + err = windows.SetConsoleMode(console, mode) + return err == nil +} + +func init() { + if isatty.IsTerminal(os.Stdout.Fd()) { + CanColorStdout = enableVTMode(windows.Stdout) + } else { + CanColorStdout = isatty.IsCygwinTerminal(os.Stderr.Fd()) + } + + if isatty.IsTerminal(os.Stderr.Fd()) { + CanColorStderr = enableVTMode(windows.Stderr) + } else { + CanColorStderr = isatty.IsCygwinTerminal(os.Stderr.Fd()) + } +} diff --git a/vendor/gitea.com/gitea/log/errors.go b/vendor/gitea.com/gitea/log/errors.go new file mode 100644 index 0000000000000..1fe54d4265e48 --- /dev/null +++ b/vendor/gitea.com/gitea/log/errors.go @@ -0,0 +1,62 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import "fmt" + +// ErrTimeout represents a "Timeout" kind of error. +type ErrTimeout struct { + Name string + Provider string +} + +// IsErrTimeout checks if an error is a ErrTimeout. +func IsErrTimeout(err error) bool { + if err == nil { + return false + } + _, ok := err.(ErrTimeout) + return ok +} + +func (err ErrTimeout) Error() string { + return fmt.Sprintf("Log Timeout for %s (%s)", err.Name, err.Provider) +} + +// ErrUnknownProvider represents a "Unknown Provider" kind of error. +type ErrUnknownProvider struct { + Provider string +} + +// IsErrUnknownProvider checks if an error is a ErrUnknownProvider. +func IsErrUnknownProvider(err error) bool { + if err == nil { + return false + } + _, ok := err.(ErrUnknownProvider) + return ok +} + +func (err ErrUnknownProvider) Error() string { + return fmt.Sprintf("Unknown Log Provider \"%s\" (Was it registered?)", err.Provider) +} + +// ErrDuplicateName represents a Duplicate Name error +type ErrDuplicateName struct { + Name string +} + +// IsErrDuplicateName checks if an error is a ErrDuplicateName. +func IsErrDuplicateName(err error) bool { + if err == nil { + return false + } + _, ok := err.(ErrDuplicateName) + return ok +} + +func (err ErrDuplicateName) Error() string { + return fmt.Sprintf("Duplicate named logger: %s", err.Name) +} diff --git a/vendor/gitea.com/gitea/log/event.go b/vendor/gitea.com/gitea/log/event.go new file mode 100644 index 0000000000000..2ec1f9587d54d --- /dev/null +++ b/vendor/gitea.com/gitea/log/event.go @@ -0,0 +1,335 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "fmt" + "sync" + "time" +) + +// Event represents a logging event +type Event struct { + level Level + msg string + caller string + filename string + line int + time time.Time + stacktrace string +} + +// EventLogger represents the behaviours of a logger +type EventLogger interface { + LogEvent(event *Event) error + Close() + Flush() + GetLevel() Level + GetStacktraceLevel() Level + GetName() string +} + +// ChannelledLog represents a cached channel to a LoggerProvider +type ChannelledLog struct { + name string + provider string + queue chan *Event + loggerProvider LoggerProvider + flush chan bool + close chan bool + closed chan bool +} + +// NewChannelledLog a new logger instance with given logger provider and config. +func NewChannelledLog(name, provider, config string, bufferLength int64) (*ChannelledLog, error) { + if log, ok := providers[provider]; ok { + l := &ChannelledLog{ + queue: make(chan *Event, bufferLength), + flush: make(chan bool), + close: make(chan bool), + closed: make(chan bool), + } + l.loggerProvider = log() + if err := l.loggerProvider.Init(config); err != nil { + return nil, err + } + l.name = name + l.provider = provider + go l.Start() + return l, nil + } + return nil, ErrUnknownProvider{provider} +} + +// Start processing the ChannelledLog +func (l *ChannelledLog) Start() { + for { + select { + case event, ok := <-l.queue: + if !ok { + l.closeLogger() + return + } + l.loggerProvider.LogEvent(event) + case _, ok := <-l.flush: + if !ok { + l.closeLogger() + return + } + l.loggerProvider.Flush() + case _, _ = <-l.close: + l.closeLogger() + return + } + } +} + +// LogEvent logs an event to this ChannelledLog +func (l *ChannelledLog) LogEvent(event *Event) error { + select { + case l.queue <- event: + return nil + case <-time.After(60 * time.Second): + // We're blocked! + return ErrTimeout{ + Name: l.name, + Provider: l.provider, + } + } +} + +func (l *ChannelledLog) closeLogger() { + l.loggerProvider.Flush() + l.loggerProvider.Close() + l.closed <- true + return +} + +// Close this ChannelledLog +func (l *ChannelledLog) Close() { + l.close <- true + <-l.closed +} + +// Flush this ChannelledLog +func (l *ChannelledLog) Flush() { + l.flush <- true +} + +// GetLevel gets the level of this ChannelledLog +func (l *ChannelledLog) GetLevel() Level { + return l.loggerProvider.GetLevel() +} + +// GetStacktraceLevel gets the level of this ChannelledLog +func (l *ChannelledLog) GetStacktraceLevel() Level { + return l.loggerProvider.GetStacktraceLevel() +} + +// GetName returns the name of this ChannelledLog +func (l *ChannelledLog) GetName() string { + return l.name +} + +// MultiChannelledLog represents a cached channel to a LoggerProvider +type MultiChannelledLog struct { + name string + bufferLength int64 + queue chan *Event + mutex sync.Mutex + loggers map[string]EventLogger + flush chan bool + close chan bool + started bool + level Level + stacktraceLevel Level + closed chan bool +} + +// NewMultiChannelledLog a new logger instance with given logger provider and config. +func NewMultiChannelledLog(name string, bufferLength int64) *MultiChannelledLog { + m := &MultiChannelledLog{ + name: name, + queue: make(chan *Event, bufferLength), + flush: make(chan bool), + bufferLength: bufferLength, + loggers: make(map[string]EventLogger), + level: NONE, + stacktraceLevel: NONE, + close: make(chan bool), + closed: make(chan bool), + } + return m +} + +// AddLogger adds a logger to this MultiChannelledLog +func (m *MultiChannelledLog) AddLogger(logger EventLogger) error { + m.mutex.Lock() + name := logger.GetName() + if _, has := m.loggers[name]; has { + m.mutex.Unlock() + return ErrDuplicateName{name} + } + m.loggers[name] = logger + if logger.GetLevel() < m.level { + m.level = logger.GetLevel() + } + if logger.GetStacktraceLevel() < m.stacktraceLevel { + m.stacktraceLevel = logger.GetStacktraceLevel() + } + m.mutex.Unlock() + go m.Start() + return nil +} + +// DelLogger removes a sub logger from this MultiChannelledLog +// NB: If you delete the last sublogger this logger will simply drop +// log events +func (m *MultiChannelledLog) DelLogger(name string) bool { + m.mutex.Lock() + logger, has := m.loggers[name] + if !has { + m.mutex.Unlock() + return false + } + delete(m.loggers, name) + m.internalResetLevel() + m.mutex.Unlock() + logger.Flush() + logger.Close() + return true +} + +// GetEventLogger returns a sub logger from this MultiChannelledLog +func (m *MultiChannelledLog) GetEventLogger(name string) EventLogger { + m.mutex.Lock() + defer m.mutex.Unlock() + return m.loggers[name] +} + +// GetEventLoggerNames returns a list of names +func (m *MultiChannelledLog) GetEventLoggerNames() []string { + m.mutex.Lock() + defer m.mutex.Unlock() + var keys []string + for k := range m.loggers { + keys = append(keys, k) + } + return keys +} + +func (m *MultiChannelledLog) closeLoggers() { + m.mutex.Lock() + for _, logger := range m.loggers { + logger.Flush() + logger.Close() + } + m.mutex.Unlock() + m.closed <- true + return +} + +// Start processing the MultiChannelledLog +func (m *MultiChannelledLog) Start() { + m.mutex.Lock() + if m.started { + m.mutex.Unlock() + return + } + m.started = true + m.mutex.Unlock() + for { + select { + case event, ok := <-m.queue: + if !ok { + m.closeLoggers() + return + } + m.mutex.Lock() + for _, logger := range m.loggers { + err := logger.LogEvent(event) + if err != nil { + fmt.Println(err) + } + } + m.mutex.Unlock() + case _, ok := <-m.flush: + if !ok { + m.closeLoggers() + return + } + m.mutex.Lock() + for _, logger := range m.loggers { + logger.Flush() + } + m.mutex.Unlock() + case <-m.close: + m.closeLoggers() + return + } + } +} + +// LogEvent logs an event to this MultiChannelledLog +func (m *MultiChannelledLog) LogEvent(event *Event) error { + select { + case m.queue <- event: + return nil + case <-time.After(60 * time.Second): + // We're blocked! + return ErrTimeout{ + Name: m.name, + Provider: "MultiChannelledLog", + } + } +} + +// Close this MultiChannelledLog +func (m *MultiChannelledLog) Close() { + m.close <- true + <-m.closed +} + +// Flush this ChannelledLog +func (m *MultiChannelledLog) Flush() { + m.flush <- true +} + +// GetLevel gets the level of this MultiChannelledLog +func (m *MultiChannelledLog) GetLevel() Level { + return m.level +} + +// GetStacktraceLevel gets the level of this MultiChannelledLog +func (m *MultiChannelledLog) GetStacktraceLevel() Level { + return m.stacktraceLevel +} + +func (m *MultiChannelledLog) internalResetLevel() Level { + m.level = NONE + for _, logger := range m.loggers { + level := logger.GetLevel() + if level < m.level { + m.level = level + } + level = logger.GetStacktraceLevel() + if level < m.stacktraceLevel { + m.stacktraceLevel = level + } + } + return m.level +} + +// ResetLevel will reset the level of this MultiChannelledLog +func (m *MultiChannelledLog) ResetLevel() Level { + m.mutex.Lock() + defer m.mutex.Unlock() + return m.internalResetLevel() +} + +// GetName gets the name of this MultiChannelledLog +func (m *MultiChannelledLog) GetName() string { + return m.name +} diff --git a/vendor/gitea.com/gitea/log/file.go b/vendor/gitea.com/gitea/log/file.go new file mode 100644 index 0000000000000..cdda85d626ffa --- /dev/null +++ b/vendor/gitea.com/gitea/log/file.go @@ -0,0 +1,259 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "bufio" + "compress/gzip" + "encoding/json" + "errors" + "fmt" + "os" + "path/filepath" + "strings" + "sync" + "time" +) + +// FileLogger implements LoggerProvider. +// It writes messages by lines limit, file size limit, or time frequency. +type FileLogger struct { + WriterLogger + mw *MuxWriter + // The opened file + Filename string `json:"filename"` + + // Rotate at size + Maxsize int `json:"maxsize"` + maxsizeCursize int + + // Rotate daily + Daily bool `json:"daily"` + Maxdays int64 `json:"maxdays"` + dailyOpenDate int + + Rotate bool `json:"rotate"` + + Compress bool `json:"compress"` + CompressionLevel int `json:"compressionLevel"` + + startLock sync.Mutex // Only one log can write to the file +} + +// MuxWriter an *os.File writer with locker. +type MuxWriter struct { + mu sync.Mutex + fd *os.File + owner *FileLogger +} + +// Write writes to os.File. +func (mw *MuxWriter) Write(b []byte) (int, error) { + mw.mu.Lock() + defer mw.mu.Unlock() + mw.owner.docheck(len(b)) + return mw.fd.Write(b) +} + +// Close the internal writer +func (mw *MuxWriter) Close() error { + return mw.fd.Close() +} + +// SetFd sets os.File in writer. +func (mw *MuxWriter) SetFd(fd *os.File) { + if mw.fd != nil { + mw.fd.Close() + } + mw.fd = fd +} + +// NewFileLogger create a FileLogger returning as LoggerProvider. +func NewFileLogger() LoggerProvider { + log := &FileLogger{ + Filename: "", + Maxsize: 1 << 28, //256 MB + Daily: true, + Maxdays: 7, + Rotate: true, + Compress: true, + CompressionLevel: gzip.DefaultCompression, + } + log.Level = TRACE + // use MuxWriter instead direct use os.File for lock write when rotate + log.mw = new(MuxWriter) + log.mw.owner = log + + return log +} + +// Init file logger with json config. +// config like: +// { +// "filename":"log/gogs.log", +// "maxsize":1<<30, +// "daily":true, +// "maxdays":15, +// "rotate":true +// } +func (log *FileLogger) Init(config string) error { + if err := json.Unmarshal([]byte(config), log); err != nil { + return err + } + if len(log.Filename) == 0 { + return errors.New("config must have filename") + } + // set MuxWriter as Logger's io.Writer + log.NewWriterLogger(log.mw) + return log.StartLogger() +} + +// StartLogger start file logger. create log file and set to locker-inside file writer. +func (log *FileLogger) StartLogger() error { + fd, err := log.createLogFile() + if err != nil { + return err + } + log.mw.SetFd(fd) + return log.initFd() +} + +func (log *FileLogger) docheck(size int) { + log.startLock.Lock() + defer log.startLock.Unlock() + if log.Rotate && ((log.Maxsize > 0 && log.maxsizeCursize >= log.Maxsize) || + (log.Daily && time.Now().Day() != log.dailyOpenDate)) { + if err := log.DoRotate(); err != nil { + fmt.Fprintf(os.Stderr, "FileLogger(%q): %s\n", log.Filename, err) + return + } + } + log.maxsizeCursize += size +} + +func (log *FileLogger) createLogFile() (*os.File, error) { + // Open the log file + return os.OpenFile(log.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0660) +} + +func (log *FileLogger) initFd() error { + fd := log.mw.fd + finfo, err := fd.Stat() + if err != nil { + return fmt.Errorf("get stat: %v", err) + } + log.maxsizeCursize = int(finfo.Size()) + log.dailyOpenDate = time.Now().Day() + return nil +} + +// DoRotate means it need to write file in new file. +// new file name like xx.log.2013-01-01.2 +func (log *FileLogger) DoRotate() error { + _, err := os.Lstat(log.Filename) + if err == nil { // file exists + // Find the next available number + num := 1 + fname := "" + for ; err == nil && num <= 999; num++ { + fname = log.Filename + fmt.Sprintf(".%s.%03d", time.Now().Format("2006-01-02"), num) + _, err = os.Lstat(fname) + if log.Compress && err != nil { + _, err = os.Lstat(fname + ".gz") + } + } + // return error if the last file checked still existed + if err == nil { + return fmt.Errorf("rotate: cannot find free log number to rename %s", log.Filename) + } + + fd := log.mw.fd + fd.Close() + + // close fd before rename + // Rename the file to its newfound home + if err = os.Rename(log.Filename, fname); err != nil { + return fmt.Errorf("Rotate: %v", err) + } + + if log.Compress { + go compressOldLogFile(fname, log.CompressionLevel) + } + + // re-start logger + if err = log.StartLogger(); err != nil { + return fmt.Errorf("Rotate StartLogger: %v", err) + } + + go log.deleteOldLog() + } + + return nil +} + +func compressOldLogFile(fname string, compressionLevel int) error { + reader, err := os.Open(fname) + if err != nil { + return err + } + defer reader.Close() + buffer := bufio.NewReader(reader) + fw, err := os.OpenFile(fname+".gz", os.O_WRONLY|os.O_CREATE, 0660) + if err != nil { + return err + } + defer fw.Close() + zw, err := gzip.NewWriterLevel(fw, compressionLevel) + if err != nil { + return err + } + defer zw.Close() + _, err = buffer.WriteTo(zw) + if err != nil { + zw.Close() + fw.Close() + os.Remove(fname + ".gz") + return err + } + reader.Close() + return os.Remove(fname) +} + +func (log *FileLogger) deleteOldLog() { + dir := filepath.Dir(log.Filename) + filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { + defer func() { + if r := recover(); r != nil { + returnErr = fmt.Errorf("Unable to delete old log '%s', error: %+v", path, r) + } + }() + + if !info.IsDir() && info.ModTime().Unix() < (time.Now().Unix()-60*60*24*log.Maxdays) { + if strings.HasPrefix(filepath.Base(path), filepath.Base(log.Filename)) { + + if err := os.Remove(path); err != nil { + returnErr = fmt.Errorf("Failed to remove %s: %v", path, err) + } + } + } + return returnErr + }) +} + +// Flush flush file logger. +// there are no buffering messages in file logger in memory. +// flush file means sync file from disk. +func (log *FileLogger) Flush() { + log.mw.fd.Sync() +} + +// GetName returns the default name for this implementation +func (log *FileLogger) GetName() string { + return "file" +} + +func init() { + Register("file", NewFileLogger) +} diff --git a/modules/log/flags.go b/vendor/gitea.com/gitea/log/flags.go similarity index 99% rename from modules/log/flags.go rename to vendor/gitea.com/gitea/log/flags.go index 992fc62ddb6e8..928d42b96546e 100644 --- a/modules/log/flags.go +++ b/vendor/gitea.com/gitea/log/flags.go @@ -57,7 +57,7 @@ func FlagsFromString(from string) int { for _, flag := range strings.Split(strings.ToLower(from), ",") { f, ok := flagFromString[strings.TrimSpace(flag)] if ok { - flags |= f + flags = flags | f } } return flags diff --git a/vendor/gitea.com/gitea/log/go.mod b/vendor/gitea.com/gitea/log/go.mod new file mode 100644 index 0000000000000..102192352c6b6 --- /dev/null +++ b/vendor/gitea.com/gitea/log/go.mod @@ -0,0 +1,9 @@ +module gitea.com/gitea/log + +go 1.12 + +require ( + github.com/mattn/go-isatty v0.0.7 + github.com/stretchr/testify v1.3.0 + golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872 +) diff --git a/vendor/gitea.com/gitea/log/go.sum b/vendor/gitea.com/gitea/log/go.sum new file mode 100644 index 0000000000000..e5c1f8b0750aa --- /dev/null +++ b/vendor/gitea.com/gitea/log/go.sum @@ -0,0 +1,12 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872 h1:cGjJzUd8RgBw428LXP65YXni0aiGNA4Bl+ls8SmLOm8= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/gitea.com/gitea/log/level.go b/vendor/gitea.com/gitea/log/level.go new file mode 100644 index 0000000000000..6131fcb5101b0 --- /dev/null +++ b/vendor/gitea.com/gitea/log/level.go @@ -0,0 +1,111 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "bytes" + "encoding/json" + "fmt" + "os" + "strings" +) + +// Level is the level of the logger +type Level int + +const ( + // TRACE represents the lowest log level + TRACE Level = iota + // DEBUG is for debug logging + DEBUG + // INFO is for information + INFO + // WARN is for warning information + WARN + // ERROR is for error reporting + ERROR + // CRITICAL is for critical errors + CRITICAL + // FATAL is for fatal errors + FATAL + // NONE is for no logging + NONE +) + +var toString = map[Level]string{ + TRACE: "trace", + DEBUG: "debug", + INFO: "info", + WARN: "warn", + ERROR: "error", + CRITICAL: "critical", + FATAL: "fatal", + NONE: "none", +} + +var toLevel = map[string]Level{ + "trace": TRACE, + "debug": DEBUG, + "info": INFO, + "warn": WARN, + "error": ERROR, + "critical": CRITICAL, + "fatal": FATAL, + "none": NONE, +} + +// Levels returns all the possible logging levels +func Levels() []string { + keys := make([]string, 0) + for key := range toLevel { + keys = append(keys, key) + } + return keys +} + +func (l Level) String() string { + s, ok := toString[l] + if ok { + return s + } + return "info" +} + +// MarshalJSON takes a Level and turns it into text +func (l Level) MarshalJSON() ([]byte, error) { + buffer := bytes.NewBufferString(`"`) + buffer.WriteString(toString[l]) + buffer.WriteString(`"`) + return buffer.Bytes(), nil +} + +// FromString takes a level string and returns a Level +func FromString(level string) Level { + temp, ok := toLevel[strings.ToLower(level)] + if !ok { + return INFO + } + return temp +} + +// UnmarshalJSON takes text and turns it into a Level +func (l *Level) UnmarshalJSON(b []byte) error { + var tmp interface{} + err := json.Unmarshal(b, &tmp) + if err != nil { + fmt.Fprintf(os.Stderr, "Err: %v", err) + return err + } + + switch v := tmp.(type) { + case string: + *l = FromString(string(v)) + case int: + *l = FromString(Level(v).String()) + default: + *l = INFO + } + return nil +} diff --git a/modules/log/log.go b/vendor/gitea.com/gitea/log/log.go similarity index 99% rename from modules/log/log.go rename to vendor/gitea.com/gitea/log/log.go index 0ca0f3adc5af1..8698e9eed3ae3 100644 --- a/modules/log/log.go +++ b/vendor/gitea.com/gitea/log/log.go @@ -218,7 +218,7 @@ func (l *LoggerAsWriter) Write(p []byte) (int, error) { func (l *LoggerAsWriter) Log(msg string) { for _, logger := range l.ourLoggers { // Set the skip to reference the call just above this - _ = logger.Log(1, l.level, msg) + logger.Log(1, l.level, msg) } } diff --git a/vendor/gitea.com/gitea/log/logger.go b/vendor/gitea.com/gitea/log/logger.go new file mode 100644 index 0000000000000..9704ffd3d88a6 --- /dev/null +++ b/vendor/gitea.com/gitea/log/logger.go @@ -0,0 +1,152 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "fmt" + "os" + "runtime" + "strings" + "time" +) + +// Logger is default logger in the Gitea application. +// it can contain several providers and log message into all providers. +type Logger struct { + *MultiChannelledLog + bufferLength int64 +} + +// newLogger initializes and returns a new logger. +func newLogger(name string, buffer int64) *Logger { + l := &Logger{ + MultiChannelledLog: NewMultiChannelledLog(name, buffer), + bufferLength: buffer, + } + return l +} + +// SetLogger sets new logger instance with given logger provider and config. +func (l *Logger) SetLogger(name, provider, config string) error { + eventLogger, err := NewChannelledLog(name, provider, config, l.bufferLength) + if err != nil { + return fmt.Errorf("Failed to create sublogger (%s): %v", name, err) + } + + l.MultiChannelledLog.DelLogger(name) + + err = l.MultiChannelledLog.AddLogger(eventLogger) + if err != nil { + if IsErrDuplicateName(err) { + return fmt.Errorf("Duplicate named sublogger %s %v", name, l.MultiChannelledLog.GetEventLoggerNames()) + } + return fmt.Errorf("Failed to add sublogger (%s): %v", name, err) + } + + return nil +} + +// DelLogger deletes a sublogger from this logger. +func (l *Logger) DelLogger(name string) (bool, error) { + return l.MultiChannelledLog.DelLogger(name), nil +} + +// Log msg at the provided level with the provided caller defined by skip (0 being the function that calls this function) +func (l *Logger) Log(skip int, level Level, format string, v ...interface{}) error { + if l.GetLevel() > level { + return nil + } + caller := "?()" + pc, filename, line, ok := runtime.Caller(skip + 1) + if ok { + // Get caller function name. + fn := runtime.FuncForPC(pc) + if fn != nil { + caller = fn.Name() + "()" + } + } + msg := format + if len(v) > 0 { + msg = ColorSprintf(format, v...) + } + stack := "" + if l.GetStacktraceLevel() <= level { + stack = Stack(skip + 1) + } + return l.SendLog(level, caller, strings.TrimPrefix(filename, prefix), line, msg, stack) +} + +// SendLog sends a log event at the provided level with the information given +func (l *Logger) SendLog(level Level, caller, filename string, line int, msg string, stack string) error { + if l.GetLevel() > level { + return nil + } + event := &Event{ + level: level, + caller: caller, + filename: filename, + line: line, + msg: msg, + time: time.Now(), + stacktrace: stack, + } + l.LogEvent(event) + return nil +} + +// Trace records trace log +func (l *Logger) Trace(format string, v ...interface{}) { + l.Log(1, TRACE, format, v...) +} + +// Debug records debug log +func (l *Logger) Debug(format string, v ...interface{}) { + l.Log(1, DEBUG, format, v...) + +} + +// Info records information log +func (l *Logger) Info(format string, v ...interface{}) { + l.Log(1, INFO, format, v...) +} + +// Warn records warning log +func (l *Logger) Warn(format string, v ...interface{}) { + l.Log(1, WARN, format, v...) +} + +// Error records error log +func (l *Logger) Error(format string, v ...interface{}) { + l.Log(1, ERROR, format, v...) +} + +// ErrorWithSkip records error log from "skip" calls back from this function +func (l *Logger) ErrorWithSkip(skip int, format string, v ...interface{}) { + l.Log(skip+1, ERROR, format, v...) +} + +// Critical records critical log +func (l *Logger) Critical(format string, v ...interface{}) { + l.Log(1, CRITICAL, format, v...) +} + +// CriticalWithSkip records critical log from "skip" calls back from this function +func (l *Logger) CriticalWithSkip(skip int, format string, v ...interface{}) { + l.Log(skip+1, CRITICAL, format, v...) +} + +// Fatal records fatal log and exit the process +func (l *Logger) Fatal(format string, v ...interface{}) { + l.Log(1, FATAL, format, v...) + l.Close() + os.Exit(1) +} + +// FatalWithSkip records fatal log from "skip" calls back from this function and exits the process +func (l *Logger) FatalWithSkip(skip int, format string, v ...interface{}) { + l.Log(skip+1, FATAL, format, v...) + l.Close() + os.Exit(1) +} diff --git a/vendor/gitea.com/gitea/log/provider.go b/vendor/gitea.com/gitea/log/provider.go new file mode 100644 index 0000000000000..b31bf392e6b03 --- /dev/null +++ b/vendor/gitea.com/gitea/log/provider.go @@ -0,0 +1,26 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +// LoggerProvider represents behaviors of a logger provider. +type LoggerProvider interface { + Init(config string) error + EventLogger +} + +type loggerProvider func() LoggerProvider + +var providers = make(map[string]loggerProvider) + +// Register registers given logger provider to providers. +func Register(name string, log loggerProvider) { + if log == nil { + panic("log: register provider is nil") + } + if _, dup := providers[name]; dup { + panic("log: register called twice for provider \"" + name + "\"") + } + providers[name] = log +} diff --git a/vendor/gitea.com/gitea/log/smtp.go b/vendor/gitea.com/gitea/log/smtp.go new file mode 100644 index 0000000000000..f77d716d9491c --- /dev/null +++ b/vendor/gitea.com/gitea/log/smtp.go @@ -0,0 +1,111 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "encoding/json" + "net/smtp" + "strings" +) + +const ( + subjectPhrase = "Diagnostic message from server" +) + +type smtpWriter struct { + owner *SMTPLogger +} + +// Write sends the message as an email +func (s *smtpWriter) Write(p []byte) (int, error) { + return s.owner.sendMail(p) +} + +// Close does nothing +func (s *smtpWriter) Close() error { + return nil +} + +// SMTPLogger implements LoggerProvider and is used to send emails via given SMTP-server. +type SMTPLogger struct { + WriterLogger + Username string `json:"Username"` + Password string `json:"password"` + Host string `json:"host"` + Subject string `json:"subject"` + RecipientAddresses []string `json:"sendTos"` + sendMailFn func(string, smtp.Auth, string, []string, []byte) error +} + +// NewSMTPLogger creates smtp writer. +func NewSMTPLogger() LoggerProvider { + s := &SMTPLogger{} + s.Level = TRACE + s.sendMailFn = smtp.SendMail + return s +} + +// Init smtp writer with json config. +// config like: +// { +// "Username":"example@gmail.com", +// "password:"password", +// "host":"smtp.gmail.com:465", +// "subject":"email title", +// "sendTos":["email1","email2"], +// "level":LevelError +// } +func (log *SMTPLogger) Init(jsonconfig string) error { + err := json.Unmarshal([]byte(jsonconfig), log) + if err != nil { + return err + } + log.NewWriterLogger(&smtpWriter{ + owner: log, + }) + log.sendMailFn = smtp.SendMail + return nil +} + +// WriteMsg writes message in smtp writer. +// it will send an email with subject and only this message. +func (log *SMTPLogger) sendMail(p []byte) (int, error) { + hp := strings.Split(log.Host, ":") + + // Set up authentication information. + auth := smtp.PlainAuth( + "", + log.Username, + log.Password, + hp[0], + ) + // Connect to the server, authenticate, set the sender and recipient, + // and send the email all in one step. + contentType := "Content-Type: text/plain" + "; charset=UTF-8" + mailmsg := []byte("To: " + strings.Join(log.RecipientAddresses, ";") + "\r\nFrom: " + log.Username + "<" + log.Username + + ">\r\nSubject: " + log.Subject + "\r\n" + contentType + "\r\n\r\n") + mailmsg = append(mailmsg, p...) + return len(p), log.sendMailFn( + log.Host, + auth, + log.Username, + log.RecipientAddresses, + mailmsg, + ) +} + +// Flush when log should be flushed +func (log *SMTPLogger) Flush() { +} + +// GetName returns the default name for this implementation +func (log *SMTPLogger) GetName() string { + return "smtp" +} + +func init() { + Register("smtp", NewSMTPLogger) +} diff --git a/vendor/gitea.com/gitea/log/stack.go b/vendor/gitea.com/gitea/log/stack.go new file mode 100644 index 0000000000000..ffe9aa67cc58f --- /dev/null +++ b/vendor/gitea.com/gitea/log/stack.go @@ -0,0 +1,83 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package log + +import ( + "bytes" + "fmt" + "io/ioutil" + "runtime" +) + +var ( + unknown = []byte("???") +) + +// Stack will skip back the provided number of frames and return a stack trace with source code. +// Although we could just use debug.Stack(), this routine will return the source code and +// skip back the provided number of frames - i.e. allowing us to ignore preceding function calls. +// A skip of 0 returns the stack trace for the calling function, not including this call. +// If the problem is a lack of memory of course all this is not going to work... +func Stack(skip int) string { + buf := new(bytes.Buffer) + + // Store the last file we opened as its probable that the preceding stack frame + // will be in the same file + var lines [][]byte + var lastFilename string + for i := skip + 1; ; i++ { // Skip over frames + programCounter, filename, lineNumber, ok := runtime.Caller(i) + // If we can't retrieve the information break - basically we're into go internals at this point. + if !ok { + break + } + + // Print equivalent of debug.Stack() + fmt.Fprintf(buf, "%s:%d (0x%x)\n", filename, lineNumber, programCounter) + // Now try to print the offending line + if filename != lastFilename { + data, err := ioutil.ReadFile(filename) + if err != nil { + // can't read this sourcefile + // likely we don't have the sourcecode available + continue + } + lines = bytes.Split(data, []byte{'\n'}) + lastFilename = filename + } + fmt.Fprintf(buf, "\t%s: %s\n", functionName(programCounter), source(lines, lineNumber)) + } + return buf.String() +} + +// functionName converts the provided programCounter into a function name +func functionName(programCounter uintptr) []byte { + function := runtime.FuncForPC(programCounter) + if function == nil { + return unknown + } + name := []byte(function.Name()) + + // Because we provide the filename we can drop the preceding package name. + if lastslash := bytes.LastIndex(name, []byte("/")); lastslash >= 0 { + name = name[lastslash+1:] + } + // And the current package name. + if period := bytes.Index(name, []byte(".")); period >= 0 { + name = name[period+1:] + } + // And we should just replace the interpunct with a dot + name = bytes.Replace(name, []byte("·"), []byte("."), -1) + return name +} + +// source returns a space-trimmed slice of the n'th line. +func source(lines [][]byte, n int) []byte { + n-- // in stack trace, lines are 1-indexed but our array is 0-indexed + if n < 0 || n >= len(lines) { + return unknown + } + return bytes.TrimSpace(lines[n]) +} diff --git a/modules/log/writer.go b/vendor/gitea.com/gitea/log/writer.go similarity index 99% rename from modules/log/writer.go rename to vendor/gitea.com/gitea/log/writer.go index 2503f04d76f7e..22ef0b90476bf 100644 --- a/modules/log/writer.go +++ b/vendor/gitea.com/gitea/log/writer.go @@ -252,7 +252,10 @@ func (logger *WriterLogger) Match(event *Event) bool { mode: removeColor, }).Write([]byte(event.msg)) msg = baw - return logger.regexp.Match(msg) + if logger.regexp.Match(msg) { + return true + } + return false } // Close the base logger diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go b/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go new file mode 100644 index 0000000000000..6b8263a453dba --- /dev/null +++ b/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go @@ -0,0 +1,120 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package bridge + +import ( + "strings" + + "gitea.com/gitea/log" + "github.com/go-xorm/core" +) + +var ( + formats []string + defaultFormatSize = 20 +) + +func genFormat(argsLen int) string { + return strings.TrimSpace(strings.Repeat("%v ", argsLen)) +} + +func init() { + formats = make([]string, defaultFormatSize, defaultFormatSize) + for i := 0; i < defaultFormatSize; i++ { + formats[i] = genFormat(i) + } +} + +// GiteaLogBridge a logger bridge from Logger to xorm +type GiteaLogBridge struct { + showSQL bool + logger *log.Logger +} + +// NewGiteaLogger inits a log bridge for xorm +func NewGiteaLogger(name string, showSQL bool) core.ILogger { + return &GiteaLogBridge{ + showSQL: showSQL, + logger: log.GetLogger(name), + } +} + +// Log a message with defined skip and at logging level +func (l *GiteaLogBridge) Log(skip int, level log.Level, format string, v ...interface{}) error { + return l.logger.Log(skip+1, level, format, v...) +} + +// Debug show debug log +func (l *GiteaLogBridge) Debug(v ...interface{}) { + l.Log(2, log.DEBUG, formats[len(v)], v...) +} + +// Debugf show debug log +func (l *GiteaLogBridge) Debugf(format string, v ...interface{}) { + l.Log(2, log.DEBUG, format, v...) +} + +// Error show error log +func (l *GiteaLogBridge) Error(v ...interface{}) { + l.Log(2, log.ERROR, formats[len(v)], v...) +} + +// Errorf show error log +func (l *GiteaLogBridge) Errorf(format string, v ...interface{}) { + l.Log(2, log.ERROR, format, v...) +} + +// Info show information level log +func (l *GiteaLogBridge) Info(v ...interface{}) { + l.Log(2, log.INFO, formats[len(v)], v...) +} + +// Infof show information level log +func (l *GiteaLogBridge) Infof(format string, v ...interface{}) { + l.Log(2, log.INFO, format, v...) +} + +// Warn show warning log +func (l *GiteaLogBridge) Warn(v ...interface{}) { + l.Log(2, log.WARN, formats[len(v)], v...) +} + +// Warnf show warnning log +func (l *GiteaLogBridge) Warnf(format string, v ...interface{}) { + l.Log(2, log.WARN, format, v...) +} + +// Level get logger level +func (l *GiteaLogBridge) Level() core.LogLevel { + switch l.logger.GetLevel() { + case log.TRACE, log.DEBUG: + return core.LOG_DEBUG + case log.INFO: + return core.LOG_INFO + case log.WARN: + return core.LOG_WARNING + case log.ERROR, log.CRITICAL: + return core.LOG_ERR + } + return core.LOG_OFF +} + +// SetLevel set the logger level +func (l *GiteaLogBridge) SetLevel(lvl core.LogLevel) { +} + +// ShowSQL set if record SQL +func (l *GiteaLogBridge) ShowSQL(show ...bool) { + if len(show) > 0 { + l.showSQL = show[0] + } else { + l.showSQL = true + } +} + +// IsShowSQL if record SQL +func (l *GiteaLogBridge) IsShowSQL() bool { + return l.showSQL +} diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/go.mod b/vendor/gitea.com/xorm/gitea_log_bridge/go.mod new file mode 100644 index 0000000000000..51030ddaf8340 --- /dev/null +++ b/vendor/gitea.com/xorm/gitea_log_bridge/go.mod @@ -0,0 +1,8 @@ +module gitea.com/xorm/gitea_log_bridge + +go 1.12 + +require ( + gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 + github.com/go-xorm/core v0.6.2 +) diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/go.sum b/vendor/gitea.com/xorm/gitea_log_bridge/go.sum new file mode 100644 index 0000000000000..33e39fc60bf59 --- /dev/null +++ b/vendor/gitea.com/xorm/gitea_log_bridge/go.sum @@ -0,0 +1,25 @@ +gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 h1:y9Ep7Fhwz3D7mko8XRwbpGahnZNaPkJ43Qg/d6Ss9EU= +gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4/go.mod h1:1nV03yHcYc8sGKHpWDe++gxd7yoMDdNOWhIhuykDSnI= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-xorm/core v0.6.2 h1:EJLcSxf336POJr670wKB55Mah9f93xzvGYzNRgnT8/Y= +github.com/go-xorm/core v0.6.2/go.mod h1:bwPIfLdm/FzWgVUH8WPVlr+uJhscvNGFcaZKXsI3n2c= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872 h1:cGjJzUd8RgBw428LXP65YXni0aiGNA4Bl+ls8SmLOm8= +golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/vendor/github.com/go-xorm/core/cache.go b/vendor/github.com/go-xorm/core/cache.go index 8f9531da94012..dc4992dfb112a 100644 --- a/vendor/github.com/go-xorm/core/cache.go +++ b/vendor/github.com/go-xorm/core/cache.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/circle.yml b/vendor/github.com/go-xorm/core/circle.yml deleted file mode 100644 index e6a05be2727fe..0000000000000 --- a/vendor/github.com/go-xorm/core/circle.yml +++ /dev/null @@ -1,15 +0,0 @@ -dependencies: - override: - # './...' is a relative pattern which means all subdirectories - - go get -t -d -v ./... - - go build -v - -database: - override: - - mysql -u root -e "CREATE DATABASE core_test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci" - -test: - override: - # './...' is a relative pattern which means all subdirectories - - go test -v -race - - go test -v -race --dbtype=sqlite3 diff --git a/vendor/github.com/go-xorm/core/column.go b/vendor/github.com/go-xorm/core/column.go index 20912b713c419..40d8f9268d727 100644 --- a/vendor/github.com/go-xorm/core/column.go +++ b/vendor/github.com/go-xorm/core/column.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( @@ -41,6 +45,7 @@ type Column struct { Comment string } +// NewColumn creates a new column func NewColumn(name, fieldName string, sqlType SQLType, len1, len2 int, nullable bool) *Column { return &Column{ Name: name, @@ -66,7 +71,7 @@ func NewColumn(name, fieldName string, sqlType SQLType, len1, len2 int, nullable } } -// generate column description string according dialect +// String generate column description string according dialect func (col *Column) String(d Dialect) string { sql := d.QuoteStr() + col.Name + d.QuoteStr() + " " @@ -94,6 +99,7 @@ func (col *Column) String(d Dialect) string { return sql } +// StringNoPk generate column description string according dialect without primary keys func (col *Column) StringNoPk(d Dialect) string { sql := d.QuoteStr() + col.Name + d.QuoteStr() + " " @@ -114,12 +120,13 @@ func (col *Column) StringNoPk(d Dialect) string { return sql } -// return col's filed of struct's value +// ValueOf returns column's filed of struct's value func (col *Column) ValueOf(bean interface{}) (*reflect.Value, error) { dataStruct := reflect.Indirect(reflect.ValueOf(bean)) return col.ValueOfV(&dataStruct) } +// ValueOfV returns column's filed of struct's value accept reflevt value func (col *Column) ValueOfV(dataStruct *reflect.Value) (*reflect.Value, error) { var fieldValue reflect.Value fieldPath := strings.Split(col.FieldName, ".") diff --git a/vendor/github.com/go-xorm/core/converstion.go b/vendor/github.com/go-xorm/core/converstion.go index 18522fbeebd9f..9703c36e08561 100644 --- a/vendor/github.com/go-xorm/core/converstion.go +++ b/vendor/github.com/go-xorm/core/converstion.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core // Conversion is an interface. A type implements Conversion will according diff --git a/vendor/github.com/go-xorm/core/db.go b/vendor/github.com/go-xorm/core/db.go index 9969fa4313493..3e50a14795da9 100644 --- a/vendor/github.com/go-xorm/core/db.go +++ b/vendor/github.com/go-xorm/core/db.go @@ -1,9 +1,13 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( + "context" "database/sql" "database/sql/driver" - "errors" "fmt" "reflect" "regexp" @@ -68,6 +72,7 @@ type cacheStruct struct { idx int } +// DB is a wrap of sql.DB with extra contents type DB struct { *sql.DB Mapper IMapper @@ -75,6 +80,7 @@ type DB struct { reflectCacheMutex sync.RWMutex } +// Open opens a database func Open(driverName, dataSourceName string) (*DB, error) { db, err := sql.Open(driverName, dataSourceName) if err != nil { @@ -87,6 +93,7 @@ func Open(driverName, dataSourceName string) (*DB, error) { }, nil } +// FromDB creates a DB from a sql.DB func FromDB(db *sql.DB) *DB { return &DB{ DB: db, @@ -108,8 +115,9 @@ func (db *DB) reflectNew(typ reflect.Type) reflect.Value { return cs.value.Index(cs.idx).Addr() } -func (db *DB) Query(query string, args ...interface{}) (*Rows, error) { - rows, err := db.DB.Query(query, args...) +// QueryContext overwrites sql.DB.QueryContext +func (db *DB) QueryContext(ctx context.Context, query string, args ...interface{}) (*Rows, error) { + rows, err := db.DB.QueryContext(ctx, query, args...) if err != nil { if rows != nil { rows.Close() @@ -119,161 +127,69 @@ func (db *DB) Query(query string, args ...interface{}) (*Rows, error) { return &Rows{rows, db}, nil } -func (db *DB) QueryMap(query string, mp interface{}) (*Rows, error) { - query, args, err := MapToSlice(query, mp) - if err != nil { - return nil, err - } - return db.Query(query, args...) +// Query overwrites sql.DB.Query +func (db *DB) Query(query string, args ...interface{}) (*Rows, error) { + return db.QueryContext(context.Background(), query, args...) } -func (db *DB) QueryStruct(query string, st interface{}) (*Rows, error) { - query, args, err := StructToSlice(query, st) +func (db *DB) QueryMapContext(ctx context.Context, query string, mp interface{}) (*Rows, error) { + query, args, err := MapToSlice(query, mp) if err != nil { return nil, err } - return db.Query(query, args...) + return db.QueryContext(ctx, query, args...) } -func (db *DB) QueryRow(query string, args ...interface{}) *Row { - rows, err := db.Query(query, args...) - if err != nil { - return &Row{nil, err} - } - return &Row{rows, nil} -} - -func (db *DB) QueryRowMap(query string, mp interface{}) *Row { - query, args, err := MapToSlice(query, mp) - if err != nil { - return &Row{nil, err} - } - return db.QueryRow(query, args...) +func (db *DB) QueryMap(query string, mp interface{}) (*Rows, error) { + return db.QueryMapContext(context.Background(), query, mp) } -func (db *DB) QueryRowStruct(query string, st interface{}) *Row { +func (db *DB) QueryStructContext(ctx context.Context, query string, st interface{}) (*Rows, error) { query, args, err := StructToSlice(query, st) - if err != nil { - return &Row{nil, err} - } - return db.QueryRow(query, args...) -} - -type Stmt struct { - *sql.Stmt - db *DB - names map[string]int -} - -func (db *DB) Prepare(query string) (*Stmt, error) { - names := make(map[string]int) - var i int - query = re.ReplaceAllStringFunc(query, func(src string) string { - names[src[1:]] = i - i += 1 - return "?" - }) - - stmt, err := db.DB.Prepare(query) if err != nil { return nil, err } - return &Stmt{stmt, db, names}, nil -} - -func (s *Stmt) ExecMap(mp interface{}) (sql.Result, error) { - vv := reflect.ValueOf(mp) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { - return nil, errors.New("mp should be a map's pointer") - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() - } - return s.Stmt.Exec(args...) + return db.QueryContext(ctx, query, args...) } -func (s *Stmt) ExecStruct(st interface{}) (sql.Result, error) { - vv := reflect.ValueOf(st) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { - return nil, errors.New("mp should be a map's pointer") - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().FieldByName(k).Interface() - } - return s.Stmt.Exec(args...) +func (db *DB) QueryStruct(query string, st interface{}) (*Rows, error) { + return db.QueryStructContext(context.Background(), query, st) } -func (s *Stmt) Query(args ...interface{}) (*Rows, error) { - rows, err := s.Stmt.Query(args...) +func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row { + rows, err := db.QueryContext(ctx, query, args...) if err != nil { - return nil, err + return &Row{nil, err} } - return &Rows{rows, s.db}, nil + return &Row{rows, nil} } -func (s *Stmt) QueryMap(mp interface{}) (*Rows, error) { - vv := reflect.ValueOf(mp) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { - return nil, errors.New("mp should be a map's pointer") - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() - } - - return s.Query(args...) +func (db *DB) QueryRow(query string, args ...interface{}) *Row { + return db.QueryRowContext(context.Background(), query, args...) } -func (s *Stmt) QueryStruct(st interface{}) (*Rows, error) { - vv := reflect.ValueOf(st) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { - return nil, errors.New("mp should be a map's pointer") - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().FieldByName(k).Interface() +func (db *DB) QueryRowMapContext(ctx context.Context, query string, mp interface{}) *Row { + query, args, err := MapToSlice(query, mp) + if err != nil { + return &Row{nil, err} } - - return s.Query(args...) + return db.QueryRowContext(ctx, query, args...) } -func (s *Stmt) QueryRow(args ...interface{}) *Row { - rows, err := s.Query(args...) - return &Row{rows, err} +func (db *DB) QueryRowMap(query string, mp interface{}) *Row { + return db.QueryRowMapContext(context.Background(), query, mp) } -func (s *Stmt) QueryRowMap(mp interface{}) *Row { - vv := reflect.ValueOf(mp) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { - return &Row{nil, errors.New("mp should be a map's pointer")} - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() +func (db *DB) QueryRowStructContext(ctx context.Context, query string, st interface{}) *Row { + query, args, err := StructToSlice(query, st) + if err != nil { + return &Row{nil, err} } - - return s.QueryRow(args...) + return db.QueryRowContext(ctx, query, args...) } -func (s *Stmt) QueryRowStruct(st interface{}) *Row { - vv := reflect.ValueOf(st) - if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { - return &Row{nil, errors.New("st should be a struct's pointer")} - } - - args := make([]interface{}, len(s.names)) - for k, i := range s.names { - args[i] = vv.Elem().FieldByName(k).Interface() - } - - return s.QueryRow(args...) +func (db *DB) QueryRowStruct(query string, st interface{}) *Row { + return db.QueryRowStructContext(context.Background(), query, st) } var ( @@ -282,120 +198,26 @@ var ( // insert into (name) values (?) // insert into (name) values (?name) -func (db *DB) ExecMap(query string, mp interface{}) (sql.Result, error) { - query, args, err := MapToSlice(query, mp) - if err != nil { - return nil, err - } - return db.DB.Exec(query, args...) -} - -func (db *DB) ExecStruct(query string, st interface{}) (sql.Result, error) { - query, args, err := StructToSlice(query, st) - if err != nil { - return nil, err - } - return db.DB.Exec(query, args...) -} - -type EmptyScanner struct { -} - -func (EmptyScanner) Scan(src interface{}) error { - return nil -} - -type Tx struct { - *sql.Tx - db *DB -} - -func (db *DB) Begin() (*Tx, error) { - tx, err := db.DB.Begin() - if err != nil { - return nil, err - } - return &Tx{tx, db}, nil -} - -func (tx *Tx) Prepare(query string) (*Stmt, error) { - names := make(map[string]int) - var i int - query = re.ReplaceAllStringFunc(query, func(src string) string { - names[src[1:]] = i - i += 1 - return "?" - }) - - stmt, err := tx.Tx.Prepare(query) - if err != nil { - return nil, err - } - return &Stmt{stmt, tx.db, names}, nil -} - -func (tx *Tx) Stmt(stmt *Stmt) *Stmt { - // TODO: - return stmt -} - -func (tx *Tx) ExecMap(query string, mp interface{}) (sql.Result, error) { +func (db *DB) ExecMapContext(ctx context.Context, query string, mp interface{}) (sql.Result, error) { query, args, err := MapToSlice(query, mp) if err != nil { return nil, err } - return tx.Tx.Exec(query, args...) -} - -func (tx *Tx) ExecStruct(query string, st interface{}) (sql.Result, error) { - query, args, err := StructToSlice(query, st) - if err != nil { - return nil, err - } - return tx.Tx.Exec(query, args...) -} - -func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) { - rows, err := tx.Tx.Query(query, args...) - if err != nil { - return nil, err - } - return &Rows{rows, tx.db}, nil + return db.DB.ExecContext(ctx, query, args...) } -func (tx *Tx) QueryMap(query string, mp interface{}) (*Rows, error) { - query, args, err := MapToSlice(query, mp) - if err != nil { - return nil, err - } - return tx.Query(query, args...) +func (db *DB) ExecMap(query string, mp interface{}) (sql.Result, error) { + return db.ExecMapContext(context.Background(), query, mp) } -func (tx *Tx) QueryStruct(query string, st interface{}) (*Rows, error) { +func (db *DB) ExecStructContext(ctx context.Context, query string, st interface{}) (sql.Result, error) { query, args, err := StructToSlice(query, st) if err != nil { return nil, err } - return tx.Query(query, args...) -} - -func (tx *Tx) QueryRow(query string, args ...interface{}) *Row { - rows, err := tx.Query(query, args...) - return &Row{rows, err} -} - -func (tx *Tx) QueryRowMap(query string, mp interface{}) *Row { - query, args, err := MapToSlice(query, mp) - if err != nil { - return &Row{nil, err} - } - return tx.QueryRow(query, args...) + return db.DB.ExecContext(ctx, query, args...) } -func (tx *Tx) QueryRowStruct(query string, st interface{}) *Row { - query, args, err := StructToSlice(query, st) - if err != nil { - return &Row{nil, err} - } - return tx.QueryRow(query, args...) +func (db *DB) ExecStruct(query string, st interface{}) (sql.Result, error) { + return db.ExecStructContext(context.Background(), query, st) } diff --git a/vendor/github.com/go-xorm/core/dialect.go b/vendor/github.com/go-xorm/core/dialect.go index c288a0847837f..5d35a4f11d980 100644 --- a/vendor/github.com/go-xorm/core/dialect.go +++ b/vendor/github.com/go-xorm/core/dialect.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/driver.go b/vendor/github.com/go-xorm/core/driver.go index 0f1020b403ba8..ceef4ba61822e 100644 --- a/vendor/github.com/go-xorm/core/driver.go +++ b/vendor/github.com/go-xorm/core/driver.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core type Driver interface { diff --git a/vendor/github.com/go-xorm/core/error.go b/vendor/github.com/go-xorm/core/error.go index 640e6036e6681..63ea53e466c11 100644 --- a/vendor/github.com/go-xorm/core/error.go +++ b/vendor/github.com/go-xorm/core/error.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import "errors" diff --git a/vendor/github.com/go-xorm/core/filter.go b/vendor/github.com/go-xorm/core/filter.go index 35b0ece676484..6aeed4244c1ea 100644 --- a/vendor/github.com/go-xorm/core/filter.go +++ b/vendor/github.com/go-xorm/core/filter.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/go.mod b/vendor/github.com/go-xorm/core/go.mod index 70c86bcbc8338..b68392bb926b9 100644 --- a/vendor/github.com/go-xorm/core/go.mod +++ b/vendor/github.com/go-xorm/core/go.mod @@ -1 +1,7 @@ -module "github.com/go-xorm/core" +module github.com/go-xorm/core + +require ( + github.com/go-sql-driver/mysql v1.4.1 + github.com/mattn/go-sqlite3 v1.10.0 + google.golang.org/appengine v1.4.0 // indirect +) diff --git a/vendor/github.com/go-xorm/core/go.sum b/vendor/github.com/go-xorm/core/go.sum new file mode 100644 index 0000000000000..8f20f8bc9017f --- /dev/null +++ b/vendor/github.com/go-xorm/core/go.sum @@ -0,0 +1,9 @@ +github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/vendor/github.com/go-xorm/core/ilogger.go b/vendor/github.com/go-xorm/core/ilogger.go index c8d78496054c7..348ab88f4f0f0 100644 --- a/vendor/github.com/go-xorm/core/ilogger.go +++ b/vendor/github.com/go-xorm/core/ilogger.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core type LogLevel int diff --git a/vendor/github.com/go-xorm/core/index.go b/vendor/github.com/go-xorm/core/index.go index 9aa1b7ac99ba3..ac97b6850530f 100644 --- a/vendor/github.com/go-xorm/core/index.go +++ b/vendor/github.com/go-xorm/core/index.go @@ -1,8 +1,11 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( "fmt" - "sort" "strings" ) @@ -46,11 +49,16 @@ func (index *Index) Equal(dst *Index) bool { if len(index.Cols) != len(dst.Cols) { return false } - sort.StringSlice(index.Cols).Sort() - sort.StringSlice(dst.Cols).Sort() for i := 0; i < len(index.Cols); i++ { - if index.Cols[i] != dst.Cols[i] { + var found bool + for j := 0; j < len(dst.Cols); j++ { + if index.Cols[i] == dst.Cols[j] { + found = true + break + } + } + if !found { return false } } diff --git a/vendor/github.com/go-xorm/core/mapper.go b/vendor/github.com/go-xorm/core/mapper.go index bb72a156624ee..ec44ea0db9b74 100644 --- a/vendor/github.com/go-xorm/core/mapper.go +++ b/vendor/github.com/go-xorm/core/mapper.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/pk.go b/vendor/github.com/go-xorm/core/pk.go index 1810dd944be44..05a7672d86b35 100644 --- a/vendor/github.com/go-xorm/core/pk.go +++ b/vendor/github.com/go-xorm/core/pk.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/rows.go b/vendor/github.com/go-xorm/core/rows.go index 580de4f9c669c..2b046d84cc7d4 100644 --- a/vendor/github.com/go-xorm/core/rows.go +++ b/vendor/github.com/go-xorm/core/rows.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/scan.go b/vendor/github.com/go-xorm/core/scan.go index b7c159b2740c1..897b534159ed1 100644 --- a/vendor/github.com/go-xorm/core/scan.go +++ b/vendor/github.com/go-xorm/core/scan.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( @@ -53,3 +57,10 @@ func convertTime(dest *NullTime, src interface{}) error { } return nil } + +type EmptyScanner struct { +} + +func (EmptyScanner) Scan(src interface{}) error { + return nil +} diff --git a/vendor/github.com/go-xorm/core/stmt.go b/vendor/github.com/go-xorm/core/stmt.go new file mode 100644 index 0000000000000..20ee202b9b743 --- /dev/null +++ b/vendor/github.com/go-xorm/core/stmt.go @@ -0,0 +1,165 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package core + +import ( + "context" + "database/sql" + "errors" + "reflect" +) + +type Stmt struct { + *sql.Stmt + db *DB + names map[string]int +} + +func (db *DB) PrepareContext(ctx context.Context, query string) (*Stmt, error) { + names := make(map[string]int) + var i int + query = re.ReplaceAllStringFunc(query, func(src string) string { + names[src[1:]] = i + i += 1 + return "?" + }) + + stmt, err := db.DB.PrepareContext(ctx, query) + if err != nil { + return nil, err + } + return &Stmt{stmt, db, names}, nil +} + +func (db *DB) Prepare(query string) (*Stmt, error) { + return db.PrepareContext(context.Background(), query) +} + +func (s *Stmt) ExecMapContext(ctx context.Context, mp interface{}) (sql.Result, error) { + vv := reflect.ValueOf(mp) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { + return nil, errors.New("mp should be a map's pointer") + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() + } + return s.Stmt.ExecContext(ctx, args...) +} + +func (s *Stmt) ExecMap(mp interface{}) (sql.Result, error) { + return s.ExecMapContext(context.Background(), mp) +} + +func (s *Stmt) ExecStructContext(ctx context.Context, st interface{}) (sql.Result, error) { + vv := reflect.ValueOf(st) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { + return nil, errors.New("mp should be a map's pointer") + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().FieldByName(k).Interface() + } + return s.Stmt.ExecContext(ctx, args...) +} + +func (s *Stmt) ExecStruct(st interface{}) (sql.Result, error) { + return s.ExecStructContext(context.Background(), st) +} + +func (s *Stmt) QueryContext(ctx context.Context, args ...interface{}) (*Rows, error) { + rows, err := s.Stmt.QueryContext(ctx, args...) + if err != nil { + return nil, err + } + return &Rows{rows, s.db}, nil +} + +func (s *Stmt) Query(args ...interface{}) (*Rows, error) { + return s.QueryContext(context.Background(), args...) +} + +func (s *Stmt) QueryMapContext(ctx context.Context, mp interface{}) (*Rows, error) { + vv := reflect.ValueOf(mp) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { + return nil, errors.New("mp should be a map's pointer") + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() + } + + return s.QueryContext(ctx, args...) +} + +func (s *Stmt) QueryMap(mp interface{}) (*Rows, error) { + return s.QueryMapContext(context.Background(), mp) +} + +func (s *Stmt) QueryStructContext(ctx context.Context, st interface{}) (*Rows, error) { + vv := reflect.ValueOf(st) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { + return nil, errors.New("mp should be a map's pointer") + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().FieldByName(k).Interface() + } + + return s.Query(args...) +} + +func (s *Stmt) QueryStruct(st interface{}) (*Rows, error) { + return s.QueryStructContext(context.Background(), st) +} + +func (s *Stmt) QueryRowContext(ctx context.Context, args ...interface{}) *Row { + rows, err := s.QueryContext(ctx, args...) + return &Row{rows, err} +} + +func (s *Stmt) QueryRow(args ...interface{}) *Row { + return s.QueryRowContext(context.Background(), args...) +} + +func (s *Stmt) QueryRowMapContext(ctx context.Context, mp interface{}) *Row { + vv := reflect.ValueOf(mp) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map { + return &Row{nil, errors.New("mp should be a map's pointer")} + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface() + } + + return s.QueryRowContext(ctx, args...) +} + +func (s *Stmt) QueryRowMap(mp interface{}) *Row { + return s.QueryRowMapContext(context.Background(), mp) +} + +func (s *Stmt) QueryRowStructContext(ctx context.Context, st interface{}) *Row { + vv := reflect.ValueOf(st) + if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct { + return &Row{nil, errors.New("st should be a struct's pointer")} + } + + args := make([]interface{}, len(s.names)) + for k, i := range s.names { + args[i] = vv.Elem().FieldByName(k).Interface() + } + + return s.QueryRowContext(ctx, args...) +} + +func (s *Stmt) QueryRowStruct(st interface{}) *Row { + return s.QueryRowStructContext(context.Background(), st) +} diff --git a/vendor/github.com/go-xorm/core/table.go b/vendor/github.com/go-xorm/core/table.go index b5d079404c8eb..d129e60f8b914 100644 --- a/vendor/github.com/go-xorm/core/table.go +++ b/vendor/github.com/go-xorm/core/table.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( diff --git a/vendor/github.com/go-xorm/core/tx.go b/vendor/github.com/go-xorm/core/tx.go new file mode 100644 index 0000000000000..a56b70063eb9f --- /dev/null +++ b/vendor/github.com/go-xorm/core/tx.go @@ -0,0 +1,153 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package core + +import ( + "context" + "database/sql" +) + +type Tx struct { + *sql.Tx + db *DB +} + +func (db *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) { + tx, err := db.DB.BeginTx(ctx, opts) + if err != nil { + return nil, err + } + return &Tx{tx, db}, nil +} + +func (db *DB) Begin() (*Tx, error) { + tx, err := db.DB.Begin() + if err != nil { + return nil, err + } + return &Tx{tx, db}, nil +} + +func (tx *Tx) PrepareContext(ctx context.Context, query string) (*Stmt, error) { + names := make(map[string]int) + var i int + query = re.ReplaceAllStringFunc(query, func(src string) string { + names[src[1:]] = i + i += 1 + return "?" + }) + + stmt, err := tx.Tx.PrepareContext(ctx, query) + if err != nil { + return nil, err + } + return &Stmt{stmt, tx.db, names}, nil +} + +func (tx *Tx) Prepare(query string) (*Stmt, error) { + return tx.PrepareContext(context.Background(), query) +} + +func (tx *Tx) StmtContext(ctx context.Context, stmt *Stmt) *Stmt { + stmt.Stmt = tx.Tx.StmtContext(ctx, stmt.Stmt) + return stmt +} + +func (tx *Tx) Stmt(stmt *Stmt) *Stmt { + return tx.StmtContext(context.Background(), stmt) +} + +func (tx *Tx) ExecMapContext(ctx context.Context, query string, mp interface{}) (sql.Result, error) { + query, args, err := MapToSlice(query, mp) + if err != nil { + return nil, err + } + return tx.Tx.ExecContext(ctx, query, args...) +} + +func (tx *Tx) ExecMap(query string, mp interface{}) (sql.Result, error) { + return tx.ExecMapContext(context.Background(), query, mp) +} + +func (tx *Tx) ExecStructContext(ctx context.Context, query string, st interface{}) (sql.Result, error) { + query, args, err := StructToSlice(query, st) + if err != nil { + return nil, err + } + return tx.Tx.ExecContext(ctx, query, args...) +} + +func (tx *Tx) ExecStruct(query string, st interface{}) (sql.Result, error) { + return tx.ExecStructContext(context.Background(), query, st) +} + +func (tx *Tx) QueryContext(ctx context.Context, query string, args ...interface{}) (*Rows, error) { + rows, err := tx.Tx.QueryContext(ctx, query, args...) + if err != nil { + return nil, err + } + return &Rows{rows, tx.db}, nil +} + +func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) { + return tx.QueryContext(context.Background(), query, args...) +} + +func (tx *Tx) QueryMapContext(ctx context.Context, query string, mp interface{}) (*Rows, error) { + query, args, err := MapToSlice(query, mp) + if err != nil { + return nil, err + } + return tx.QueryContext(ctx, query, args...) +} + +func (tx *Tx) QueryMap(query string, mp interface{}) (*Rows, error) { + return tx.QueryMapContext(context.Background(), query, mp) +} + +func (tx *Tx) QueryStructContext(ctx context.Context, query string, st interface{}) (*Rows, error) { + query, args, err := StructToSlice(query, st) + if err != nil { + return nil, err + } + return tx.QueryContext(ctx, query, args...) +} + +func (tx *Tx) QueryStruct(query string, st interface{}) (*Rows, error) { + return tx.QueryStructContext(context.Background(), query, st) +} + +func (tx *Tx) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row { + rows, err := tx.QueryContext(ctx, query, args...) + return &Row{rows, err} +} + +func (tx *Tx) QueryRow(query string, args ...interface{}) *Row { + return tx.QueryRowContext(context.Background(), query, args...) +} + +func (tx *Tx) QueryRowMapContext(ctx context.Context, query string, mp interface{}) *Row { + query, args, err := MapToSlice(query, mp) + if err != nil { + return &Row{nil, err} + } + return tx.QueryRowContext(ctx, query, args...) +} + +func (tx *Tx) QueryRowMap(query string, mp interface{}) *Row { + return tx.QueryRowMapContext(context.Background(), query, mp) +} + +func (tx *Tx) QueryRowStructContext(ctx context.Context, query string, st interface{}) *Row { + query, args, err := StructToSlice(query, st) + if err != nil { + return &Row{nil, err} + } + return tx.QueryRowContext(ctx, query, args...) +} + +func (tx *Tx) QueryRowStruct(query string, st interface{}) *Row { + return tx.QueryRowStructContext(context.Background(), query, st) +} diff --git a/vendor/github.com/go-xorm/core/type.go b/vendor/github.com/go-xorm/core/type.go index 5cbf93057306e..8164953602e94 100644 --- a/vendor/github.com/go-xorm/core/type.go +++ b/vendor/github.com/go-xorm/core/type.go @@ -1,3 +1,7 @@ +// Copyright 2019 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package core import ( @@ -71,6 +75,7 @@ var ( Char = "CHAR" Varchar = "VARCHAR" + NChar = "NCHAR" NVarchar = "NVARCHAR" TinyText = "TINYTEXT" Text = "TEXT" @@ -84,12 +89,15 @@ var ( Date = "DATE" DateTime = "DATETIME" + SmallDateTime = "SMALLDATETIME" Time = "TIME" TimeStamp = "TIMESTAMP" TimeStampz = "TIMESTAMPZ" Decimal = "DECIMAL" Numeric = "NUMERIC" + Money = "MONEY" + SmallMoney = "SMALLMONEY" Real = "REAL" Float = "FLOAT" @@ -127,6 +135,7 @@ var ( Jsonb: TEXT_TYPE, Char: TEXT_TYPE, + NChar: TEXT_TYPE, Varchar: TEXT_TYPE, NVarchar: TEXT_TYPE, TinyText: TEXT_TYPE, @@ -143,12 +152,15 @@ var ( Time: TIME_TYPE, TimeStamp: TIME_TYPE, TimeStampz: TIME_TYPE, + SmallDateTime: TIME_TYPE, Decimal: NUMERIC_TYPE, Numeric: NUMERIC_TYPE, Real: NUMERIC_TYPE, Float: NUMERIC_TYPE, Double: NUMERIC_TYPE, + Money: NUMERIC_TYPE, + SmallMoney: NUMERIC_TYPE, Binary: BLOB_TYPE, VarBinary: BLOB_TYPE, @@ -295,15 +307,15 @@ func SQLType2Type(st SQLType) reflect.Type { return reflect.TypeOf(float32(1)) case Double: return reflect.TypeOf(float64(1)) - case Char, Varchar, NVarchar, TinyText, Text, NText, MediumText, LongText, Enum, Set, Uuid, Clob, SysName: + case Char, NChar, Varchar, NVarchar, TinyText, Text, NText, MediumText, LongText, Enum, Set, Uuid, Clob, SysName: return reflect.TypeOf("") case TinyBlob, Blob, LongBlob, Bytea, Binary, MediumBlob, VarBinary, UniqueIdentifier: return reflect.TypeOf([]byte{}) case Bool: return reflect.TypeOf(true) - case DateTime, Date, Time, TimeStamp, TimeStampz: + case DateTime, Date, Time, TimeStamp, TimeStampz, SmallDateTime: return reflect.TypeOf(c_TIME_DEFAULT) - case Decimal, Numeric: + case Decimal, Numeric, Money, SmallMoney: return reflect.TypeOf("") default: return reflect.TypeOf("") diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go index f02849c56f220..ff714a37615b9 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_others.go +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -1,4 +1,4 @@ -// +build appengine js +// +build appengine js nacl package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux.go b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go similarity index 95% rename from vendor/github.com/mattn/go-isatty/isatty_linux.go rename to vendor/github.com/mattn/go-isatty/isatty_tcgets.go index 4f8af465206ec..453b025d0df02 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_linux.go +++ b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux aix // +build !appengine // +build !android diff --git a/vendor/google.golang.org/appengine/internal/api.go b/vendor/google.golang.org/appengine/internal/api.go index 16f87c5d3787b..bbc1cb9c34551 100644 --- a/vendor/google.golang.org/appengine/internal/api.go +++ b/vendor/google.golang.org/appengine/internal/api.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. // +build !appengine -// +build go1.7 package internal @@ -130,7 +129,13 @@ func handleHTTP(w http.ResponseWriter, r *http.Request) { flushes++ } c.pendingLogs.Unlock() - go c.flushLog(false) + flushed := make(chan struct{}) + go func() { + defer close(flushed) + // Force a log flush, because with very short requests we + // may not ever flush logs. + c.flushLog(true) + }() w.Header().Set(logFlushHeader, strconv.Itoa(flushes)) // Avoid nil Write call if c.Write is never called. @@ -140,6 +145,9 @@ func handleHTTP(w http.ResponseWriter, r *http.Request) { if c.outBody != nil { w.Write(c.outBody) } + // Wait for the last flush to complete before returning, + // otherwise the security ticket will not be valid. + <-flushed } func executeRequestSafely(c *context, r *http.Request) { @@ -571,7 +579,10 @@ func logf(c *context, level int64, format string, args ...interface{}) { Level: &level, Message: &s, }) - log.Print(logLevelName[level] + ": " + s) + // Only duplicate log to stderr if not running on App Engine second generation + if !IsSecondGen() { + log.Print(logLevelName[level] + ": " + s) + } } // flushLog attempts to flush any pending logs to the appserver. diff --git a/vendor/google.golang.org/appengine/internal/api_pre17.go b/vendor/google.golang.org/appengine/internal/api_pre17.go deleted file mode 100644 index 028b4f056e0d3..0000000000000 --- a/vendor/google.golang.org/appengine/internal/api_pre17.go +++ /dev/null @@ -1,682 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// +build !appengine -// +build !go1.7 - -package internal - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "log" - "net" - "net/http" - "net/url" - "os" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" - - "github.com/golang/protobuf/proto" - netcontext "golang.org/x/net/context" - - basepb "google.golang.org/appengine/internal/base" - logpb "google.golang.org/appengine/internal/log" - remotepb "google.golang.org/appengine/internal/remote_api" -) - -const ( - apiPath = "/rpc_http" - defaultTicketSuffix = "/default.20150612t184001.0" -) - -var ( - // Incoming headers. - ticketHeader = http.CanonicalHeaderKey("X-AppEngine-API-Ticket") - dapperHeader = http.CanonicalHeaderKey("X-Google-DapperTraceInfo") - traceHeader = http.CanonicalHeaderKey("X-Cloud-Trace-Context") - curNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace") - userIPHeader = http.CanonicalHeaderKey("X-AppEngine-User-IP") - remoteAddrHeader = http.CanonicalHeaderKey("X-AppEngine-Remote-Addr") - - // Outgoing headers. - apiEndpointHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Endpoint") - apiEndpointHeaderValue = []string{"app-engine-apis"} - apiMethodHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Method") - apiMethodHeaderValue = []string{"/VMRemoteAPI.CallRemoteAPI"} - apiDeadlineHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Deadline") - apiContentType = http.CanonicalHeaderKey("Content-Type") - apiContentTypeValue = []string{"application/octet-stream"} - logFlushHeader = http.CanonicalHeaderKey("X-AppEngine-Log-Flush-Count") - - apiHTTPClient = &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: limitDial, - }, - } - - defaultTicketOnce sync.Once - defaultTicket string -) - -func apiURL() *url.URL { - host, port := "appengine.googleapis.internal", "10001" - if h := os.Getenv("API_HOST"); h != "" { - host = h - } - if p := os.Getenv("API_PORT"); p != "" { - port = p - } - return &url.URL{ - Scheme: "http", - Host: host + ":" + port, - Path: apiPath, - } -} - -func handleHTTP(w http.ResponseWriter, r *http.Request) { - c := &context{ - req: r, - outHeader: w.Header(), - apiURL: apiURL(), - } - stopFlushing := make(chan int) - - ctxs.Lock() - ctxs.m[r] = c - ctxs.Unlock() - defer func() { - ctxs.Lock() - delete(ctxs.m, r) - ctxs.Unlock() - }() - - // Patch up RemoteAddr so it looks reasonable. - if addr := r.Header.Get(userIPHeader); addr != "" { - r.RemoteAddr = addr - } else if addr = r.Header.Get(remoteAddrHeader); addr != "" { - r.RemoteAddr = addr - } else { - // Should not normally reach here, but pick a sensible default anyway. - r.RemoteAddr = "127.0.0.1" - } - // The address in the headers will most likely be of these forms: - // 123.123.123.123 - // 2001:db8::1 - // net/http.Request.RemoteAddr is specified to be in "IP:port" form. - if _, _, err := net.SplitHostPort(r.RemoteAddr); err != nil { - // Assume the remote address is only a host; add a default port. - r.RemoteAddr = net.JoinHostPort(r.RemoteAddr, "80") - } - - // Start goroutine responsible for flushing app logs. - // This is done after adding c to ctx.m (and stopped before removing it) - // because flushing logs requires making an API call. - go c.logFlusher(stopFlushing) - - executeRequestSafely(c, r) - c.outHeader = nil // make sure header changes aren't respected any more - - stopFlushing <- 1 // any logging beyond this point will be dropped - - // Flush any pending logs asynchronously. - c.pendingLogs.Lock() - flushes := c.pendingLogs.flushes - if len(c.pendingLogs.lines) > 0 { - flushes++ - } - c.pendingLogs.Unlock() - go c.flushLog(false) - w.Header().Set(logFlushHeader, strconv.Itoa(flushes)) - - // Avoid nil Write call if c.Write is never called. - if c.outCode != 0 { - w.WriteHeader(c.outCode) - } - if c.outBody != nil { - w.Write(c.outBody) - } -} - -func executeRequestSafely(c *context, r *http.Request) { - defer func() { - if x := recover(); x != nil { - logf(c, 4, "%s", renderPanic(x)) // 4 == critical - c.outCode = 500 - } - }() - - http.DefaultServeMux.ServeHTTP(c, r) -} - -func renderPanic(x interface{}) string { - buf := make([]byte, 16<<10) // 16 KB should be plenty - buf = buf[:runtime.Stack(buf, false)] - - // Remove the first few stack frames: - // this func - // the recover closure in the caller - // That will root the stack trace at the site of the panic. - const ( - skipStart = "internal.renderPanic" - skipFrames = 2 - ) - start := bytes.Index(buf, []byte(skipStart)) - p := start - for i := 0; i < skipFrames*2 && p+1 < len(buf); i++ { - p = bytes.IndexByte(buf[p+1:], '\n') + p + 1 - if p < 0 { - break - } - } - if p >= 0 { - // buf[start:p+1] is the block to remove. - // Copy buf[p+1:] over buf[start:] and shrink buf. - copy(buf[start:], buf[p+1:]) - buf = buf[:len(buf)-(p+1-start)] - } - - // Add panic heading. - head := fmt.Sprintf("panic: %v\n\n", x) - if len(head) > len(buf) { - // Extremely unlikely to happen. - return head - } - copy(buf[len(head):], buf) - copy(buf, head) - - return string(buf) -} - -var ctxs = struct { - sync.Mutex - m map[*http.Request]*context - bg *context // background context, lazily initialized - // dec is used by tests to decorate the netcontext.Context returned - // for a given request. This allows tests to add overrides (such as - // WithAppIDOverride) to the context. The map is nil outside tests. - dec map[*http.Request]func(netcontext.Context) netcontext.Context -}{ - m: make(map[*http.Request]*context), -} - -// context represents the context of an in-flight HTTP request. -// It implements the appengine.Context and http.ResponseWriter interfaces. -type context struct { - req *http.Request - - outCode int - outHeader http.Header - outBody []byte - - pendingLogs struct { - sync.Mutex - lines []*logpb.UserAppLogLine - flushes int - } - - apiURL *url.URL -} - -var contextKey = "holds a *context" - -// fromContext returns the App Engine context or nil if ctx is not -// derived from an App Engine context. -func fromContext(ctx netcontext.Context) *context { - c, _ := ctx.Value(&contextKey).(*context) - return c -} - -func withContext(parent netcontext.Context, c *context) netcontext.Context { - ctx := netcontext.WithValue(parent, &contextKey, c) - if ns := c.req.Header.Get(curNamespaceHeader); ns != "" { - ctx = withNamespace(ctx, ns) - } - return ctx -} - -func toContext(c *context) netcontext.Context { - return withContext(netcontext.Background(), c) -} - -func IncomingHeaders(ctx netcontext.Context) http.Header { - if c := fromContext(ctx); c != nil { - return c.req.Header - } - return nil -} - -func ReqContext(req *http.Request) netcontext.Context { - return WithContext(netcontext.Background(), req) -} - -func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context { - ctxs.Lock() - c := ctxs.m[req] - d := ctxs.dec[req] - ctxs.Unlock() - - if d != nil { - parent = d(parent) - } - - if c == nil { - // Someone passed in an http.Request that is not in-flight. - // We panic here rather than panicking at a later point - // so that stack traces will be more sensible. - log.Panic("appengine: NewContext passed an unknown http.Request") - } - return withContext(parent, c) -} - -// DefaultTicket returns a ticket used for background context or dev_appserver. -func DefaultTicket() string { - defaultTicketOnce.Do(func() { - if IsDevAppServer() { - defaultTicket = "testapp" + defaultTicketSuffix - return - } - appID := partitionlessAppID() - escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1) - majVersion := VersionID(nil) - if i := strings.Index(majVersion, "."); i > 0 { - majVersion = majVersion[:i] - } - defaultTicket = fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID()) - }) - return defaultTicket -} - -func BackgroundContext() netcontext.Context { - ctxs.Lock() - defer ctxs.Unlock() - - if ctxs.bg != nil { - return toContext(ctxs.bg) - } - - // Compute background security ticket. - ticket := DefaultTicket() - - ctxs.bg = &context{ - req: &http.Request{ - Header: http.Header{ - ticketHeader: []string{ticket}, - }, - }, - apiURL: apiURL(), - } - - // TODO(dsymonds): Wire up the shutdown handler to do a final flush. - go ctxs.bg.logFlusher(make(chan int)) - - return toContext(ctxs.bg) -} - -// RegisterTestRequest registers the HTTP request req for testing, such that -// any API calls are sent to the provided URL. It returns a closure to delete -// the registration. -// It should only be used by aetest package. -func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) (*http.Request, func()) { - c := &context{ - req: req, - apiURL: apiURL, - } - ctxs.Lock() - defer ctxs.Unlock() - if _, ok := ctxs.m[req]; ok { - log.Panic("req already associated with context") - } - if _, ok := ctxs.dec[req]; ok { - log.Panic("req already associated with context") - } - if ctxs.dec == nil { - ctxs.dec = make(map[*http.Request]func(netcontext.Context) netcontext.Context) - } - ctxs.m[req] = c - ctxs.dec[req] = decorate - - return req, func() { - ctxs.Lock() - delete(ctxs.m, req) - delete(ctxs.dec, req) - ctxs.Unlock() - } -} - -var errTimeout = &CallError{ - Detail: "Deadline exceeded", - Code: int32(remotepb.RpcError_CANCELLED), - Timeout: true, -} - -func (c *context) Header() http.Header { return c.outHeader } - -// Copied from $GOROOT/src/pkg/net/http/transfer.go. Some response status -// codes do not permit a response body (nor response entity headers such as -// Content-Length, Content-Type, etc). -func bodyAllowedForStatus(status int) bool { - switch { - case status >= 100 && status <= 199: - return false - case status == 204: - return false - case status == 304: - return false - } - return true -} - -func (c *context) Write(b []byte) (int, error) { - if c.outCode == 0 { - c.WriteHeader(http.StatusOK) - } - if len(b) > 0 && !bodyAllowedForStatus(c.outCode) { - return 0, http.ErrBodyNotAllowed - } - c.outBody = append(c.outBody, b...) - return len(b), nil -} - -func (c *context) WriteHeader(code int) { - if c.outCode != 0 { - logf(c, 3, "WriteHeader called multiple times on request.") // error level - return - } - c.outCode = code -} - -func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) { - hreq := &http.Request{ - Method: "POST", - URL: c.apiURL, - Header: http.Header{ - apiEndpointHeader: apiEndpointHeaderValue, - apiMethodHeader: apiMethodHeaderValue, - apiContentType: apiContentTypeValue, - apiDeadlineHeader: []string{strconv.FormatFloat(timeout.Seconds(), 'f', -1, 64)}, - }, - Body: ioutil.NopCloser(bytes.NewReader(body)), - ContentLength: int64(len(body)), - Host: c.apiURL.Host, - } - if info := c.req.Header.Get(dapperHeader); info != "" { - hreq.Header.Set(dapperHeader, info) - } - if info := c.req.Header.Get(traceHeader); info != "" { - hreq.Header.Set(traceHeader, info) - } - - tr := apiHTTPClient.Transport.(*http.Transport) - - var timedOut int32 // atomic; set to 1 if timed out - t := time.AfterFunc(timeout, func() { - atomic.StoreInt32(&timedOut, 1) - tr.CancelRequest(hreq) - }) - defer t.Stop() - defer func() { - // Check if timeout was exceeded. - if atomic.LoadInt32(&timedOut) != 0 { - err = errTimeout - } - }() - - hresp, err := apiHTTPClient.Do(hreq) - if err != nil { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge HTTP failed: %v", err), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - defer hresp.Body.Close() - hrespBody, err := ioutil.ReadAll(hresp.Body) - if hresp.StatusCode != 200 { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge returned HTTP %d (%q)", hresp.StatusCode, hrespBody), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - if err != nil { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge response bad: %v", err), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - return hrespBody, nil -} - -func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error { - if ns := NamespaceFromContext(ctx); ns != "" { - if fn, ok := NamespaceMods[service]; ok { - fn(in, ns) - } - } - - if f, ctx, ok := callOverrideFromContext(ctx); ok { - return f(ctx, service, method, in, out) - } - - // Handle already-done contexts quickly. - select { - case <-ctx.Done(): - return ctx.Err() - default: - } - - c := fromContext(ctx) - if c == nil { - // Give a good error message rather than a panic lower down. - return errNotAppEngineContext - } - - // Apply transaction modifications if we're in a transaction. - if t := transactionFromContext(ctx); t != nil { - if t.finished { - return errors.New("transaction context has expired") - } - applyTransaction(in, &t.transaction) - } - - // Default RPC timeout is 60s. - timeout := 60 * time.Second - if deadline, ok := ctx.Deadline(); ok { - timeout = deadline.Sub(time.Now()) - } - - data, err := proto.Marshal(in) - if err != nil { - return err - } - - ticket := c.req.Header.Get(ticketHeader) - // Use a test ticket under test environment. - if ticket == "" { - if appid := ctx.Value(&appIDOverrideKey); appid != nil { - ticket = appid.(string) + defaultTicketSuffix - } - } - // Fall back to use background ticket when the request ticket is not available in Flex or dev_appserver. - if ticket == "" { - ticket = DefaultTicket() - } - req := &remotepb.Request{ - ServiceName: &service, - Method: &method, - Request: data, - RequestId: &ticket, - } - hreqBody, err := proto.Marshal(req) - if err != nil { - return err - } - - hrespBody, err := c.post(hreqBody, timeout) - if err != nil { - return err - } - - res := &remotepb.Response{} - if err := proto.Unmarshal(hrespBody, res); err != nil { - return err - } - if res.RpcError != nil { - ce := &CallError{ - Detail: res.RpcError.GetDetail(), - Code: *res.RpcError.Code, - } - switch remotepb.RpcError_ErrorCode(ce.Code) { - case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED: - ce.Timeout = true - } - return ce - } - if res.ApplicationError != nil { - return &APIError{ - Service: *req.ServiceName, - Detail: res.ApplicationError.GetDetail(), - Code: *res.ApplicationError.Code, - } - } - if res.Exception != nil || res.JavaException != nil { - // This shouldn't happen, but let's be defensive. - return &CallError{ - Detail: "service bridge returned exception", - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - return proto.Unmarshal(res.Response, out) -} - -func (c *context) Request() *http.Request { - return c.req -} - -func (c *context) addLogLine(ll *logpb.UserAppLogLine) { - // Truncate long log lines. - // TODO(dsymonds): Check if this is still necessary. - const lim = 8 << 10 - if len(*ll.Message) > lim { - suffix := fmt.Sprintf("...(length %d)", len(*ll.Message)) - ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix) - } - - c.pendingLogs.Lock() - c.pendingLogs.lines = append(c.pendingLogs.lines, ll) - c.pendingLogs.Unlock() -} - -var logLevelName = map[int64]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - 4: "CRITICAL", -} - -func logf(c *context, level int64, format string, args ...interface{}) { - if c == nil { - panic("not an App Engine context") - } - s := fmt.Sprintf(format, args...) - s = strings.TrimRight(s, "\n") // Remove any trailing newline characters. - c.addLogLine(&logpb.UserAppLogLine{ - TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3), - Level: &level, - Message: &s, - }) - log.Print(logLevelName[level] + ": " + s) -} - -// flushLog attempts to flush any pending logs to the appserver. -// It should not be called concurrently. -func (c *context) flushLog(force bool) (flushed bool) { - c.pendingLogs.Lock() - // Grab up to 30 MB. We can get away with up to 32 MB, but let's be cautious. - n, rem := 0, 30<<20 - for ; n < len(c.pendingLogs.lines); n++ { - ll := c.pendingLogs.lines[n] - // Each log line will require about 3 bytes of overhead. - nb := proto.Size(ll) + 3 - if nb > rem { - break - } - rem -= nb - } - lines := c.pendingLogs.lines[:n] - c.pendingLogs.lines = c.pendingLogs.lines[n:] - c.pendingLogs.Unlock() - - if len(lines) == 0 && !force { - // Nothing to flush. - return false - } - - rescueLogs := false - defer func() { - if rescueLogs { - c.pendingLogs.Lock() - c.pendingLogs.lines = append(lines, c.pendingLogs.lines...) - c.pendingLogs.Unlock() - } - }() - - buf, err := proto.Marshal(&logpb.UserAppLogGroup{ - LogLine: lines, - }) - if err != nil { - log.Printf("internal.flushLog: marshaling UserAppLogGroup: %v", err) - rescueLogs = true - return false - } - - req := &logpb.FlushRequest{ - Logs: buf, - } - res := &basepb.VoidProto{} - c.pendingLogs.Lock() - c.pendingLogs.flushes++ - c.pendingLogs.Unlock() - if err := Call(toContext(c), "logservice", "Flush", req, res); err != nil { - log.Printf("internal.flushLog: Flush RPC: %v", err) - rescueLogs = true - return false - } - return true -} - -const ( - // Log flushing parameters. - flushInterval = 1 * time.Second - forceFlushInterval = 60 * time.Second -) - -func (c *context) logFlusher(stop <-chan int) { - lastFlush := time.Now() - tick := time.NewTicker(flushInterval) - for { - select { - case <-stop: - // Request finished. - tick.Stop() - return - case <-tick.C: - force := time.Now().Sub(lastFlush) > forceFlushInterval - if c.flushLog(force) { - lastFlush = time.Now() - } - } - } -} - -func ContextForTesting(req *http.Request) netcontext.Context { - return toContext(&context{req: req}) -} diff --git a/vendor/google.golang.org/appengine/internal/identity.go b/vendor/google.golang.org/appengine/internal/identity.go index d538701ab3b2b..9b4134e425732 100644 --- a/vendor/google.golang.org/appengine/internal/identity.go +++ b/vendor/google.golang.org/appengine/internal/identity.go @@ -4,11 +4,52 @@ package internal -import netcontext "golang.org/x/net/context" +import ( + "os" -// These functions are implementations of the wrapper functions -// in ../appengine/identity.go. See that file for commentary. + netcontext "golang.org/x/net/context" +) +var ( + // This is set to true in identity_classic.go, which is behind the appengine build tag. + // The appengine build tag is set for the first generation runtimes (<= Go 1.9) but not + // the second generation runtimes (>= Go 1.11), so this indicates whether we're on a + // first-gen runtime. See IsStandard below for the second-gen check. + appengineStandard bool + + // This is set to true in identity_flex.go, which is behind the appenginevm build tag. + appengineFlex bool +) + +// AppID is the implementation of the wrapper function of the same name in +// ../identity.go. See that file for commentary. func AppID(c netcontext.Context) string { return appID(FullyQualifiedAppID(c)) } + +// IsStandard is the implementation of the wrapper function of the same name in +// ../appengine.go. See that file for commentary. +func IsStandard() bool { + // appengineStandard will be true for first-gen runtimes (<= Go 1.9) but not + // second-gen (>= Go 1.11). + return appengineStandard || IsSecondGen() +} + +// IsStandard is the implementation of the wrapper function of the same name in +// ../appengine.go. See that file for commentary. +func IsSecondGen() bool { + // Second-gen runtimes set $GAE_ENV so we use that to check if we're on a second-gen runtime. + return os.Getenv("GAE_ENV") == "standard" +} + +// IsFlex is the implementation of the wrapper function of the same name in +// ../appengine.go. See that file for commentary. +func IsFlex() bool { + return appengineFlex +} + +// IsAppEngine is the implementation of the wrapper function of the same name in +// ../appengine.go. See that file for commentary. +func IsAppEngine() bool { + return IsStandard() || IsFlex() +} diff --git a/vendor/google.golang.org/appengine/internal/identity_classic.go b/vendor/google.golang.org/appengine/internal/identity_classic.go index b59603f13293e..4e979f45e34d5 100644 --- a/vendor/google.golang.org/appengine/internal/identity_classic.go +++ b/vendor/google.golang.org/appengine/internal/identity_classic.go @@ -12,6 +12,10 @@ import ( netcontext "golang.org/x/net/context" ) +func init() { + appengineStandard = true +} + func DefaultVersionHostname(ctx netcontext.Context) string { c := fromContext(ctx) if c == nil { diff --git a/vendor/google.golang.org/appengine/internal/identity_flex.go b/vendor/google.golang.org/appengine/internal/identity_flex.go new file mode 100644 index 0000000000000..d5e2e7b5e3f8c --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/identity_flex.go @@ -0,0 +1,11 @@ +// Copyright 2018 Google LLC. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +// +build appenginevm + +package internal + +func init() { + appengineFlex = true +} diff --git a/vendor/google.golang.org/appengine/internal/main.go b/vendor/google.golang.org/appengine/internal/main.go index 49036163c2b0a..1e765312fd180 100644 --- a/vendor/google.golang.org/appengine/internal/main.go +++ b/vendor/google.golang.org/appengine/internal/main.go @@ -11,5 +11,6 @@ import ( ) func Main() { + MainPath = "" appengine_internal.Main() } diff --git a/vendor/google.golang.org/appengine/internal/main_common.go b/vendor/google.golang.org/appengine/internal/main_common.go new file mode 100644 index 0000000000000..357dce4dd0129 --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/main_common.go @@ -0,0 +1,7 @@ +package internal + +// MainPath stores the file path of the main package. On App Engine Standard +// using Go version 1.9 and below, this will be unset. On App Engine Flex and +// App Engine Standard second-gen (Go 1.11 and above), this will be the +// filepath to package main. +var MainPath string diff --git a/vendor/google.golang.org/appengine/internal/main_vm.go b/vendor/google.golang.org/appengine/internal/main_vm.go index 822e784a458d9..ddb79a333879a 100644 --- a/vendor/google.golang.org/appengine/internal/main_vm.go +++ b/vendor/google.golang.org/appengine/internal/main_vm.go @@ -12,9 +12,12 @@ import ( "net/http" "net/url" "os" + "path/filepath" + "runtime" ) func Main() { + MainPath = filepath.Dir(findMainPath()) installHealthChecker(http.DefaultServeMux) port := "8080" @@ -31,6 +34,24 @@ func Main() { } } +// Find the path to package main by looking at the root Caller. +func findMainPath() string { + pc := make([]uintptr, 100) + n := runtime.Callers(2, pc) + frames := runtime.CallersFrames(pc[:n]) + for { + frame, more := frames.Next() + // Tests won't have package main, instead they have testing.tRunner + if frame.Function == "main.main" || frame.Function == "testing.tRunner" { + return frame.File + } + if !more { + break + } + } + return "" +} + func installHealthChecker(mux *http.ServeMux) { // If no health check handler has been installed by this point, add a trivial one. const healthPath = "/_ah/health" diff --git a/vendor/modules.txt b/vendor/modules.txt index e7f91d5bc2d12..65c7a39f7cd5e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,3 +1,9 @@ +# code.gitea.io/log v0.0.0-20190608101221-52ddba89623c +code.gitea.io/log +# gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 +gitea.com/gitea/log +# gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 +gitea.com/xorm/gitea_log_bridge # github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml # github.com/PuerkitoBio/goquery v0.0.0-20170324135448-ed7d758e9a34 @@ -147,11 +153,11 @@ github.com/go-redis/redis/internal/hashtag github.com/go-redis/redis/internal/pool github.com/go-redis/redis/internal/proto github.com/go-redis/redis/internal/util -# github.com/go-sql-driver/mysql v1.4.0 => github.com/go-sql-driver/mysql v0.0.0-20181218123637-c45f530f8e7f +# github.com/go-sql-driver/mysql v1.4.1 => github.com/go-sql-driver/mysql v0.0.0-20181218123637-c45f530f8e7f github.com/go-sql-driver/mysql # github.com/go-xorm/builder v0.3.3 github.com/go-xorm/builder -# github.com/go-xorm/core v0.6.0 +# github.com/go-xorm/core v0.6.2 github.com/go-xorm/core # github.com/go-xorm/xorm v0.0.0-20190116032649-a6300f2a45e0 github.com/go-xorm/xorm @@ -237,7 +243,7 @@ github.com/markbates/goth/providers/gitlab github.com/markbates/goth/providers/gplus github.com/markbates/goth/providers/openidConnect github.com/markbates/goth/providers/twitter -# github.com/mattn/go-isatty v0.0.7 +# github.com/mattn/go-isatty v0.0.8 github.com/mattn/go-isatty # github.com/mattn/go-sqlite3 v1.10.0 github.com/mattn/go-sqlite3 @@ -371,8 +377,8 @@ golang.org/x/net/internal/socks golang.org/x/oauth2 golang.org/x/oauth2/internal # golang.org/x/sys v0.0.0-20190618155005-516e3c20635f -golang.org/x/sys/windows golang.org/x/sys/windows/svc +golang.org/x/sys/windows golang.org/x/sys/unix golang.org/x/sys/cpu # golang.org/x/text v0.3.2 @@ -396,7 +402,7 @@ golang.org/x/text/internal/language/compact golang.org/x/text/internal/utf8internal golang.org/x/text/runes golang.org/x/text/internal/tag -# google.golang.org/appengine v1.2.0 +# google.golang.org/appengine v1.4.0 google.golang.org/appengine/cloudsql google.golang.org/appengine/urlfetch google.golang.org/appengine/internal From a6192299e3ac2bb8d2f09b6b2d0dd1f99432ba9d Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 31 May 2019 22:16:57 +0800 Subject: [PATCH 02/15] move gitea.com/gitea/log to code.gitea.io/log --- cmd/admin.go | 3 +- cmd/migrate.go | 3 +- cmd/web.go | 3 +- go.mod | 2 +- go.sum | 7 +- main.go | 3 +- models/action.go | 3 +- models/admin.go | 3 +- models/branches.go | 3 +- models/git_diff.go | 3 +- models/gpg_key.go | 3 +- models/helper_directory.go | 3 +- models/issue.go | 3 +- models/issue_comment.go | 3 +- models/issue_dependency.go | 3 +- models/issue_mail.go | 3 +- models/issue_milestone.go | 3 +- models/lfs_lock.go | 3 +- models/login_source.go | 3 +- models/mail.go | 3 +- models/migrations/migrations.go | 3 +- models/migrations/v20.go | 3 +- models/migrations/v27.go | 3 +- models/migrations/v28.go | 3 +- models/migrations/v33.go | 3 +- models/migrations/v45.go | 3 +- models/migrations/v50.go | 3 +- models/migrations/v61.go | 3 +- models/migrations/v85.go | 3 +- models/org.go | 3 +- models/org_team.go | 3 +- models/pull.go | 3 +- models/release.go | 3 +- models/repo.go | 3 +- models/repo_indexer.go | 3 +- models/repo_mirror.go | 3 +- models/review.go | 3 +- models/ssh_key.go | 3 +- models/status.go | 3 +- models/u2f.go | 3 +- models/update.go | 3 +- models/user.go | 3 +- models/wiki.go | 3 +- modules/auth/auth.go | 3 +- modules/auth/oauth2/oauth2.go | 3 +- modules/base/tool.go | 3 +- modules/context/api.go | 3 +- modules/context/auth.go | 3 +- modules/context/context.go | 3 +- modules/context/repo.go | 3 +- modules/cron/cron.go | 3 +- modules/indexer/issues/indexer.go | 3 +- modules/indexer/repo.go | 3 +- modules/lfs/locks.go | 3 +- modules/lfs/server.go | 3 +- modules/mailer/mailer.go | 3 +- modules/markup/external/external.go | 3 +- modules/markup/orgmode/orgmode.go | 3 +- modules/migrations/gitea.go | 3 +- modules/migrations/github.go | 3 +- modules/migrations/migrate.go | 3 +- modules/notification/indexer/indexer.go | 3 +- modules/notification/mail/mail.go | 3 +- modules/notification/ui/ui.go | 3 +- modules/repofiles/temp_repo.go | 3 +- modules/repofiles/update.go | 3 +- modules/setting/setting.go | 3 +- modules/ssh/ssh.go | 3 +- modules/templates/dynamic.go | 3 +- modules/templates/helper.go | 3 +- modules/templates/static.go | 3 +- modules/util/url.go | 3 +- routers/admin/auths.go | 3 +- routers/admin/notice.go | 3 +- routers/admin/repos.go | 3 +- routers/admin/users.go | 3 +- routers/api/v1/admin/user.go | 3 +- routers/api/v1/api.go | 3 +- routers/api/v1/convert/convert.go | 3 +- routers/api/v1/repo/pull.go | 3 +- routers/api/v1/repo/repo.go | 3 +- routers/home.go | 3 +- routers/install.go | 3 +- routers/org/members.go | 3 +- routers/org/org.go | 3 +- routers/org/setting.go | 3 +- routers/org/teams.go | 3 +- routers/repo/attachment.go | 3 +- routers/repo/blame.go | 3 +- routers/repo/branch.go | 3 +- routers/repo/commit.go | 3 +- routers/repo/editor.go | 3 +- routers/repo/issue.go | 3 +- routers/repo/pull.go | 3 +- routers/repo/pull_review.go | 3 +- routers/repo/release.go | 3 +- routers/repo/repo.go | 3 +- routers/repo/setting.go | 3 +- routers/repo/setting_protected_branch.go | 3 +- routers/repo/view.go | 3 +- routers/repo/wiki.go | 3 +- routers/routes/routes.go | 3 +- routers/user/auth.go | 3 +- routers/user/auth_openid.go | 3 +- routers/user/home.go | 3 +- routers/user/oauth.go | 4 +- routers/user/setting/account.go | 3 +- routers/user/setting/oauth2.go | 3 +- routers/user/setting/profile.go | 3 +- routers/user/setting/security_openid.go | 3 +- vendor/gitea.com/gitea/log/README.md | 1 - vendor/gitea.com/gitea/log/colors.go | 428 ------------------ vendor/gitea.com/gitea/log/colors_router.go | 83 ---- vendor/gitea.com/gitea/log/conn.go | 121 ----- vendor/gitea.com/gitea/log/console.go | 78 ---- vendor/gitea.com/gitea/log/console_windows.go | 43 -- vendor/gitea.com/gitea/log/errors.go | 62 --- vendor/gitea.com/gitea/log/event.go | 335 -------------- vendor/gitea.com/gitea/log/file.go | 259 ----------- vendor/gitea.com/gitea/log/flags.go | 64 --- vendor/gitea.com/gitea/log/go.mod | 9 - vendor/gitea.com/gitea/log/go.sum | 12 - vendor/gitea.com/gitea/log/level.go | 111 ----- vendor/gitea.com/gitea/log/log.go | 228 ---------- vendor/gitea.com/gitea/log/logger.go | 152 ------- vendor/gitea.com/gitea/log/provider.go | 26 -- vendor/gitea.com/gitea/log/smtp.go | 111 ----- vendor/gitea.com/gitea/log/stack.go | 83 ---- vendor/gitea.com/gitea/log/writer.go | 273 ----------- .../gitea.com/xorm/gitea_log_bridge/bridge.go | 2 +- vendor/gitea.com/xorm/gitea_log_bridge/go.mod | 2 +- vendor/gitea.com/xorm/gitea_log_bridge/go.sum | 4 +- vendor/modules.txt | 4 +- 133 files changed, 225 insertions(+), 2600 deletions(-) delete mode 100644 vendor/gitea.com/gitea/log/README.md delete mode 100644 vendor/gitea.com/gitea/log/colors.go delete mode 100644 vendor/gitea.com/gitea/log/colors_router.go delete mode 100644 vendor/gitea.com/gitea/log/conn.go delete mode 100644 vendor/gitea.com/gitea/log/console.go delete mode 100644 vendor/gitea.com/gitea/log/console_windows.go delete mode 100644 vendor/gitea.com/gitea/log/errors.go delete mode 100644 vendor/gitea.com/gitea/log/event.go delete mode 100644 vendor/gitea.com/gitea/log/file.go delete mode 100644 vendor/gitea.com/gitea/log/flags.go delete mode 100644 vendor/gitea.com/gitea/log/go.mod delete mode 100644 vendor/gitea.com/gitea/log/go.sum delete mode 100644 vendor/gitea.com/gitea/log/level.go delete mode 100644 vendor/gitea.com/gitea/log/log.go delete mode 100644 vendor/gitea.com/gitea/log/logger.go delete mode 100644 vendor/gitea.com/gitea/log/provider.go delete mode 100644 vendor/gitea.com/gitea/log/smtp.go delete mode 100644 vendor/gitea.com/gitea/log/stack.go delete mode 100644 vendor/gitea.com/gitea/log/writer.go diff --git a/cmd/admin.go b/cmd/admin.go index 778de5df03662..d49a60d8453ca 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -15,8 +15,9 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/urfave/cli" ) diff --git a/cmd/migrate.go b/cmd/migrate.go index 595d92fc16e27..5b7f1093d0f28 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -7,8 +7,9 @@ package cmd import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/migrations" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/urfave/cli" ) diff --git a/cmd/web.go b/cmd/web.go index 3960e7e205692..dfa379996e79c 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -13,10 +13,11 @@ import ( "os" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers/routes" + "code.gitea.io/log" "github.com/Unknwon/com" context2 "github.com/gorilla/context" diff --git a/go.mod b/go.mod index a5fa0687cd572..e7702c4067585 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( code.gitea.io/log v0.0.0-20190608101221-52ddba89623c - gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 + gitea.com/xorm/gitea_log_bridge v0.0.0-20190527041858-1699849c7e28 github.com/BurntSushi/toml v0.3.1 // indirect github.com/PuerkitoBio/goquery v0.0.0-20170324135448-ed7d758e9a34 github.com/RoaringBitmap/roaring v0.4.7 // indirect diff --git a/go.sum b/go.sum index d153b364a4cdc..4bfd6eb44cfa4 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,9 @@ cloud.google.com/go v0.30.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +code.gitea.io/log v0.0.0-20190526010349-0560851a166a/go.mod h1:YOBHMQw/14CwuwNStgQyvnzoDJEO6ARjcSdD48QRzhM= code.gitea.io/log v0.0.0-20190608101221-52ddba89623c h1:kdIAfVRLU+oku2e8k+UZcxYuffXWfxDoPs1HYkZzc3k= code.gitea.io/log v0.0.0-20190608101221-52ddba89623c/go.mod h1:YOBHMQw/14CwuwNStgQyvnzoDJEO6ARjcSdD48QRzhM= -gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 h1:y9Ep7Fhwz3D7mko8XRwbpGahnZNaPkJ43Qg/d6Ss9EU= -gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4/go.mod h1:1nV03yHcYc8sGKHpWDe++gxd7yoMDdNOWhIhuykDSnI= -gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 h1:LXbSEMTPH9SdHw4DRgjBdwpzTbmq24Bb34lgf8hlRMw= -gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6/go.mod h1:Tw+QIrkZ1rrDYCNRnfPFPfCnu0265uOLB3bMhJqZRDk= +gitea.com/xorm/gitea_log_bridge v0.0.0-20190527041858-1699849c7e28 h1:Zk1DFvwO1MtrqM8e6jRoV2Iyv2HhJz6IzGqhEqajt/E= +gitea.com/xorm/gitea_log_bridge v0.0.0-20190527041858-1699849c7e28/go.mod h1:YSU13Ek0XHgbG9JOMCe7f4k1zlojVrnKBosYk/kQKZE= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/goquery v0.0.0-20170324135448-ed7d758e9a34 h1:UsHpWO0Elp6NaWVARdZHjiYwkhrspHVEGsyIKPb9OI8= diff --git a/main.go b/main.go index c33a4953c2b18..e26a69b9d8f3b 100644 --- a/main.go +++ b/main.go @@ -13,8 +13,9 @@ import ( "strings" "code.gitea.io/gitea/cmd" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" // register supported doc types _ "code.gitea.io/gitea/modules/markup/csv" diff --git a/models/action.go b/models/action.go index a062046014533..e5c702b968199 100644 --- a/models/action.go +++ b/models/action.go @@ -18,10 +18,11 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/admin.go b/models/admin.go index a965f11a33070..733844e868686 100644 --- a/models/admin.go +++ b/models/admin.go @@ -8,8 +8,9 @@ import ( "fmt" "os" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/models/branches.go b/models/branches.go index 9143c3f47bbc6..b0d04744c44cd 100644 --- a/models/branches.go +++ b/models/branches.go @@ -9,9 +9,10 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/models/git_diff.go b/models/git_diff.go index 79f10ec1eef0d..1a4fe6678977a 100644 --- a/models/git_diff.go +++ b/models/git_diff.go @@ -22,9 +22,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/sergi/go-diff/diffmatchpatch" "golang.org/x/net/html/charset" diff --git a/models/gpg_key.go b/models/gpg_key.go index a3c2c0df706b8..aa064ed3db4fb 100644 --- a/models/gpg_key.go +++ b/models/gpg_key.go @@ -16,8 +16,9 @@ import ( "time" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-xorm/xorm" "github.com/keybase/go-crypto/openpgp" diff --git a/models/helper_directory.go b/models/helper_directory.go index 58f22080ea33d..25c86bdca7a0a 100644 --- a/models/helper_directory.go +++ b/models/helper_directory.go @@ -11,8 +11,9 @@ import ( "path/filepath" "time" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/models/issue.go b/models/issue.go index 3ee2a9016e717..8f023e5d2b0e1 100644 --- a/models/issue.go +++ b/models/issue.go @@ -13,10 +13,11 @@ import ( "strings" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/issue_comment.go b/models/issue_comment.go index 8ca5a1058cd02..28358b09d8637 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -20,9 +20,10 @@ import ( api "code.gitea.io/gitea/modules/structs" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // CommentType defines whether a comment is just a simple comment, an action (like close) or a reference. diff --git a/models/issue_dependency.go b/models/issue_dependency.go index a96575411abd3..bd398452f4811 100644 --- a/models/issue_dependency.go +++ b/models/issue_dependency.go @@ -5,9 +5,10 @@ package models import ( - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // IssueDependency represents an issue dependency diff --git a/models/issue_mail.go b/models/issue_mail.go index db0e8a97e6481..43c97c7d1a4f7 100644 --- a/models/issue_mail.go +++ b/models/issue_mail.go @@ -10,9 +10,10 @@ import ( "github.com/Unknwon/com" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) func (issue *Issue) mailSubject() string { diff --git a/models/issue_milestone.go b/models/issue_milestone.go index 4b4887248f144..6c7dcc9c5a1dc 100644 --- a/models/issue_milestone.go +++ b/models/issue_milestone.go @@ -7,10 +7,11 @@ package models import ( "fmt" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/lfs_lock.go b/models/lfs_lock.go index ebf9694a0baf9..30f564bb9d0d9 100644 --- a/models/lfs_lock.go +++ b/models/lfs_lock.go @@ -11,8 +11,9 @@ import ( "strings" "time" - "code.gitea.io/log" + api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/login_source.go b/models/login_source.go index 7f8a7e9aa1ab9..aee5522a4cd76 100644 --- a/models/login_source.go +++ b/models/login_source.go @@ -21,8 +21,9 @@ import ( "code.gitea.io/gitea/modules/auth/ldap" "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/auth/pam" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // LoginType represents an login type. diff --git a/models/mail.go b/models/mail.go index c3c629792eb82..38b6c2c9c3cad 100644 --- a/models/mail.go +++ b/models/mail.go @@ -11,11 +11,12 @@ import ( "path" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/mailer" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "gopkg.in/gomail.v2" ) diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 13fca1003573b..b2134c9cd2cd1 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -22,8 +22,9 @@ import ( ini "gopkg.in/ini.v1" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const minDBVersion = 4 diff --git a/models/migrations/v20.go b/models/migrations/v20.go index 3d01296d64bc8..8f1efc777c4d1 100644 --- a/models/migrations/v20.go +++ b/models/migrations/v20.go @@ -13,8 +13,9 @@ import ( "path/filepath" "strconv" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v27.go b/models/migrations/v27.go index 16c542377e6bd..5376ef25ade8c 100644 --- a/models/migrations/v27.go +++ b/models/migrations/v27.go @@ -8,8 +8,9 @@ import ( "fmt" "time" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v28.go b/models/migrations/v28.go index c4179053c3cbe..62a40c5106d6d 100644 --- a/models/migrations/v28.go +++ b/models/migrations/v28.go @@ -11,8 +11,9 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v33.go b/models/migrations/v33.go index f550276551c55..dea3f7ea0d08a 100644 --- a/models/migrations/v33.go +++ b/models/migrations/v33.go @@ -7,8 +7,9 @@ package migrations import ( "fmt" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v45.go b/models/migrations/v45.go index 8fd1474c6d154..6b1a90dfd7464 100644 --- a/models/migrations/v45.go +++ b/models/migrations/v45.go @@ -5,8 +5,9 @@ package migrations import ( - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v50.go b/models/migrations/v50.go index ee21ffda614f9..4a298792aea7f 100644 --- a/models/migrations/v50.go +++ b/models/migrations/v50.go @@ -7,8 +7,9 @@ package migrations import ( "time" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v61.go b/models/migrations/v61.go index fed47af836394..7872ac05441b6 100644 --- a/models/migrations/v61.go +++ b/models/migrations/v61.go @@ -9,8 +9,9 @@ import ( "os" "path" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/migrations/v85.go b/models/migrations/v85.go index f113532f08672..cbedcbd8d1034 100644 --- a/models/migrations/v85.go +++ b/models/migrations/v85.go @@ -12,8 +12,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) func hashAppToken(x *xorm.Engine) error { diff --git a/models/org.go b/models/org.go index bcf378f161b3f..54e485a4bfab1 100644 --- a/models/org.go +++ b/models/org.go @@ -11,8 +11,9 @@ import ( "os" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/structs" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/org_team.go b/models/org_team.go index 4cecbc7b917f9..59088b87a0192 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -11,8 +11,9 @@ import ( "sort" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/pull.go b/models/pull.go index 3ac21f59c9427..a9ffccc244438 100644 --- a/models/pull.go +++ b/models/pull.go @@ -18,12 +18,13 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/sync" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/xorm" diff --git a/models/release.go b/models/release.go index 6a046d806b4fd..776a68f2c9ce4 100644 --- a/models/release.go +++ b/models/release.go @@ -10,11 +10,12 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-xorm/builder" ) diff --git a/models/repo.go b/models/repo.go index ae27a59f9585e..286539e1febc4 100644 --- a/models/repo.go +++ b/models/repo.go @@ -27,7 +27,7 @@ import ( "code.gitea.io/gitea/modules/avatar" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/process" @@ -35,6 +35,7 @@ import ( api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/sync" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/repo_indexer.go b/models/repo_indexer.go index b95ee8c016a4e..f00909e0fe957 100644 --- a/models/repo_indexer.go +++ b/models/repo_indexer.go @@ -12,8 +12,9 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/indexer" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/ethantkoenig/rupture" ) diff --git a/models/repo_mirror.go b/models/repo_mirror.go index de14efe816fb4..c7baee82f470a 100644 --- a/models/repo_mirror.go +++ b/models/repo_mirror.go @@ -12,11 +12,12 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/sync" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/xorm" diff --git a/models/review.go b/models/review.go index 3228af8d4dc9f..7bff01e5ac916 100644 --- a/models/review.go +++ b/models/review.go @@ -7,9 +7,10 @@ package models import ( "fmt" - "code.gitea.io/log" + api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-xorm/builder" "github.com/go-xorm/core" diff --git a/models/ssh_key.go b/models/ssh_key.go index c858528f9930f..0338f36c59cb0 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -19,10 +19,11 @@ import ( "sync" "time" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/status.go b/models/status.go index f17c8ce4102e5..36e371bc37c49 100644 --- a/models/status.go +++ b/models/status.go @@ -10,10 +10,11 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-xorm/xorm" ) diff --git a/models/u2f.go b/models/u2f.go index dd9be1f9c432f..b183772f4a752 100644 --- a/models/u2f.go +++ b/models/u2f.go @@ -5,8 +5,9 @@ package models import ( - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/tstranex/u2f" ) diff --git a/models/update.go b/models/update.go index e9939f7b7b27b..a86090567b532 100644 --- a/models/update.go +++ b/models/update.go @@ -13,8 +13,9 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // env keys for git hooks need diff --git a/models/user.go b/models/user.go index 780471580335f..5667fb033432c 100644 --- a/models/user.go +++ b/models/user.go @@ -25,11 +25,12 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/builder" diff --git a/models/wiki.go b/models/wiki.go index fcf8d054a7e33..8b6a61a812be1 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -12,8 +12,9 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/sync" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/modules/auth/auth.go b/modules/auth/auth.go index 6b91e79025202..e789bd3d90e15 100644 --- a/modules/auth/auth.go +++ b/modules/auth/auth.go @@ -18,10 +18,11 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" + "code.gitea.io/log" ) // IsAPIPath if URL is an api path diff --git a/modules/auth/oauth2/oauth2.go b/modules/auth/oauth2/oauth2.go index 9f7d0434f53ea..f5bd3575a2694 100644 --- a/modules/auth/oauth2/oauth2.go +++ b/modules/auth/oauth2/oauth2.go @@ -8,8 +8,9 @@ import ( "math" "net/http" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-xorm/xorm" "github.com/lafriks/xormstore" diff --git a/modules/base/tool.go b/modules/base/tool.go index b51ee91f83a00..711ec96a2bcd2 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -29,9 +29,10 @@ import ( "unicode/utf8" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/Unknwon/i18n" diff --git a/modules/context/api.go b/modules/context/api.go index 7791a308c7af0..11edee47d8c24 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -13,8 +13,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "gopkg.in/macaron.v1" ) diff --git a/modules/context/auth.go b/modules/context/auth.go index 31ef6a88e80e9..a10e26e99056a 100644 --- a/modules/context/auth.go +++ b/modules/context/auth.go @@ -8,8 +8,9 @@ package context import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-macaron/csrf" macaron "gopkg.in/macaron.v1" ) diff --git a/modules/context/context.go b/modules/context/context.go index fe6592d4c23e0..cfb7c40139080 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -17,9 +17,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-macaron/cache" "github.com/go-macaron/csrf" diff --git a/modules/context/repo.go b/modules/context/repo.go index aebc1ba5a0579..38d132be3ebf3 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -15,8 +15,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "gopkg.in/editorconfig/editorconfig-core-go.v1" diff --git a/modules/cron/cron.go b/modules/cron/cron.go index 42548df99f0cc..993afbf04ffe0 100644 --- a/modules/cron/cron.go +++ b/modules/cron/cron.go @@ -10,8 +10,9 @@ import ( "github.com/gogits/cron" "code.gitea.io/gitea/models" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) var c = cron.New() diff --git a/modules/indexer/issues/indexer.go b/modules/indexer/issues/indexer.go index e0822c7d4599c..7da61271225e8 100644 --- a/modules/indexer/issues/indexer.go +++ b/modules/indexer/issues/indexer.go @@ -8,9 +8,10 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // IndexerData data stored in the issue indexer diff --git a/modules/indexer/repo.go b/modules/indexer/repo.go index 1e1c998a1ce56..bfe6b1c13b497 100644 --- a/modules/indexer/repo.go +++ b/modules/indexer/repo.go @@ -7,8 +7,9 @@ package indexer import ( "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/blevesearch/bleve" "github.com/blevesearch/bleve/analysis/analyzer/custom" diff --git a/modules/lfs/locks.go b/modules/lfs/locks.go index 98ccf7d54aabd..1400142f883f7 100644 --- a/modules/lfs/locks.go +++ b/modules/lfs/locks.go @@ -11,9 +11,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/log" ) //checkIsValidRequest check if it a valid request in case of bad request it write the response to ctx. diff --git a/modules/lfs/server.go b/modules/lfs/server.go index 5c031dcf69000..74d1d80390289 100644 --- a/modules/lfs/server.go +++ b/modules/lfs/server.go @@ -14,8 +14,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/dgrijalva/jwt-go" "gopkg.in/macaron.v1" diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go index 2baca8fce9351..7560d8e25a6ad 100644 --- a/modules/mailer/mailer.go +++ b/modules/mailer/mailer.go @@ -18,8 +18,9 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/jaytaylor/html2text" "gopkg.in/gomail.v2" diff --git a/modules/markup/external/external.go b/modules/markup/external/external.go index 18bce3ebff7a0..c207e0f844c1f 100644 --- a/modules/markup/external/external.go +++ b/modules/markup/external/external.go @@ -13,9 +13,10 @@ import ( "runtime" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // RegisterParsers registers all supported third part parsers according settings diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index 43caf6c941e09..e181fe0b393d9 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -5,9 +5,10 @@ package markup import ( - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" + "code.gitea.io/log" "github.com/chaseadamsio/goorgeous" "github.com/russross/blackfriday" diff --git a/modules/migrations/gitea.go b/modules/migrations/gitea.go index 313bc2dd710b1..ca29f5bf7bdc9 100644 --- a/modules/migrations/gitea.go +++ b/modules/migrations/gitea.go @@ -18,10 +18,11 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" gouuid "github.com/satori/go.uuid" ) diff --git a/modules/migrations/github.go b/modules/migrations/github.go index 412cf30b40818..1db58e55f916f 100644 --- a/modules/migrations/github.go +++ b/modules/migrations/github.go @@ -12,8 +12,9 @@ import ( "net/url" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/migrations/base" + "code.gitea.io/log" "github.com/google/go-github/v24/github" "golang.org/x/oauth2" diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 6661446760489..38523d7a59053 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -9,8 +9,9 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/migrations/base" + "code.gitea.io/log" ) // MigrateOptions is equal to base.MigrateOptions diff --git a/modules/notification/indexer/indexer.go b/modules/notification/indexer/indexer.go index 316a1fb017c4e..08db8471e52f5 100644 --- a/modules/notification/indexer/indexer.go +++ b/modules/notification/indexer/indexer.go @@ -7,8 +7,9 @@ package indexer import ( "code.gitea.io/gitea/models" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification/base" + "code.gitea.io/log" ) type indexerNotifier struct { diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go index 3ed68d7623d05..c9de7cc0fcdcf 100644 --- a/modules/notification/mail/mail.go +++ b/modules/notification/mail/mail.go @@ -6,8 +6,9 @@ package mail import ( "code.gitea.io/gitea/models" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification/base" + "code.gitea.io/log" ) type mailNotifier struct { diff --git a/modules/notification/ui/ui.go b/modules/notification/ui/ui.go index 19f652eb795a9..7899336156429 100644 --- a/modules/notification/ui/ui.go +++ b/modules/notification/ui/ui.go @@ -7,8 +7,9 @@ package ui import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification/base" + "code.gitea.io/log" ) type ( diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index 195f5a4050348..433ff32129210 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -17,9 +17,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // TemporaryUploadRepository is a type to wrap our upload repositories as a shallow clone diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index 4e9a92c1b35e1..5188b64cc1f2e 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -17,9 +17,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" + "code.gitea.io/log" ) // IdentityOptions for a person's identity like an author or committer diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 00094f108d0e1..e15bf31b8663b 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -23,9 +23,10 @@ import ( "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + _ "code.gitea.io/gitea/modules/minwinsvc" // import minwinsvc for windows services "code.gitea.io/gitea/modules/user" + "code.gitea.io/log" "github.com/Unknwon/cae/zip" "github.com/Unknwon/com" diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go index 9e975c1285da5..18cc95830af27 100644 --- a/modules/ssh/ssh.go +++ b/modules/ssh/ssh.go @@ -22,8 +22,9 @@ import ( "golang.org/x/crypto/ssh" "code.gitea.io/gitea/models" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) func cleanCommand(cmd string) string { diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go index 9f1aafa1afe5e..eea184876e3f2 100644 --- a/modules/templates/dynamic.go +++ b/modules/templates/dynamic.go @@ -12,8 +12,9 @@ import ( "path" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "gopkg.in/macaron.v1" ) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 8efac4a772f26..4eb614eecb08d 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -24,9 +24,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "golang.org/x/net/html/charset" "golang.org/x/text/transform" diff --git a/modules/templates/static.go b/modules/templates/static.go index 0dd8f79608cae..9128d0fe9d885 100644 --- a/modules/templates/static.go +++ b/modules/templates/static.go @@ -15,8 +15,9 @@ import ( "path" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "gopkg.in/macaron.v1" ) diff --git a/modules/util/url.go b/modules/util/url.go index 0705682506f6f..2d7dc98ef1498 100644 --- a/modules/util/url.go +++ b/modules/util/url.go @@ -9,8 +9,9 @@ import ( "path" "strings" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // PathEscapeSegments escapes segments of a path while not escaping forward slash diff --git a/routers/admin/auths.go b/routers/admin/auths.go index 63f62f3780e1f..2c2c487986422 100644 --- a/routers/admin/auths.go +++ b/routers/admin/auths.go @@ -13,8 +13,9 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/go-xorm/core" diff --git a/routers/admin/notice.go b/routers/admin/notice.go index c0a904a979ed7..23c4b713faf28 100644 --- a/routers/admin/notice.go +++ b/routers/admin/notice.go @@ -9,8 +9,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/routers/admin/repos.go b/routers/admin/repos.go index 0f0a6b5e76518..bf6bd29dc319a 100644 --- a/routers/admin/repos.go +++ b/routers/admin/repos.go @@ -8,9 +8,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" + "code.gitea.io/log" ) const ( diff --git a/routers/admin/users.go b/routers/admin/users.go index 0a21b091ca86f..4b5ba0fdf528f 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -13,9 +13,10 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" + "code.gitea.io/log" ) const ( diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go index 968a7ff34e2e2..04ef07408e303 100644 --- a/routers/api/v1/admin/user.go +++ b/routers/api/v1/admin/user.go @@ -8,11 +8,12 @@ package admin import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/convert" "code.gitea.io/gitea/routers/api/v1/user" + "code.gitea.io/log" ) func parseLoginSource(ctx *context.APIContext, u *models.User, sourceID int64, loginName string) { diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 38c2bcfa9330e..bac8059c7974f 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -63,7 +63,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/admin" @@ -72,6 +72,7 @@ import ( "code.gitea.io/gitea/routers/api/v1/repo" _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation "code.gitea.io/gitea/routers/api/v1/user" + "code.gitea.io/log" "github.com/go-macaron/binding" "github.com/go-macaron/cors" diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index e7c6a930570a5..0921fdc0ce9bd 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -10,10 +10,11 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index bb3a2f1a65458..39ba1d76ea791 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -13,11 +13,12 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // ListPullRequests returns a list of all PRs diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index a18b6cad8999b..19999b393ebbe 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -13,11 +13,12 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/api/v1/convert" + "code.gitea.io/log" api "code.gitea.io/gitea/modules/structs" ) diff --git a/routers/home.go b/routers/home.go index 9c9acee4c80a0..056e2255fef07 100644 --- a/routers/home.go +++ b/routers/home.go @@ -12,11 +12,12 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/search" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/user" + "code.gitea.io/log" ) const ( diff --git a/routers/install.go b/routers/install.go index b87adbce60fbc..c26004b99848c 100644 --- a/routers/install.go +++ b/routers/install.go @@ -20,9 +20,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/user" + "code.gitea.io/log" ) const ( diff --git a/routers/org/members.go b/routers/org/members.go index 44605ca965808..f01199b7adbb6 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -10,8 +10,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/org/org.go b/routers/org/org.go index 5244f8d79683d..5e76ed291c0e0 100644 --- a/routers/org/org.go +++ b/routers/org/org.go @@ -12,8 +12,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/org/setting.go b/routers/org/setting.go index e978d95ce8685..19e02f64ee10e 100644 --- a/routers/org/setting.go +++ b/routers/org/setting.go @@ -12,10 +12,11 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" userSetting "code.gitea.io/gitea/routers/user/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/org/teams.go b/routers/org/teams.go index 7371424030b3b..003f592cd3cd3 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -15,8 +15,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/routers/utils" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 4de6ad5eb35eb..b0ba38e75c87e 100644 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -11,8 +11,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) func renderAttachmentSettings(ctx *context.Context) { diff --git a/routers/repo/blame.go b/routers/repo/blame.go index afe46da77f98a..240fd60d6cb1f 100644 --- a/routers/repo/blame.go +++ b/routers/repo/blame.go @@ -19,10 +19,11 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/branch.go b/routers/repo/branch.go index 9476eec1a87de..eac9fefc98f13 100644 --- a/routers/repo/branch.go +++ b/routers/repo/branch.go @@ -13,9 +13,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 8744b1cc18e5b..3cfc92ee9b4c5 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -13,9 +13,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/editor.go b/routers/repo/editor.go index 6d98b48f217f1..55c7d134658df 100644 --- a/routers/repo/editor.go +++ b/routers/repo/editor.go @@ -16,11 +16,12 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 2e64d93d8e6ba..13fbeae5d4045 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -20,12 +20,13 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/routers/repo/pull.go b/routers/repo/pull.go index c594a868580a7..f24c9780dfe85 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -18,11 +18,12 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/routers/repo/pull_review.go b/routers/repo/pull_review.go index 259f7da5afd70..29940f1f43392 100644 --- a/routers/repo/pull_review.go +++ b/routers/repo/pull_review.go @@ -10,8 +10,9 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/notification" + "code.gitea.io/log" ) // CreateCodeComment will create a code comment including an pending review if required diff --git a/routers/repo/release.go b/routers/repo/release.go index 112ac13a85b80..56042a2cca262 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -12,9 +12,10 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 02a42c7dcf1f6..6429b4e3b4e6b 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -15,10 +15,11 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" ) diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 1e93717ffca6c..800768340d294 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -22,11 +22,12 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" "code.gitea.io/gitea/routers/utils" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/setting_protected_branch.go b/routers/repo/setting_protected_branch.go index ba631f47440e6..83c2a82168931 100644 --- a/routers/repo/setting_protected_branch.go +++ b/routers/repo/setting_protected_branch.go @@ -13,8 +13,9 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // ProtectedBranch render the page to protect the repository diff --git a/routers/repo/view.go b/routers/repo/view.go index 4551b9ebebc9e..ff15197af8bcb 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -20,10 +20,11 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" + "code.gitea.io/log" ) const ( diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index deb2de86780db..d3ee793167540 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -16,10 +16,11 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) const ( diff --git a/routers/routes/routes.go b/routers/routes/routes.go index b80648022e171..c4edc539aed62 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/gzip" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/metrics" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/public" @@ -34,6 +34,7 @@ import ( "code.gitea.io/gitea/routers/repo" "code.gitea.io/gitea/routers/user" userSetting "code.gitea.io/gitea/routers/user/setting" + "code.gitea.io/log" "github.com/go-macaron/binding" "github.com/go-macaron/cache" diff --git a/routers/user/auth.go b/routers/user/auth.go index 4b2822817e434..b9df2543a482b 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -16,10 +16,11 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/go-macaron/captcha" "github.com/markbates/goth" diff --git a/routers/user/auth_openid.go b/routers/user/auth_openid.go index 418a1c2e4e243..bc8077b79bd53 100644 --- a/routers/user/auth_openid.go +++ b/routers/user/auth_openid.go @@ -14,9 +14,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/go-macaron/captcha" ) diff --git a/routers/user/home.go b/routers/user/home.go index 52423214b08f6..547045354a44b 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -14,9 +14,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/keybase/go-crypto/openpgp" diff --git a/routers/user/oauth.go b/routers/user/oauth.go index 2f613eaaa943d..67671515ad7de 100644 --- a/routers/user/oauth.go +++ b/routers/user/oauth.go @@ -7,7 +7,6 @@ package user import ( "encoding/base64" "fmt" - "github.com/go-macaron/binding" "net/url" "strings" @@ -15,11 +14,12 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" "github.com/dgrijalva/jwt-go" + "github.com/go-macaron/binding" ) const ( diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go index 32233cff64405..c473ccd2dee1e 100644 --- a/routers/user/setting/account.go +++ b/routers/user/setting/account.go @@ -10,8 +10,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/user/setting/oauth2.go b/routers/user/setting/oauth2.go index aee69b2289655..ae186a0ab1808 100644 --- a/routers/user/setting/oauth2.go +++ b/routers/user/setting/oauth2.go @@ -11,8 +11,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( diff --git a/routers/user/setting/profile.go b/routers/user/setting/profile.go index 54799acf7ca29..a494103e60c09 100644 --- a/routers/user/setting/profile.go +++ b/routers/user/setting/profile.go @@ -15,8 +15,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/Unknwon/com" "github.com/Unknwon/i18n" diff --git a/routers/user/setting/security_openid.go b/routers/user/setting/security_openid.go index c287d3883fba1..2e83140f385c2 100644 --- a/routers/user/setting/security_openid.go +++ b/routers/user/setting/security_openid.go @@ -9,8 +9,9 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/auth/openid" "code.gitea.io/gitea/modules/context" - "code.gitea.io/log" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // OpenIDPost response for change user's openid diff --git a/vendor/gitea.com/gitea/log/README.md b/vendor/gitea.com/gitea/log/README.md deleted file mode 100644 index 70a7d6f33a8cb..0000000000000 --- a/vendor/gitea.com/gitea/log/README.md +++ /dev/null @@ -1 +0,0 @@ -# Don't Use, Just An Experiment Project \ No newline at end of file diff --git a/vendor/gitea.com/gitea/log/colors.go b/vendor/gitea.com/gitea/log/colors.go deleted file mode 100644 index 0ec8ce4ba86da..0000000000000 --- a/vendor/gitea.com/gitea/log/colors.go +++ /dev/null @@ -1,428 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "io" - "reflect" - "strconv" - "strings" -) - -const escape = "\033" - -// ColorAttribute defines a single SGR Code -type ColorAttribute int - -// Base ColorAttributes -const ( - Reset ColorAttribute = iota - Bold - Faint - Italic - Underline - BlinkSlow - BlinkRapid - ReverseVideo - Concealed - CrossedOut -) - -// Foreground text colors -const ( - FgBlack ColorAttribute = iota + 30 - FgRed - FgGreen - FgYellow - FgBlue - FgMagenta - FgCyan - FgWhite -) - -// Foreground Hi-Intensity text colors -const ( - FgHiBlack ColorAttribute = iota + 90 - FgHiRed - FgHiGreen - FgHiYellow - FgHiBlue - FgHiMagenta - FgHiCyan - FgHiWhite -) - -// Background text colors -const ( - BgBlack ColorAttribute = iota + 40 - BgRed - BgGreen - BgYellow - BgBlue - BgMagenta - BgCyan - BgWhite -) - -// Background Hi-Intensity text colors -const ( - BgHiBlack ColorAttribute = iota + 100 - BgHiRed - BgHiGreen - BgHiYellow - BgHiBlue - BgHiMagenta - BgHiCyan - BgHiWhite -) - -var colorAttributeToString = map[ColorAttribute]string{ - Reset: "Reset", - Bold: "Bold", - Faint: "Faint", - Italic: "Italic", - Underline: "Underline", - BlinkSlow: "BlinkSlow", - BlinkRapid: "BlinkRapid", - ReverseVideo: "ReverseVideo", - Concealed: "Concealed", - CrossedOut: "CrossedOut", - FgBlack: "FgBlack", - FgRed: "FgRed", - FgGreen: "FgGreen", - FgYellow: "FgYellow", - FgBlue: "FgBlue", - FgMagenta: "FgMagenta", - FgCyan: "FgCyan", - FgWhite: "FgWhite", - FgHiBlack: "FgHiBlack", - FgHiRed: "FgHiRed", - FgHiGreen: "FgHiGreen", - FgHiYellow: "FgHiYellow", - FgHiBlue: "FgHiBlue", - FgHiMagenta: "FgHiMagenta", - FgHiCyan: "FgHiCyan", - FgHiWhite: "FgHiWhite", - BgBlack: "BgBlack", - BgRed: "BgRed", - BgGreen: "BgGreen", - BgYellow: "BgYellow", - BgBlue: "BgBlue", - BgMagenta: "BgMagenta", - BgCyan: "BgCyan", - BgWhite: "BgWhite", - BgHiBlack: "BgHiBlack", - BgHiRed: "BgHiRed", - BgHiGreen: "BgHiGreen", - BgHiYellow: "BgHiYellow", - BgHiBlue: "BgHiBlue", - BgHiMagenta: "BgHiMagenta", - BgHiCyan: "BgHiCyan", - BgHiWhite: "BgHiWhite", -} - -func (c *ColorAttribute) String() string { - return colorAttributeToString[*c] -} - -var colorAttributeFromString = map[string]ColorAttribute{} - -// ColorAttributeFromString will return a ColorAttribute given a string -func ColorAttributeFromString(from string) ColorAttribute { - lowerFrom := strings.TrimSpace(strings.ToLower(from)) - return colorAttributeFromString[lowerFrom] -} - -// ColorString converts a list of ColorAttributes to a color string -func ColorString(attrs ...ColorAttribute) string { - return string(ColorBytes(attrs...)) -} - -// ColorBytes converts a list of ColorAttributes to a byte array -func ColorBytes(attrs ...ColorAttribute) []byte { - bytes := make([]byte, 0, 20) - bytes = append(bytes, escape[0], '[') - if len(attrs) > 0 { - bytes = append(bytes, strconv.Itoa(int(attrs[0]))...) - for _, a := range attrs[1:] { - bytes = append(bytes, ';') - bytes = append(bytes, strconv.Itoa(int(a))...) - } - } else { - bytes = append(bytes, strconv.Itoa(int(Bold))...) - } - bytes = append(bytes, 'm') - return bytes -} - -var levelToColor = map[Level]string{ - TRACE: ColorString(Bold, FgCyan), - DEBUG: ColorString(Bold, FgBlue), - INFO: ColorString(Bold, FgGreen), - WARN: ColorString(Bold, FgYellow), - ERROR: ColorString(Bold, FgRed), - CRITICAL: ColorString(Bold, BgMagenta), - FATAL: ColorString(Bold, BgRed), - NONE: ColorString(Reset), -} - -var resetBytes = ColorBytes(Reset) -var fgCyanBytes = ColorBytes(FgCyan) -var fgGreenBytes = ColorBytes(FgGreen) -var fgBoldBytes = ColorBytes(Bold) - -type protectedANSIWriterMode int - -const ( - escapeAll protectedANSIWriterMode = iota - allowColor - removeColor -) - -type protectedANSIWriter struct { - w io.Writer - mode protectedANSIWriterMode -} - -// Write will protect against unusual characters -func (c *protectedANSIWriter) Write(bytes []byte) (int, error) { - end := len(bytes) - totalWritten := 0 -normalLoop: - for i := 0; i < end; { - lasti := i - - if c.mode == escapeAll { - for i < end && (bytes[i] >= ' ' || bytes[i] == '\n' || bytes[i] == '\t') { - i++ - } - } else { - // Allow tabs if we're not escaping everything - for i < end && (bytes[i] >= ' ' || bytes[i] == '\t') { - i++ - } - } - - if i > lasti { - written, err := c.w.Write(bytes[lasti:i]) - totalWritten = totalWritten + written - if err != nil { - return totalWritten, err - } - - } - if i >= end { - break - } - - // If we're not just escaping all we should prefix all newlines with a \t - if c.mode != escapeAll { - if bytes[i] == '\n' { - written, err := c.w.Write([]byte{'\n', '\t'}) - if written > 0 { - totalWritten++ - } - if err != nil { - return totalWritten, err - } - i++ - continue normalLoop - } - - if bytes[i] == escape[0] && i+1 < end && bytes[i+1] == '[' { - for j := i + 2; j < end; j++ { - if bytes[j] >= '0' && bytes[j] <= '9' { - continue - } - if bytes[j] == ';' { - continue - } - if bytes[j] == 'm' { - if c.mode == allowColor { - written, err := c.w.Write(bytes[i : j+1]) - totalWritten = totalWritten + written - if err != nil { - return totalWritten, err - } - } else { - totalWritten = j - } - i = j + 1 - continue normalLoop - } - break - } - } - } - - // Process naughty character - if _, err := fmt.Fprintf(c.w, `\%#o03d`, bytes[i]); err != nil { - return totalWritten, err - } - i++ - totalWritten++ - } - return totalWritten, nil -} - -// ColorSprintf returns a colored string from a format and arguments -// arguments will be wrapped in ColoredValues to protect against color spoofing -func ColorSprintf(format string, args ...interface{}) string { - if len(args) > 0 { - v := make([]interface{}, len(args)) - for i := 0; i < len(v); i++ { - v[i] = NewColoredValuePointer(&args[i]) - } - return fmt.Sprintf(format, v...) - } - return fmt.Sprintf(format) -} - -// ColorFprintf will write to the provided writer similar to ColorSprintf -func ColorFprintf(w io.Writer, format string, args ...interface{}) (int, error) { - if len(args) > 0 { - v := make([]interface{}, len(args)) - for i := 0; i < len(v); i++ { - v[i] = NewColoredValuePointer(&args[i]) - } - return fmt.Fprintf(w, format, v...) - } - return fmt.Fprintf(w, format) -} - -// ColorFormatted structs provide their own colored string when formatted with ColorSprintf -type ColorFormatted interface { - // ColorFormat provides the colored representation of the value - ColorFormat(s fmt.State) -} - -var colorFormattedType = reflect.TypeOf((*ColorFormatted)(nil)).Elem() - -// ColoredValue will Color the provided value -type ColoredValue struct { - colorBytes *[]byte - resetBytes *[]byte - Value *interface{} -} - -// NewColoredValue is a helper function to create a ColoredValue from a Value -// If no color is provided it defaults to Bold with standard Reset -// If a ColoredValue is provided it is not changed -func NewColoredValue(value interface{}, color ...ColorAttribute) *ColoredValue { - return NewColoredValuePointer(&value, color...) -} - -// NewColoredValuePointer is a helper function to create a ColoredValue from a Value Pointer -// If no color is provided it defaults to Bold with standard Reset -// If a ColoredValue is provided it is not changed -func NewColoredValuePointer(value *interface{}, color ...ColorAttribute) *ColoredValue { - if val, ok := (*value).(*ColoredValue); ok { - return val - } - if len(color) > 0 { - bytes := ColorBytes(color...) - return &ColoredValue{ - colorBytes: &bytes, - resetBytes: &resetBytes, - Value: value, - } - } - return &ColoredValue{ - colorBytes: &fgBoldBytes, - resetBytes: &resetBytes, - Value: value, - } - -} - -// NewColoredValueBytes creates a value from the provided value with color bytes -// If a ColoredValue is provided it is not changed -func NewColoredValueBytes(value interface{}, colorBytes *[]byte) *ColoredValue { - if val, ok := value.(*ColoredValue); ok { - return val - } - return &ColoredValue{ - colorBytes: colorBytes, - resetBytes: &resetBytes, - Value: &value, - } -} - -// NewColoredIDValue is a helper function to create a ColoredValue from a Value -// The Value will be colored with FgCyan -// If a ColoredValue is provided it is not changed -func NewColoredIDValue(value interface{}) *ColoredValue { - return NewColoredValueBytes(&value, &fgCyanBytes) -} - -// Format will format the provided value and protect against ANSI color spoofing within the value -// If the wrapped value is ColorFormatted and the format is "%-v" then its ColorString will -// be used. It is presumed that this ColorString is safe. -func (cv *ColoredValue) Format(s fmt.State, c rune) { - if c == 'v' && s.Flag('-') { - if val, ok := (*cv.Value).(ColorFormatted); ok { - val.ColorFormat(s) - return - } - v := reflect.ValueOf(*cv.Value) - t := v.Type() - - if reflect.PtrTo(t).Implements(colorFormattedType) { - vp := reflect.New(t) - vp.Elem().Set(v) - val := vp.Interface().(ColorFormatted) - val.ColorFormat(s) - return - } - } - s.Write([]byte(*cv.colorBytes)) - fmt.Fprintf(&protectedANSIWriter{w: s}, fmtString(s, c), *(cv.Value)) - s.Write([]byte(*cv.resetBytes)) -} - -// SetColorBytes will allow a user to set the colorBytes of a colored value -func (cv *ColoredValue) SetColorBytes(colorBytes []byte) { - cv.colorBytes = &colorBytes -} - -// SetColorBytesPointer will allow a user to set the colorBytes pointer of a colored value -func (cv *ColoredValue) SetColorBytesPointer(colorBytes *[]byte) { - cv.colorBytes = colorBytes -} - -// SetResetBytes will allow a user to set the resetBytes pointer of a colored value -func (cv *ColoredValue) SetResetBytes(resetBytes []byte) { - cv.resetBytes = &resetBytes -} - -// SetResetBytesPointer will allow a user to set the resetBytes pointer of a colored value -func (cv *ColoredValue) SetResetBytesPointer(resetBytes *[]byte) { - cv.resetBytes = resetBytes -} - -func fmtString(s fmt.State, c rune) string { - var width, precision string - base := make([]byte, 0, 8) - base = append(base, '%') - for _, c := range []byte(" +-#0") { - if s.Flag(int(c)) { - base = append(base, c) - } - } - if w, ok := s.Width(); ok { - width = strconv.Itoa(w) - } - if p, ok := s.Precision(); ok { - precision = "." + strconv.Itoa(p) - } - return fmt.Sprintf("%s%s%s%c", base, width, precision, c) -} - -func init() { - for attr, from := range colorAttributeToString { - colorAttributeFromString[strings.ToLower(from)] = attr - } -} diff --git a/vendor/gitea.com/gitea/log/colors_router.go b/vendor/gitea.com/gitea/log/colors_router.go deleted file mode 100644 index e291a0da99daa..0000000000000 --- a/vendor/gitea.com/gitea/log/colors_router.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "time" -) - -var statusToColor = map[int][]byte{ - 100: ColorBytes(Bold), - 200: ColorBytes(FgGreen), - 300: ColorBytes(FgYellow), - 304: ColorBytes(FgCyan), - 400: ColorBytes(Bold, FgRed), - 401: ColorBytes(Bold, FgMagenta), - 403: ColorBytes(Bold, FgMagenta), - 500: ColorBytes(Bold, BgRed), -} - -// ColoredStatus addes colors for HTTP status -func ColoredStatus(status int, s ...string) *ColoredValue { - color, ok := statusToColor[status] - if !ok { - color, ok = statusToColor[(status/100)*100] - } - if !ok { - color = fgBoldBytes - } - if len(s) > 0 { - return NewColoredValueBytes(s[0], &color) - } - return NewColoredValueBytes(status, &color) -} - -var methodToColor = map[string][]byte{ - "GET": ColorBytes(FgBlue), - "POST": ColorBytes(FgGreen), - "DELETE": ColorBytes(FgRed), - "PATCH": ColorBytes(FgCyan), - "PUT": ColorBytes(FgYellow, Faint), - "HEAD": ColorBytes(FgBlue, Faint), -} - -// ColoredMethod addes colors for HtTP methos on log -func ColoredMethod(method string) *ColoredValue { - color, ok := methodToColor[method] - if !ok { - return NewColoredValueBytes(method, &fgBoldBytes) - } - return NewColoredValueBytes(method, &color) -} - -var ( - durations = []time.Duration{ - 10 * time.Millisecond, - 100 * time.Millisecond, - 1 * time.Second, - 5 * time.Second, - 10 * time.Second, - } - - durationColors = [][]byte{ - ColorBytes(FgGreen), - ColorBytes(Bold), - ColorBytes(FgYellow), - ColorBytes(FgRed, Bold), - ColorBytes(BgRed), - } - - wayTooLong = ColorBytes(BgMagenta) -) - -// ColoredTime addes colors for time on log -func ColoredTime(duration time.Duration) *ColoredValue { - for i, k := range durations { - if duration < k { - return NewColoredValueBytes(duration, &durationColors[i]) - } - } - return NewColoredValueBytes(duration, &wayTooLong) -} diff --git a/vendor/gitea.com/gitea/log/conn.go b/vendor/gitea.com/gitea/log/conn.go deleted file mode 100644 index bd76855168820..0000000000000 --- a/vendor/gitea.com/gitea/log/conn.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "encoding/json" - "io" - "net" -) - -type connWriter struct { - innerWriter io.WriteCloser - ReconnectOnMsg bool `json:"reconnectOnMsg"` - Reconnect bool `json:"reconnect"` - Net string `json:"net"` - Addr string `json:"addr"` -} - -// Close the inner writer -func (i *connWriter) Close() error { - if i.innerWriter != nil { - return i.innerWriter.Close() - } - return nil -} - -// Write the data to the connection -func (i *connWriter) Write(p []byte) (int, error) { - if i.neededConnectOnMsg() { - if err := i.connect(); err != nil { - return 0, err - } - } - - if i.ReconnectOnMsg { - defer i.innerWriter.Close() - } - - return i.innerWriter.Write(p) -} - -func (i *connWriter) neededConnectOnMsg() bool { - if i.Reconnect { - i.Reconnect = false - return true - } - - if i.innerWriter == nil { - return true - } - - return i.ReconnectOnMsg -} - -func (i *connWriter) connect() error { - if i.innerWriter != nil { - i.innerWriter.Close() - i.innerWriter = nil - } - - conn, err := net.Dial(i.Net, i.Addr) - if err != nil { - return err - } - - if tcpConn, ok := conn.(*net.TCPConn); ok { - tcpConn.SetKeepAlive(true) - } - - i.innerWriter = conn - return nil -} - -// ConnLogger implements LoggerProvider. -// it writes messages in keep-live tcp connection. -type ConnLogger struct { - WriterLogger - ReconnectOnMsg bool `json:"reconnectOnMsg"` - Reconnect bool `json:"reconnect"` - Net string `json:"net"` - Addr string `json:"addr"` -} - -// NewConn creates new ConnLogger returning as LoggerProvider. -func NewConn() LoggerProvider { - conn := new(ConnLogger) - conn.Level = TRACE - return conn -} - -// Init inits connection writer with json config. -// json config only need key "level". -func (log *ConnLogger) Init(jsonconfig string) error { - err := json.Unmarshal([]byte(jsonconfig), log) - if err != nil { - return err - } - log.NewWriterLogger(&connWriter{ - ReconnectOnMsg: log.ReconnectOnMsg, - Reconnect: log.Reconnect, - Net: log.Net, - Addr: log.Addr, - }, log.Level) - return nil -} - -// Flush does nothing for this implementation -func (log *ConnLogger) Flush() { -} - -// GetName returns the default name for this implementation -func (log *ConnLogger) GetName() string { - return "conn" -} - -func init() { - Register("conn", NewConn) -} diff --git a/vendor/gitea.com/gitea/log/console.go b/vendor/gitea.com/gitea/log/console.go deleted file mode 100644 index 6cfca8a7335d5..0000000000000 --- a/vendor/gitea.com/gitea/log/console.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "encoding/json" - "io" - "os" -) - -// CanColorStdout reports if we can color the Stdout -// Although we could do terminal sniffing and the like - in reality -// most tools on *nix are happy to display ansi colors. -// We will terminal sniff on Windows in console_windows.go -var CanColorStdout = true - -// CanColorStderr reports if we can color the Stderr -var CanColorStderr = true - -type nopWriteCloser struct { - w io.WriteCloser -} - -func (n *nopWriteCloser) Write(p []byte) (int, error) { - return n.w.Write(p) -} - -func (n *nopWriteCloser) Close() error { - return nil -} - -// ConsoleLogger implements LoggerProvider and writes messages to terminal. -type ConsoleLogger struct { - WriterLogger - Stderr bool `json:"stderr"` -} - -// NewConsoleLogger create ConsoleLogger returning as LoggerProvider. -func NewConsoleLogger() LoggerProvider { - log := &ConsoleLogger{} - log.NewWriterLogger(&nopWriteCloser{ - w: os.Stdout, - }) - return log -} - -// Init inits connection writer with json config. -// json config only need key "level". -func (log *ConsoleLogger) Init(config string) error { - err := json.Unmarshal([]byte(config), log) - if err != nil { - return err - } - if log.Stderr { - log.NewWriterLogger(&nopWriteCloser{ - w: os.Stderr, - }) - } else { - log.NewWriterLogger(log.out) - } - return nil -} - -// Flush when log should be flushed -func (log *ConsoleLogger) Flush() { -} - -// GetName returns the default name for this implementation -func (log *ConsoleLogger) GetName() string { - return "console" -} - -func init() { - Register("console", NewConsoleLogger) -} diff --git a/vendor/gitea.com/gitea/log/console_windows.go b/vendor/gitea.com/gitea/log/console_windows.go deleted file mode 100644 index 61469aacf8675..0000000000000 --- a/vendor/gitea.com/gitea/log/console_windows.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "os" - - "github.com/mattn/go-isatty" - "golang.org/x/sys/windows" -) - -func enableVTMode(console windows.Handle) bool { - mode := uint32(0) - err := windows.GetConsoleMode(console, &mode) - if err != nil { - return false - } - - // EnableVirtualTerminalProcessing is the console mode to allow ANSI code - // interpretation on the console. See: - // https://docs.microsoft.com/en-us/windows/console/setconsolemode - // It only works on windows 10. Earlier terminals will fail with an err which we will - // handle to say don't color - mode = mode | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING - err = windows.SetConsoleMode(console, mode) - return err == nil -} - -func init() { - if isatty.IsTerminal(os.Stdout.Fd()) { - CanColorStdout = enableVTMode(windows.Stdout) - } else { - CanColorStdout = isatty.IsCygwinTerminal(os.Stderr.Fd()) - } - - if isatty.IsTerminal(os.Stderr.Fd()) { - CanColorStderr = enableVTMode(windows.Stderr) - } else { - CanColorStderr = isatty.IsCygwinTerminal(os.Stderr.Fd()) - } -} diff --git a/vendor/gitea.com/gitea/log/errors.go b/vendor/gitea.com/gitea/log/errors.go deleted file mode 100644 index 1fe54d4265e48..0000000000000 --- a/vendor/gitea.com/gitea/log/errors.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import "fmt" - -// ErrTimeout represents a "Timeout" kind of error. -type ErrTimeout struct { - Name string - Provider string -} - -// IsErrTimeout checks if an error is a ErrTimeout. -func IsErrTimeout(err error) bool { - if err == nil { - return false - } - _, ok := err.(ErrTimeout) - return ok -} - -func (err ErrTimeout) Error() string { - return fmt.Sprintf("Log Timeout for %s (%s)", err.Name, err.Provider) -} - -// ErrUnknownProvider represents a "Unknown Provider" kind of error. -type ErrUnknownProvider struct { - Provider string -} - -// IsErrUnknownProvider checks if an error is a ErrUnknownProvider. -func IsErrUnknownProvider(err error) bool { - if err == nil { - return false - } - _, ok := err.(ErrUnknownProvider) - return ok -} - -func (err ErrUnknownProvider) Error() string { - return fmt.Sprintf("Unknown Log Provider \"%s\" (Was it registered?)", err.Provider) -} - -// ErrDuplicateName represents a Duplicate Name error -type ErrDuplicateName struct { - Name string -} - -// IsErrDuplicateName checks if an error is a ErrDuplicateName. -func IsErrDuplicateName(err error) bool { - if err == nil { - return false - } - _, ok := err.(ErrDuplicateName) - return ok -} - -func (err ErrDuplicateName) Error() string { - return fmt.Sprintf("Duplicate named logger: %s", err.Name) -} diff --git a/vendor/gitea.com/gitea/log/event.go b/vendor/gitea.com/gitea/log/event.go deleted file mode 100644 index 2ec1f9587d54d..0000000000000 --- a/vendor/gitea.com/gitea/log/event.go +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "sync" - "time" -) - -// Event represents a logging event -type Event struct { - level Level - msg string - caller string - filename string - line int - time time.Time - stacktrace string -} - -// EventLogger represents the behaviours of a logger -type EventLogger interface { - LogEvent(event *Event) error - Close() - Flush() - GetLevel() Level - GetStacktraceLevel() Level - GetName() string -} - -// ChannelledLog represents a cached channel to a LoggerProvider -type ChannelledLog struct { - name string - provider string - queue chan *Event - loggerProvider LoggerProvider - flush chan bool - close chan bool - closed chan bool -} - -// NewChannelledLog a new logger instance with given logger provider and config. -func NewChannelledLog(name, provider, config string, bufferLength int64) (*ChannelledLog, error) { - if log, ok := providers[provider]; ok { - l := &ChannelledLog{ - queue: make(chan *Event, bufferLength), - flush: make(chan bool), - close: make(chan bool), - closed: make(chan bool), - } - l.loggerProvider = log() - if err := l.loggerProvider.Init(config); err != nil { - return nil, err - } - l.name = name - l.provider = provider - go l.Start() - return l, nil - } - return nil, ErrUnknownProvider{provider} -} - -// Start processing the ChannelledLog -func (l *ChannelledLog) Start() { - for { - select { - case event, ok := <-l.queue: - if !ok { - l.closeLogger() - return - } - l.loggerProvider.LogEvent(event) - case _, ok := <-l.flush: - if !ok { - l.closeLogger() - return - } - l.loggerProvider.Flush() - case _, _ = <-l.close: - l.closeLogger() - return - } - } -} - -// LogEvent logs an event to this ChannelledLog -func (l *ChannelledLog) LogEvent(event *Event) error { - select { - case l.queue <- event: - return nil - case <-time.After(60 * time.Second): - // We're blocked! - return ErrTimeout{ - Name: l.name, - Provider: l.provider, - } - } -} - -func (l *ChannelledLog) closeLogger() { - l.loggerProvider.Flush() - l.loggerProvider.Close() - l.closed <- true - return -} - -// Close this ChannelledLog -func (l *ChannelledLog) Close() { - l.close <- true - <-l.closed -} - -// Flush this ChannelledLog -func (l *ChannelledLog) Flush() { - l.flush <- true -} - -// GetLevel gets the level of this ChannelledLog -func (l *ChannelledLog) GetLevel() Level { - return l.loggerProvider.GetLevel() -} - -// GetStacktraceLevel gets the level of this ChannelledLog -func (l *ChannelledLog) GetStacktraceLevel() Level { - return l.loggerProvider.GetStacktraceLevel() -} - -// GetName returns the name of this ChannelledLog -func (l *ChannelledLog) GetName() string { - return l.name -} - -// MultiChannelledLog represents a cached channel to a LoggerProvider -type MultiChannelledLog struct { - name string - bufferLength int64 - queue chan *Event - mutex sync.Mutex - loggers map[string]EventLogger - flush chan bool - close chan bool - started bool - level Level - stacktraceLevel Level - closed chan bool -} - -// NewMultiChannelledLog a new logger instance with given logger provider and config. -func NewMultiChannelledLog(name string, bufferLength int64) *MultiChannelledLog { - m := &MultiChannelledLog{ - name: name, - queue: make(chan *Event, bufferLength), - flush: make(chan bool), - bufferLength: bufferLength, - loggers: make(map[string]EventLogger), - level: NONE, - stacktraceLevel: NONE, - close: make(chan bool), - closed: make(chan bool), - } - return m -} - -// AddLogger adds a logger to this MultiChannelledLog -func (m *MultiChannelledLog) AddLogger(logger EventLogger) error { - m.mutex.Lock() - name := logger.GetName() - if _, has := m.loggers[name]; has { - m.mutex.Unlock() - return ErrDuplicateName{name} - } - m.loggers[name] = logger - if logger.GetLevel() < m.level { - m.level = logger.GetLevel() - } - if logger.GetStacktraceLevel() < m.stacktraceLevel { - m.stacktraceLevel = logger.GetStacktraceLevel() - } - m.mutex.Unlock() - go m.Start() - return nil -} - -// DelLogger removes a sub logger from this MultiChannelledLog -// NB: If you delete the last sublogger this logger will simply drop -// log events -func (m *MultiChannelledLog) DelLogger(name string) bool { - m.mutex.Lock() - logger, has := m.loggers[name] - if !has { - m.mutex.Unlock() - return false - } - delete(m.loggers, name) - m.internalResetLevel() - m.mutex.Unlock() - logger.Flush() - logger.Close() - return true -} - -// GetEventLogger returns a sub logger from this MultiChannelledLog -func (m *MultiChannelledLog) GetEventLogger(name string) EventLogger { - m.mutex.Lock() - defer m.mutex.Unlock() - return m.loggers[name] -} - -// GetEventLoggerNames returns a list of names -func (m *MultiChannelledLog) GetEventLoggerNames() []string { - m.mutex.Lock() - defer m.mutex.Unlock() - var keys []string - for k := range m.loggers { - keys = append(keys, k) - } - return keys -} - -func (m *MultiChannelledLog) closeLoggers() { - m.mutex.Lock() - for _, logger := range m.loggers { - logger.Flush() - logger.Close() - } - m.mutex.Unlock() - m.closed <- true - return -} - -// Start processing the MultiChannelledLog -func (m *MultiChannelledLog) Start() { - m.mutex.Lock() - if m.started { - m.mutex.Unlock() - return - } - m.started = true - m.mutex.Unlock() - for { - select { - case event, ok := <-m.queue: - if !ok { - m.closeLoggers() - return - } - m.mutex.Lock() - for _, logger := range m.loggers { - err := logger.LogEvent(event) - if err != nil { - fmt.Println(err) - } - } - m.mutex.Unlock() - case _, ok := <-m.flush: - if !ok { - m.closeLoggers() - return - } - m.mutex.Lock() - for _, logger := range m.loggers { - logger.Flush() - } - m.mutex.Unlock() - case <-m.close: - m.closeLoggers() - return - } - } -} - -// LogEvent logs an event to this MultiChannelledLog -func (m *MultiChannelledLog) LogEvent(event *Event) error { - select { - case m.queue <- event: - return nil - case <-time.After(60 * time.Second): - // We're blocked! - return ErrTimeout{ - Name: m.name, - Provider: "MultiChannelledLog", - } - } -} - -// Close this MultiChannelledLog -func (m *MultiChannelledLog) Close() { - m.close <- true - <-m.closed -} - -// Flush this ChannelledLog -func (m *MultiChannelledLog) Flush() { - m.flush <- true -} - -// GetLevel gets the level of this MultiChannelledLog -func (m *MultiChannelledLog) GetLevel() Level { - return m.level -} - -// GetStacktraceLevel gets the level of this MultiChannelledLog -func (m *MultiChannelledLog) GetStacktraceLevel() Level { - return m.stacktraceLevel -} - -func (m *MultiChannelledLog) internalResetLevel() Level { - m.level = NONE - for _, logger := range m.loggers { - level := logger.GetLevel() - if level < m.level { - m.level = level - } - level = logger.GetStacktraceLevel() - if level < m.stacktraceLevel { - m.stacktraceLevel = level - } - } - return m.level -} - -// ResetLevel will reset the level of this MultiChannelledLog -func (m *MultiChannelledLog) ResetLevel() Level { - m.mutex.Lock() - defer m.mutex.Unlock() - return m.internalResetLevel() -} - -// GetName gets the name of this MultiChannelledLog -func (m *MultiChannelledLog) GetName() string { - return m.name -} diff --git a/vendor/gitea.com/gitea/log/file.go b/vendor/gitea.com/gitea/log/file.go deleted file mode 100644 index cdda85d626ffa..0000000000000 --- a/vendor/gitea.com/gitea/log/file.go +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "bufio" - "compress/gzip" - "encoding/json" - "errors" - "fmt" - "os" - "path/filepath" - "strings" - "sync" - "time" -) - -// FileLogger implements LoggerProvider. -// It writes messages by lines limit, file size limit, or time frequency. -type FileLogger struct { - WriterLogger - mw *MuxWriter - // The opened file - Filename string `json:"filename"` - - // Rotate at size - Maxsize int `json:"maxsize"` - maxsizeCursize int - - // Rotate daily - Daily bool `json:"daily"` - Maxdays int64 `json:"maxdays"` - dailyOpenDate int - - Rotate bool `json:"rotate"` - - Compress bool `json:"compress"` - CompressionLevel int `json:"compressionLevel"` - - startLock sync.Mutex // Only one log can write to the file -} - -// MuxWriter an *os.File writer with locker. -type MuxWriter struct { - mu sync.Mutex - fd *os.File - owner *FileLogger -} - -// Write writes to os.File. -func (mw *MuxWriter) Write(b []byte) (int, error) { - mw.mu.Lock() - defer mw.mu.Unlock() - mw.owner.docheck(len(b)) - return mw.fd.Write(b) -} - -// Close the internal writer -func (mw *MuxWriter) Close() error { - return mw.fd.Close() -} - -// SetFd sets os.File in writer. -func (mw *MuxWriter) SetFd(fd *os.File) { - if mw.fd != nil { - mw.fd.Close() - } - mw.fd = fd -} - -// NewFileLogger create a FileLogger returning as LoggerProvider. -func NewFileLogger() LoggerProvider { - log := &FileLogger{ - Filename: "", - Maxsize: 1 << 28, //256 MB - Daily: true, - Maxdays: 7, - Rotate: true, - Compress: true, - CompressionLevel: gzip.DefaultCompression, - } - log.Level = TRACE - // use MuxWriter instead direct use os.File for lock write when rotate - log.mw = new(MuxWriter) - log.mw.owner = log - - return log -} - -// Init file logger with json config. -// config like: -// { -// "filename":"log/gogs.log", -// "maxsize":1<<30, -// "daily":true, -// "maxdays":15, -// "rotate":true -// } -func (log *FileLogger) Init(config string) error { - if err := json.Unmarshal([]byte(config), log); err != nil { - return err - } - if len(log.Filename) == 0 { - return errors.New("config must have filename") - } - // set MuxWriter as Logger's io.Writer - log.NewWriterLogger(log.mw) - return log.StartLogger() -} - -// StartLogger start file logger. create log file and set to locker-inside file writer. -func (log *FileLogger) StartLogger() error { - fd, err := log.createLogFile() - if err != nil { - return err - } - log.mw.SetFd(fd) - return log.initFd() -} - -func (log *FileLogger) docheck(size int) { - log.startLock.Lock() - defer log.startLock.Unlock() - if log.Rotate && ((log.Maxsize > 0 && log.maxsizeCursize >= log.Maxsize) || - (log.Daily && time.Now().Day() != log.dailyOpenDate)) { - if err := log.DoRotate(); err != nil { - fmt.Fprintf(os.Stderr, "FileLogger(%q): %s\n", log.Filename, err) - return - } - } - log.maxsizeCursize += size -} - -func (log *FileLogger) createLogFile() (*os.File, error) { - // Open the log file - return os.OpenFile(log.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0660) -} - -func (log *FileLogger) initFd() error { - fd := log.mw.fd - finfo, err := fd.Stat() - if err != nil { - return fmt.Errorf("get stat: %v", err) - } - log.maxsizeCursize = int(finfo.Size()) - log.dailyOpenDate = time.Now().Day() - return nil -} - -// DoRotate means it need to write file in new file. -// new file name like xx.log.2013-01-01.2 -func (log *FileLogger) DoRotate() error { - _, err := os.Lstat(log.Filename) - if err == nil { // file exists - // Find the next available number - num := 1 - fname := "" - for ; err == nil && num <= 999; num++ { - fname = log.Filename + fmt.Sprintf(".%s.%03d", time.Now().Format("2006-01-02"), num) - _, err = os.Lstat(fname) - if log.Compress && err != nil { - _, err = os.Lstat(fname + ".gz") - } - } - // return error if the last file checked still existed - if err == nil { - return fmt.Errorf("rotate: cannot find free log number to rename %s", log.Filename) - } - - fd := log.mw.fd - fd.Close() - - // close fd before rename - // Rename the file to its newfound home - if err = os.Rename(log.Filename, fname); err != nil { - return fmt.Errorf("Rotate: %v", err) - } - - if log.Compress { - go compressOldLogFile(fname, log.CompressionLevel) - } - - // re-start logger - if err = log.StartLogger(); err != nil { - return fmt.Errorf("Rotate StartLogger: %v", err) - } - - go log.deleteOldLog() - } - - return nil -} - -func compressOldLogFile(fname string, compressionLevel int) error { - reader, err := os.Open(fname) - if err != nil { - return err - } - defer reader.Close() - buffer := bufio.NewReader(reader) - fw, err := os.OpenFile(fname+".gz", os.O_WRONLY|os.O_CREATE, 0660) - if err != nil { - return err - } - defer fw.Close() - zw, err := gzip.NewWriterLevel(fw, compressionLevel) - if err != nil { - return err - } - defer zw.Close() - _, err = buffer.WriteTo(zw) - if err != nil { - zw.Close() - fw.Close() - os.Remove(fname + ".gz") - return err - } - reader.Close() - return os.Remove(fname) -} - -func (log *FileLogger) deleteOldLog() { - dir := filepath.Dir(log.Filename) - filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { - defer func() { - if r := recover(); r != nil { - returnErr = fmt.Errorf("Unable to delete old log '%s', error: %+v", path, r) - } - }() - - if !info.IsDir() && info.ModTime().Unix() < (time.Now().Unix()-60*60*24*log.Maxdays) { - if strings.HasPrefix(filepath.Base(path), filepath.Base(log.Filename)) { - - if err := os.Remove(path); err != nil { - returnErr = fmt.Errorf("Failed to remove %s: %v", path, err) - } - } - } - return returnErr - }) -} - -// Flush flush file logger. -// there are no buffering messages in file logger in memory. -// flush file means sync file from disk. -func (log *FileLogger) Flush() { - log.mw.fd.Sync() -} - -// GetName returns the default name for this implementation -func (log *FileLogger) GetName() string { - return "file" -} - -func init() { - Register("file", NewFileLogger) -} diff --git a/vendor/gitea.com/gitea/log/flags.go b/vendor/gitea.com/gitea/log/flags.go deleted file mode 100644 index 928d42b96546e..0000000000000 --- a/vendor/gitea.com/gitea/log/flags.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import "strings" - -// These flags define which text to prefix to each log entry generated -// by the Logger. Bits are or'ed together to control what's printed. -// There is no control over the order they appear (the order listed -// here) or the format they present (as described in the comments). -// The prefix is followed by a colon only if more than time is stated -// is specified. For example, flags Ldate | Ltime -// produce, 2009/01/23 01:23:23 message. -// The standard is: -// 2009/01/23 01:23:23 ...a/logger/c/d.go:23:runtime.Caller() [I]: message -const ( - Ldate = 1 << iota // the date in the local time zone: 2009/01/23 - Ltime // the time in the local time zone: 01:23:23 - Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime. - Llongfile // full file name and line number: /a/logger/c/d.go:23 - Lshortfile // final file name element and line number: d.go:23. overrides Llongfile - Lfuncname // function name of the caller: runtime.Caller() - Lshortfuncname // last part of the function name - LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone - Llevelinitial // Initial character of the provided level in brackets eg. [I] for info - Llevel // Provided level in brackets [INFO] - - // Last 20 characters of the filename - Lmedfile = Lshortfile | Llongfile - - // LstdFlags is the initial value for the standard logger - LstdFlags = Ldate | Ltime | Lmedfile | Lshortfuncname | Llevelinitial -) - -var flagFromString = map[string]int{ - "none": 0, - "date": Ldate, - "time": Ltime, - "microseconds": Lmicroseconds, - "longfile": Llongfile, - "shortfile": Lshortfile, - "funcname": Lfuncname, - "shortfuncname": Lshortfuncname, - "utc": LUTC, - "levelinitial": Llevelinitial, - "level": Llevel, - "medfile": Lmedfile, - "stdflags": LstdFlags, -} - -// FlagsFromString takes a comma separated list of flags and returns -// the flags for this string -func FlagsFromString(from string) int { - flags := 0 - for _, flag := range strings.Split(strings.ToLower(from), ",") { - f, ok := flagFromString[strings.TrimSpace(flag)] - if ok { - flags = flags | f - } - } - return flags -} diff --git a/vendor/gitea.com/gitea/log/go.mod b/vendor/gitea.com/gitea/log/go.mod deleted file mode 100644 index 102192352c6b6..0000000000000 --- a/vendor/gitea.com/gitea/log/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module gitea.com/gitea/log - -go 1.12 - -require ( - github.com/mattn/go-isatty v0.0.7 - github.com/stretchr/testify v1.3.0 - golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872 -) diff --git a/vendor/gitea.com/gitea/log/go.sum b/vendor/gitea.com/gitea/log/go.sum deleted file mode 100644 index e5c1f8b0750aa..0000000000000 --- a/vendor/gitea.com/gitea/log/go.sum +++ /dev/null @@ -1,12 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872 h1:cGjJzUd8RgBw428LXP65YXni0aiGNA4Bl+ls8SmLOm8= -golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/gitea.com/gitea/log/level.go b/vendor/gitea.com/gitea/log/level.go deleted file mode 100644 index 6131fcb5101b0..0000000000000 --- a/vendor/gitea.com/gitea/log/level.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "bytes" - "encoding/json" - "fmt" - "os" - "strings" -) - -// Level is the level of the logger -type Level int - -const ( - // TRACE represents the lowest log level - TRACE Level = iota - // DEBUG is for debug logging - DEBUG - // INFO is for information - INFO - // WARN is for warning information - WARN - // ERROR is for error reporting - ERROR - // CRITICAL is for critical errors - CRITICAL - // FATAL is for fatal errors - FATAL - // NONE is for no logging - NONE -) - -var toString = map[Level]string{ - TRACE: "trace", - DEBUG: "debug", - INFO: "info", - WARN: "warn", - ERROR: "error", - CRITICAL: "critical", - FATAL: "fatal", - NONE: "none", -} - -var toLevel = map[string]Level{ - "trace": TRACE, - "debug": DEBUG, - "info": INFO, - "warn": WARN, - "error": ERROR, - "critical": CRITICAL, - "fatal": FATAL, - "none": NONE, -} - -// Levels returns all the possible logging levels -func Levels() []string { - keys := make([]string, 0) - for key := range toLevel { - keys = append(keys, key) - } - return keys -} - -func (l Level) String() string { - s, ok := toString[l] - if ok { - return s - } - return "info" -} - -// MarshalJSON takes a Level and turns it into text -func (l Level) MarshalJSON() ([]byte, error) { - buffer := bytes.NewBufferString(`"`) - buffer.WriteString(toString[l]) - buffer.WriteString(`"`) - return buffer.Bytes(), nil -} - -// FromString takes a level string and returns a Level -func FromString(level string) Level { - temp, ok := toLevel[strings.ToLower(level)] - if !ok { - return INFO - } - return temp -} - -// UnmarshalJSON takes text and turns it into a Level -func (l *Level) UnmarshalJSON(b []byte) error { - var tmp interface{} - err := json.Unmarshal(b, &tmp) - if err != nil { - fmt.Fprintf(os.Stderr, "Err: %v", err) - return err - } - - switch v := tmp.(type) { - case string: - *l = FromString(string(v)) - case int: - *l = FromString(Level(v).String()) - default: - *l = INFO - } - return nil -} diff --git a/vendor/gitea.com/gitea/log/log.go b/vendor/gitea.com/gitea/log/log.go deleted file mode 100644 index 8698e9eed3ae3..0000000000000 --- a/vendor/gitea.com/gitea/log/log.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "os" - "runtime" - "strings" -) - -var ( - // DEFAULT is the name of the default logger - DEFAULT = "default" - // NamedLoggers map of named loggers - NamedLoggers = make(map[string]*Logger) - prefix string -) - -// NewLogger create a logger for the default logger -func NewLogger(bufLen int64, name, provider, config string) *Logger { - err := NewNamedLogger(DEFAULT, bufLen, name, provider, config) - if err != nil { - CriticalWithSkip(1, "Unable to create default logger: %v", err) - panic(err) - } - return NamedLoggers[DEFAULT] -} - -// NewNamedLogger creates a new named logger for a given configuration -func NewNamedLogger(name string, bufLen int64, subname, provider, config string) error { - logger, ok := NamedLoggers[name] - if !ok { - logger = newLogger(name, bufLen) - - NamedLoggers[name] = logger - } - - return logger.SetLogger(subname, provider, config) -} - -// DelNamedLogger closes and deletes the named logger -func DelNamedLogger(name string) { - l, ok := NamedLoggers[name] - if ok { - delete(NamedLoggers, name) - l.Close() - } -} - -// DelLogger removes the named sublogger from the default logger -func DelLogger(name string) error { - logger := NamedLoggers[DEFAULT] - found, err := logger.DelLogger(name) - if !found { - Trace("Log %s not found, no need to delete", name) - } - return err -} - -// GetLogger returns either a named logger or the default logger -func GetLogger(name string) *Logger { - logger, ok := NamedLoggers[name] - if ok { - return logger - } - return NamedLoggers[DEFAULT] -} - -// GetLevel returns the minimum logger level -func GetLevel() Level { - return NamedLoggers[DEFAULT].GetLevel() -} - -// GetStacktraceLevel returns the minimum logger level -func GetStacktraceLevel() Level { - return NamedLoggers[DEFAULT].GetStacktraceLevel() -} - -// Trace records trace log -func Trace(format string, v ...interface{}) { - Log(1, TRACE, format, v...) -} - -// IsTrace returns true if at least one logger is TRACE -func IsTrace() bool { - return GetLevel() <= TRACE -} - -// Debug records debug log -func Debug(format string, v ...interface{}) { - Log(1, DEBUG, format, v...) -} - -// IsDebug returns true if at least one logger is DEBUG -func IsDebug() bool { - return GetLevel() <= DEBUG -} - -// Info records info log -func Info(format string, v ...interface{}) { - Log(1, INFO, format, v...) -} - -// IsInfo returns true if at least one logger is INFO -func IsInfo() bool { - return GetLevel() <= INFO -} - -// Warn records warning log -func Warn(format string, v ...interface{}) { - Log(1, WARN, format, v...) -} - -// IsWarn returns true if at least one logger is WARN -func IsWarn() bool { - return GetLevel() <= WARN -} - -// Error records error log -func Error(format string, v ...interface{}) { - Log(1, ERROR, format, v...) -} - -// ErrorWithSkip records error log from "skip" calls back from this function -func ErrorWithSkip(skip int, format string, v ...interface{}) { - Log(skip+1, ERROR, format, v...) -} - -// IsError returns true if at least one logger is ERROR -func IsError() bool { - return GetLevel() <= ERROR -} - -// Critical records critical log -func Critical(format string, v ...interface{}) { - Log(1, CRITICAL, format, v...) -} - -// CriticalWithSkip records critical log from "skip" calls back from this function -func CriticalWithSkip(skip int, format string, v ...interface{}) { - Log(skip+1, CRITICAL, format, v...) -} - -// IsCritical returns true if at least one logger is CRITICAL -func IsCritical() bool { - return GetLevel() <= CRITICAL -} - -// Fatal records fatal log and exit process -func Fatal(format string, v ...interface{}) { - Log(1, FATAL, format, v...) - Close() - os.Exit(1) -} - -// FatalWithSkip records fatal log from "skip" calls back from this function -func FatalWithSkip(skip int, format string, v ...interface{}) { - Log(skip+1, FATAL, format, v...) - Close() - os.Exit(1) -} - -// IsFatal returns true if at least one logger is FATAL -func IsFatal() bool { - return GetLevel() <= FATAL -} - -// Close closes all the loggers -func Close() { - l, ok := NamedLoggers[DEFAULT] - if !ok { - return - } - delete(NamedLoggers, DEFAULT) - l.Close() -} - -// Log a message with defined skip and at logging level -// A skip of 0 refers to the caller of this command -func Log(skip int, level Level, format string, v ...interface{}) { - l, ok := NamedLoggers[DEFAULT] - if ok { - l.Log(skip+1, level, format, v...) - } -} - -// LoggerAsWriter is a io.Writer shim around the gitea log -type LoggerAsWriter struct { - ourLoggers []*Logger - level Level -} - -// NewLoggerAsWriter creates a Writer representation of the logger with setable log level -func NewLoggerAsWriter(level string, ourLoggers ...*Logger) *LoggerAsWriter { - if len(ourLoggers) == 0 { - ourLoggers = []*Logger{NamedLoggers[DEFAULT]} - } - l := &LoggerAsWriter{ - ourLoggers: ourLoggers, - level: FromString(level), - } - return l -} - -// Write implements the io.Writer interface to allow spoofing of macaron -func (l *LoggerAsWriter) Write(p []byte) (int, error) { - for _, logger := range l.ourLoggers { - // Skip = 3 because this presumes that we have been called by log.Println() - // If the caller has used log.Output or the like this will be wrong - logger.Log(3, l.level, string(p)) - } - return len(p), nil -} - -// Log takes a given string and logs it at the set log-level -func (l *LoggerAsWriter) Log(msg string) { - for _, logger := range l.ourLoggers { - // Set the skip to reference the call just above this - logger.Log(1, l.level, msg) - } -} - -func init() { - _, filename, _, _ := runtime.Caller(0) - prefix = strings.TrimSuffix(filename, "modules/log/log.go") -} diff --git a/vendor/gitea.com/gitea/log/logger.go b/vendor/gitea.com/gitea/log/logger.go deleted file mode 100644 index 9704ffd3d88a6..0000000000000 --- a/vendor/gitea.com/gitea/log/logger.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "fmt" - "os" - "runtime" - "strings" - "time" -) - -// Logger is default logger in the Gitea application. -// it can contain several providers and log message into all providers. -type Logger struct { - *MultiChannelledLog - bufferLength int64 -} - -// newLogger initializes and returns a new logger. -func newLogger(name string, buffer int64) *Logger { - l := &Logger{ - MultiChannelledLog: NewMultiChannelledLog(name, buffer), - bufferLength: buffer, - } - return l -} - -// SetLogger sets new logger instance with given logger provider and config. -func (l *Logger) SetLogger(name, provider, config string) error { - eventLogger, err := NewChannelledLog(name, provider, config, l.bufferLength) - if err != nil { - return fmt.Errorf("Failed to create sublogger (%s): %v", name, err) - } - - l.MultiChannelledLog.DelLogger(name) - - err = l.MultiChannelledLog.AddLogger(eventLogger) - if err != nil { - if IsErrDuplicateName(err) { - return fmt.Errorf("Duplicate named sublogger %s %v", name, l.MultiChannelledLog.GetEventLoggerNames()) - } - return fmt.Errorf("Failed to add sublogger (%s): %v", name, err) - } - - return nil -} - -// DelLogger deletes a sublogger from this logger. -func (l *Logger) DelLogger(name string) (bool, error) { - return l.MultiChannelledLog.DelLogger(name), nil -} - -// Log msg at the provided level with the provided caller defined by skip (0 being the function that calls this function) -func (l *Logger) Log(skip int, level Level, format string, v ...interface{}) error { - if l.GetLevel() > level { - return nil - } - caller := "?()" - pc, filename, line, ok := runtime.Caller(skip + 1) - if ok { - // Get caller function name. - fn := runtime.FuncForPC(pc) - if fn != nil { - caller = fn.Name() + "()" - } - } - msg := format - if len(v) > 0 { - msg = ColorSprintf(format, v...) - } - stack := "" - if l.GetStacktraceLevel() <= level { - stack = Stack(skip + 1) - } - return l.SendLog(level, caller, strings.TrimPrefix(filename, prefix), line, msg, stack) -} - -// SendLog sends a log event at the provided level with the information given -func (l *Logger) SendLog(level Level, caller, filename string, line int, msg string, stack string) error { - if l.GetLevel() > level { - return nil - } - event := &Event{ - level: level, - caller: caller, - filename: filename, - line: line, - msg: msg, - time: time.Now(), - stacktrace: stack, - } - l.LogEvent(event) - return nil -} - -// Trace records trace log -func (l *Logger) Trace(format string, v ...interface{}) { - l.Log(1, TRACE, format, v...) -} - -// Debug records debug log -func (l *Logger) Debug(format string, v ...interface{}) { - l.Log(1, DEBUG, format, v...) - -} - -// Info records information log -func (l *Logger) Info(format string, v ...interface{}) { - l.Log(1, INFO, format, v...) -} - -// Warn records warning log -func (l *Logger) Warn(format string, v ...interface{}) { - l.Log(1, WARN, format, v...) -} - -// Error records error log -func (l *Logger) Error(format string, v ...interface{}) { - l.Log(1, ERROR, format, v...) -} - -// ErrorWithSkip records error log from "skip" calls back from this function -func (l *Logger) ErrorWithSkip(skip int, format string, v ...interface{}) { - l.Log(skip+1, ERROR, format, v...) -} - -// Critical records critical log -func (l *Logger) Critical(format string, v ...interface{}) { - l.Log(1, CRITICAL, format, v...) -} - -// CriticalWithSkip records critical log from "skip" calls back from this function -func (l *Logger) CriticalWithSkip(skip int, format string, v ...interface{}) { - l.Log(skip+1, CRITICAL, format, v...) -} - -// Fatal records fatal log and exit the process -func (l *Logger) Fatal(format string, v ...interface{}) { - l.Log(1, FATAL, format, v...) - l.Close() - os.Exit(1) -} - -// FatalWithSkip records fatal log from "skip" calls back from this function and exits the process -func (l *Logger) FatalWithSkip(skip int, format string, v ...interface{}) { - l.Log(skip+1, FATAL, format, v...) - l.Close() - os.Exit(1) -} diff --git a/vendor/gitea.com/gitea/log/provider.go b/vendor/gitea.com/gitea/log/provider.go deleted file mode 100644 index b31bf392e6b03..0000000000000 --- a/vendor/gitea.com/gitea/log/provider.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -// LoggerProvider represents behaviors of a logger provider. -type LoggerProvider interface { - Init(config string) error - EventLogger -} - -type loggerProvider func() LoggerProvider - -var providers = make(map[string]loggerProvider) - -// Register registers given logger provider to providers. -func Register(name string, log loggerProvider) { - if log == nil { - panic("log: register provider is nil") - } - if _, dup := providers[name]; dup { - panic("log: register called twice for provider \"" + name + "\"") - } - providers[name] = log -} diff --git a/vendor/gitea.com/gitea/log/smtp.go b/vendor/gitea.com/gitea/log/smtp.go deleted file mode 100644 index f77d716d9491c..0000000000000 --- a/vendor/gitea.com/gitea/log/smtp.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "encoding/json" - "net/smtp" - "strings" -) - -const ( - subjectPhrase = "Diagnostic message from server" -) - -type smtpWriter struct { - owner *SMTPLogger -} - -// Write sends the message as an email -func (s *smtpWriter) Write(p []byte) (int, error) { - return s.owner.sendMail(p) -} - -// Close does nothing -func (s *smtpWriter) Close() error { - return nil -} - -// SMTPLogger implements LoggerProvider and is used to send emails via given SMTP-server. -type SMTPLogger struct { - WriterLogger - Username string `json:"Username"` - Password string `json:"password"` - Host string `json:"host"` - Subject string `json:"subject"` - RecipientAddresses []string `json:"sendTos"` - sendMailFn func(string, smtp.Auth, string, []string, []byte) error -} - -// NewSMTPLogger creates smtp writer. -func NewSMTPLogger() LoggerProvider { - s := &SMTPLogger{} - s.Level = TRACE - s.sendMailFn = smtp.SendMail - return s -} - -// Init smtp writer with json config. -// config like: -// { -// "Username":"example@gmail.com", -// "password:"password", -// "host":"smtp.gmail.com:465", -// "subject":"email title", -// "sendTos":["email1","email2"], -// "level":LevelError -// } -func (log *SMTPLogger) Init(jsonconfig string) error { - err := json.Unmarshal([]byte(jsonconfig), log) - if err != nil { - return err - } - log.NewWriterLogger(&smtpWriter{ - owner: log, - }) - log.sendMailFn = smtp.SendMail - return nil -} - -// WriteMsg writes message in smtp writer. -// it will send an email with subject and only this message. -func (log *SMTPLogger) sendMail(p []byte) (int, error) { - hp := strings.Split(log.Host, ":") - - // Set up authentication information. - auth := smtp.PlainAuth( - "", - log.Username, - log.Password, - hp[0], - ) - // Connect to the server, authenticate, set the sender and recipient, - // and send the email all in one step. - contentType := "Content-Type: text/plain" + "; charset=UTF-8" - mailmsg := []byte("To: " + strings.Join(log.RecipientAddresses, ";") + "\r\nFrom: " + log.Username + "<" + log.Username + - ">\r\nSubject: " + log.Subject + "\r\n" + contentType + "\r\n\r\n") - mailmsg = append(mailmsg, p...) - return len(p), log.sendMailFn( - log.Host, - auth, - log.Username, - log.RecipientAddresses, - mailmsg, - ) -} - -// Flush when log should be flushed -func (log *SMTPLogger) Flush() { -} - -// GetName returns the default name for this implementation -func (log *SMTPLogger) GetName() string { - return "smtp" -} - -func init() { - Register("smtp", NewSMTPLogger) -} diff --git a/vendor/gitea.com/gitea/log/stack.go b/vendor/gitea.com/gitea/log/stack.go deleted file mode 100644 index ffe9aa67cc58f..0000000000000 --- a/vendor/gitea.com/gitea/log/stack.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "bytes" - "fmt" - "io/ioutil" - "runtime" -) - -var ( - unknown = []byte("???") -) - -// Stack will skip back the provided number of frames and return a stack trace with source code. -// Although we could just use debug.Stack(), this routine will return the source code and -// skip back the provided number of frames - i.e. allowing us to ignore preceding function calls. -// A skip of 0 returns the stack trace for the calling function, not including this call. -// If the problem is a lack of memory of course all this is not going to work... -func Stack(skip int) string { - buf := new(bytes.Buffer) - - // Store the last file we opened as its probable that the preceding stack frame - // will be in the same file - var lines [][]byte - var lastFilename string - for i := skip + 1; ; i++ { // Skip over frames - programCounter, filename, lineNumber, ok := runtime.Caller(i) - // If we can't retrieve the information break - basically we're into go internals at this point. - if !ok { - break - } - - // Print equivalent of debug.Stack() - fmt.Fprintf(buf, "%s:%d (0x%x)\n", filename, lineNumber, programCounter) - // Now try to print the offending line - if filename != lastFilename { - data, err := ioutil.ReadFile(filename) - if err != nil { - // can't read this sourcefile - // likely we don't have the sourcecode available - continue - } - lines = bytes.Split(data, []byte{'\n'}) - lastFilename = filename - } - fmt.Fprintf(buf, "\t%s: %s\n", functionName(programCounter), source(lines, lineNumber)) - } - return buf.String() -} - -// functionName converts the provided programCounter into a function name -func functionName(programCounter uintptr) []byte { - function := runtime.FuncForPC(programCounter) - if function == nil { - return unknown - } - name := []byte(function.Name()) - - // Because we provide the filename we can drop the preceding package name. - if lastslash := bytes.LastIndex(name, []byte("/")); lastslash >= 0 { - name = name[lastslash+1:] - } - // And the current package name. - if period := bytes.Index(name, []byte(".")); period >= 0 { - name = name[period+1:] - } - // And we should just replace the interpunct with a dot - name = bytes.Replace(name, []byte("·"), []byte("."), -1) - return name -} - -// source returns a space-trimmed slice of the n'th line. -func source(lines [][]byte, n int) []byte { - n-- // in stack trace, lines are 1-indexed but our array is 0-indexed - if n < 0 || n >= len(lines) { - return unknown - } - return bytes.TrimSpace(lines[n]) -} diff --git a/vendor/gitea.com/gitea/log/writer.go b/vendor/gitea.com/gitea/log/writer.go deleted file mode 100644 index 22ef0b90476bf..0000000000000 --- a/vendor/gitea.com/gitea/log/writer.go +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package log - -import ( - "bytes" - "fmt" - "io" - "regexp" - "strings" - "sync" -) - -type byteArrayWriter []byte - -func (b *byteArrayWriter) Write(p []byte) (int, error) { - *b = append(*b, p...) - return len(p), nil -} - -// WriterLogger represent a basic logger for Gitea -type WriterLogger struct { - out io.WriteCloser - mu sync.Mutex - - Level Level `json:"level"` - StacktraceLevel Level `json:"stacktraceLevel"` - Flags int `json:"flags"` - Prefix string `json:"prefix"` - Colorize bool `json:"colorize"` - Expression string `json:"expression"` - regexp *regexp.Regexp -} - -// NewWriterLogger creates a new WriterLogger from the provided WriteCloser. -// Optionally the level can be changed at the same time. -func (logger *WriterLogger) NewWriterLogger(out io.WriteCloser, level ...Level) { - logger.mu.Lock() - defer logger.mu.Unlock() - logger.out = out - switch logger.Flags { - case 0: - logger.Flags = LstdFlags - case -1: - logger.Flags = 0 - } - if len(level) > 0 { - logger.Level = level[0] - } - logger.createExpression() -} - -func (logger *WriterLogger) createExpression() { - if len(logger.Expression) > 0 { - var err error - logger.regexp, err = regexp.Compile(logger.Expression) - if err != nil { - logger.regexp = nil - } - } -} - -// GetLevel returns the logging level for this logger -func (logger *WriterLogger) GetLevel() Level { - return logger.Level -} - -// GetStacktraceLevel returns the stacktrace logging level for this logger -func (logger *WriterLogger) GetStacktraceLevel() Level { - return logger.StacktraceLevel -} - -// Copy of cheap integer to fixed-width decimal to ascii from logger. -func itoa(buf *[]byte, i int, wid int) { - var logger [20]byte - bp := len(logger) - 1 - for i >= 10 || wid > 1 { - wid-- - q := i / 10 - logger[bp] = byte('0' + i - q*10) - bp-- - i = q - } - // i < 10 - logger[bp] = byte('0' + i) - *buf = append(*buf, logger[bp:]...) -} - -func (logger *WriterLogger) createMsg(buf *[]byte, event *Event) { - *buf = append(*buf, logger.Prefix...) - t := event.time - if logger.Flags&(Ldate|Ltime|Lmicroseconds) != 0 { - if logger.Colorize { - *buf = append(*buf, fgCyanBytes...) - } - if logger.Flags&LUTC != 0 { - t = t.UTC() - } - if logger.Flags&Ldate != 0 { - year, month, day := t.Date() - itoa(buf, year, 4) - *buf = append(*buf, '/') - itoa(buf, int(month), 2) - *buf = append(*buf, '/') - itoa(buf, day, 2) - *buf = append(*buf, ' ') - } - if logger.Flags&(Ltime|Lmicroseconds) != 0 { - hour, min, sec := t.Clock() - itoa(buf, hour, 2) - *buf = append(*buf, ':') - itoa(buf, min, 2) - *buf = append(*buf, ':') - itoa(buf, sec, 2) - if logger.Flags&Lmicroseconds != 0 { - *buf = append(*buf, '.') - itoa(buf, t.Nanosecond()/1e3, 6) - } - *buf = append(*buf, ' ') - } - if logger.Colorize { - *buf = append(*buf, resetBytes...) - } - - } - if logger.Flags&(Lshortfile|Llongfile) != 0 { - if logger.Colorize { - *buf = append(*buf, fgGreenBytes...) - } - file := event.filename - if logger.Flags&Lmedfile == Lmedfile { - startIndex := len(file) - 20 - if startIndex > 0 { - file = "..." + file[startIndex:] - } - } else if logger.Flags&Lshortfile != 0 { - startIndex := strings.LastIndexByte(file, '/') - if startIndex > 0 && startIndex < len(file) { - file = file[startIndex+1:] - } - } - *buf = append(*buf, file...) - *buf = append(*buf, ':') - itoa(buf, event.line, -1) - if logger.Flags&(Lfuncname|Lshortfuncname) != 0 { - *buf = append(*buf, ':') - } else { - if logger.Colorize { - *buf = append(*buf, resetBytes...) - } - *buf = append(*buf, ' ') - } - } - if logger.Flags&(Lfuncname|Lshortfuncname) != 0 { - if logger.Colorize { - *buf = append(*buf, fgGreenBytes...) - } - funcname := event.caller - if logger.Flags&Lshortfuncname != 0 { - lastIndex := strings.LastIndexByte(funcname, '.') - if lastIndex > 0 && len(funcname) > lastIndex+1 { - funcname = funcname[lastIndex+1:] - } - } - *buf = append(*buf, funcname...) - if logger.Colorize { - *buf = append(*buf, resetBytes...) - } - *buf = append(*buf, ' ') - - } - if logger.Flags&(Llevel|Llevelinitial) != 0 { - level := strings.ToUpper(event.level.String()) - if logger.Colorize { - *buf = append(*buf, levelToColor[event.level]...) - } - *buf = append(*buf, '[') - if logger.Flags&Llevelinitial != 0 { - *buf = append(*buf, level[0]) - } else { - *buf = append(*buf, level...) - } - *buf = append(*buf, ']') - if logger.Colorize { - *buf = append(*buf, resetBytes...) - } - *buf = append(*buf, ' ') - } - - var msg = []byte(event.msg) - if len(msg) > 0 && msg[len(msg)-1] == '\n' { - msg = msg[:len(msg)-1] - } - - pawMode := allowColor - if !logger.Colorize { - pawMode = removeColor - } - - baw := byteArrayWriter(*buf) - (&protectedANSIWriter{ - w: &baw, - mode: pawMode, - }).Write([]byte(msg)) - *buf = baw - - if event.stacktrace != "" && logger.StacktraceLevel <= event.level { - lines := bytes.Split([]byte(event.stacktrace), []byte("\n")) - if len(lines) > 1 { - for _, line := range lines { - *buf = append(*buf, "\n\t"...) - *buf = append(*buf, line...) - } - } - *buf = append(*buf, '\n') - } - *buf = append(*buf, '\n') -} - -// LogEvent logs the event to the internal writer -func (logger *WriterLogger) LogEvent(event *Event) error { - if logger.Level > event.level { - return nil - } - - logger.mu.Lock() - defer logger.mu.Unlock() - if !logger.Match(event) { - return nil - } - var buf []byte - logger.createMsg(&buf, event) - _, err := logger.out.Write(buf) - return err -} - -// Match checks if the given event matches the logger's regexp expression -func (logger *WriterLogger) Match(event *Event) bool { - if logger.regexp == nil { - return true - } - if logger.regexp.Match([]byte(fmt.Sprintf("%s:%d:%s", event.filename, event.line, event.caller))) { - return true - } - // Match on the non-colored msg - therefore strip out colors - var msg []byte - baw := byteArrayWriter(msg) - (&protectedANSIWriter{ - w: &baw, - mode: removeColor, - }).Write([]byte(event.msg)) - msg = baw - if logger.regexp.Match(msg) { - return true - } - return false -} - -// Close the base logger -func (logger *WriterLogger) Close() { - logger.mu.Lock() - defer logger.mu.Unlock() - if logger.out != nil { - logger.out.Close() - } -} - -// GetName returns empty for these provider loggers -func (logger *WriterLogger) GetName() string { - return "" -} diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go b/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go index 6b8263a453dba..7da4963b3607c 100644 --- a/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go +++ b/vendor/gitea.com/xorm/gitea_log_bridge/bridge.go @@ -7,7 +7,7 @@ package bridge import ( "strings" - "gitea.com/gitea/log" + "code.gitea.io/log" "github.com/go-xorm/core" ) diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/go.mod b/vendor/gitea.com/xorm/gitea_log_bridge/go.mod index 51030ddaf8340..118593a173c20 100644 --- a/vendor/gitea.com/xorm/gitea_log_bridge/go.mod +++ b/vendor/gitea.com/xorm/gitea_log_bridge/go.mod @@ -3,6 +3,6 @@ module gitea.com/xorm/gitea_log_bridge go 1.12 require ( - gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 + code.gitea.io/log v0.0.0-20190526010349-0560851a166a github.com/go-xorm/core v0.6.2 ) diff --git a/vendor/gitea.com/xorm/gitea_log_bridge/go.sum b/vendor/gitea.com/xorm/gitea_log_bridge/go.sum index 33e39fc60bf59..b42bec9726cf3 100644 --- a/vendor/gitea.com/xorm/gitea_log_bridge/go.sum +++ b/vendor/gitea.com/xorm/gitea_log_bridge/go.sum @@ -1,5 +1,5 @@ -gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 h1:y9Ep7Fhwz3D7mko8XRwbpGahnZNaPkJ43Qg/d6Ss9EU= -gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4/go.mod h1:1nV03yHcYc8sGKHpWDe++gxd7yoMDdNOWhIhuykDSnI= +code.gitea.io/log v0.0.0-20190526010349-0560851a166a h1:c1wd1bb9rP28jMyXa0X19yrnX0Ux/zoOlv4j/fhwi8Y= +code.gitea.io/log v0.0.0-20190526010349-0560851a166a/go.mod h1:YOBHMQw/14CwuwNStgQyvnzoDJEO6ARjcSdD48QRzhM= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= diff --git a/vendor/modules.txt b/vendor/modules.txt index 65c7a39f7cd5e..b5853dc9a278f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,8 +1,6 @@ # code.gitea.io/log v0.0.0-20190608101221-52ddba89623c code.gitea.io/log -# gitea.com/gitea/log v0.0.0-20190515030314-0a66fbccccb4 -gitea.com/gitea/log -# gitea.com/xorm/gitea_log_bridge v0.0.0-20190515055409-ff68dd741ee6 +# gitea.com/xorm/gitea_log_bridge v0.0.0-20190527041858-1699849c7e28 gitea.com/xorm/gitea_log_bridge # github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml From 34f4215c176cc3f589db477d77f01ce56fb876c8 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 1 Jun 2019 20:33:11 +0800 Subject: [PATCH 03/15] fix lint --- modules/{git_log => gitlog}/log.go | 2 +- modules/private/branch.go | 2 +- modules/private/push_update.go | 2 +- modules/private/repository.go | 2 +- modules/private/wiki.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename modules/{git_log => gitlog}/log.go (98%) diff --git a/modules/git_log/log.go b/modules/gitlog/log.go similarity index 98% rename from modules/git_log/log.go rename to modules/gitlog/log.go index a2cf04d598cde..9d9eb3925e76b 100644 --- a/modules/git_log/log.go +++ b/modules/gitlog/log.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package git_log +package gitlog import ( "fmt" diff --git a/modules/private/branch.go b/modules/private/branch.go index 64ae3cdf88568..25480e4b38f16 100644 --- a/modules/private/branch.go +++ b/modules/private/branch.go @@ -9,7 +9,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/git_log" + log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" ) diff --git a/modules/private/push_update.go b/modules/private/push_update.go index 0e294d781ca46..ce82b1bfc0c3d 100644 --- a/modules/private/push_update.go +++ b/modules/private/push_update.go @@ -9,7 +9,7 @@ import ( "fmt" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/git_log" + log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/private/repository.go b/modules/private/repository.go index 5a74f1a6a3dc3..9d5f8f4939336 100644 --- a/modules/private/repository.go +++ b/modules/private/repository.go @@ -10,7 +10,7 @@ import ( "net/url" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/git_log" + log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" ) diff --git a/modules/private/wiki.go b/modules/private/wiki.go index ac4d54d26e82a..3dd32670a271f 100644 --- a/modules/private/wiki.go +++ b/modules/private/wiki.go @@ -7,7 +7,7 @@ package private import ( "fmt" - log "code.gitea.io/gitea/modules/git_log" + log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" ) From db324deb76629d2f1b229790a1067cf1a658556b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 1 Jun 2019 23:16:46 +0800 Subject: [PATCH 04/15] remove gitlog --- routers/private/serv.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/private/serv.go b/routers/private/serv.go index 95ad9b28bf6de..efad868af880b 100644 --- a/routers/private/serv.go +++ b/routers/private/serv.go @@ -11,9 +11,9 @@ import ( "strings" "code.gitea.io/gitea/models" - "code.gitea.io/log" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) From 326cc2ea4d550a3f4b719cad268b65595f8e9dd1 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 1 Jun 2019 23:27:33 +0800 Subject: [PATCH 05/15] remove gitlog --- modules/gitlog/log.go | 31 ------------------------------- modules/private/branch.go | 6 +++--- modules/private/push_update.go | 4 ++-- modules/private/repository.go | 6 +++--- modules/private/wiki.go | 4 ++-- 5 files changed, 10 insertions(+), 41 deletions(-) delete mode 100644 modules/gitlog/log.go diff --git a/modules/gitlog/log.go b/modules/gitlog/log.go deleted file mode 100644 index 9d9eb3925e76b..0000000000000 --- a/modules/gitlog/log.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package gitlog - -import ( - "fmt" - "os" - "path" - - "code.gitea.io/log" -) - -// GitLogger logger for git -var GitLogger *log.Logger - -// NewGitLogger create a logger for git -// FIXME: use same log level as other loggers. -func NewGitLogger(logPath string) { - path := path.Dir(logPath) - - if err := os.MkdirAll(path, os.ModePerm); err != nil { - log.Fatal("Failed to create dir %s: %v", path, err) - } - - GitLogger = &log.Logger{ - MultiChannelledLog: log.NewMultiChannelledLog("git", 0), - } - GitLogger.SetLogger("file", "file", fmt.Sprintf(`{"level":"TRACE","filename":"%s","rotate":true,"maxsize":%d,"daily":true,"maxdays":7,"compress":true,"compressionLevel":-1, "stacktraceLevel":"NONE"}`, logPath, 1<<28)) -} diff --git a/modules/private/branch.go b/modules/private/branch.go index 25480e4b38f16..bde86865a1c70 100644 --- a/modules/private/branch.go +++ b/modules/private/branch.go @@ -9,16 +9,16 @@ import ( "fmt" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // GetProtectedBranchBy get protected branch information func GetProtectedBranchBy(repoID int64, branchName string) (*models.ProtectedBranch, error) { // Ask for running deliver hook and test pull request tasks. reqURL := setting.LocalURL + fmt.Sprintf("api/internal/branch/%d/%s", repoID, util.PathEscapeSegments(branchName)) - log.GitLogger.Trace("GetProtectedBranchBy: %s", reqURL) + log.Trace("GetProtectedBranchBy: %s", reqURL) resp, err := newInternalRequest(reqURL, "GET").Response() if err != nil { @@ -44,7 +44,7 @@ func GetProtectedBranchBy(repoID int64, branchName string) (*models.ProtectedBra func CanUserPush(protectedBranchID, userID int64) (bool, error) { // Ask for running deliver hook and test pull request tasks. reqURL := setting.LocalURL + fmt.Sprintf("api/internal/protectedbranch/%d/%d", protectedBranchID, userID) - log.GitLogger.Trace("CanUserPush: %s", reqURL) + log.Trace("CanUserPush: %s", reqURL) resp, err := newInternalRequest(reqURL, "GET").Response() if err != nil { diff --git a/modules/private/push_update.go b/modules/private/push_update.go index ce82b1bfc0c3d..b0b679572da64 100644 --- a/modules/private/push_update.go +++ b/modules/private/push_update.go @@ -9,15 +9,15 @@ import ( "fmt" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // PushUpdate update publick key updates func PushUpdate(opt models.PushUpdateOptions) error { // Ask for running deliver hook and test pull request tasks. reqURL := setting.LocalURL + "api/internal/push/update" - log.GitLogger.Trace("PushUpdate: %s", reqURL) + log.Trace("PushUpdate: %s", reqURL) body, err := json.Marshal(&opt) if err != nil { diff --git a/modules/private/repository.go b/modules/private/repository.go index 9d5f8f4939336..803e4f62228b2 100644 --- a/modules/private/repository.go +++ b/modules/private/repository.go @@ -10,14 +10,14 @@ import ( "net/url" "code.gitea.io/gitea/models" - log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // GetRepository return the repository by its ID and a bool about if it's allowed to have PR func GetRepository(repoID int64) (*models.Repository, bool, error) { reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repository/%d", repoID) - log.GitLogger.Trace("GetRepository: %s", reqURL) + log.Trace("GetRepository: %s", reqURL) resp, err := newInternalRequest(reqURL, "GET").Response() if err != nil { @@ -45,7 +45,7 @@ func GetRepository(repoID int64) (*models.Repository, bool, error) { // ActivePullRequest returns an active pull request if it exists func ActivePullRequest(baseRepoID int64, headRepoID int64, baseBranch, headBranch string) (*models.PullRequest, error) { reqURL := setting.LocalURL + fmt.Sprintf("api/internal/active-pull-request?baseRepoID=%d&headRepoID=%d&baseBranch=%s&headBranch=%s", baseRepoID, headRepoID, url.QueryEscape(baseBranch), url.QueryEscape(headBranch)) - log.GitLogger.Trace("ActivePullRequest: %s", reqURL) + log.Trace("ActivePullRequest: %s", reqURL) resp, err := newInternalRequest(reqURL, "GET").Response() if err != nil { diff --git a/modules/private/wiki.go b/modules/private/wiki.go index 3dd32670a271f..1e4d2c1b8d959 100644 --- a/modules/private/wiki.go +++ b/modules/private/wiki.go @@ -7,15 +7,15 @@ package private import ( "fmt" - log "code.gitea.io/gitea/modules/gitlog" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) // InitWiki initwiki via repo id func InitWiki(repoID int64) error { // Ask for running deliver hook and test pull request tasks. reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/wiki/init", repoID) - log.GitLogger.Trace("InitWiki: %s", reqURL) + log.Trace("InitWiki: %s", reqURL) resp, err := newInternalRequest(reqURL, "GET").Response() if err != nil { From 81b5a2877312d9313843f6bb9ff0c0202e01433e Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 1 Jun 2019 23:42:11 +0800 Subject: [PATCH 06/15] remove unused files --- models/issue_assignees.go | 2 +- models/issue_comment.go | 12 +++--- modules/private/branch.go | 67 --------------------------------- modules/private/push_update.go | 40 -------------------- modules/private/repository.go | 68 ---------------------------------- modules/private/wiki.go | 33 ----------------- routers/private/push_update.go | 56 ---------------------------- 7 files changed, 6 insertions(+), 272 deletions(-) delete mode 100644 modules/private/branch.go delete mode 100644 modules/private/push_update.go delete mode 100644 modules/private/repository.go delete mode 100644 modules/private/wiki.go delete mode 100644 routers/private/push_update.go diff --git a/models/issue_assignees.go b/models/issue_assignees.go index ef7482a6444d9..f1a1946d645a5 100644 --- a/models/issue_assignees.go +++ b/models/issue_assignees.go @@ -7,9 +7,9 @@ package models import ( "fmt" + api "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" - api "code.gitea.io/gitea/modules/structs" "github.com/go-xorm/xorm" ) diff --git a/models/issue_comment.go b/models/issue_comment.go index 28358b09d8637..f852d51125d57 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -12,18 +12,16 @@ import ( "strings" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" - "github.com/Unknwon/com" - "github.com/go-xorm/builder" - "github.com/go-xorm/xorm" - api "code.gitea.io/gitea/modules/structs" - - - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" + + "github.com/Unknwon/com" + "github.com/go-xorm/builder" + "github.com/go-xorm/xorm" ) // CommentType defines whether a comment is just a simple comment, an action (like close) or a reference. diff --git a/modules/private/branch.go b/modules/private/branch.go deleted file mode 100644 index bde86865a1c70..0000000000000 --- a/modules/private/branch.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package private - -import ( - "encoding/json" - "fmt" - - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/log" -) - -// GetProtectedBranchBy get protected branch information -func GetProtectedBranchBy(repoID int64, branchName string) (*models.ProtectedBranch, error) { - // Ask for running deliver hook and test pull request tasks. - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/branch/%d/%s", repoID, util.PathEscapeSegments(branchName)) - log.Trace("GetProtectedBranchBy: %s", reqURL) - - resp, err := newInternalRequest(reqURL, "GET").Response() - if err != nil { - return nil, err - } - - var branch models.ProtectedBranch - if err := json.NewDecoder(resp.Body).Decode(&branch); err != nil { - return nil, err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return nil, fmt.Errorf("Failed to get protected branch: %s", decodeJSONError(resp).Err) - } - - return &branch, nil -} - -// CanUserPush returns if user can push -func CanUserPush(protectedBranchID, userID int64) (bool, error) { - // Ask for running deliver hook and test pull request tasks. - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/protectedbranch/%d/%d", protectedBranchID, userID) - log.Trace("CanUserPush: %s", reqURL) - - resp, err := newInternalRequest(reqURL, "GET").Response() - if err != nil { - return false, err - } - - var canPush = make(map[string]interface{}) - if err := json.NewDecoder(resp.Body).Decode(&canPush); err != nil { - return false, err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return false, fmt.Errorf("Failed to retrieve push user: %s", decodeJSONError(resp).Err) - } - - return canPush["can_push"].(bool), nil -} diff --git a/modules/private/push_update.go b/modules/private/push_update.go deleted file mode 100644 index b0b679572da64..0000000000000 --- a/modules/private/push_update.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package private - -import ( - "encoding/json" - "fmt" - - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/log" -) - -// PushUpdate update publick key updates -func PushUpdate(opt models.PushUpdateOptions) error { - // Ask for running deliver hook and test pull request tasks. - reqURL := setting.LocalURL + "api/internal/push/update" - log.Trace("PushUpdate: %s", reqURL) - - body, err := json.Marshal(&opt) - if err != nil { - return err - } - - resp, err := newInternalRequest(reqURL, "POST").Body(body).Response() - if err != nil { - return err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return fmt.Errorf("Failed to update public key: %s", decodeJSONError(resp).Err) - } - - return nil -} diff --git a/modules/private/repository.go b/modules/private/repository.go deleted file mode 100644 index 803e4f62228b2..0000000000000 --- a/modules/private/repository.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2018 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package private - -import ( - "encoding/json" - "fmt" - "net/url" - - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/log" -) - -// GetRepository return the repository by its ID and a bool about if it's allowed to have PR -func GetRepository(repoID int64) (*models.Repository, bool, error) { - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repository/%d", repoID) - log.Trace("GetRepository: %s", reqURL) - - resp, err := newInternalRequest(reqURL, "GET").Response() - if err != nil { - return nil, false, err - } - - var repoInfo struct { - Repository *models.Repository - AllowPullRequest bool - } - if err := json.NewDecoder(resp.Body).Decode(&repoInfo); err != nil { - return nil, false, err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return nil, false, fmt.Errorf("failed to retrieve repository: %s", decodeJSONError(resp).Err) - } - - return repoInfo.Repository, repoInfo.AllowPullRequest, nil -} - -// ActivePullRequest returns an active pull request if it exists -func ActivePullRequest(baseRepoID int64, headRepoID int64, baseBranch, headBranch string) (*models.PullRequest, error) { - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/active-pull-request?baseRepoID=%d&headRepoID=%d&baseBranch=%s&headBranch=%s", baseRepoID, headRepoID, url.QueryEscape(baseBranch), url.QueryEscape(headBranch)) - log.Trace("ActivePullRequest: %s", reqURL) - - resp, err := newInternalRequest(reqURL, "GET").Response() - if err != nil { - return nil, err - } - - var pr *models.PullRequest - if err := json.NewDecoder(resp.Body).Decode(&pr); err != nil { - return nil, err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return nil, fmt.Errorf("failed to retrieve pull request: %s", decodeJSONError(resp).Err) - } - - return pr, nil -} diff --git a/modules/private/wiki.go b/modules/private/wiki.go deleted file mode 100644 index 1e4d2c1b8d959..0000000000000 --- a/modules/private/wiki.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package private - -import ( - "fmt" - - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/log" -) - -// InitWiki initwiki via repo id -func InitWiki(repoID int64) error { - // Ask for running deliver hook and test pull request tasks. - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/wiki/init", repoID) - log.Trace("InitWiki: %s", reqURL) - - resp, err := newInternalRequest(reqURL, "GET").Response() - if err != nil { - return err - } - - defer resp.Body.Close() - - // All 2XX status codes are accepted and others will return an error - if resp.StatusCode/100 != 2 { - return fmt.Errorf("Failed to init wiki: %s", decodeJSONError(resp).Err) - } - - return nil -} diff --git a/routers/private/push_update.go b/routers/private/push_update.go deleted file mode 100644 index 06234242741b5..0000000000000 --- a/routers/private/push_update.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package private - -import ( - "encoding/json" - "strings" - - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/repofiles" - "code.gitea.io/log" - - macaron "gopkg.in/macaron.v1" -) - -// PushUpdate update public key updates -func PushUpdate(ctx *macaron.Context) { - var opt models.PushUpdateOptions - if err := json.NewDecoder(ctx.Req.Request.Body).Decode(&opt); err != nil { - ctx.JSON(500, map[string]interface{}{ - "err": err.Error(), - }) - return - } - - branch := strings.TrimPrefix(opt.RefFullName, git.BranchPrefix) - if len(branch) == 0 || opt.PusherID <= 0 { - ctx.Error(404) - log.Trace("PushUpdate: branch or secret is empty, or pusher ID is not valid") - return - } - - repo, err := models.GetRepositoryByOwnerAndName(opt.RepoUserName, opt.RepoName) - if err != nil { - ctx.JSON(500, map[string]interface{}{ - "err": err.Error(), - }) - return - } - - err = repofiles.PushUpdate(repo, branch, opt) - if err != nil { - if models.IsErrUserNotExist(err) { - ctx.Error(404) - } else { - ctx.JSON(500, map[string]interface{}{ - "err": err.Error(), - }) - } - return - } - ctx.Status(202) -} From b93523ddc9c4b0274688bbf1699139f15a2a9c06 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 1 Jun 2019 23:45:17 +0800 Subject: [PATCH 07/15] fix fmt --- routers/private/hook.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/private/hook.go b/routers/private/hook.go index ee2a44158e5e7..0a576630cd7e1 100644 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -13,10 +13,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" macaron "gopkg.in/macaron.v1" ) From 1f742eef95cc6422f06976132a946d32765d7f27 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Jun 2019 09:01:55 +0800 Subject: [PATCH 08/15] fmt --- cmd/convert.go | 2 +- cmd/web.go | 1 - models/admin.go | 1 - models/helper_directory.go | 1 - models/issue_dependency.go | 1 - models/issue_mail.go | 1 - models/issue_milestone.go | 1 - models/lfs_lock.go | 1 - models/migrations/v20.go | 1 - models/migrations/v27.go | 1 - models/migrations/v33.go | 1 - models/migrations/v45.go | 1 - models/migrations/v50.go | 1 - models/migrations/v61.go | 1 - models/org.go | 1 - models/org_team.go | 1 - models/review.go | 1 - models/ssh_key.go | 1 - models/u2f.go | 1 - modules/auth/oauth2/oauth2.go | 1 - modules/indexer/repo.go | 1 - modules/markup/external/external.go | 1 - modules/markup/orgmode/orgmode.go | 1 - modules/migrations/github.go | 1 - modules/templates/dynamic.go | 1 - modules/templates/static.go | 1 - modules/util/url.go | 1 - routers/repo/compare.go | 2 +- 28 files changed, 2 insertions(+), 28 deletions(-) diff --git a/cmd/convert.go b/cmd/convert.go index 1a2e66d6a2e49..8493bdb014266 100644 --- a/cmd/convert.go +++ b/cmd/convert.go @@ -8,8 +8,8 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" "github.com/urfave/cli" ) diff --git a/cmd/web.go b/cmd/web.go index dfa379996e79c..532db734f34a1 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -13,7 +13,6 @@ import ( "os" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers/routes" diff --git a/models/admin.go b/models/admin.go index 733844e868686..18ee02824b3a3 100644 --- a/models/admin.go +++ b/models/admin.go @@ -8,7 +8,6 @@ import ( "fmt" "os" - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/models/helper_directory.go b/models/helper_directory.go index 25c86bdca7a0a..edff48335dd8c 100644 --- a/models/helper_directory.go +++ b/models/helper_directory.go @@ -11,7 +11,6 @@ import ( "path/filepath" "time" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/issue_dependency.go b/models/issue_dependency.go index bd398452f4811..898368fa2001e 100644 --- a/models/issue_dependency.go +++ b/models/issue_dependency.go @@ -5,7 +5,6 @@ package models import ( - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/models/issue_mail.go b/models/issue_mail.go index 43c97c7d1a4f7..fd07cdcfcf024 100644 --- a/models/issue_mail.go +++ b/models/issue_mail.go @@ -10,7 +10,6 @@ import ( "github.com/Unknwon/com" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/issue_milestone.go b/models/issue_milestone.go index 6c7dcc9c5a1dc..a1092aaca33f6 100644 --- a/models/issue_milestone.go +++ b/models/issue_milestone.go @@ -7,7 +7,6 @@ package models import ( "fmt" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/lfs_lock.go b/models/lfs_lock.go index 30f564bb9d0d9..27d116b1b230d 100644 --- a/models/lfs_lock.go +++ b/models/lfs_lock.go @@ -11,7 +11,6 @@ import ( "strings" "time" - api "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" "github.com/go-xorm/xorm" diff --git a/models/migrations/v20.go b/models/migrations/v20.go index 8f1efc777c4d1..0809dcc3574ad 100644 --- a/models/migrations/v20.go +++ b/models/migrations/v20.go @@ -13,7 +13,6 @@ import ( "path/filepath" "strconv" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v27.go b/models/migrations/v27.go index 5376ef25ade8c..7a4682221a33a 100644 --- a/models/migrations/v27.go +++ b/models/migrations/v27.go @@ -8,7 +8,6 @@ import ( "fmt" "time" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v33.go b/models/migrations/v33.go index dea3f7ea0d08a..0e869d381b58c 100644 --- a/models/migrations/v33.go +++ b/models/migrations/v33.go @@ -7,7 +7,6 @@ package migrations import ( "fmt" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v45.go b/models/migrations/v45.go index 6b1a90dfd7464..698fdcba4a3b6 100644 --- a/models/migrations/v45.go +++ b/models/migrations/v45.go @@ -5,7 +5,6 @@ package migrations import ( - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v50.go b/models/migrations/v50.go index 4a298792aea7f..82c10c4d4e647 100644 --- a/models/migrations/v50.go +++ b/models/migrations/v50.go @@ -7,7 +7,6 @@ package migrations import ( "time" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v61.go b/models/migrations/v61.go index 7872ac05441b6..b528a5bcc7042 100644 --- a/models/migrations/v61.go +++ b/models/migrations/v61.go @@ -9,7 +9,6 @@ import ( "os" "path" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/org.go b/models/org.go index 54e485a4bfab1..964f66623e46b 100644 --- a/models/org.go +++ b/models/org.go @@ -11,7 +11,6 @@ import ( "os" "strings" - "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" diff --git a/models/org_team.go b/models/org_team.go index 59088b87a0192..7fe435d6392d3 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -11,7 +11,6 @@ import ( "sort" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/review.go b/models/review.go index 7bff01e5ac916..57d03aa909bc5 100644 --- a/models/review.go +++ b/models/review.go @@ -7,7 +7,6 @@ package models import ( "fmt" - api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/models/ssh_key.go b/models/ssh_key.go index 0338f36c59cb0..03a743bc1d45f 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -19,7 +19,6 @@ import ( "sync" "time" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/models/u2f.go b/models/u2f.go index b183772f4a752..ed59af62976f1 100644 --- a/models/u2f.go +++ b/models/u2f.go @@ -5,7 +5,6 @@ package models import ( - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/modules/auth/oauth2/oauth2.go b/modules/auth/oauth2/oauth2.go index f5bd3575a2694..483a0e72d6c6b 100644 --- a/modules/auth/oauth2/oauth2.go +++ b/modules/auth/oauth2/oauth2.go @@ -8,7 +8,6 @@ import ( "math" "net/http" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/indexer/repo.go b/modules/indexer/repo.go index bfe6b1c13b497..0d09341d29691 100644 --- a/modules/indexer/repo.go +++ b/modules/indexer/repo.go @@ -7,7 +7,6 @@ package indexer import ( "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/markup/external/external.go b/modules/markup/external/external.go index c207e0f844c1f..2236a1bfa2ec5 100644 --- a/modules/markup/external/external.go +++ b/modules/markup/external/external.go @@ -13,7 +13,6 @@ import ( "runtime" "strings" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index e181fe0b393d9..6ce5d6b92a73f 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -5,7 +5,6 @@ package markup import ( - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/log" diff --git a/modules/migrations/github.go b/modules/migrations/github.go index 1db58e55f916f..7a757195741fc 100644 --- a/modules/migrations/github.go +++ b/modules/migrations/github.go @@ -12,7 +12,6 @@ import ( "net/url" "strings" - "code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/log" diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go index eea184876e3f2..ef785c7f765b2 100644 --- a/modules/templates/dynamic.go +++ b/modules/templates/dynamic.go @@ -12,7 +12,6 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" "github.com/Unknwon/com" diff --git a/modules/templates/static.go b/modules/templates/static.go index 9128d0fe9d885..0b64eecf8aa3a 100644 --- a/modules/templates/static.go +++ b/modules/templates/static.go @@ -15,7 +15,6 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" "github.com/Unknwon/com" diff --git a/modules/util/url.go b/modules/util/url.go index 2d7dc98ef1498..eca40a36cfd61 100644 --- a/modules/util/url.go +++ b/modules/util/url.go @@ -9,7 +9,6 @@ import ( "path" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/repo/compare.go b/routers/repo/compare.go index 946c1b6cd60d6..e256ebfe8f2da 100644 --- a/routers/repo/compare.go +++ b/routers/repo/compare.go @@ -12,8 +12,8 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" ) const ( From 80a2458637dfdb40ba33556ff1e94bc069588162 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Jun 2019 09:08:39 +0800 Subject: [PATCH 09/15] import order --- main.go | 1 - 1 file changed, 1 deletion(-) diff --git a/main.go b/main.go index e26a69b9d8f3b..b922474d66afc 100644 --- a/main.go +++ b/main.go @@ -13,7 +13,6 @@ import ( "strings" "code.gitea.io/gitea/cmd" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" From cb38560628d6182b5df978a769ee145faa0d6781 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Jun 2019 09:11:32 +0800 Subject: [PATCH 10/15] import order --- cmd/admin.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/admin.go b/cmd/admin.go index d49a60d8453ca..5829501b4ff50 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -15,7 +15,6 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" From f48ed84d0025db68665fef6769320da297deedad Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Jun 2019 10:16:59 +0800 Subject: [PATCH 11/15] fix import --- cmd/migrate.go | 1 - models/branches.go | 1 - models/git_diff.go | 2 +- models/gpg_key.go | 1 - models/issue.go | 1 - models/lfs_lock.go | 1 + models/login_source.go | 9 ++++----- models/mail.go | 2 +- models/migrations/migrations.go | 9 ++++----- models/migrations/v28.go | 1 - models/migrations/v85.go | 7 +++---- models/models.go | 2 ++ models/pull.go | 1 - models/release.go | 1 - models/repo.go | 1 - models/repo_indexer.go | 1 - models/repo_mirror.go | 1 - models/repo_redirect.go | 3 ++- models/status.go | 1 - models/update.go | 1 - models/user.go | 1 - models/wiki.go | 1 - modules/auth/auth.go | 1 - modules/base/tool.go | 1 - modules/context/api.go | 4 +--- modules/context/auth.go | 2 +- modules/context/context.go | 2 +- modules/context/panic.go | 1 + modules/context/repo.go | 1 - modules/indexer/issues/indexer.go | 1 - modules/indexer/issues/queue_disk.go | 1 + modules/indexer/issues/queue_redis.go | 1 + modules/lfs/locks.go | 1 - modules/lfs/server.go | 1 - modules/mailer/mailer.go | 1 - modules/migrations/gitea.go | 1 - modules/migrations/migrate.go | 1 - modules/notification/indexer/indexer.go | 1 - modules/notification/mail/mail.go | 1 - modules/notification/ui/ui.go | 1 - modules/repofiles/temp_repo.go | 1 - modules/repofiles/update.go | 7 +++---- modules/setting/mailer.go | 1 + modules/setting/repository.go | 1 + modules/setting/setting.go | 1 - modules/ssh/ssh.go | 7 +++---- modules/templates/dynamic.go | 1 + modules/templates/helper.go | 4 +--- modules/templates/static.go | 1 + routers/admin/auths.go | 1 - routers/admin/notice.go | 1 - routers/admin/repos.go | 1 - routers/admin/users.go | 1 - routers/api/v1/admin/user.go | 1 - routers/api/v1/api.go | 1 - routers/api/v1/convert/convert.go | 1 - routers/api/v1/repo/pull.go | 1 - routers/api/v1/repo/repo.go | 4 +--- routers/home.go | 1 - routers/install.go | 9 ++++----- routers/org/members.go | 5 ++--- routers/org/org.go | 1 - routers/org/setting.go | 1 - routers/org/teams.go | 5 ++--- routers/repo/attachment.go | 1 - routers/repo/blame.go | 2 -- routers/repo/branch.go | 1 - routers/repo/commit.go | 1 - routers/repo/editor.go | 1 - routers/repo/issue.go | 1 - routers/repo/pull.go | 1 - routers/repo/pull_review.go | 1 - routers/repo/release.go | 1 - routers/repo/repo.go | 1 - routers/repo/setting.go | 1 - routers/repo/setting_protected_branch.go | 1 - routers/repo/view.go | 1 - routers/repo/wiki.go | 1 - routers/routes/routes.go | 1 - routers/user/auth.go | 1 - routers/user/auth_openid.go | 1 - routers/user/home.go | 1 - routers/user/setting/account.go | 1 - routers/user/setting/oauth2.go | 1 - routers/user/setting/profile.go | 1 - routers/user/setting/security_openid.go | 1 - 86 files changed, 44 insertions(+), 109 deletions(-) diff --git a/cmd/migrate.go b/cmd/migrate.go index 5b7f1093d0f28..4082ac6006934 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -7,7 +7,6 @@ package cmd import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/migrations" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/branches.go b/models/branches.go index b0d04744c44cd..c51f3aa01f383 100644 --- a/models/branches.go +++ b/models/branches.go @@ -9,7 +9,6 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/models/git_diff.go b/models/git_diff.go index 1a4fe6678977a..7e51d313c96bc 100644 --- a/models/git_diff.go +++ b/models/git_diff.go @@ -22,10 +22,10 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "github.com/Unknwon/com" "github.com/sergi/go-diff/diffmatchpatch" "golang.org/x/net/html/charset" diff --git a/models/gpg_key.go b/models/gpg_key.go index aa064ed3db4fb..80bece68a13c1 100644 --- a/models/gpg_key.go +++ b/models/gpg_key.go @@ -16,7 +16,6 @@ import ( "time" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/models/issue.go b/models/issue.go index 8f023e5d2b0e1..0639bb741088c 100644 --- a/models/issue.go +++ b/models/issue.go @@ -13,7 +13,6 @@ import ( "strings" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/lfs_lock.go b/models/lfs_lock.go index 27d116b1b230d..df305ebfec470 100644 --- a/models/lfs_lock.go +++ b/models/lfs_lock.go @@ -13,6 +13,7 @@ import ( api "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" + "github.com/go-xorm/xorm" ) diff --git a/models/login_source.go b/models/login_source.go index aee5522a4cd76..e7e007c500d9c 100644 --- a/models/login_source.go +++ b/models/login_source.go @@ -14,16 +14,15 @@ import ( "regexp" "strings" - "github.com/Unknwon/com" - "github.com/go-xorm/core" - "github.com/go-xorm/xorm" - "code.gitea.io/gitea/modules/auth/ldap" "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/auth/pam" - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" + + "github.com/Unknwon/com" + "github.com/go-xorm/core" + "github.com/go-xorm/xorm" ) // LoginType represents an login type. diff --git a/models/mail.go b/models/mail.go index 38b6c2c9c3cad..3bbde15c83ad5 100644 --- a/models/mail.go +++ b/models/mail.go @@ -11,12 +11,12 @@ import ( "path" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/mailer" "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "gopkg.in/gomail.v2" ) diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index b2134c9cd2cd1..29eacb181965a 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -16,15 +16,14 @@ import ( "strings" "time" + "code.gitea.io/gitea/modules/generate" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/log" + "github.com/Unknwon/com" "github.com/go-xorm/xorm" gouuid "github.com/satori/go.uuid" ini "gopkg.in/ini.v1" - - "code.gitea.io/gitea/modules/generate" - - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/log" ) const minDBVersion = 4 diff --git a/models/migrations/v28.go b/models/migrations/v28.go index 62a40c5106d6d..375c579a56efe 100644 --- a/models/migrations/v28.go +++ b/models/migrations/v28.go @@ -11,7 +11,6 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/migrations/v85.go b/models/migrations/v85.go index cbedcbd8d1034..32e55e0b1c830 100644 --- a/models/migrations/v85.go +++ b/models/migrations/v85.go @@ -7,14 +7,13 @@ package migrations import ( "fmt" - "github.com/go-xorm/core" - "github.com/go-xorm/xorm" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" + + "github.com/go-xorm/core" + "github.com/go-xorm/xorm" ) func hashAppToken(x *xorm.Engine) error { diff --git a/models/models.go b/models/models.go index 166e7a6bf51f5..95be37bf8a256 100644 --- a/models/models.go +++ b/models/models.go @@ -266,6 +266,7 @@ func NewTestEngine(x *xorm.Engine) (err error) { x.SetMapper(core.GonicMapper{}) x.SetLogger(bridge.NewGiteaLogger("xorm", !setting.ProdMode)) + x.ShowSQL(!setting.ProdMode) return x.StoreEngine("InnoDB").Sync2(tables...) } @@ -278,6 +279,7 @@ func SetEngine() (err error) { x.SetMapper(core.GonicMapper{}) x.SetLogger(bridge.NewGiteaLogger("xorm", setting.LogSQL)) + x.ShowSQL(setting.LogSQL) if DbCfg.Type == "mysql" { x.SetMaxIdleConns(0) x.SetConnMaxLifetime(3 * time.Second) diff --git a/models/pull.go b/models/pull.go index a9ffccc244438..8922d4ec9e1ec 100644 --- a/models/pull.go +++ b/models/pull.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" diff --git a/models/release.go b/models/release.go index 776a68f2c9ce4..397ad9c94e23e 100644 --- a/models/release.go +++ b/models/release.go @@ -10,7 +10,6 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" diff --git a/models/repo.go b/models/repo.go index 286539e1febc4..6aa67228c2989 100644 --- a/models/repo.go +++ b/models/repo.go @@ -27,7 +27,6 @@ import ( "code.gitea.io/gitea/modules/avatar" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/process" diff --git a/models/repo_indexer.go b/models/repo_indexer.go index f00909e0fe957..725fb1e721ff9 100644 --- a/models/repo_indexer.go +++ b/models/repo_indexer.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/indexer" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/models/repo_mirror.go b/models/repo_mirror.go index c7baee82f470a..cdf78133373df 100644 --- a/models/repo_mirror.go +++ b/models/repo_mirror.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/sync" diff --git a/models/repo_redirect.go b/models/repo_redirect.go index c06c8b5799fac..f271471cb0fdf 100644 --- a/models/repo_redirect.go +++ b/models/repo_redirect.go @@ -5,8 +5,9 @@ package models import ( - "code.gitea.io/log" "strings" + + "code.gitea.io/log" ) // RepoRedirect represents that a repo name should be redirected to another diff --git a/models/status.go b/models/status.go index 36e371bc37c49..e7810d4224f5d 100644 --- a/models/status.go +++ b/models/status.go @@ -10,7 +10,6 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/update.go b/models/update.go index a86090567b532..b67014bd16934 100644 --- a/models/update.go +++ b/models/update.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/util" "code.gitea.io/log" ) diff --git a/models/user.go b/models/user.go index 5667fb033432c..89d01b432f518 100644 --- a/models/user.go +++ b/models/user.go @@ -25,7 +25,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs" diff --git a/models/wiki.go b/models/wiki.go index 8b6a61a812be1..5b17923822859 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -12,7 +12,6 @@ import ( "strings" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/sync" "code.gitea.io/log" diff --git a/modules/auth/auth.go b/modules/auth/auth.go index e789bd3d90e15..14a389806bc8f 100644 --- a/modules/auth/auth.go +++ b/modules/auth/auth.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" diff --git a/modules/base/tool.go b/modules/base/tool.go index 711ec96a2bcd2..383b65a88dae4 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -29,7 +29,6 @@ import ( "unicode/utf8" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/modules/context/api.go b/modules/context/api.go index 11edee47d8c24..5efc0b31f7606 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -9,14 +9,12 @@ import ( "fmt" "strings" - "github.com/go-macaron/csrf" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "github.com/go-macaron/csrf" "gopkg.in/macaron.v1" ) diff --git a/modules/context/auth.go b/modules/context/auth.go index a10e26e99056a..716b1a8a66f8c 100644 --- a/modules/context/auth.go +++ b/modules/context/auth.go @@ -8,9 +8,9 @@ package context import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "github.com/go-macaron/csrf" macaron "gopkg.in/macaron.v1" ) diff --git a/modules/context/context.go b/modules/context/context.go index cfb7c40139080..b36ef1c5687c1 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -17,10 +17,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" + "github.com/Unknwon/com" "github.com/go-macaron/cache" "github.com/go-macaron/csrf" diff --git a/modules/context/panic.go b/modules/context/panic.go index b4e0e5ef8aa17..7ca0db3f54a25 100644 --- a/modules/context/panic.go +++ b/modules/context/panic.go @@ -20,6 +20,7 @@ import ( "fmt" "code.gitea.io/log" + macaron "gopkg.in/macaron.v1" ) diff --git a/modules/context/repo.go b/modules/context/repo.go index 38d132be3ebf3..1938b0e7b68b2 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -15,7 +15,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/indexer/issues/indexer.go b/modules/indexer/issues/indexer.go index 7da61271225e8..dbf51b7d821a5 100644 --- a/modules/indexer/issues/indexer.go +++ b/modules/indexer/issues/indexer.go @@ -8,7 +8,6 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/modules/indexer/issues/queue_disk.go b/modules/indexer/issues/queue_disk.go index c4224e2ada124..686e938989a61 100644 --- a/modules/indexer/issues/queue_disk.go +++ b/modules/indexer/issues/queue_disk.go @@ -9,6 +9,7 @@ import ( "time" "code.gitea.io/log" + "github.com/lunny/levelqueue" ) diff --git a/modules/indexer/issues/queue_redis.go b/modules/indexer/issues/queue_redis.go index d4706174daa46..b25dc1950117a 100644 --- a/modules/indexer/issues/queue_redis.go +++ b/modules/indexer/issues/queue_redis.go @@ -12,6 +12,7 @@ import ( "time" "code.gitea.io/log" + "github.com/go-redis/redis" ) diff --git a/modules/lfs/locks.go b/modules/lfs/locks.go index 1400142f883f7..81dcf2f6e9b78 100644 --- a/modules/lfs/locks.go +++ b/modules/lfs/locks.go @@ -11,7 +11,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" diff --git a/modules/lfs/server.go b/modules/lfs/server.go index 74d1d80390289..1bc3e6f12bfc5 100644 --- a/modules/lfs/server.go +++ b/modules/lfs/server.go @@ -14,7 +14,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go index 7560d8e25a6ad..eb2ba204d743e 100644 --- a/modules/mailer/mailer.go +++ b/modules/mailer/mailer.go @@ -18,7 +18,6 @@ import ( "time" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/migrations/gitea.go b/modules/migrations/gitea.go index ca29f5bf7bdc9..72c90dd6fa00f 100644 --- a/modules/migrations/gitea.go +++ b/modules/migrations/gitea.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 38523d7a59053..233e0a3f3f82f 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -9,7 +9,6 @@ import ( "fmt" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/log" ) diff --git a/modules/notification/indexer/indexer.go b/modules/notification/indexer/indexer.go index 08db8471e52f5..440dda35f062d 100644 --- a/modules/notification/indexer/indexer.go +++ b/modules/notification/indexer/indexer.go @@ -7,7 +7,6 @@ package indexer import ( "code.gitea.io/gitea/models" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/gitea/modules/notification/base" "code.gitea.io/log" ) diff --git a/modules/notification/mail/mail.go b/modules/notification/mail/mail.go index c9de7cc0fcdcf..c4592127e0e7b 100644 --- a/modules/notification/mail/mail.go +++ b/modules/notification/mail/mail.go @@ -6,7 +6,6 @@ package mail import ( "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/notification/base" "code.gitea.io/log" ) diff --git a/modules/notification/ui/ui.go b/modules/notification/ui/ui.go index 7899336156429..624866b0ec1c3 100644 --- a/modules/notification/ui/ui.go +++ b/modules/notification/ui/ui.go @@ -7,7 +7,6 @@ package ui import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/notification/base" "code.gitea.io/log" ) diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index 433ff32129210..ff999e0252cf0 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -17,7 +17,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index 5188b64cc1f2e..2e45c07ae6b06 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -10,17 +10,16 @@ import ( "path" "strings" - "golang.org/x/net/html/charset" - "golang.org/x/text/transform" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" "code.gitea.io/log" + + "golang.org/x/net/html/charset" + "golang.org/x/text/transform" ) // IdentityOptions for a person's identity like an author or committer diff --git a/modules/setting/mailer.go b/modules/setting/mailer.go index b40a281da0453..f71a0dc3680f3 100644 --- a/modules/setting/mailer.go +++ b/modules/setting/mailer.go @@ -8,6 +8,7 @@ import ( "net/mail" "code.gitea.io/log" + shellquote "github.com/kballard/go-shellquote" ) diff --git a/modules/setting/repository.go b/modules/setting/repository.go index dbcd08456a79e..3619e602068a5 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -10,6 +10,7 @@ import ( "strings" "code.gitea.io/log" + "github.com/Unknwon/com" ) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index e15bf31b8663b..6a0f88c407d70 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -23,7 +23,6 @@ import ( "code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/git" - _ "code.gitea.io/gitea/modules/minwinsvc" // import minwinsvc for windows services "code.gitea.io/gitea/modules/user" "code.gitea.io/log" diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go index 18cc95830af27..d4d89005fa7c1 100644 --- a/modules/ssh/ssh.go +++ b/modules/ssh/ssh.go @@ -18,13 +18,12 @@ import ( "path/filepath" "strings" - "github.com/Unknwon/com" - "golang.org/x/crypto/ssh" - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + + "github.com/Unknwon/com" + "golang.org/x/crypto/ssh" ) func cleanCommand(cmd string) string { diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go index ef785c7f765b2..90bfac2102fc4 100644 --- a/modules/templates/dynamic.go +++ b/modules/templates/dynamic.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "github.com/Unknwon/com" "gopkg.in/macaron.v1" ) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 4eb614eecb08d..b59a20be4147b 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -20,13 +20,11 @@ import ( "strings" "time" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" "code.gitea.io/log" "golang.org/x/net/html/charset" diff --git a/modules/templates/static.go b/modules/templates/static.go index 0b64eecf8aa3a..4aa0e74a05e8e 100644 --- a/modules/templates/static.go +++ b/modules/templates/static.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + "github.com/Unknwon/com" "gopkg.in/macaron.v1" ) diff --git a/routers/admin/auths.go b/routers/admin/auths.go index 2c2c487986422..dce6277eaadb6 100644 --- a/routers/admin/auths.go +++ b/routers/admin/auths.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/routers/admin/notice.go b/routers/admin/notice.go index 23c4b713faf28..719d769c47d75 100644 --- a/routers/admin/notice.go +++ b/routers/admin/notice.go @@ -9,7 +9,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/routers/admin/repos.go b/routers/admin/repos.go index bf6bd29dc319a..589f1d1942d3e 100644 --- a/routers/admin/repos.go +++ b/routers/admin/repos.go @@ -8,7 +8,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" "code.gitea.io/log" diff --git a/routers/admin/users.go b/routers/admin/users.go index 4b5ba0fdf528f..3cc055148838a 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers" "code.gitea.io/log" diff --git a/routers/api/v1/admin/user.go b/routers/api/v1/admin/user.go index 04ef07408e303..d9b1036cc5743 100644 --- a/routers/api/v1/admin/user.go +++ b/routers/api/v1/admin/user.go @@ -8,7 +8,6 @@ package admin import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/convert" diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index bac8059c7974f..2c09734953aac 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -63,7 +63,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/routers/api/v1/admin" diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index 0921fdc0ce9bd..22cb99ad47a61 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -10,7 +10,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/markup" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index 39ba1d76ea791..1ccb23eb82401 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" api "code.gitea.io/gitea/modules/structs" diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 19999b393ebbe..5e618074ca378 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -13,14 +13,12 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" + api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/api/v1/convert" "code.gitea.io/log" - - api "code.gitea.io/gitea/modules/structs" ) var searchOrderByMap = map[string]map[string]models.SearchOrderBy{ diff --git a/routers/home.go b/routers/home.go index 056e2255fef07..9cefbe4e131fa 100644 --- a/routers/home.go +++ b/routers/home.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/search" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/install.go b/routers/install.go index c26004b99848c..a6239fe57618b 100644 --- a/routers/install.go +++ b/routers/install.go @@ -11,19 +11,18 @@ import ( "path/filepath" "strings" - "github.com/Unknwon/com" - "github.com/go-xorm/xorm" - "gopkg.in/ini.v1" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/user" "code.gitea.io/log" + + "github.com/Unknwon/com" + "github.com/go-xorm/xorm" + "gopkg.in/ini.v1" ) const ( diff --git a/routers/org/members.go b/routers/org/members.go index f01199b7adbb6..cd54f04bf0a8d 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -5,14 +5,13 @@ package org import ( - "github.com/Unknwon/com" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + + "github.com/Unknwon/com" ) const ( diff --git a/routers/org/org.go b/routers/org/org.go index 5e76ed291c0e0..9276bd99ea052 100644 --- a/routers/org/org.go +++ b/routers/org/org.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/org/setting.go b/routers/org/setting.go index 19e02f64ee10e..9bd305b48550f 100644 --- a/routers/org/setting.go +++ b/routers/org/setting.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/structs" userSetting "code.gitea.io/gitea/routers/user/setting" diff --git a/routers/org/teams.go b/routers/org/teams.go index 003f592cd3cd3..84949f70d9e1f 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -9,15 +9,14 @@ import ( "path" "strings" - "github.com/Unknwon/com" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/routers/utils" "code.gitea.io/log" + + "github.com/Unknwon/com" ) const ( diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index b0ba38e75c87e..f79f466c9cb20 100644 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -11,7 +11,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/repo/blame.go b/routers/repo/blame.go index 240fd60d6cb1f..59157d66a378c 100644 --- a/routers/repo/blame.go +++ b/routers/repo/blame.go @@ -14,12 +14,10 @@ import ( "strings" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/repo/branch.go b/routers/repo/branch.go index eac9fefc98f13..411b43d2bc087 100644 --- a/routers/repo/branch.go +++ b/routers/repo/branch.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 3cfc92ee9b4c5..fa618a2799e70 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" "code.gitea.io/log" diff --git a/routers/repo/editor.go b/routers/repo/editor.go index 55c7d134658df..4e9ee05e499bc 100644 --- a/routers/repo/editor.go +++ b/routers/repo/editor.go @@ -16,7 +16,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 13fbeae5d4045..07cbba5b833ec 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -20,7 +20,6 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" issue_indexer "code.gitea.io/gitea/modules/indexer/issues" - "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/setting" diff --git a/routers/repo/pull.go b/routers/repo/pull.go index f24c9780dfe85..e30293fb56637 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/pull" "code.gitea.io/gitea/modules/setting" diff --git a/routers/repo/pull_review.go b/routers/repo/pull_review.go index 29940f1f43392..93ac2af6a8de0 100644 --- a/routers/repo/pull_review.go +++ b/routers/repo/pull_review.go @@ -10,7 +10,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/notification" "code.gitea.io/log" ) diff --git a/routers/repo/release.go b/routers/repo/release.go index 56042a2cca262..416a8b140a828 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 6429b4e3b4e6b..2f94d4f042c2e 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -15,7 +15,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 800768340d294..ba403aa3915b1 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -22,7 +22,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/validation" diff --git a/routers/repo/setting_protected_branch.go b/routers/repo/setting_protected_branch.go index 83c2a82168931..76ee281a88aee 100644 --- a/routers/repo/setting_protected_branch.go +++ b/routers/repo/setting_protected_branch.go @@ -13,7 +13,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/repo/view.go b/routers/repo/view.go index ff15197af8bcb..af1ac2c7b87a1 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -20,7 +20,6 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/highlight" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index d3ee793167540..4d63abdb44f2d 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -16,7 +16,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/util" diff --git a/routers/routes/routes.go b/routers/routes/routes.go index c4edc539aed62..891363facbc4b 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/gzip" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/metrics" "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/public" diff --git a/routers/user/auth.go b/routers/user/auth.go index b9df2543a482b..08b273d220789 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -16,7 +16,6 @@ import ( "code.gitea.io/gitea/modules/auth/oauth2" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" diff --git a/routers/user/auth_openid.go b/routers/user/auth_openid.go index bc8077b79bd53..f80ccffbbd549 100644 --- a/routers/user/auth_openid.go +++ b/routers/user/auth_openid.go @@ -14,7 +14,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/generate" - "code.gitea.io/gitea/modules/recaptcha" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/routers/user/home.go b/routers/user/home.go index 547045354a44b..ad31c2093bce4 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -14,7 +14,6 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go index c473ccd2dee1e..b277e7a3f8243 100644 --- a/routers/user/setting/account.go +++ b/routers/user/setting/account.go @@ -10,7 +10,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/user/setting/oauth2.go b/routers/user/setting/oauth2.go index ae186a0ab1808..c130f77b56bd1 100644 --- a/routers/user/setting/oauth2.go +++ b/routers/user/setting/oauth2.go @@ -11,7 +11,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) diff --git a/routers/user/setting/profile.go b/routers/user/setting/profile.go index a494103e60c09..a7ead58632503 100644 --- a/routers/user/setting/profile.go +++ b/routers/user/setting/profile.go @@ -15,7 +15,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" diff --git a/routers/user/setting/security_openid.go b/routers/user/setting/security_openid.go index 2e83140f385c2..943484a768be1 100644 --- a/routers/user/setting/security_openid.go +++ b/routers/user/setting/security_openid.go @@ -9,7 +9,6 @@ import ( "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/auth/openid" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" ) From 1efddb3f2012f665fa493ece82f8e0b0e51e7ade Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Jun 2019 22:42:25 +0800 Subject: [PATCH 12/15] fix import --- models/action.go | 1 - models/issue_mail.go | 4 ++-- models/issue_milestone.go | 1 + modules/cron/cron.go | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/models/action.go b/models/action.go index e5c702b968199..706ab77a73ac3 100644 --- a/models/action.go +++ b/models/action.go @@ -18,7 +18,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" diff --git a/models/issue_mail.go b/models/issue_mail.go index fd07cdcfcf024..ff00cb5b10648 100644 --- a/models/issue_mail.go +++ b/models/issue_mail.go @@ -8,11 +8,11 @@ package models import ( "fmt" - "github.com/Unknwon/com" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + + "github.com/Unknwon/com" ) func (issue *Issue) mailSubject() string { diff --git a/models/issue_milestone.go b/models/issue_milestone.go index a1092aaca33f6..33830e3b68e6f 100644 --- a/models/issue_milestone.go +++ b/models/issue_milestone.go @@ -11,6 +11,7 @@ import ( api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" "code.gitea.io/log" + "github.com/go-xorm/xorm" ) diff --git a/modules/cron/cron.go b/modules/cron/cron.go index 993afbf04ffe0..e1c7bea02fdc6 100644 --- a/modules/cron/cron.go +++ b/modules/cron/cron.go @@ -7,12 +7,11 @@ package cron import ( "time" - "github.com/gogits/cron" - "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/log" + + "github.com/gogits/cron" ) var c = cron.New() From 5a383950eee8ab654c81cae86409e6c8a88fd44a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 22 Jun 2019 16:22:01 +0800 Subject: [PATCH 13/15] fix log --- models/pull.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/pull.go b/models/pull.go index 8922d4ec9e1ec..eeac125c3204b 100644 --- a/models/pull.go +++ b/models/pull.go @@ -190,7 +190,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest { } } if baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch); err != nil { - log.Error("pr.BaseRepo.GetBranch[%d]: %v", pr.BaseBranch, err) + log.Error("pr.BaseRepo.GetBranch[%s]: %v", pr.BaseBranch, err) return nil } if baseCommit, err = baseBranch.GetCommit(); err != nil { @@ -198,7 +198,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest { return nil } if headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch); err != nil { - log.Error("pr.HeadRepo.GetBranch[%d]: %v", pr.HeadBranch, err) + log.Error("pr.HeadRepo.GetBranch[%s]: %v", pr.HeadBranch, err) return nil } if headCommit, err = headBranch.GetCommit(); err != nil { From 8e9b957eb9db56f235c73f21083b3dfb71c5bf94 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 23 Jun 2019 09:16:55 +0800 Subject: [PATCH 14/15] fix Consistency --- models/consistency.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/consistency.go b/models/consistency.go index 0c279eaaf8528..f9fa3028fd9c8 100644 --- a/models/consistency.go +++ b/models/consistency.go @@ -39,7 +39,7 @@ func CheckConsistencyFor(t *testing.T, beansToCheck ...interface{}) { ptrToSliceValue := reflect.New(sliceType) ptrToSliceValue.Elem().Set(sliceValue) - assert.NoError(t, x.Where(bean).Find(ptrToSliceValue.Interface())) + assert.NoError(t, x.Table(bean).Find(ptrToSliceValue.Interface())) sliceValue = ptrToSliceValue.Elem() for i := 0; i < sliceValue.Len(); i++ { From a00fec185de5850ce42efc1d8e5902825bf1c746 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 23 Jun 2019 15:13:46 +0800 Subject: [PATCH 15/15] fix import --- modules/pull/lfs.go | 2 +- modules/pull/merge.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/pull/lfs.go b/modules/pull/lfs.go index 77890667d63d1..0bb731c5eaca1 100644 --- a/modules/pull/lfs.go +++ b/modules/pull/lfs.go @@ -17,7 +17,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" - "code.gitea.io/gitea/modules/log" + "code.gitea.io/log" ) // LFSPush pushes lfs objects referred to in new commits in the head repository from the base repository diff --git a/modules/pull/merge.go b/modules/pull/merge.go index e12ede81d630d..b223e8808f9a4 100644 --- a/modules/pull/merge.go +++ b/modules/pull/merge.go @@ -18,10 +18,10 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/log" ) // Merge merges pull request to base repository.