aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/lulu/cli.go15
-rw-r--r--cmd/lulu/orders.go63
-rw-r--r--cmd/lulu/testchecks/cost2
-rw-r--r--cmd/lulu/testchecks/orders2
-rw-r--r--cmd/lulu/testchecks/vc4
-rw-r--r--cmd/lulu/testchecks/vi6
-rw-r--r--cmd/lulu/testchecks/vi_basic6
-rw-r--r--cmd/lulu/tests/orders1
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