From e183d4b9b841ff225f20b7a4e862a288408bbae9 Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Sun, 21 Mar 2021 22:18:54 +1100 Subject: [PATCH] tidy up --- .../part-4.commandline/videos/main.go | 213 +++++++++--------- .../part-4.commandline/videos/videos.go | 1 - 2 files changed, 111 insertions(+), 103 deletions(-) diff --git a/golang/introduction/part-4.commandline/videos/main.go b/golang/introduction/part-4.commandline/videos/main.go index 526d4bcc0..efc0c1311 100644 --- a/golang/introduction/part-4.commandline/videos/main.go +++ b/golang/introduction/part-4.commandline/videos/main.go @@ -1,102 +1,111 @@ -package main - -import ( - "flag" - "fmt" - "os" -) - -func main() { - - //'videos get' subcommand - getCmd := flag.NewFlagSet("get", flag.ExitOnError) - getAll := getCmd.Bool("all", false, "Get all videos") - getID := getCmd.String("id", "", "YouTube video ID") - - //'videos add' subcommand - addCmd := flag.NewFlagSet("add", flag.ExitOnError) - addID := addCmd.String("id", "", "YouTube video ID") - addTitle := addCmd.String("title", "", "YouTube video Title") - addUrl := addCmd.String("url", "", "YouTube video URL") - addImageUrl := addCmd.String("imageurl", "", "YouTube video Image URL") - addDesc := addCmd.String("desc", "", "YouTube video description") - - if len(os.Args) < 2 { - fmt.Println("expected 'get' or 'add' subcommands") - os.Exit(1) - } - - //look at the 2nd argument's value - switch os.Args[1] { - case "get": // if its the 'get' command - HandleGet(getCmd, getAll, getID) - case "add": // if its the 'add' command - HandleAdd(addCmd, addID,addTitle,addUrl, addImageUrl, addDesc) - default: // if we don't understand the input - fmt.Println("expected 'get' or 'add' subcommands") - os.Exit(1) - } -} - -func HandleGet(getCmd *flag.FlagSet, all *bool, id *string){ - getCmd.Parse(os.Args[2:]) - - if *all == false && *id == "" { - fmt.Print("id is required or specify --all for all videos") - getCmd.PrintDefaults() - os.Exit(1) - } - - if *all { - //return all videos - videos := getVideos() - - fmt.Printf("ID \t Title \t URL \t ImageURL \t Description \n") - for _, video := range videos { - fmt.Printf("%v \t %v \t %v \t %v \t %v \n",video.Id, video.Title, video.Url, video.Imageurl,video.Description) - } - - return - } - - if *id != "" { - videos := getVideos() - id := *id - for _, video := range videos { - if id == video.Id { - fmt.Printf("ID \t Title \t URL \t ImageURL \t Description \n") - fmt.Printf("%v \t %v \t %v \t %v \t %v \n",video.Id, video.Title, video.Url, video.Imageurl,video.Description) - - } - } - } -} - -func ValidateVideo(addCmd *flag.FlagSet,id *string, title *string, url *string, imageUrl *string, description *string ){ - - if *id == "" || *title == "" || *url == "" || *imageUrl == "" || *description == "" { - fmt.Println("all fields are required for adding a video") - addCmd.PrintDefaults() - os.Exit(1) - } - -} - -func HandleAdd(addCmd *flag.FlagSet,id *string, title *string, url *string, imageUrl *string, description *string ){ - addCmd.Parse(os.Args[2:]) - - ValidateVideo(addCmd, id,title,url, imageUrl, description) - - video := video{ - Id: *id, - Title: *title, - Description: *description, - Imageurl: *imageUrl, - Url: *url, - } - - videos := getVideos() - videos = append(videos,video) - - saveVideos(videos) -} +package main + +import ( + "flag" + "fmt" + "os" +) + +func main() { + + //'videos get' subcommand + getCmd := flag.NewFlagSet("get", flag.ExitOnError) + + // inputs for `videos get` command + getAll := getCmd.Bool("all", false, "Get all videos") + getID := getCmd.String("id", "", "YouTube video ID") + + //'videos add' subcommand + addCmd := flag.NewFlagSet("add", flag.ExitOnError) + + // inputs for `videos add` command + addID := addCmd.String("id", "", "YouTube video ID") + addTitle := addCmd.String("title", "", "YouTube video Title") + addUrl := addCmd.String("url", "", "YouTube video URL") + addImageUrl := addCmd.String("imageurl", "", "YouTube video Image URL") + addDesc := addCmd.String("desc", "", "YouTube video description") + + if len(os.Args) < 2 { + fmt.Println("expected 'get' or 'add' subcommands") + os.Exit(1) + } + + //look at the 2nd argument's value + switch os.Args[1] { + case "get": // if its the 'get' command + HandleGet(getCmd, getAll, getID) + case "add": // if its the 'add' command + HandleAdd(addCmd, addID,addTitle,addUrl, addImageUrl, addDesc) + default: // if we don't understand the input + } + + +} + +func HandleGet(getCmd *flag.FlagSet, all *bool, id *string){ + + getCmd.Parse(os.Args[2:]) + + if *all == false && *id == "" { + fmt.Print("id is required or specify --all for all videos") + getCmd.PrintDefaults() + os.Exit(1) + } + + if *all { + //return all videos + videos := getVideos() + + fmt.Printf("ID \t Title \t URL \t ImageURL \t Description \n") + for _, video := range videos { + fmt.Printf("%v \t %v \t %v \t %v \t %v \n",video.Id, video.Title, video.Url, video.Imageurl,video.Description) + } + + return + } + + if *id != "" { + videos := getVideos() + id := *id + for _, video := range videos { + if id == video.Id { + fmt.Printf("ID \t Title \t URL \t ImageURL \t Description \n") + fmt.Printf("%v \t %v \t %v \t %v \t %v \n",video.Id, video.Title, video.Url, video.Imageurl,video.Description) + } + } + } + + + +} + +func ValidateVideo(addCmd *flag.FlagSet,id *string, title *string, url *string, imageUrl *string, description *string ){ + + addCmd.Parse(os.Args[2:]) + + if *id == "" || *title == "" || *url == "" || *imageUrl == "" || *description == "" { + fmt.Print("all fields are required for adding a video") + addCmd.PrintDefaults() + os.Exit(1) + } + +} + +func HandleAdd(addCmd *flag.FlagSet,id *string, title *string, url *string, imageUrl *string, description *string ){ + + ValidateVideo(addCmd, id,title,url, imageUrl, description) + + video := video{ + Id: *id, + Title: *title, + Description: *description, + Imageurl: *imageUrl, + Url: *url, + } + + videos := getVideos() + videos = append(videos,video) + + saveVideos(videos) + +} \ No newline at end of file diff --git a/golang/introduction/part-4.commandline/videos/videos.go b/golang/introduction/part-4.commandline/videos/videos.go index 221072088..01a63f07f 100644 --- a/golang/introduction/part-4.commandline/videos/videos.go +++ b/golang/introduction/part-4.commandline/videos/videos.go @@ -13,7 +13,6 @@ type video struct { Url string } - func getVideos()(videos []video){ fileBytes, err := ioutil.ReadFile("./videos.json")