aplus/main.go

121 lines
3.2 KiB
Go

package main
import (
"flag"
"fmt"
"net/http"
"os"
"runtime/pprof"
)
var base_link string
var base_aplus_link string
var external_tools_code int
var token string
var client http.Client
var verbose bool
func usage() {
fmt.Println("Usage: aplus --code attendance_code --course course_code [--list] [--listfav] [--timetable] [--help]")
fmt.Println(" -c, --code\tfive character attendance code")
fmt.Println(" -C, --course\tcanvas course ID")
fmt.Println(" -L, --list\tlists canvas courses with name and ID")
fmt.Println(" -F, --listfav\tlists favourited canvas courses with name and ID")
fmt.Println(" -t, --timetable\tlists the class sessions in a course")
fmt.Println(" -v, --verbose\tprints with verbose output")
fmt.Println(" -h, --help\tdisplays this help message")
fmt.Println(" -p, --profile\twrites cpu profile to a file (for debugging/optimizing)")
}
func main() {
initialize()
var code string
var course int
var listall bool
var listfav bool
var timetable_ bool
var help bool
var cpuprofile string
flag.StringVar(&code, "code", "", "5 character attendance code")
flag.StringVar(&code, "c", "", "5 character attendance code")
flag.IntVar(&course, "course", -1, "canvas course code")
flag.IntVar(&course, "C", -1, "canvas course code")
flag.BoolVar(&listall, "list", false, "list all canvas courses")
flag.BoolVar(&listall, "L", false, "list all canvas courses")
flag.BoolVar(&listfav, "listfav", false, "list favorited canvas courses")
flag.BoolVar(&listfav, "F", false, "list favorited canvas courses")
flag.BoolVar(&timetable_, "t", false, "lists the class sessions in a course")
flag.BoolVar(&timetable_, "timetable", false, "lists the class sessions in a course")
flag.BoolVar(&verbose, "verbose", false, "verbose output")
flag.BoolVar(&verbose, "v", false, "verbose output")
flag.BoolVar(&help, "help", false, "view usage message")
flag.BoolVar(&help, "h", false, "view usage message")
flag.StringVar(&cpuprofile, "p", "", "CPU profiling report location")
flag.StringVar(&cpuprofile, "profile", "", "CPU profiling report location")
flag.Parse()
if cpuprofile != "" {
cpuf, err := os.Create(cpuprofile)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer cpuf.Close()
err = pprof.StartCPUProfile(cpuf)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer pprof.StopCPUProfile()
}
if code == "" && course == -1 && !listall && !listfav && !help {
usage()
os.Exit(1)
}
if listall {
_ = list_all_courses(false)
os.Exit(0)
}
if listfav {
list_favorite_courses()
os.Exit(0)
}
if course != -1 && timetable_ {
timetable(course)
os.Exit(0)
} else if course == -1 && timetable_ {
fmt.Println("Course code required for timetable")
usage()
os.Exit(1)
}
if help {
usage()
os.Exit(0)
}
if len(code) == 5 && course != -1 {
fmt.Printf("%d %s\n", course, code)
submit_code(course, code)
} else if code == "" && course != -1 {
fmt.Println("Attendance code not provided")
usage()
os.Exit(1)
} else if len(code) != 5 {
fmt.Println("Attendance code must be 5 characters long")
usage()
os.Exit(1)
} else if len(code) == 5 && course == -1 {
fmt.Println("Checking which course to send the code to")
submit_code_sans_course(code)
}
}