|
@@ -1,10 +1,11 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"log"
|
|
|
"os"
|
|
|
|
|
|
- sessionmanager "git.andreafazzi.eu/andrea/probo/session"
|
|
|
+ "git.andreafazzi.eu/andrea/probo/sessionmanager"
|
|
|
"git.andreafazzi.eu/andrea/probo/store/file"
|
|
|
"github.com/urfave/cli/v2"
|
|
|
)
|
|
@@ -12,10 +13,43 @@ import (
|
|
|
func main() {
|
|
|
file.DefaultBaseDir = "testdata"
|
|
|
|
|
|
+ sStore, err := file.NewDefaultSessionFileStore()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ pStore, err := file.NewParticipantDefaultFileStore()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+ qStore, err := file.NewDefaultQuizFileStore()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ sm, err := sessionmanager.NewSessionManager(
|
|
|
+ "http://localhost:8080/",
|
|
|
+ pStore.Storer,
|
|
|
+ qStore.Storer,
|
|
|
+ nil,
|
|
|
+ nil,
|
|
|
+ )
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
app := &cli.App{
|
|
|
Name: "probo-cli",
|
|
|
- Usage: "Quiz Management System for Power Teachers!",
|
|
|
+ Usage: "Quiz Management System for Hackers!",
|
|
|
Commands: []*cli.Command{
|
|
|
+ {
|
|
|
+ Name: "init",
|
|
|
+ Aliases: []string{"i"},
|
|
|
+ Usage: "Initialize the current directory",
|
|
|
+ Action: func(cCtx *cli.Context) error {
|
|
|
+ return nil
|
|
|
+ },
|
|
|
+ },
|
|
|
{
|
|
|
Name: "session",
|
|
|
Aliases: []string{"s"},
|
|
@@ -28,37 +62,72 @@ func main() {
|
|
|
if cCtx.Args().Len() < 1 {
|
|
|
log.Fatalf("Please provide a session name as first argument of create.")
|
|
|
}
|
|
|
- pStore, err := file.NewParticipantDefaultFileStore()
|
|
|
+
|
|
|
+ session, err := sm.Push(cCtx.Args().First())
|
|
|
if err != nil {
|
|
|
log.Fatalf("An error occurred: %v", err)
|
|
|
}
|
|
|
- qStore, err := file.NewDefaultQuizFileStore()
|
|
|
+
|
|
|
+ _, err = sStore.Create(session)
|
|
|
if err != nil {
|
|
|
log.Fatalf("An error occurred: %v", err)
|
|
|
}
|
|
|
|
|
|
- sm, err := sessionmanager.NewSessionManager(
|
|
|
- "http://localhost:8080/create",
|
|
|
- cCtx.Args().First(),
|
|
|
- pStore.Storer,
|
|
|
- qStore.Storer,
|
|
|
- nil,
|
|
|
- nil,
|
|
|
- )
|
|
|
+ log.Println("Session upload completed with success!")
|
|
|
+
|
|
|
+ for _, p := range pStore.ReadAll() {
|
|
|
+ log.Printf("http://localhost:8080/%v/%v", session.ID, p.Token)
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Name: "pull",
|
|
|
+ Usage: "Download responses from a session",
|
|
|
+ Action: func(cCtx *cli.Context) error {
|
|
|
+ if cCtx.Args().Len() < 1 {
|
|
|
+ log.Fatalf("Please provide a session ID as first argument of pull.")
|
|
|
+ }
|
|
|
+
|
|
|
+ rStore, err := file.NewDefaultResponseFileStore()
|
|
|
if err != nil {
|
|
|
log.Fatalf("An error occurred: %v", err)
|
|
|
}
|
|
|
-
|
|
|
- id, err := sm.Push()
|
|
|
+ err = sm.Pull(rStore, cCtx.Args().First())
|
|
|
if err != nil {
|
|
|
log.Fatalf("An error occurred: %v", err)
|
|
|
}
|
|
|
|
|
|
- log.Printf("Session upload completed with success. URL: https://localhost:8080/%v", id)
|
|
|
+ log.Println("Responses download completed with success!")
|
|
|
|
|
|
- for _, p := range pStore.ReadAll() {
|
|
|
- log.Printf("http://localhost:8080/%v/%v", id, p.Token)
|
|
|
+ return nil
|
|
|
+
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Name: "scores",
|
|
|
+ Usage: "Show the scores for the given session",
|
|
|
+ Action: func(cCtx *cli.Context) error {
|
|
|
+ if cCtx.Args().Len() < 1 {
|
|
|
+ log.Fatalf("Please provide a session name as first argument of 'score'.")
|
|
|
}
|
|
|
+ session, err := sStore.Read(cCtx.Args().First())
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+ rStore, err := file.NewDefaultResponseFileStore()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ scores, err := sessionmanager.NewScores(rStore, session)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("An error occurred: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println(scores)
|
|
|
|
|
|
return nil
|
|
|
|