Giter Site home page Giter Site logo

hyde's Introduction

Hyde

A CLI tool to manage content of a site based on Jekyll

Objectives

The tool will support commands like:

  • hyde post new
  • hyde post list
  • hyde post view
  • hyde post delete
  • hyde page new
  • hyde page list
  • hyde page view
  • hyde page delete

The tool will be built in .NET and be available as a global tool. This prototype uses the Spectre Console CLI library.

Ideally, the tool should expose an interactive UI similar to the one found in the GitHub CLI.

When creating a new post or a new page, users should be able to:

  • provide most of the parameters as arguments
  • provide parameters interactively (optional)
  • use default values specified in a configuration dotfile (e.g. .hyde.json)
  • create a blank page/post and let the user customize the content

hyde's People

Contributors

kralizek avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

hyde's Issues

Command: create new page

Add the possibility to create a new page

Here is the suggested syntax with the options

$ hyde page new [options] [flags]

Flags

Flag Shortcut Description Default
--editor -e opens the default text editor with the newly created file false
--interactive -i interactively queries the users to provide values that were not provided via options false

Arguments

Argument Shortcut Description Default
--title <STRING> -t specifies the title of the post
--content <FILE PATH> loads the content of the post from the specified file
--extension <STRING> -ext specifies the extension to be used when creating the file md
--filename <STRING> -fn specifies the file name of the page
--layout <STRING> -l specifies the layout to be used when creating the post default
--permalink <STRING> -p specifies the permalink to be added to the page
--custom <VARIABLE>=<VALUE> adds the given variable and value to the front matter part of the file (can be repeated)
--custom <FILE PATH> loads the content of the file and uses it to add custom values to the front matter part of the file

When a given argument is not specified, the tool will either check for a value in the configuration file, or use the default value.

When no argument is specified and no default is found in the configuration file, the file will be generated following this template:

---
title: "My latest page"
---
This is my new page!

The file will be created in the _pages folder and its name will be: my-latest-page.md

Pipeline for CI/CD

A pipeline to iteratively build incoming PRs and push artifacts to NuGet (official releases) or MyGet (nightly builds)

  • create MyGet repo for nightly builds
  • create CAKE script to be executed
  • setup GitHub actions (alternatively: use AppVeyor)

Command: create new post

Add the possibility to create a new blog post

Here is the suggested syntax with the options

$ hyde post new [options] [flags]

Flags

Flag Shortcut Description Default
--editor -e opens the default text editor with the newly created file false
--draft creates the new post as a draft false
--interactive -i interactively queries the users to provide values that were not provided via options false

Arguments

Argument Shortcut Description Default
--title <STRING> -t specifies the title of the post
--date <DATETIME> -d specifies the date and time of the post current date and time
--categories <STRING LIST> -c specifies the categories to be added to the post
--tags <STRING LIST> specifies the tags to be added to the post
--content <FILE PATH> loads the content of the post from the specified file
--extension <STRING> -ext specifies the extension to be used when creating the file md
--filename <STRING> -fn specifies the file name part of the post
--custom <VARIABLE>=<VALUE> adds the given variable and value to the front matter part of the file (can be repeated)
--custom <FILE PATH> loads the content of the file and uses it to add custom values to the front matter part of the file
--layout <STRING> -l specifies the layout to be used when creating the post post

When a given argument is not specified, the tool will either check for a value in the configuration file, or use the default value.

When no argument is specified and no default is found in the configuration file, the file will be generated following this template:

---
layout: post
title: "My latest post"
date: <current date and time>
---
This is my latest post!

The file name will be: <YY>-<MM>-<DD>-my-latest-post-01.md

Command: view post

Add the possibility to view a post. A post can be selected by its title or its full path.

Command: delete page

Add the possibility to delete a page. A page can be selected by its title or its full path.

Command: view page

Add the possibility to view a page. A page can be selected by its title or its full path.

Command: delete post

Add the possibility to delete a post. A post can be selected by its title or its full path.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.