~emersion/hut-dev

pages publish: Add --not-found v2 APPLIED

Dhruvin Gandhi: 1
 pages publish: Add --not-found

 4 files changed, 16 insertions(+), 6 deletions(-)
Export patchset (mbox)
How do I use this?

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 -3
Learn more about email & git

[PATCH v2] pages publish: Add --not-found Export this patch

---
 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 = &notFound
		}

		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(&notFound, "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!