// package service -- главный тип пакера package service import ( "fmt" "log" "os" "p78git.ddns.net/svi/packer/internal/packer" "p78git.ddns.net/svi/packer/pkg/types" ) // Service -- главный тип пакера type Service struct { packer types.IPacker } // NewService -- возвращает новый сервис func NewService() (*Service, error) { log.Printf("NewService()\n") sf := &Service{} var err error sf.packer, err = packer.NewPacker(sf) if err != nil { return nil, fmt.Errorf("NewService(): in create Packer, err=\n\t%w", err) } _ = types.IService(sf) return sf, nil } // Run -- запускает сервис в работу func (sf *Service) Run() error { log.Printf("Service.Run()\n") cmd := os.Getenv("PACKER_CMD") if cmd == "" { return fmt.Errorf("Service.Run(): env PACKER_CMD not set") } switch cmd { case "pack": err := sf.packer.Run() if err != nil { return fmt.Errorf("Service.Run(): in run IPacker, err=\n\t%w", err) } default: return fmt.Errorf("Service.Run(): unknown env PACKER_CMD(%q)", cmd) } return nil } // Packer -- возвращает упаковщик func (sf *Service) Packer() types.IPacker { return sf.packer }