AddDeployKey add new deploy key to database and authorized_keys file.
(repoID int64, name, content string)
| 648 | |
| 649 | // AddDeployKey add new deploy key to database and authorized_keys file. |
| 650 | func 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 | |
| 686 | var _ errutil.NotFound = (*ErrDeployKeyNotExist)(nil) |
| 687 |
no test coverage detected