singlecli - package for creating single command console application
It's simple app for adding numbers
package main
import (
"context"
"fmt"
"strconv"
"time"
cli "github.com/artarts36/singlecli"
)
func main() {
application := cli.App{
BuildInfo: &cli.BuildInfo{
Name: "number-adder",
Version: "0.1.0",
BuildDate: time.Now().String(),
},
Action: run,
Args: []*cli.ArgDefinition{
{
Name: "num1",
Description: "first number",
Required: true,
},
{
Name: "num2",
Description: "second number",
Required: true,
},
},
UsageExamples: []*cli.UsageExample{
{
Command: "number-adder 1 and 2",
},
},
}
application.RunWithGlobalArgs(context.Background())
}
func run(ctx *cli.Context) error {
number1, _ := strconv.Atoi(ctx.GetArg("num1"))
number2, _ := strconv.Atoi(ctx.GetArg("num2"))
fmt.Printf("%d + %d = %d", number1, number2, number1 + number2)
return nil
}
Run: go run you_main_file.go --singlecli-codegen-ga
You also can generate in pipeline with workflow:
name: update github action config
permissions: write-all
on:
push:
branches:
- master
jobs:
update-ga-config:
runs-on: ubuntu-latest
steps:
- name: install deps
run: sudo apt install gcc
- name: Check out code
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4 # action page: <https://github.com/actions/setup-go>
with:
go-version: stable
- name: Install Go dependencies
run: go mod download
- name: Configure git user
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: Hash prev version
id: prev_version
run: echo "hash=${{ hashFiles('action.yaml') }}" >> $GITHUB_OUTPUT
- name: Generate new config file
run: |
go run ./cmd/main.go --singlecli-codegen-ga
- name: Commit changes
if: ${{ steps.prev_version.outputs.hash != hashFiles('action.yaml') }}
run: |
git add action.yaml
git commit -m "chore: actualize ga config"
git push