Skip to content

Commit bad523c

Browse files
Merge pull request #3 from mist8kengas/develop
✨ Make a responsive list and fix code indentation
2 parents f73fcb1 + f193dae commit bad523c

19 files changed

+693
-667
lines changed

cmd/cmd_add.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ func handleMediaAdd(mediaId int) {
5252
}
5353

5454
var mediaAddCmd = &cobra.Command{
55-
Use: "add [id]",
55+
Use: "add [id]",
5656
Short: "Add a media to your list",
57-
Args: cobra.ExactArgs(1),
57+
Args: cobra.ExactArgs(1),
5858
Run: func(cmd *cobra.Command, args []string) {
5959
mediaId, err := strconv.Atoi(args[0])
6060
if err != nil {
@@ -75,4 +75,4 @@ func init() {
7575
"planning",
7676
"Status of the media. Can be 'wathcing/w', 'planning/p', 'completed/c', 'dropped/d', 'paused/ps', 'repeating/r'",
7777
)
78-
}
78+
}

cmd/cmd_list.go

Lines changed: 79 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,95 @@
11
package cmd
22

33
import (
4-
"fmt"
5-
"strconv"
4+
"fmt"
5+
"os"
6+
"strconv"
67

7-
"github.com/CosmicPredator/chibi/internal"
8-
"github.com/charmbracelet/lipgloss"
9-
"github.com/charmbracelet/lipgloss/table"
10-
"github.com/spf13/cobra"
8+
"github.com/CosmicPredator/chibi/internal"
9+
"github.com/charmbracelet/lipgloss"
10+
"github.com/charmbracelet/lipgloss/table"
11+
"github.com/charmbracelet/x/term"
12+
"github.com/spf13/cobra"
1113
)
1214

1315
var listMediaType string
1416

1517
func handleLs() {
16-
CheckIfTokenExists()
17-
18-
var mediaType string
19-
20-
switch listMediaType {
21-
case "anime", "a":
22-
mediaType = "ANIME"
23-
case "manga", "m":
24-
mediaType = "MANGA"
25-
}
26-
27-
mediaList := internal.NewMediaList()
28-
err := mediaList.Get(mediaType)
29-
if err != nil {
30-
ErrorMessage(err.Error())
31-
}
32-
33-
if len(mediaList.Data.MediaListCollection.Lists) == 0 {
34-
ErrorMessage(err.Error())
35-
}
36-
37-
rows := [][]string{}
38-
for _, i := range mediaList.Data.MediaListCollection.Lists[0].Entries {
39-
var progress string
40-
if mediaType == "ANIME" {
41-
progress = fmt.Sprintf("%d/%d", i.Progress, i.Media.Episodes)
42-
} else {
43-
progress = fmt.Sprintf("%d/%d", i.Progress, i.Media.Chapters)
44-
}
45-
46-
rows = append(rows, []string{
47-
strconv.Itoa(i.Media.Id),
48-
i.Media.Title.UserPreferred,
49-
progress,
50-
})
51-
}
52-
53-
t := table.New().
54-
Border(lipgloss.NormalBorder()).
55-
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("99"))).
56-
StyleFunc(func(row, col int) lipgloss.Style {
57-
switch {
58-
case row == -1:
59-
return lipgloss.NewStyle().Foreground(lipgloss.Color("99")).Bold(true).Align(lipgloss.Center)
60-
default:
61-
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2)
62-
}
63-
}).
64-
Headers("ID", "TITLE", "PROGRESS").
65-
Rows(rows...)
66-
67-
fmt.Println(t)
68-
}
18+
CheckIfTokenExists()
19+
20+
var mediaType string
21+
22+
switch listMediaType {
23+
case "anime", "a":
24+
mediaType = "ANIME"
25+
case "manga", "m":
26+
mediaType = "MANGA"
27+
}
28+
29+
mediaList := internal.NewMediaList()
30+
err := mediaList.Get(mediaType)
31+
if err != nil {
32+
ErrorMessage(err.Error())
33+
}
34+
35+
if len(mediaList.Data.MediaListCollection.Lists) == 0 {
36+
ErrorMessage(err.Error())
37+
}
38+
39+
rows := [][]string{}
40+
for _, i := range mediaList.Data.MediaListCollection.Lists[0].Entries {
41+
var progress string
42+
if mediaType == "ANIME" {
43+
progress = fmt.Sprintf("%d/%d", i.Progress, i.Media.Episodes)
44+
} else {
45+
progress = fmt.Sprintf("%d/%d", i.Progress, i.Media.Chapters)
46+
}
6947

48+
rows = append(rows, []string{
49+
strconv.Itoa(i.Media.Id),
50+
i.Media.Title.UserPreferred,
51+
progress,
52+
})
53+
}
54+
55+
// get size of terminal
56+
tw, _, err := term.GetSize((os.Stdin.Fd()))
57+
if err != nil {
58+
ErrorMessage(err.Error())
59+
}
60+
61+
t := table.New().
62+
Border(lipgloss.NormalBorder()).
63+
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("99"))).
64+
StyleFunc(func(row, col int) lipgloss.Style {
65+
// style for table header row
66+
if row == -1 {
67+
return lipgloss.NewStyle().Foreground(lipgloss.Color("99")).Bold(true).Align(lipgloss.Center)
68+
}
69+
70+
// force title column to wrap by specifying terminal width
71+
if col == 1 {
72+
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2).Width(tw)
73+
}
74+
75+
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2)
76+
}).
77+
Headers("ID", "TITLE", "PROGRESS").
78+
Rows(rows...).Width(tw)
79+
80+
fmt.Println(t)
81+
}
7082

7183
var mediaListCmd = &cobra.Command{
72-
Use: "ls",
73-
Short: "List your current anime/manga list",
74-
Run: func(cmd *cobra.Command, args []string) {
75-
handleLs()
76-
},
84+
Use: "ls",
85+
Short: "List your current anime/manga list",
86+
Run: func(cmd *cobra.Command, args []string) {
87+
handleLs()
88+
},
7789
}
7890

7991
func init() {
80-
mediaListCmd.Flags().StringVarP(
81-
&listMediaType, "type", "t", "anime", "Type of media. for anime, pass 'anime' or 'a', for manga, use 'manga' or 'm'",
82-
)
92+
mediaListCmd.Flags().StringVarP(
93+
&listMediaType, "type", "t", "anime", "Type of media. for anime, pass 'anime' or 'a', for manga, use 'manga' or 'm'",
94+
)
8395
}

cmd/cmd_login.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
11
package cmd
22

33
import (
4-
"fmt"
4+
"fmt"
55

6-
"github.com/CosmicPredator/chibi/internal"
7-
"github.com/spf13/cobra"
6+
"github.com/CosmicPredator/chibi/internal"
7+
"github.com/spf13/cobra"
88
)
99

1010
func handleLoginCommand() {
11-
var code string
11+
var code string
1212

13-
authRequest := internal.NewAuthRequest()
14-
fmt.Printf(
15-
"Open the below link in browser to login with anilist: \n\n\n%s",
16-
authRequest.GetAuthURL(),
17-
)
18-
fmt.Println("\n\n\nCopy the code from the browser and enter it below:")
19-
fmt.Print("Enter code: ")
20-
fmt.Scanln(&code)
13+
authRequest := internal.NewAuthRequest()
14+
fmt.Printf(
15+
"Open the below link in browser to login with anilist: \n\n\n%s",
16+
authRequest.GetAuthURL(),
17+
)
18+
fmt.Println("\n\n\nCopy the code from the browser and enter it below:")
19+
fmt.Print("Enter code: ")
20+
fmt.Scanln(&code)
2121

22-
if code == "" {
23-
ErrorMessage("Please provide a valid token")
24-
}
22+
if code == "" {
23+
ErrorMessage("Please provide a valid token")
24+
}
2525

26-
err := authRequest.Login(code)
27-
if err != nil {
28-
ErrorMessage(err.Error())
29-
}
30-
fmt.Println("Login Successful")
26+
err := authRequest.Login(code)
27+
if err != nil {
28+
ErrorMessage(err.Error())
29+
}
30+
fmt.Println("Login Successful")
3131
}
3232

3333
var loginCmd = &cobra.Command{
34-
Use: "login",
35-
Short: "Login with anilist",
36-
Run: func(cmd *cobra.Command, args []string) {
37-
handleLoginCommand()
38-
},
34+
Use: "login",
35+
Short: "Login with anilist",
36+
Run: func(cmd *cobra.Command, args []string) {
37+
handleLoginCommand()
38+
},
3939
}

cmd/cmd_media_search.go

Lines changed: 66 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,88 @@
11
package cmd
22

33
import (
4-
"fmt"
5-
"os"
6-
"strconv"
7-
"strings"
4+
"fmt"
5+
"os"
6+
"strconv"
7+
"strings"
88

9-
"github.com/CosmicPredator/chibi/internal"
10-
"github.com/charmbracelet/lipgloss"
11-
"github.com/charmbracelet/lipgloss/table"
12-
"github.com/spf13/cobra"
9+
"github.com/CosmicPredator/chibi/internal"
10+
"github.com/charmbracelet/lipgloss"
11+
"github.com/charmbracelet/lipgloss/table"
12+
"github.com/charmbracelet/x/term"
13+
"github.com/spf13/cobra"
1314
)
1415

1516
var pageSize int
1617
var searchMediaType string
1718

1819
func getMediaSearch(searchQuery string) {
19-
CheckIfTokenExists()
20-
21-
if pageSize < 0 || pageSize > 50 {
22-
fmt.Println("page count must be lesser than 50 and greater than 0")
23-
os.Exit(0)
24-
}
20+
CheckIfTokenExists()
2521

26-
mediaSearch := internal.NewMediaSearch()
27-
err := mediaSearch.Get(searchQuery, searchMediaType, pageSize)
28-
if err != nil {
29-
ErrorMessage(err.Error())
30-
}
31-
rows := [][]string{}
22+
if pageSize < 0 || pageSize > 50 {
23+
fmt.Println("page count must be lesser than 50 and greater than 0")
24+
os.Exit(0)
25+
}
3226

33-
for _, i := range mediaSearch.Data.Page.Media {
34-
rows = append(rows, []string{
35-
strconv.Itoa(i.Id),
36-
i.Title.UserPreferred,
37-
fmt.Sprintf("%.2f", i.AverageScore),
38-
})
39-
}
27+
mediaSearch := internal.NewMediaSearch()
28+
err := mediaSearch.Get(searchQuery, searchMediaType, pageSize)
29+
if err != nil {
30+
ErrorMessage(err.Error())
31+
}
32+
rows := [][]string{}
4033

41-
t := table.New().
42-
Border(lipgloss.NormalBorder()).
43-
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("99"))).
44-
StyleFunc(func(row, col int) lipgloss.Style {
45-
switch {
46-
case row == -1:
47-
return lipgloss.NewStyle().Foreground(lipgloss.Color("99")).Bold(true).Align(lipgloss.Center)
48-
default:
49-
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2)
50-
}
51-
}).
52-
Headers("ID", "TITLE", "SCORE").
53-
Rows(rows...)
34+
for _, i := range mediaSearch.Data.Page.Media {
35+
rows = append(rows, []string{
36+
strconv.Itoa(i.Id),
37+
i.Title.UserPreferred,
38+
fmt.Sprintf("%.2f", i.AverageScore),
39+
})
40+
}
5441

55-
fmt.Println(t)
42+
// get size of terminal
43+
tw, _, err := term.GetSize((os.Stdin.Fd()))
44+
if err != nil {
45+
ErrorMessage(err.Error())
46+
}
47+
48+
t := table.New().
49+
Border(lipgloss.NormalBorder()).
50+
BorderStyle(lipgloss.NewStyle().Foreground(lipgloss.Color("99"))).
51+
StyleFunc(func(row, col int) lipgloss.Style {
52+
// style for table header row
53+
if row == -1 {
54+
return lipgloss.NewStyle().Foreground(lipgloss.Color("99")).Bold(true).Align(lipgloss.Center)
55+
}
56+
57+
// force title column to wrap by specifying terminal width
58+
if col == 1 {
59+
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2).Width(tw)
60+
}
61+
62+
return lipgloss.NewStyle().Align(lipgloss.Center).PaddingLeft(2).PaddingRight(2)
63+
}).
64+
Headers("ID", "TITLE", "SCORE").
65+
Rows(rows...).Width(tw)
66+
67+
fmt.Println(t)
5668
}
5769

5870
var mediaSearchCmd = &cobra.Command{
59-
Use: "search [query...]",
60-
Short: "Search for anime and manga",
61-
Args: cobra.MinimumNArgs(1),
62-
Run: func(cmd *cobra.Command, args []string) {
63-
if len(args) == 0 {
64-
fmt.Println("No seach queries provided")
65-
os.Exit(0)
66-
}
71+
Use: "search [query...]",
72+
Short: "Search for anime and manga",
73+
Args: cobra.MinimumNArgs(1),
74+
Run: func(cmd *cobra.Command, args []string) {
75+
if len(args) == 0 {
76+
fmt.Println("No seach queries provided")
77+
os.Exit(0)
78+
}
6779

68-
getMediaSearch(strings.Join(args, " "))
69-
},
80+
getMediaSearch(strings.Join(args, " "))
81+
},
7082
}
7183

7284
func init() {
73-
mediaSearchCmd.Flags().StringVarP(
74-
&searchMediaType, "type", "t", "anime", "Type of media. for anime, pass 'anime' or 'a', for manga, use 'manga' or 'm'")
75-
mediaSearchCmd.Flags().IntVarP(&pageSize, "page", "p", 10, "The number of results to be returned")
85+
mediaSearchCmd.Flags().StringVarP(
86+
&searchMediaType, "type", "t", "anime", "Type of media. for anime, pass 'anime' or 'a', for manga, use 'manga' or 'm'")
87+
mediaSearchCmd.Flags().IntVarP(&pageSize, "page", "p", 10, "The number of results to be returned")
7688
}

0 commit comments

Comments
 (0)