Dhruvin Gandhi: 1 pages publish: Add --not-found 4 files changed, 16 insertions(+), 6 deletions(-)
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.sr.ht/~emersion/hut-dev/patches/29932/mbox | git am -3Learn more about email & git
--- doc/hut.1.scd | 3 +++ pages.go | 10 ++++++++-- srht/pagessrht/gql.go | 5 +++-- srht/pagessrht/operations.graphql | 4 ++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/hut.1.scd b/doc/hut.1.scd index dec7de0..f57daf2 100644 --- a/doc/hut.1.scd +++ b/doc/hut.1.scd @@ -266,6 +266,9 @@ Options are: If specified, only this subdirectory is updated, the rest of the site is left untouched. + *--not-found* <string> + Path to serve for page not found responses + *unpublish* [options...] Unpublish a website. diff --git a/pages.go b/pages.go index 59aec1d..a9c5473 100644 --- a/pages.go +++ b/pages.go @@ -26,7 +26,7 @@ func newPagesCommand() *cobra.Command { } func newPagesPublishCommand() *cobra.Command { - var domain, protocol, subdirectory string + var domain, protocol, subdirectory, notFound string run := func(cmd *cobra.Command, args []string) { ctx := cmd.Context() @@ -41,6 +41,11 @@ func newPagesPublishCommand() *cobra.Command { log.Fatal(err) } + siteConfig := pagessrht.SiteConfig{} + if notFound != "" { + siteConfig.NotFound = ¬Found + } + c := createClient("pages", cmd) f, err := os.Open(filename) @@ -51,7 +56,7 @@ func newPagesPublishCommand() *cobra.Command { file := gqlclient.Upload{Body: f, Filename: filepath.Base(filename)} - site, err := pagessrht.Publish(c.Client, ctx, domain, file, pagesProtocol, subdirectory) + site, err := pagessrht.Publish(c.Client, ctx, domain, file, pagesProtocol, subdirectory, siteConfig) if err != nil { log.Fatalf("failed to publish site: %v", err) } @@ -71,6 +76,7 @@ func newPagesPublishCommand() *cobra.Command { "protocol (HTTPS or GEMINI)") cmd.RegisterFlagCompletionFunc("protocol", completeProtocol) cmd.Flags().StringVarP(&subdirectory, "subdirectory", "s", "/", "subdirectory") + cmd.Flags().StringVar(¬Found, "not-found", "", "path to serve for page not found responses") return cmd } diff --git a/srht/pagessrht/gql.go b/srht/pagessrht/gql.go index d21f6da..df316ec 100644 --- a/srht/pagessrht/gql.go +++ b/srht/pagessrht/gql.go @@ -93,12 +93,13 @@ type Version struct { DeprecationDate time.Time `json:"deprecationDate,omitempty"` } -func Publish(client *gqlclient.Client, ctx context.Context, domain string, content gqlclient.Upload, protocol Protocol, subdirectory string) (publish *Site, err error) { - op := gqlclient.NewOperation("mutation publish ($domain: String!, $content: Upload!, $protocol: Protocol!, $subdirectory: String!) {\n\tpublish(domain: $domain, content: $content, protocol: $protocol, subdirectory: $subdirectory) {\n\t\tdomain\n\t}\n}\n") +func Publish(client *gqlclient.Client, ctx context.Context, domain string, content gqlclient.Upload, protocol Protocol, subdirectory string, siteConfig SiteConfig) (publish *Site, err error) { + op := gqlclient.NewOperation("mutation publish ($domain: String!, $content: Upload!, $protocol: Protocol!, $subdirectory: String!, $siteConfig: SiteConfig!) {\n\tpublish(domain: $domain, content: $content, protocol: $protocol, subdirectory: $subdirectory, siteConfig: $siteConfig) {\n\t\tdomain\n\t}\n}\n") op.Var("domain", domain) op.Var("content", content) op.Var("protocol", protocol) op.Var("subdirectory", subdirectory) + op.Var("siteConfig", siteConfig) var respData struct { Publish *Site } diff --git a/srht/pagessrht/operations.graphql b/srht/pagessrht/operations.graphql index 2adb2d7..ac287c6 100644 --- a/srht/pagessrht/operations.graphql +++ b/srht/pagessrht/operations.graphql @@ -1,5 +1,5 @@ -mutation publish($domain: String!, $content: Upload!, $protocol: Protocol!, $subdirectory: String!) { - publish(domain: $domain, content: $content, protocol: $protocol, subdirectory: $subdirectory) { +mutation publish($domain: String!, $content: Upload!, $protocol: Protocol!, $subdirectory: String!, $siteConfig: SiteConfig!) { + publish(domain: $domain, content: $content, protocol: $protocol, subdirectory: $subdirectory, siteConfig: $siteConfig) { domain } } -- 2.35.1
Pushed, thanks!