From b5f63fbfb38c86283885b751e731dbf040dbd2bb Mon Sep 17 00:00:00 2001 From: blacktop Date: Wed, 6 Nov 2024 17:27:15 -0700 Subject: [PATCH] Initial commit --- .github/dependabot.yml | 21 ++++++++ .github/workflows/go.yml | 34 ++++++++++++ .github/workflows/goreleaser.yml | 35 +++++++++++++ .github/workflows/vhs.yml | 35 +++++++++++++ .gitignore | 29 +++++++++++ .goreleaser.yaml | 86 +++++++++++++++++++++++++++++++ .vscode/launch.json | 19 +++++++ .vscode/tasks.json | 34 ++++++++++++ LICENSE | 21 ++++++++ Makefile | 15 ++++++ README.md | 35 +++++++++++++ cmd/root.go | 68 ++++++++++++++++++++++++ docs/logo.webp | Bin 0 -> 6242 bytes go.mod | 10 ++++ go.sum | 10 ++++ main.go | 28 ++++++++++ vhs.tape | 58 +++++++++++++++++++++ 17 files changed, 538 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/go.yml create mode 100644 .github/workflows/goreleaser.yml create mode 100644 .github/workflows/vhs.yml create mode 100644 .gitignore create mode 100644 .goreleaser.yaml create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 cmd/root.go create mode 100644 docs/logo.webp create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 vhs.tape diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..ecb9117 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,21 @@ +--- +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" + commit-message: + prefix: "chore" + include: "scope" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" + commit-message: + prefix: "chore" + include: "scope" diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 0000000..7f24e9d --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,34 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Go + +on: + push: + branches: [ "main" ] + paths-ignore: + - "*.md" + - "*.tape" + - ".github/workflows/goreleaser.yml" + - ".github/workflows/vhs.yml" + + pull_request: + branches: [ "main" ] + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "stable" + + - name: Build + run: go build -v ./... + + - name: Test + run: go test -v ./... diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml new file mode 100644 index 0000000..93ff276 --- /dev/null +++ b/.github/workflows/goreleaser.yml @@ -0,0 +1,35 @@ +name: goreleaser + +on: + push: + tags: + - v*.*.* + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - + name: Set up Go + uses: actions/setup-go@v5 + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + # either 'goreleaser' (default) or 'goreleaser-pro' + distribution: goreleaser + # 'latest', 'nightly', or a semver + version: '~> v2' + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution + # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} \ No newline at end of file diff --git a/.github/workflows/vhs.yml b/.github/workflows/vhs.yml new file mode 100644 index 0000000..ccca589 --- /dev/null +++ b/.github/workflows/vhs.yml @@ -0,0 +1,35 @@ +name: vhs +on: + push: + paths: + - vhs.tape + - .github/workflows/vhs.yml + +permissions: + contents: write + +jobs: + vhs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "stable" + - name: Build + run: | + sudo go build -o /usr/local/bin/TEMPLATE main.go + - uses: charmbracelet/vhs-action@v2 + with: + path: 'vhs.tape' + - uses: stefanzweifel/git-auto-commit-action@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + commit_message: Update generated VHS GIF + branch: main + commit_user_name: vhs-action 📼 + commit_user_email: actions@github.com + commit_author: vhs-action 📼 + file_pattern: '*.gif' \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..199cebf --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# If you prefer the allow list template instead of the deny list, see community template: +# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore +# +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Go workspace file +go.work +go.work.sum + +# env file +.env + +# misc +dist/ +.DS_Store \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..147e3d6 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,86 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com + +# The lines below are called `modelines`. See `:help modeline` +# Feel free to remove those if you don't want/need to use them. +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 2 + +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... + +builds: + - id: default + binary: TEMPLATE + env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + +universal_binaries: + - replace: false + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of `uname`. + name_template: >- + {{ .ProjectName }}_{{ .Version }}_ + {{- if eq .Os "darwin" }}macOS + {{- else if eq .Os "ios" }}iOS + {{- else }}{{ .Os }}{{ end }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else if eq .Arch "all" }}universal + {{- else }}{{ .Arch }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip + +changelog: + sort: asc + use: github + groups: + - title: Dependency updates + regexp: '^.*?(.+)\(deps\)!?:.+$' + order: 300 + - title: "New Features" + regexp: '^.*?feat(\(.+\))??!?:.+$' + order: 100 + - title: "Security updates" + regexp: '^.*?sec(\(.+\))??!?:.+$' + order: 150 + - title: "Bug fixes" + regexp: '^.*?(fix|refactor)(\(.+\))??!?:.+$' + order: 200 + - title: "Documentation updates" + regexp: ^.*?docs?(\(.+\))??!?:.+$ + order: 400 + - title: "Build process updates" + regexp: ^.*?(build|ci)(\(.+\))??!?:.+$ + order: 400 + - title: Other work + order: 9999 + filters: + include: + - "^feat.*" + - "^fix.*" + - "^chore.*" + - "^sec.*" + - "^(doc|docs).*" + +release: + footer: | + ### Summary + **Full Changelog**: https://github.com/blacktop/TEMPLATE/compare/{{ .PreviousTag }}...{{ .Tag }} + ## What to do next? + - Follow us on [Twitter](https://twitter.com/blacktop__) + - Follow us on [Mastodon](https://mastodon.social/@blacktop) diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f943749 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to TEMPLATE", + "type": "go", + "debugAdapter": "dlv-dap", + "request": "attach", + "mode": "remote", + "remotePath": "${workspaceFolder}", + "port": 2345, + "host": "127.0.0.1", + "preLaunchTask": "Run headless dlv" // Here ! + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..710ff59 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,34 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run headless dlv", + "type": "process", + "command": [ + "dlv", + ], + "args": [ + "debug", + "--headless", + "--listen=:2345", + "--api-version=2", + "${workspaceFolder}/main.go", + "--", + "ARGS" + ], + "isBackground": true, + "problemMatcher": { + "owner": "go", + "fileLocation": "relative", + "pattern": { + "regexp": "^couldn't start listener:", // error if matched + }, + "background": { + "activeOnStart": true, + "beginsPattern": "^API server listening at:", + "endsPattern": "^Got a connection, launched process" // success if matched + } + } + } + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..51b1495 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright © 2024 blacktop + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0f8a16f --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.PHONY: bump +bump: + @echo "🚀 Bumping Version" + git tag $(shell svu patch) + git push --tags + +.PHONY: build +build: + @echo "🚀 Building Version $(shell svu current)" + go build -o TEMPLATE main.go + +.PHONY: release +release: + @echo "🚀 Releasing Version $(shell svu current)" + goreleaser build --id default --clean --snapshot --single-target --output dist/TEMPLATE \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a67a596 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +

+ TEMPLATE Logo +

go-template

+

Go Project Template

+

+ + + + + + + + +

+
+ +## Why? 🤔 + + + +## Getting Started + +### Install + +```bash +go install github.com/blacktop/go-template@latest +``` + + + +![demo](vhs.gif) + +## License + +MIT Copyright (c) **blacktop** \ No newline at end of file diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..59ebc9a --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,68 @@ +/* +Copyright © 2024 blacktop + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +package cmd + +import ( + "os" + + "github.com/spf13/cobra" +) + + + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "go-template", + Short: "A brief description of your application", + Long: `A longer description that spans multiple lines and likely contains +examples and usage of using your application. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + // Uncomment the following line if your bare application + // has an action associated with it: + // Run: func(cmd *cobra.Command, args []string) { }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + err := rootCmd.Execute() + if err != nil { + os.Exit(1) + } +} + +func init() { + // Here you will define your flags and configuration settings. + // Cobra supports persistent flags, which, if defined here, + // will be global for your application. + + // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.go-template.yaml)") + + // Cobra also supports local flags, which will only run + // when this action is called directly. + rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} + + diff --git a/docs/logo.webp b/docs/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..ee12ee3baa305e5b1917f48ed2c76cfecf40adad GIT binary patch literal 6242 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 VF#^+pe.gif Create a GIF output at the given +# Output .mp4 Create an MP4 output at the given +# Output .webm Create a WebM output at the given +# +# Settings: +# Set FontSize Set the font size of the terminal +# Set FontFamily Set the font family of the terminal +# Set Height Set the height of the terminal +# Set Width Set the width of the terminal +# Set LetterSpacing Set the font letter spacing (tracking) +# Set LineHeight Set the font line height +# Set Theme Set the theme of the terminal (JSON) +# Set Padding [em|px] Set the padding of the terminal +# Set Framerate Set the framerate of the recording +# Set PlaybackSpeed Set the playback speed of the recording +# +# Sleep: +# Sleep