changeset 3:e4088b031eba

add cmd
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 31 Mar 2020 12:17:52 +0900
parents dccd0dd6cfbc
children 8bc574052fcb
files LICENSE cmd.go cmd/lectable/main.go go.sum lectable.go syllabus/getSyllabus.go version.go
diffstat 7 files changed, 118 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,22 @@
+Copyright (c) 2020 AnaTofuZ
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmd.go	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,9 @@
+package lectable
+
+import "io"
+
+type cmd interface {
+	name() string
+	description() string
+	run(cotnext.Context, []string, io.Writer, io.Writer)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmd/lectable/main.go	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,23 @@
+package main
+
+import (
+	"context"
+	"flag"
+	"log"
+	"os"
+
+	"ie.u-ryukyu.ac.jp/hg/y19/index.cgi/home/hg/y19/k198584/Tools/lectable"
+)
+
+func main() {
+	log.SetFlags(0)
+	err := lectable.Run(context.Background(), os.Args[1:], os.Stdout, os.Stderr)
+	if err != nil && err != flag.ErrHelp {
+		log.Println(err)
+		exitCode := 1
+		if ecoder, ok := err.(interface{ ExitCode() int }); ok {
+			exitCode = ecoder.ExitCode()
+		}
+		os.Exit(exitCode)
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/go.sum	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,1 @@
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lectable.go	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,32 @@
+package lectable
+
+import (
+	"context"
+	"flag"
+	"fmt"
+	"io"
+	"log"
+)
+
+const cmdName = "lectable"
+
+// Run the lectable
+func Run(ctx context.Context, argv []string, outStream, errStream io.Writer) error {
+	log.SetOutput(errStream)
+	fs := flag.NewFlagSet(
+		fmt.Sprintf("%s (v%s rev:%s)", cmdName, version, revision), flag.ContinueOnError)
+	fs.SetOutput(errStream)
+	ver := fs.Bool("version", false, "display version")
+	if err := fs.Parse(argv); err != nil {
+		return err
+	}
+	if *ver {
+		return printVersion(outStream)
+	}
+	return nil
+}
+
+func printVersion(out io.Writer) error {
+	_, err := fmt.Fprintf(out, "%s v%s (rev:%s)\n", cmdName, version, revision)
+	return err
+}
--- a/syllabus/getSyllabus.go	Tue Mar 31 09:49:20 2020 +0900
+++ b/syllabus/getSyllabus.go	Tue Mar 31 12:17:52 2020 +0900
@@ -4,7 +4,10 @@
 	"bufio"
 	"io"
 	"net/http"
+	"net/url"
 	"os"
+	"path"
+	"path/filepath"
 	"strconv"
 	"strings"
 	"time"
@@ -46,17 +49,16 @@
 func CreateGetSyllabus() *GetSyllabus {
 	var gs GetSyllabus
 	tm := time.Now()
-	gs.year = tm.Year()
+	//gs.year = tm.Year()
+	gs.year = 2019
 	if tm.Month() < 7 {
 		gs.term = "previous"
 	} else {
 		gs.term = "latter"
 	}
-	var b strings.Builder
-	b.WriteString(strconv.Itoa(gs.year))
-	b.WriteString("/")
-	b.WriteString(gs.term)
-	gs.outputdir = b.String()
+	gs.term = "previous"
+
+	gs.outputdir = filepath.Join(strconv.Itoa(gs.year), gs.term)
 	return &gs
 }
 
@@ -66,14 +68,17 @@
 var endSpan = "</span>"
 var dayOfWeeklen = len("月")
 
+//"https://tiglon.jim.u-ryukyu.ac.jp/portal/Public/Syllabus/SyllabusSearchStart.aspx?lct_year=2019&lct_cd=610004071&je_cd=1"
+var endpoint = "https://tiglon.jim.u-ryukyu.ac.jp"
+
 //LecIDtoDownloadSyllabus is download from lecture ID
 func (g *GetSyllabus) LecIDtoDownloadSyllabus(lectureID string) error {
 	var strBuilder strings.Builder
-	strBuilder.WriteString(g.outputdir)
-	strBuilder.WriteString("/")
 	strBuilder.WriteString(lectureID)
 	strBuilder.WriteString(".html")
 
+	putputPath := filepath.Join(g.outputdir, strBuilder.String())
+
 	file, err := os.Create(strBuilder.String())
 	defer file.Close()
 
@@ -83,7 +88,19 @@
 
 	strBuilder.Reset()
 
-	res, err := http.Get("http://google.com")
+	u, err := url.Parse(endpoint)
+	if err != nil {
+		return err
+	}
+
+	u.path = path.Join(u.path, "portal", "Public", "Syllabus", "SyllabusSearchStart.aspx")
+	q := u.Query()
+	q.Set("lect_year", g.year)
+	q.Set("lect_cd", lectureID)
+	q.Set("je_cd", "1")
+	u.RawQuery = q.Encode()
+
+	res, err := http.Get(u.String())
 	defer res.Body.Close()
 
 	if err != nil {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/version.go	Tue Mar 31 12:17:52 2020 +0900
@@ -0,0 +1,5 @@
+package lectable
+
+const version = "1.0.0"
+
+var revision = "HEAD"