MCPcopy Index your code
hub / github.com/gogs/gogs / AddDeployKey

Function AddDeployKey

internal/database/ssh_key.go:650–684  ·  view source on GitHub ↗

AddDeployKey add new deploy key to database and authorized_keys file.

(repoID int64, name, content string)

Source from the content-addressed store, hash-verified

648
649// AddDeployKey add new deploy key to database and authorized_keys file.
650func AddDeployKey(repoID int64, name, content string) (*DeployKey, error) {
651 if err := checkKeyContent(content); err != nil {
652 return nil, err
653 }
654
655 pkey := &PublicKey{
656 Content: content,
657 Mode: AccessModeRead,
658 Type: KeyTypeDeploy,
659 }
660 has, err := x.Get(pkey)
661 if err != nil {
662 return nil, err
663 }
664
665 sess := x.NewSession()
666 defer sess.Close()
667 if err = sess.Begin(); err != nil {
668 return nil, err
669 }
670
671 // First time use this deploy key.
672 if !has {
673 if err = addKey(sess, pkey); err != nil {
674 return nil, errors.Newf("addKey: %v", err)
675 }
676 }
677
678 key, err := addDeployKey(sess, pkey.ID, repoID, name, pkey.Fingerprint)
679 if err != nil {
680 return nil, errors.Newf("addDeployKey: %v", err)
681 }
682
683 return key, sess.Commit()
684}
685
686var _ errutil.NotFound = (*ErrDeployKeyNotExist)(nil)
687

Callers 2

SettingsDeployKeysPostFunction · 0.92
CreateDeployKeyFunction · 0.92

Calls 4

checkKeyContentFunction · 0.85
addKeyFunction · 0.85
addDeployKeyFunction · 0.85
GetMethod · 0.65

Tested by

no test coverage detected