diff options
| -rw-r--r-- | cmd/lulu/cli.go | 15 | ||||
| -rw-r--r-- | cmd/lulu/orders.go | 63 | ||||
| -rw-r--r-- | cmd/lulu/testchecks/cost | 2 | ||||
| -rw-r--r-- | cmd/lulu/testchecks/orders | 2 | ||||
| -rw-r--r-- | cmd/lulu/testchecks/vc | 4 | ||||
| -rw-r--r-- | cmd/lulu/testchecks/vi | 6 | ||||
| -rw-r--r-- | cmd/lulu/testchecks/vi_basic | 6 | ||||
| -rw-r--r-- | cmd/lulu/tests/orders | 1 |
8 files changed, 84 insertions, 15 deletions
diff --git a/cmd/lulu/cli.go b/cmd/lulu/cli.go index ce4b0c9..7a952ed 100644 --- a/cmd/lulu/cli.go +++ b/cmd/lulu/cli.go @@ -10,12 +10,13 @@ import ( ) var helpVars = kong.Vars{ - "mfg_help": "Manufacturing settings. Run 'lulu list mfg' for format", - "ship_level_help": fmt.Sprint(lulu.ShippingLevelValues()), - "cost_item_help": "Line items. Run 'lulu list cost-item' for format", - "npages_help": "Number of interior pages", - "unit_help": fmt.Sprintf("Unit of measurement: %s", lulu.UnitValues()), - "default_timeout": defaultTimeout.String(), + "cost_item_help": "Line items. Run 'lulu list cost-item' for format", + "default_timeout": defaultTimeout.String(), + "mfg_help": "Manufacturing settings. Run 'lulu list mfg' for format", + "npages_help": "Number of interior pages", + "order_status_help": fmt.Sprintf("Filter by order status %s", lulu.OrderStatusValues()), + "ship_level_help": fmt.Sprint(lulu.ShippingLevelValues()), + "unit_help": fmt.Sprintf("Unit of measurement: %s", lulu.UnitValues()), } type CLI struct { @@ -25,6 +26,8 @@ type CLI struct { ValidateCover ValidateCoverCmd `cmd name:"vc" help:"Validate cover file"` CoverDimensions CoverDimensionsCmd `cmd name:"cd" help:"Calculate cover dimensions"` Cost CostCmd `cmd help:"Calculate the cost of a print job"` + Orders OrdersCmd `cmd help:"Retrieve past print jobs"` + //TODO Info InfoCmd `cmd help:"Retrieve information about an order"` List ListCmd `cmd help:"Print a list of valid argument values"` } diff --git a/cmd/lulu/orders.go b/cmd/lulu/orders.go new file mode 100644 index 0000000..bbbf465 --- /dev/null +++ b/cmd/lulu/orders.go @@ -0,0 +1,63 @@ +package main + +import ( + "fmt" + "os" + "text/tabwriter" + "time" + + "git.samanthony.xyz/lulu" +) + +type OrdersCmd struct { + CreatedAfter time.Time `help:"Include only orders created after this *time"` + CreatedBefore time.Time `help:"Include only orders created before this *time"` + ModifiedAfter time.Time `help:"Include only orders modified after this *time"` + ModifiedBefore time.Time `help:"Include only orders modified before this *time"` + Status lulu.OrderStatus `help:"${order_status_help}"` +} + +func (cmd OrdersCmd) Run(clnt *lulu.Client) error { + jobs, err := clnt.GetPrintJobs(cmd.queries()...) + if err != nil { + return err + } + if len(jobs) == 0 { + fmt.Fprintf(os.Stderr, "lulu: no orders\n") + return nil + } + + w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.AlignRight) + fmt.Fprintf(w, "created\textid\tid\torderid\tnitems\ttotal\tstatus\t\n") + for _, job := range jobs { + fmt.Fprintf(w, "%s\t%s\t%d\t%s\t%d\t%s\t%s\t\n", + job.Created.UTC().Format(time.RFC3339), + job.ExternalId, + job.Id, + job.OrderId, + len(job.LineItems), + fmt.Sprintf("%s%s", job.Cost.TotalCostInclTax, job.Cost.Currency), + job.Status.Status) + } + return w.Flush() +} + +func (cmd OrdersCmd) queries() []lulu.PrintJobQuery { + var queries []lulu.PrintJobQuery + if !cmd.CreatedAfter.IsZero() { + queries = append(queries, lulu.FilterCreatedAfter(cmd.CreatedAfter)) + } + if !cmd.CreatedBefore.IsZero() { + queries = append(queries, lulu.FilterCreatedBefore(cmd.CreatedBefore)) + } + if !cmd.ModifiedAfter.IsZero() { + queries = append(queries, lulu.FilterModifiedAfter(cmd.ModifiedAfter)) + } + if !cmd.ModifiedBefore.IsZero() { + queries = append(queries, lulu.FilterModifiedBefore(cmd.ModifiedBefore)) + } + if cmd.Status != "" { + queries = append(queries, lulu.FilterStatus(cmd.Status)) + } + return queries +} diff --git a/cmd/lulu/testchecks/cost b/cmd/lulu/testchecks/cost index 47eac29..5ce1d48 100644 --- a/cmd/lulu/testchecks/cost +++ b/cmd/lulu/testchecks/cost @@ -1 +1 @@ -grep -E '^total: [1-9][0-9]*(\.[0-9]+)? [A-Z]{3}$' <$1 +grep -E '^total: [1-9][0-9]*(\.[0-9]+)? [A-Z]{3}$' $1 diff --git a/cmd/lulu/testchecks/orders b/cmd/lulu/testchecks/orders new file mode 100644 index 0000000..2d90544 --- /dev/null +++ b/cmd/lulu/testchecks/orders @@ -0,0 +1,2 @@ +grep -E 'created +extid +id +orderid +nitems +total +status' $1 +grep -E '^ *[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z +.*[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+(\.[0-9]+)?[A-Z]{3} +[A-Z_]+$' $1 diff --git a/cmd/lulu/testchecks/vc b/cmd/lulu/testchecks/vc index c8404ed..0c72c0f 100644 --- a/cmd/lulu/testchecks/vc +++ b/cmd/lulu/testchecks/vc @@ -1,2 +1,2 @@ -grep '^status: NORMALIZED$' <$1 -grep '^id: [1-9][0-9]*$' <$1 +grep '^status: NORMALIZED$' $1 +grep '^id: [1-9][0-9]*$' $1 diff --git a/cmd/lulu/testchecks/vi b/cmd/lulu/testchecks/vi index 5fe44a8..19de67c 100644 --- a/cmd/lulu/testchecks/vi +++ b/cmd/lulu/testchecks/vi @@ -1,3 +1,3 @@ -grep '^status: NORMALIZED$' <$1 -grep '^id: [1-9][0-9]*$' <$1 -grep '^valid PkgIds: \[[A-Z0-9. ]\+\]$' <$1 +grep '^status: NORMALIZED$' $1 +grep '^id: [1-9][0-9]*$' $1 +grep '^valid PkgIds: \[[A-Z0-9. ]\+\]$' $1 diff --git a/cmd/lulu/testchecks/vi_basic b/cmd/lulu/testchecks/vi_basic index 3293dbc..50acc33 100644 --- a/cmd/lulu/testchecks/vi_basic +++ b/cmd/lulu/testchecks/vi_basic @@ -1,3 +1,3 @@ -grep '^status: VALIDATED$' <$1 -grep '^id: [1-9][0-9]*$' <$1 -grep '^valid PkgIds: \[[A-Z0-9. ]\+\]$' <$1 +grep '^status: VALIDATED$' $1 +grep '^id: [1-9][0-9]*$' $1 +grep '^valid PkgIds: \[[A-Z0-9. ]\+\]$' $1 diff --git a/cmd/lulu/tests/orders b/cmd/lulu/tests/orders new file mode 100644 index 0000000..910948c --- /dev/null +++ b/cmd/lulu/tests/orders @@ -0,0 +1 @@ +lulu -s orders |