github.com/AiRISTAFlowInc/fs-cli@v0.2.6/api/util.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 10 "github.com/AiRISTAFlowInc/fs-cli/common" 11 "github.com/AiRISTAFlowInc/fs-core/app" 12 ) 13 14 func readAppDescriptor(project common.AppProject) (*app.Config, error) { 15 16 appDescriptorFile, err := os.Open(filepath.Join(project.Dir(), fileFlogoJson)) 17 if err != nil { 18 return nil, err 19 } 20 defer appDescriptorFile.Close() 21 22 appDescriptorData, err := ioutil.ReadAll(appDescriptorFile) 23 if err != nil { 24 return nil, err 25 } 26 27 var appDescriptor app.Config 28 err = json.Unmarshal([]byte(appDescriptorData), &appDescriptor) 29 if err != nil { 30 return nil, err 31 } 32 33 return &appDescriptor, nil 34 } 35 36 func writeAppDescriptor(project common.AppProject, appDescriptor *app.Config) error { 37 38 appDescriptorUpdated, err := json.MarshalIndent(appDescriptor, "", " ") 39 if err != nil { 40 return err 41 } 42 43 appDescriptorUpdatedJson := string(appDescriptorUpdated) 44 45 err = ioutil.WriteFile(filepath.Join(project.Dir(), fileFlogoJson), []byte(appDescriptorUpdatedJson), 0644) 46 if err != nil { 47 return err 48 } 49 50 return nil 51 } 52 53 func backupMain(project common.AppProject) error { 54 mainGo := filepath.Join(project.SrcDir(), fileMainGo) 55 mainGoBak := filepath.Join(project.SrcDir(), fileMainGo+".bak") 56 57 if _, err := os.Stat(mainGo); err == nil { 58 //main found, check for backup main in case we have to remove it 59 if _, err := os.Stat(mainGoBak); err == nil { 60 61 //remove old main backup 62 if Verbose() { 63 fmt.Printf("Removing old main backup: %s\n", mainGoBak) 64 } 65 err = os.Rename(mainGoBak, mainGo) 66 if err != nil { 67 return err 68 } 69 } 70 if Verbose() { 71 fmt.Println("Backing up main.go") 72 } 73 err = os.Rename(mainGo, mainGoBak) 74 if err != nil { 75 return err 76 } 77 } 78 79 return nil 80 } 81 82 func restoreMain(project common.AppProject) error { 83 84 mainGo := filepath.Join(project.SrcDir(), fileMainGo) 85 mainGoBak := filepath.Join(project.SrcDir(), fileMainGo+".bak") 86 87 if _, err := os.Stat(mainGo); err != nil { 88 //main not found, check for backup main 89 if _, err := os.Stat(mainGoBak); err == nil { 90 if Verbose() { 91 fmt.Printf("Restoring main from: %s\n", mainGoBak) 92 } 93 err = os.Rename(mainGoBak, mainGo) 94 if err != nil { 95 return err 96 } 97 } else if _, err := os.Stat(mainGo); err != nil { 98 return fmt.Errorf("project corrupt, main missing") 99 } 100 } 101 102 return nil 103 }