]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
commands: Improve list command
authorJoe Mooring <joe.mooring@veriphor.com>
Sun, 19 May 2024 15:31:19 +0000 (08:31 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 22 May 2024 17:50:58 +0000 (19:50 +0200)
- Improve help text
- Add "kind" and "section" to CSV output
- Add a "published" subcommand to list content that is not draft,
  expired, or future.

Closes #12520

commands/list.go
testscripts/commands/gen.txt

index b90a357f8ef616872099d788f6e8e32cb131295d..c2f9c2d87d18cc946ddd94af9722da639575d32a 100644 (file)
@@ -41,6 +41,8 @@ func newListCommand() *listCommand {
                        p.PublishDate().Format(time.RFC3339),
                        strconv.FormatBool(p.Draft()),
                        p.Permalink(),
+                       p.Kind(),
+                       p.Section(),
                }
        }
 
@@ -67,6 +69,8 @@ func newListCommand() *listCommand {
                        "publishDate",
                        "draft",
                        "permalink",
+                       "kind",
+                       "section",
                })
 
                for _, p := range h.Pages() {
@@ -75,9 +79,6 @@ func newListCommand() *listCommand {
                                if err := writer.Write(record); err != nil {
                                        return err
                                }
-                               if err != nil {
-                                       return err
-                               }
                        }
                }
 
@@ -88,8 +89,8 @@ func newListCommand() *listCommand {
                commands: []simplecobra.Commander{
                        &simpleCommand{
                                name:  "drafts",
-                               short: "List all drafts",
-                               long:  `List all of the drafts in your content directory.`,
+                               short: "List draft content",
+                               long:  `List draft content.`,
                                run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
                                        shouldInclude := func(p page.Page) bool {
                                                if !p.Draft() || p.File() == nil {
@@ -109,8 +110,8 @@ func newListCommand() *listCommand {
                        },
                        &simpleCommand{
                                name:  "future",
-                               short: "List all posts dated in the future",
-                               long:  `List all of the posts in your content directory which will be posted in the future.`,
+                               short: "List future content",
+                               long:  `List content with a future publication date.`,
                                run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
                                        shouldInclude := func(p page.Page) bool {
                                                if !resource.IsFuture(p) || p.File() == nil {
@@ -129,8 +130,8 @@ func newListCommand() *listCommand {
                        },
                        &simpleCommand{
                                name:  "expired",
-                               short: "List all posts already expired",
-                               long:  `List all of the posts in your content directory which has already expired.`,
+                               short: "List expired content",
+                               long:  `List content with a past expiration date.`,
                                run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
                                        shouldInclude := func(p page.Page) bool {
                                                if !resource.IsExpired(p) || p.File() == nil {
@@ -149,8 +150,8 @@ func newListCommand() *listCommand {
                        },
                        &simpleCommand{
                                name:  "all",
-                               short: "List all posts",
-                               long:  `List all of the posts in your content directory, include drafts, future and expired pages.`,
+                               short: "List all content",
+                               long:  `List all content including draft, future, and expired.`,
                                run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
                                        shouldInclude := func(p page.Page) bool {
                                                return p.File() != nil
@@ -161,6 +162,20 @@ func newListCommand() *listCommand {
                                        cmd.ValidArgsFunction = cobra.NoFileCompletions
                                },
                        },
+                       &simpleCommand{
+                               name:  "published",
+                               short: "List published content",
+                               long:  `List content that is not draft, future, or expired.`,
+                               run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
+                                       shouldInclude := func(p page.Page) bool {
+                                               return !p.Draft() && !resource.IsFuture(p) && !resource.IsExpired(p) && p.File() != nil
+                                       }
+                                       return list(cd, r, shouldInclude)
+                               },
+                               withc: func(cmd *cobra.Command, r *rootCommand) {
+                                       cmd.ValidArgsFunction = cobra.NoFileCompletions
+                               },
+                       },
                },
        }
 }
index 2ab90e5be7b7d05f1a87996ef8743eae439bf084..22a936b415fb42a021f17bdeb78afcf1e4db4682 100644 (file)
@@ -1,6 +1,6 @@
 # Test the gen commands.
 # Note that adding new commands will require updating the NUM_COMMANDS value.
-env NUM_COMMANDS=42
+env NUM_COMMANDS=43
 
 hugo gen -h
 stdout 'A collection of several useful generators\.'