github.com/omnigres/cli@v0.1.4/cmd/revision_list.go (about) 1 package cmd 2 3 import ( 4 "context" 5 "database/sql" 6 "fmt" 7 "github.com/charmbracelet/log" 8 "github.com/omnigres/cli/orb" 9 "github.com/spf13/cobra" 10 "os" 11 ) 12 13 var revisionListCmd = &cobra.Command{ 14 Use: "list", 15 Short: "List revisions", 16 Run: func(cmd *cobra.Command, args []string) { 17 var cluster orb.OrbCluster 18 var err error 19 cluster, err = getOrbCluster() 20 if err != nil { 21 log.Fatal(err) 22 } 23 24 log.Debug("Workspace", "workspace", workspace) 25 cwd, err := os.Getwd() 26 if err != nil { 27 log.Fatal(err) 28 } 29 30 orbs, err := currentOrbs(cluster, cwd) 31 if err != nil { 32 log.Fatal(err) 33 } 34 35 ctx := context.Background() 36 log.Debug("List revisions in orbs", "orbs", orbs) 37 listRevisions( 38 ctx, 39 cluster, 40 dbReset, 41 orbs, 42 func(orbName string) string { return orbName }, 43 ) 44 }, 45 } 46 47 func listRevisions( 48 ctx context.Context, 49 cluster orb.OrbCluster, 50 dbReset bool, 51 orbs []string, 52 databaseForOrb func(string) string, 53 ) (err error) { 54 var db *sql.DB 55 db, err = cluster.Connect(ctx, "omnigres") 56 if err != nil { 57 log.Error("Could not connect to orb. Ensure the docker container is running, perhaps 'omnigres start' will fix it.") 58 return 59 } 60 for _, orbName := range orbs { 61 conn, err := db.Conn(ctx) 62 if err != nil { 63 log.Fatal(err) 64 } 65 defer conn.Close() 66 if err != nil { 67 log.Error(err) 68 return err 69 } 70 71 var rows *sql.Rows 72 rows, err = conn.QueryContext( 73 ctx, 74 `select revision from omni_schema.schema_revisions(omni_vfs.local_fs($1), 'revisions')`, 75 fmt.Sprintf("/mnt/host/%s", orbName), 76 ) 77 if err != nil { 78 log.Error(err) 79 return err 80 } 81 var revision string 82 for rows.Next() { 83 err = rows.Scan(&revision) 84 fmt.Println(revision) 85 } 86 87 } 88 return 89 }