package folders import ( "errors" "github.com/ManyakRus/starter/log" "github.com/ManyakRus/starter/micro" copy_files "github.com/otiai10/copy" "os" "path/filepath" ) // CreateFolder - создаёт папку на диске func CreateFolder(FoldernameFull string) { var err error ok, err := micro.FileExists(FoldernameFull) if ok == false || err != nil { err = CreateFolder_err(FoldernameFull, 0777) if err != nil { log.Panic("CreateFolder_err() ", FoldernameFull, " error: ", err) } //log.Info("CreateFolder_err() ", FoldernameFull) } } // CreateFolder_err - создаёт папку на диске func CreateFolder_err(FilenameFull string, FilePermissions uint32) error { var err error FileMode1 := os.FileMode(FilePermissions) if FilePermissions == 0 { FileMode1 = os.FileMode(0777) } if _, err := os.Stat(FilenameFull); errors.Is(err, os.ErrNotExist) { err := os.MkdirAll(FilenameFull, FileMode1) if err != nil { return err } } return err } // DeleteFolder - создаёт папку на диске func DeleteFolder(FilenameFull string) error { var err error if _, err := os.Stat(FilenameFull); errors.Is(err, os.ErrNotExist) { return err } err = os.RemoveAll(FilenameFull) if err != nil { return err } return err } //// CreateAllFolders - создаёт все нужные каталоги Ready //func CreateAllFolders() { // var err error // // dir := micro.ProgramDir_bin() // // // // Filename := dir + config.Settings.SERVICE_NAME // ok, err := micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // // // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + "internal" // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // // // //Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + "pkg" // //ok, err = micro.FileExists(Filename) // //if ok == false || err != nil { // // err = CreateFolder_err(Filename, 0777) // // if err != nil { // // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // // } // // log.Info("CreateFolder_err() ", Filename) // //} // // //model // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_MODEL // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // if config.Settings.NEED_CREATE_DB == true { // //db // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_CRUD // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // //crud_starter // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_CRUD_STARTER // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // } // // if config.Settings.NEED_CREATE_GRPC == true { // //grpc // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_PROTO // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // //grpc_server // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_SERVER // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // ////grpc client // //Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_PROTO + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_CLIENT // //ok, err = micro.FileExists(Filename) // //if ok == false || err != nil { // // err = CreateFolder_err(Filename, 0777) // // if err != nil { // // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // // } // // log.Info("CreateFolder_err() ", Filename) // //} // // //grpc_proto // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_PROTO + micro.SeparatorFile() + "grpc_proto" // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // } // // if config.Settings.NEED_CREATE_NRPC == true { // //nrpc // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_NRPC // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // //server_nrpc // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_NRPC_SERVER // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // //nrpc client // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_NRPC_CLIENT // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // // //grpc_proto // Filename = dir + config.Settings.SERVICE_NAME + micro.SeparatorFile() + config.Settings.TEMPLATE_FOLDERNAME_GRPC_PROTO + micro.SeparatorFile() + "grpc_proto" // ok, err = micro.FileExists(Filename) // if ok == false || err != nil { // err = CreateFolder_err(Filename, 0777) // if err != nil { // log.Panic("CreateFolder_err() ", Filename, " error: ", err) // } // log.Info("CreateFolder_err() ", Filename) // } // } // // //return err //} // // CopyAllFiles_Exclude_ - копирует все файлы из src в dest, кроме "*_" func CopyAllFiles_Exclude_(src, dest string) error { var err error //создадим папку готовых файлов CreateFolder(dest) //скопируем все файлы opt := copy_files.Options{ Skip: CopyFilesFilterGo, } err = copy_files.Copy(src, dest, opt) return err } // filter to all files, insted of "*_" func CopyFilesFilterGo(info os.FileInfo, src, dest string) (bool, error) { var err error var Otvet bool Filename := src if Filename[len(Filename)-1:] == "_" { Otvet = true return Otvet, err } FolderName := filepath.Dir(src) if len(FolderName) > 0 && FolderName[len(FolderName)-1:] == "_" { Otvet = true return Otvet, err } return Otvet, err }