Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Hugo site with GitHub Actions and deploy to GitHub Pages #1245

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
47 changes: 47 additions & 0 deletions .github/workflows/site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: 'site'

on:
push:
pull_request:

jobs:
doc:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v3

- name: Get Hugo and Theme
run: |
curl -fsSL https://github.com/gohugoio/hugo/releases/download/v0.114.0/hugo_extended_0.114.0_Linux-64bit.tar.gz | sudo tar xzf - -C /usr/local/bin hugo
sudo chmod +x /usr/local/bin/hugo
mkdir -p site/themes
cd site/themes
git clone https://github.com/bep/docuapi
cd docuapi
npm install --only=dev
mv node_modules ../..

- name: Build site
run: |
cd site
hugo version
hugo

- uses: actions/upload-artifact@v3
with:
name: site
path: site/public

- name: Publish site to gh-pages
if: github.event_name != 'pull_request'
run: |
cd site/public/
touch .nojekyll
git init
cp ../../.git/config ./.git/config
git add .
git config --local user.email "push@gha"
git config --local user.name "GHA"
git commit -a -m "update ${{ github.sha }}"
git push -u origin +HEAD:gh-pages
130 changes: 21 additions & 109 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,112 +1,24 @@
![cobra logo](assets/CobraMain.png)
<p align="center">
<a title="cobra.dev" href="https://cobra.dev/"><img width="550px" src="site/static/images/logo.png"/></a>
</p>

<p align="center">
<a title="Site" href="https://cobra.dev/"><img src="https://img.shields.io/website.svg?label=cobra.dev&longCache=true&style=flat-square&url=http%3A%2F%2Fcobra.dev%2Findex.html"></a><!--
-->
<a title="Slack" href="https://gophers.slack.com/archives/CD3LP1199"><img alt="Slack" src="https://img.shields.io/badge/Slack-cobra-brightgreen?longCache=true&label=slack&logo=slack&logoColor=fff"></a><!--
-->
<a title="GoDoc" href="https://godoc.org/github.com/spf13/cobra"><img alt="GoDoc" src="https://godoc.org/github.com/spf13/cobra?status.svg"></a><!--
-->
<a title="Go Report Card" href="https://goreportcard.com/report/github.com/spf13/cobra"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/spf13/cobra"></a><!--
-->
<a title="Continuous Integration" href="https://github.com/spf13/cobra/actions/workflows/test.yml"><img alt="GitHub release (latest by date including pre-releases)" src="https://img.shields.io/github/actions/workflow/status/spf13/cobra/test.yml?branch=main&longCache=true&label=Test&logo=github%20actions&logoColor=fff"></a><!--
-->
<a title="Releases" href="https://github.com/spf13/cobra/releases"><img alt="GitHub release (latest by date including pre-releases)" src="https://img.shields.io/github/v/release/spf13/cobra?include_prereleases&longCache=true&label=Releases&logo=github&color=informational"></a><!--
-->
</p>

Cobra is a library for creating powerful modern CLI applications.

Cobra is used in many Go projects such as [Kubernetes](https://kubernetes.io/),
[Hugo](https://gohugo.io), and [GitHub CLI](https://github.com/cli/cli) to
name a few. [This list](site/content/projects_using_cobra.md) contains a more extensive list of projects using Cobra.

[![](https://img.shields.io/github/actions/workflow/status/spf13/cobra/test.yml?branch=main&longCache=true&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest)
[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra)
[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra)
[![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199)

# Overview

Cobra is a library providing a simple interface to create powerful modern CLI
interfaces similar to git & go tools.

Cobra provides:
* Easy subcommand-based CLIs: `app server`, `app fetch`, etc.
* Fully POSIX-compliant flags (including short & long versions)
* Nested subcommands
* Global, local and cascading flags
* Intelligent suggestions (`app srver`... did you mean `app server`?)
* Automatic help generation for commands and flags
* Grouping help for subcommands
* Automatic help flag recognition of `-h`, `--help`, etc.
* Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell)
* Automatically generated man pages for your application
* Command aliases so you can change things without breaking them
* The flexibility to define your own help, usage, etc.
* Optional seamless integration with [viper](https://github.com/spf13/viper) for 12-factor apps

# Concepts

Cobra is built on a structure of commands, arguments & flags.

**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions.

The best applications read like sentences when used, and as a result, users
intuitively know how to interact with them.

The pattern to follow is
`APPNAME VERB NOUN --ADJECTIVE`
or
`APPNAME COMMAND ARG --FLAG`.

A few good real world examples may better illustrate this point.

In the following example, 'server' is a command, and 'port' is a flag:

hugo server --port=1313

In this command we are telling Git to clone the url bare.

git clone URL --bare

## Commands

Command is the central point of the application. Each interaction that
the application supports will be contained in a Command. A command can
have children commands and optionally run an action.

In the example above, 'server' is the command.

[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command)

## Flags

A flag is a way to modify the behavior of a command. Cobra supports
fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
A Cobra command can define flags that persist through to children commands
and flags that are only available to that command.

In the example above, 'port' is the flag.

Flag functionality is provided by the [pflag
library](https://github.com/spf13/pflag), a fork of the flag standard library
which maintains the same interface while adding POSIX compliance.

# Installing
Using Cobra is easy. First, use `go get` to install the latest version
of the library.

```
go get -u github.com/spf13/cobra@latest
```

Next, include Cobra in your application:

```go
import "github.com/spf13/cobra"
```

# Usage
`cobra-cli` is a command line program to generate cobra applications and command files.
It will bootstrap your application scaffolding to rapidly
develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application.

It can be installed by running:

```
go install github.com/spf13/cobra-cli@latest
```

For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md)

For complete details on using the Cobra library, please read the [The Cobra User Guide](site/content/user_guide.md).

# License

Cobra is released under the Apache 2.0 license. See [LICENSE.txt](LICENSE.txt)
Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/),
[Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to
name a few. [This list](./site/content/projects_using_cobra.md) contains a more extensive list of projects using Cobra.
Binary file removed assets/CobraMain.png
Binary file not shown.
1 change: 1 addition & 0 deletions site/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/public
42 changes: 42 additions & 0 deletions site/assets/scss/slate/docuapi_overrides.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright 2013-2023 The Cobra Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// BACKGROUND COLORS

$nav-bg:#254E70 !default;
$examples-bg: #002642 !default;

// FONTS

@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700&display=swap");

$font-default-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";

// FLEX SIDEBAR

.toc-wrapper {
display: flex;
flex-direction: column;
}

#toc {
flex-grow: 1;
}

.toc-wrapper .toc-footer {
margin-top: .5em;
li {
text-align: center;
}
}
45 changes: 45 additions & 0 deletions site/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
theme = "docuapi"
languageCode = "en-us"
baseurl = "https://spf13.github.io/cobra/"
title = "Cobra"

disableKinds = ["taxonomyTerm"]

# Code higlighting settings
pygmentsCodefences = true
pygmentsCodeFencesGuesSsyntax = false
pygmentsOptions = ""
pygmentsStyle = "monokai"
pygmentsUseClasses = false

defaultContentLanguage = "en"

[module]
[module.hugoVersion]
[[module.imports]]
# We need one module import for Hugo to detect us as a Hugo Module.
path="github.com/bep/empty-hugo-module"

[params]
search = true

[markup]
[markup.goldmark]
[markup.goldmark.parser]
autoHeadingIDType = "github-ascii"
[markup.goldmark.renderer]
unsafe= true

[languages]
[languages.en]
languageName = "English"
weight = 2
title = "Cobra documentation"
[languages.en.params]
toc_footers = [
"[![github.com/spf13/cobra](https://img.shields.io/badge/-spf13/cobra-323131.svg?logo=github&style=flat-square&longCache=true)](https://github.com/spf13/cobra)",
"Built with [Hugo](https://gohugo.io/) theme [DocuAPI](https://github.com/bep/docuapi) by [bep](https://github.com/bep)"
]
[languages.en.params.blackfriday]
angledQuotes = false
hrefTargetBlank = true