From 1180de51145f1b7ef29cf768e67825967acb29ed Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Mon, 17 Jun 2024 02:00:06 +0100 Subject: [PATCH] checkpoint: printer now posts instance info --- internal/executor/create.go | 4 +-- internal/executor/show.go | 2 +- internal/model/instance_v2.go | 51 ----------------------------------- internal/printer/instance.go | 39 +++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 54 deletions(-) create mode 100644 internal/printer/instance.go diff --git a/internal/executor/create.go b/internal/executor/create.go index 0f27f5d..9aee759 100644 --- a/internal/executor/create.go +++ b/internal/executor/create.go @@ -220,13 +220,13 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error { form.Poll = &poll } - _, err = gtsClient.CreateStatus(form) + status, err := gtsClient.CreateStatus(form) if err != nil { return fmt.Errorf("unable to create the status: %w", err) } c.printer.PrintSuccess("Successfully created the following status:") - //utilities.Display(status, *c.topLevelFlags.NoColor, c.topLevelFlags.Pager) + c.printer.PrintStatus(status) return nil } diff --git a/internal/executor/show.go b/internal/executor/show.go index d2a43bd..17ae3b7 100644 --- a/internal/executor/show.go +++ b/internal/executor/show.go @@ -99,7 +99,7 @@ func (s *ShowExecutor) showInstance(gtsClient *client.Client) error { return fmt.Errorf("unable to retrieve the instance details: %w", err) } - utilities.Display(instance, false, "") + s.printer.PrintInstance(instance) return nil } diff --git a/internal/model/instance_v2.go b/internal/model/instance_v2.go index 015ee13..c1461d4 100644 --- a/internal/model/instance_v2.go +++ b/internal/model/instance_v2.go @@ -4,12 +4,6 @@ package model -import ( - "fmt" - - "codeflow.dananglin.me.uk/apollo/enbas/internal/utilities" -) - type InstanceV2 struct { AccountDomain string `json:"account_domain"` Configuration InstanceConfiguration `json:"configuration"` @@ -116,48 +110,3 @@ type InstanceV2Usage struct { type InstanceV2Users struct { ActiveMonth int `json:"active_month"` } - -func (i InstanceV2) Display(noColor bool) string { - format := ` -%s - %s - -%s - %s - -%s - %s - -%s - %s - -%s - Running GoToSocial %s - -%s - %s %s - %s %s - %s %s -` - - return fmt.Sprintf( - format, - utilities.HeaderFormat(noColor, "INSTANCE TITLE:"), - i.Title, - utilities.HeaderFormat(noColor, "INSTANCE DESCRIPTION:"), - utilities.WrapLines(i.DescriptionText, "\n ", 80), - utilities.HeaderFormat(noColor, "DOMAIN:"), - i.Domain, - utilities.HeaderFormat(noColor, "TERMS AND CONDITIONS:"), - utilities.WrapLines(i.TermsText, "\n ", 80), - utilities.HeaderFormat(noColor, "VERSION:"), - i.Version, - utilities.HeaderFormat(noColor, "CONTACT:"), - utilities.FieldFormat(noColor, "Name:"), - i.Contact.Account.DisplayName, - utilities.FieldFormat(noColor, "Username:"), - i.Contact.Account.Acct, - utilities.FieldFormat(noColor, "Email:"), - i.Contact.Email, - ) -} diff --git a/internal/printer/instance.go b/internal/printer/instance.go new file mode 100644 index 0000000..aa0b4fe --- /dev/null +++ b/internal/printer/instance.go @@ -0,0 +1,39 @@ +package printer + +import ( + "strings" + + "codeflow.dananglin.me.uk/apollo/enbas/internal/model" + "codeflow.dananglin.me.uk/apollo/enbas/internal/utilities" +) + +func (p Printer) PrintInstance(instance model.InstanceV2) { + var builder strings.Builder + + builder.WriteString("\n" + p.headerFormat("INSTANCE TITLE:")) + builder.WriteString("\n" + instance.Title) + + builder.WriteString("\n\n" + p.headerFormat("INSTANCE DESCRIPTION:")) + builder.WriteString("\n" + utilities.WrapLines(instance.DescriptionText, "\n", p.maxTerminalWidth)) + + builder.WriteString("\n\n" + p.headerFormat("DOMAIN:")) + builder.WriteString("\n" + instance.Domain) + + builder.WriteString("\n\n" + p.headerFormat("TERMS AND CONDITIONS:")) + builder.WriteString("\n" + utilities.WrapLines(instance.TermsText, "\n ", p.maxTerminalWidth)) + + builder.WriteString("\n\n" + p.headerFormat("VERSION:")) + builder.WriteString("\nRunning GoToSocial " + instance.Version) + + builder.WriteString("\n\n" + p.headerFormat("CONTACT:")) + builder.WriteString("\n" + p.fieldFormat("Name:")) + builder.WriteString(" " + instance.Contact.Account.DisplayName) + builder.WriteString("\n" + p.fieldFormat("Username:")) + builder.WriteString(" " + instance.Contact.Account.Acct) + builder.WriteString("\n" + p.fieldFormat("Email:")) + builder.WriteString(" " + instance.Contact.Email) + + builder.WriteString("\n\n") + + p.print(builder.String()) +}