2019-05-11 16:29:17 +01:00
// 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 models
import (
"fmt"
"os"
"strings"
)
2019-12-27 21:15:04 +00:00
// InternalPushingEnvironment returns an os environment to switch off hooks on push
// It is recommended to avoid using this unless you are pushing within a transaction
// or if you absolutely are sure that post-receive and pre-receive will do nothing
// We provide the full pushing-environment for other hook providers
func InternalPushingEnvironment ( doer * User , repo * Repository ) [ ] string {
return append ( PushingEnvironment ( doer , repo ) ,
EnvIsInternal + "=true" ,
)
}
2019-05-11 16:29:17 +01:00
// PushingEnvironment returns an os environment to allow hooks to work on push
func PushingEnvironment ( doer * User , repo * Repository ) [ ] string {
2019-07-26 05:50:20 +08:00
return FullPushingEnvironment ( doer , doer , repo , repo . Name , 0 )
2019-07-01 02:18:13 +01:00
}
// FullPushingEnvironment returns an os environment to allow hooks to work on push
2019-07-26 05:50:20 +08:00
func FullPushingEnvironment ( author , committer * User , repo * Repository , repoName string , prID int64 ) [ ] string {
2019-05-11 16:29:17 +01:00
isWiki := "false"
2019-07-26 05:50:20 +08:00
if strings . HasSuffix ( repoName , ".wiki" ) {
2019-05-11 16:29:17 +01:00
isWiki = "true"
}
2019-07-01 02:18:13 +01:00
authorSig := author . NewGitSig ( )
committerSig := committer . NewGitSig ( )
2019-05-11 16:29:17 +01:00
2019-05-17 13:41:01 +01:00
// We should add "SSH_ORIGINAL_COMMAND=gitea-internal",
// once we have hook and pushing infrastructure working correctly
2019-05-11 16:29:17 +01:00
return append ( os . Environ ( ) ,
2019-07-01 02:18:13 +01:00
"GIT_AUTHOR_NAME=" + authorSig . Name ,
"GIT_AUTHOR_EMAIL=" + authorSig . Email ,
"GIT_COMMITTER_NAME=" + committerSig . Name ,
"GIT_COMMITTER_EMAIL=" + committerSig . Email ,
2019-07-26 05:50:20 +08:00
EnvRepoName + "=" + repoName ,
2020-01-12 17:36:21 +08:00
EnvRepoUsername + "=" + repo . OwnerName ,
2019-05-11 16:29:17 +01:00
EnvRepoIsWiki + "=" + isWiki ,
2019-07-01 02:18:13 +01:00
EnvPusherName + "=" + committer . Name ,
EnvPusherID + "=" + fmt . Sprintf ( "%d" , committer . ID ) ,
2019-05-11 16:29:17 +01:00
ProtectedBranchRepoID + "=" + fmt . Sprintf ( "%d" , repo . ID ) ,
2019-07-01 02:18:13 +01:00
ProtectedBranchPRID + "=" + fmt . Sprintf ( "%d" , prID ) ,
"SSH_ORIGINAL_COMMAND=gitea-internal" ,
2019-05-11 16:29:17 +01:00
)
}