diff options
| -rw-r--r-- | main.go | 25 | ||||
| -rw-r--r-- | timetask/time_entry.go | 46 | 
2 files changed, 70 insertions, 1 deletions
| @@ -1,10 +1,14 @@  package main  import ( +	"fmt"  	"io/ioutil"  	"log" +	"os" -	"gopkg.in/yaml.v1" +	"com.teddywing/timetasker/timetask" + +	"gopkg.in/yaml.v2"  )  type Config struct { @@ -41,6 +45,25 @@ var config Config  func main() {  	loadConfig() + +	if len(os.Args) == 1 { +		fmt.Println("Not enough arguments") +		os.Exit(1) +	} + +	file_path := os.Args[len(os.Args)-1] +	file, err := ioutil.ReadFile(file_path) +	if err != nil { +		log.Println(err) +	} + +	time_entries := []timetask.TimeEntry{} +	err = yaml.Unmarshal(file, &time_entries) +	if err != nil { +		log.Println(err) +	} + +	log.Printf("%+v", time_entries)  }  func loadConfig() { diff --git a/timetask/time_entry.go b/timetask/time_entry.go new file mode 100644 index 0000000..6dfb787 --- /dev/null +++ b/timetask/time_entry.go @@ -0,0 +1,46 @@ +package timetask + +import "time" + +type TimeEntry struct { +	Client      string +	Project     string +	Task        string +	WorkType    string `yaml:"work_type"` +	Date        time.Time +	Billable    bool +	Description string +} + +// Parse date string into a real date +func (te *TimeEntry) UnmarshalYAML(unmarshal func(interface{}) error) error { +	var auxiliary struct { +		Client      string +		Project     string +		Task        string +		WorkType    string `yaml:"work_type"` +		Date        string +		Billable    bool +		Description string +	} + +	err := unmarshal(&auxiliary) +	if err != nil { +		return err +	} + +	date, err := time.Parse("2006-01-02", auxiliary.Date) +	if err != nil { +		return err +	} + +	te.Client = auxiliary.Client +	te.Project = auxiliary.Project +	te.Task = auxiliary.Task +	te.WorkType = auxiliary.WorkType +	te.Date = date +	te.Billable = auxiliary.Billable +	te.Description = auxiliary.Description + +	return nil +} | 
