github.com/sqlitebrowser/dio@v0.0.0-20240125125356-b587368e5c6b/cmd/tagRemove.go (about) 1 package cmd 2 3 import ( 4 "errors" 5 "fmt" 6 7 "github.com/spf13/cobra" 8 ) 9 10 var tagRemoveTag string 11 12 // Removes a tag from a database 13 var tagRemoveCmd = &cobra.Command{ 14 Use: "remove [database name] --tag xxx", 15 Short: "Remove a tag from a database", 16 RunE: func(cmd *cobra.Command, args []string) error { 17 return tagRemove(args) 18 }, 19 } 20 21 func init() { 22 tagCmd.AddCommand(tagRemoveCmd) 23 tagRemoveCmd.Flags().StringVar(&tagRemoveTag, "tag", "", "Name of remote tag to remove") 24 } 25 26 func tagRemove(args []string) error { 27 // Ensure a database file was given 28 var db string 29 var err error 30 var meta metaData 31 if len(args) == 0 { 32 db, err = getDefaultDatabase() 33 if err != nil { 34 return err 35 } 36 if db == "" { 37 // No database name was given on the command line, and we don't have a default database selected 38 return errors.New("No database file specified") 39 } 40 } else { 41 db = args[0] 42 } 43 if len(args) > 1 { 44 return errors.New("Only one database can be changed at a time (for now)") 45 } 46 47 // Ensure a tag name was given 48 if tagRemoveTag == "" { 49 return errors.New("No tag name given") 50 } 51 52 // Load the metadata 53 meta, err = loadMetadata(db) 54 if err != nil { 55 return err 56 } 57 58 // Check if the tag exists 59 if _, ok := meta.Tags[tagRemoveTag]; ok != true { 60 return errors.New("A tag with that name doesn't exist") 61 } 62 63 // Remove the tag 64 delete(meta.Tags, tagRemoveTag) 65 66 // Save the updated metadata back to disk 67 err = saveMetadata(db, meta) 68 if err != nil { 69 return err 70 } 71 72 _, err = fmt.Fprintf(fOut, "Tag '%s' removed\n", tagRemoveTag) 73 return err 74 }