Skip to content

Commit

Permalink
submit: Add robin.job submission functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
unkaktus committed May 20, 2024
1 parent 30ce61f commit 478ba38
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 8 deletions.
11 changes: 3 additions & 8 deletions cmd/robin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,19 +171,14 @@ func run() (err error) {
},
{
Name: "submit",
Usage: "submit a job file without magic",

Usage: "submit a job",
Action: func(cCtx *cli.Context) error {
if bs == nil {
return errUnsupported
}

jobDataFilename := cCtx.Args().First()
jobData, err := os.ReadFile(jobDataFilename)
if err != nil {
return fmt.Errorf("read job data file: %w", err)
}
if err := bs.Submit(string(jobData)); err != nil {
name := cCtx.Args().First()
if err := robin.Submit(bs, name); err != nil {
return fmt.Errorf("submit: %w", err)
}
return nil
Expand Down
43 changes: 43 additions & 0 deletions submit.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package robin

import (
"fmt"
"os"
"os/exec"
)

const (
robinJobFilename = "robin.job"
)

func fileExists(filename string) bool {
info, err := os.Stat(filename)
if os.IsNotExist(err) {
return false
}
return !info.IsDir()
}

func Submit(bs BatchSystem, name string) error {
var jobData []byte
var err error
// Check whether it's a plain job file
if fileExists(name) {
jobData, err = os.ReadFile(name)
if err != nil {
return fmt.Errorf("read job data file: %w", err)
}
} else {
// Ask robin.job executable to generate the job data
cmd := exec.Command("./"+robinJobFilename, name)
jobData, err = cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("exectute %s command: %w", robinJobFilename, err)
}
}

if err := bs.Submit(string(jobData)); err != nil {
return fmt.Errorf("submit: %w", err)
}
return nil
}

0 comments on commit 478ba38

Please sign in to comment.