forked from toolshed/abra
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package secret
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"os/exec"
 | |
| 
 | |
| 	"coopcloud.tech/abra/pkg/i18n"
 | |
| 	"coopcloud.tech/abra/pkg/log"
 | |
| )
 | |
| 
 | |
| // PassInsertSecret inserts a secret into a pass store.
 | |
| func PassInsertSecret(secretValue, secretName, appName, server string) error {
 | |
| 	if _, err := exec.LookPath("pass"); err != nil {
 | |
| 		return errors.New(i18n.G("pass command not found on $PATH, is it installed?"))
 | |
| 	}
 | |
| 
 | |
| 	cmd := fmt.Sprintf(
 | |
| 		"echo %s | pass insert hosts/%s/%s/%s -m",
 | |
| 		secretValue, server, appName, secretName,
 | |
| 	)
 | |
| 
 | |
| 	log.Debug(i18n.G("attempting to run %s", cmd))
 | |
| 
 | |
| 	if err := exec.Command("bash", "-c", cmd).Run(); err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	log.Info(i18n.G("%s inserted into pass store", secretName))
 | |
| 
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // PassRmSecret deletes a secret from a pass store.
 | |
| func PassRmSecret(secretName, appName, server string) error {
 | |
| 	if _, err := exec.LookPath("pass"); err != nil {
 | |
| 		return errors.New(i18n.G("pass command not found on $PATH, is it installed?"))
 | |
| 	}
 | |
| 
 | |
| 	cmd := fmt.Sprintf(
 | |
| 		"pass rm --force hosts/%s/%s/%s",
 | |
| 		server, appName, secretName,
 | |
| 	)
 | |
| 
 | |
| 	log.Debug(i18n.G("attempting to run %s", cmd))
 | |
| 
 | |
| 	if err := exec.Command("bash", "-c", cmd).Run(); err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	log.Info(i18n.G("%s removed from pass store", secretName))
 | |
| 
 | |
| 	return nil
 | |
| }
 |