Skip to content

Commit 7c235a7

Browse files
committed
Feat: works without popcorn directives
1 parent 90281ef commit 7c235a7

File tree

3 files changed

+60
-24
lines changed

3 files changed

+60
-24
lines changed

src/cmd/popcorn-cli.go

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"github.com/S1ro1/popcorn-cli/src/models"
1212
"github.com/S1ro1/popcorn-cli/src/service"
1313

14+
// "github.com/S1ro1/popcorn-cli/src/utils"
15+
1416
tea "github.com/charmbracelet/bubbletea"
1517
)
1618

@@ -35,8 +37,6 @@ type model struct {
3537
filepath string
3638
leaderboardsList list.Model
3739
selectedLeaderboard string
38-
runnersList list.Model
39-
selectedRunner string
4040
gpusList list.Model
4141
selectedGpu string
4242
submissionModeList list.Model
@@ -72,22 +72,16 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
7272
case models.ModelStateLeaderboardSelection:
7373
if i := m.leaderboardsList.SelectedItem(); i != nil {
7474
m.selectedLeaderboard = i.(models.LeaderboardItem).TitleText
75-
m.modalState = models.ModelStateRunnerSelection
76-
m.runnersList.SetSize(m.width-2, m.height-2)
77-
}
78-
case models.ModelStateRunnerSelection:
79-
if i := m.runnersList.SelectedItem(); i != nil {
80-
m.selectedRunner = i.(models.RunnerItem).Value
8175
m.modalState = models.ModelStateGpuSelection
8276
gpus, err := service.GetListItems(func() ([]models.GpuItem, error) {
83-
return service.FetchAvailableGpus(m.selectedLeaderboard, m.selectedRunner)
77+
return service.FetchAvailableGpus(m.selectedLeaderboard)
8478
})
8579
if err != nil {
8680
m.SetError(fmt.Sprintf("Error fetching GPUs: %s", err))
8781
return m, tea.Quit
8882
}
8983
if len(gpus) == 0 {
90-
m.SetError("No GPUs available for this runner and leaderboard.")
84+
m.SetError("No GPUs available for this leaderboard.")
9185
return m, tea.Quit
9286
}
9387
m.gpusList = list.New(gpus, list.NewDefaultDelegate(), m.width-2, m.height-2)
@@ -119,8 +113,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
119113
switch m.modalState {
120114
case models.ModelStateLeaderboardSelection:
121115
m.leaderboardsList.SetSize(listWidth, listHeight)
122-
case models.ModelStateRunnerSelection:
123-
m.runnersList.SetSize(listWidth, listHeight)
124116
case models.ModelStateGpuSelection:
125117
m.gpusList.SetSize(listWidth, listHeight)
126118
case models.ModelStateSubmissionModeSelection:
@@ -131,8 +123,6 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
131123
switch m.modalState {
132124
case models.ModelStateLeaderboardSelection:
133125
m.leaderboardsList, cmd = m.leaderboardsList.Update(msg)
134-
case models.ModelStateRunnerSelection:
135-
m.runnersList, cmd = m.runnersList.Update(msg)
136126
case models.ModelStateGpuSelection:
137127
m.gpusList, cmd = m.gpusList.Update(msg)
138128
case models.ModelStateSubmissionModeSelection:
@@ -159,8 +149,6 @@ func (m model) View() string {
159149
switch m.modalState {
160150
case models.ModelStateLeaderboardSelection:
161151
content = m.leaderboardsList.View()
162-
case models.ModelStateRunnerSelection:
163-
content = m.runnersList.View()
164152
case models.ModelStateGpuSelection:
165153
content = m.gpusList.View()
166154
case models.ModelStateSubmissionModeSelection:
@@ -187,7 +175,7 @@ func (m model) Submit() tea.Cmd {
187175
return
188176
}
189177

190-
prettyResult, err := service.SubmitSolution(m.selectedLeaderboard, m.selectedRunner, m.selectedGpu, m.selectedSubmissionMode, m.filepath, fileContent)
178+
prettyResult, err := service.SubmitSolution(m.selectedLeaderboard, m.selectedGpu, m.selectedSubmissionMode, m.filepath, fileContent)
191179
if err != nil {
192180
p.Send(models.ErrorMsg{Err: fmt.Errorf("error submitting solution: %s", err)})
193181
m.SetError(fmt.Sprintf("Error submitting solution: %s", err))
@@ -215,6 +203,12 @@ func Execute() {
215203
return
216204
}
217205

206+
// popcornDirectives, err := utils.GetPopcornDirectives(filepath)
207+
// if err != nil {
208+
// fmt.Println("Error fetching popcorn directives:", err)
209+
// return
210+
// }
211+
218212
leaderboardItems, err := service.GetListItems(service.FetchLeaderboards)
219213
if err != nil {
220214
fmt.Println("Error fetching leaderboards:", err)
@@ -228,15 +222,13 @@ func Execute() {
228222
m := model{
229223
filepath: filepath,
230224
leaderboardsList: list.New(leaderboardItems, list.NewDefaultDelegate(), 0, 0),
231-
runnersList: list.New(runnerItems, list.NewDefaultDelegate(), 0, 0),
232225
submissionModeList: list.New(submissionModeItems, list.NewDefaultDelegate(), 0, 0),
233226
spinner: s,
234227
modalState: models.ModelStateLeaderboardSelection,
235228
finishedOkay: true,
236229
finalStatus: "",
237230
}
238231
m.leaderboardsList.Title = "Leaderboards"
239-
m.runnersList.Title = "Runners"
240232

241233
p = tea.NewProgram(m)
242234
finalModel, err := p.Run()

src/service/api.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ func FetchLeaderboards() ([]models.LeaderboardItem, error) {
5353
return leaderboardNames, nil
5454
}
5555

56-
func FetchAvailableGpus(leaderboard string, runner string) ([]models.GpuItem, error) {
57-
resp, err := http.Get(BASE_URL + "/" + leaderboard + "/" + runner + "/gpus")
56+
func FetchAvailableGpus(leaderboard string) ([]models.GpuItem, error) {
57+
resp, err := http.Get(BASE_URL + "/gpus/" + leaderboard)
5858
if err != nil {
5959
return nil, err
6060
}
@@ -83,7 +83,7 @@ func FetchAvailableGpus(leaderboard string, runner string) ([]models.GpuItem, er
8383
return gpuItems, nil
8484
}
8585

86-
func SubmitSolution(leaderboard string, runner string, gpu string, submissionMode string, filename string, fileContent []byte) (string, error) {
86+
func SubmitSolution(leaderboard string, gpu string, submissionMode string, filename string, fileContent []byte) (string, error) {
8787
body := &bytes.Buffer{}
8888
writer := multipart.NewWriter(body)
8989

@@ -100,10 +100,9 @@ func SubmitSolution(leaderboard string, runner string, gpu string, submissionMod
100100
return "", fmt.Errorf("error closing form: %s", err)
101101
}
102102

103-
url := fmt.Sprintf("%s/%s/%s/%s/%s",
103+
url := fmt.Sprintf("%s/%s/%s/%s",
104104
BASE_URL,
105105
strings.ToLower(leaderboard),
106-
strings.ToLower(runner),
107106
strings.ToLower(gpu),
108107
strings.ToLower(submissionMode))
109108

src/utils/utils.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package utils
2+
3+
import (
4+
"os"
5+
"strings"
6+
)
7+
8+
type PopcornDirectives struct {
9+
LeaderboardName string
10+
Gpus []string
11+
}
12+
13+
func GetPopcornDirectives(filepath string) (*PopcornDirectives, error) {
14+
content, err := os.ReadFile(filepath)
15+
16+
var gpus []string = []string{}
17+
var leaderboard_name string = ""
18+
19+
if err != nil {
20+
return nil, err
21+
}
22+
23+
lines := strings.Split(string(content), "\n")
24+
for _, line := range lines {
25+
if !strings.HasPrefix(line, "//") && !strings.HasPrefix(line, "#") {
26+
continue
27+
}
28+
29+
parts := strings.Split(line, " ")
30+
if parts[0] == "//!POPCORN" || parts[0] == "#!POPCORN" {
31+
arg := strings.ToLower(parts[1])
32+
if arg == "gpu" || arg == "gpus" {
33+
gpus = parts[2:]
34+
} else if arg == "leaderboard" {
35+
leaderboard_name = parts[2]
36+
}
37+
}
38+
}
39+
40+
return &PopcornDirectives{
41+
LeaderboardName: leaderboard_name,
42+
Gpus: gpus,
43+
}, nil
44+
}
45+

0 commit comments

Comments
 (0)