service.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // package service -- главный тип пакера
  2. package service
  3. import (
  4. "fmt"
  5. "log"
  6. "os"
  7. "p78git.ddns.net/svi/packer/internal/packer"
  8. "p78git.ddns.net/svi/packer/pkg/types"
  9. )
  10. // Service -- главный тип пакера
  11. type Service struct {
  12. packer types.IPacker
  13. }
  14. // NewService -- возвращает новый сервис
  15. func NewService() (*Service, error) {
  16. log.Printf("NewService()\n")
  17. sf := &Service{}
  18. var err error
  19. sf.packer, err = packer.NewPacker(sf)
  20. if err != nil {
  21. return nil, fmt.Errorf("NewService(): in create Packer, err=\n\t%w", err)
  22. }
  23. _ = types.IService(sf)
  24. return sf, nil
  25. }
  26. // Run -- запускает сервис в работу
  27. func (sf *Service) Run() error {
  28. log.Printf("Service.Run()\n")
  29. cmd := os.Getenv("PACKER_CMD")
  30. if cmd == "" {
  31. return fmt.Errorf("Service.Run(): env PACKER_CMD not set")
  32. }
  33. switch cmd {
  34. case "pack":
  35. err := sf.packer.Run()
  36. if err != nil {
  37. return fmt.Errorf("Service.Run(): in run IPacker, err=\n\t%w", err)
  38. }
  39. default:
  40. return fmt.Errorf("Service.Run(): unknown env PACKER_CMD(%q)", cmd)
  41. }
  42. return nil
  43. }
  44. // Packer -- возвращает упаковщик
  45. func (sf *Service) Packer() types.IPacker {
  46. return sf.packer
  47. }