Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
github.com/tcnksm/gcli
gcli
generates a skeleton (codes and its directory structure) you need to start building CLI tool by Golang right out of the box. You can use your favorite CLI framework.
The following demo shows creating todo
CLI application which has add
, list
and delete
command with mitchellh/cli (Which is used for Hashicorp products) with one command.
The next demo shows creating same todo
CLI application with design
& apply
commands. This is the other way to start building new CLI application. First, it starts with creating design file by design
command. In this file, you can define, CLI name, description of the CLI , framework you want to use, and commands & flags with its usages. After editing, it executes apply
command to generating a project from that design file (The complete video is available on Vimeo).
As you can see, the generated codes are go build
-able from beginning.
To start new command line tool, run the following command. It generates new cli skeleton project. At least, you must provide executable name. You can go build
&& go test
it from beginning.
$ gcli new [options] NAME
To see available frameworks,
$ gcli list
See more usage,
$ gcli help
You can generate CLI project from design template file (.toml
). You can define command name, its description, commands there.
First, you can create default .toml
file via design
command,
$ gcli design <NAME>
Then, edit design file by your favorite $EDITOR
. You can see sample template file sample.toml
,
$ $EDITOR <NAME>-design.toml
You can validate design by validate
command to check it has required fields,
$ gcli validate <NAME>-design.toml
To generate CLI project, use apply
command,
$ gcli apply <NAME>-desigon.toml
gcli
can generate two types of CLI pattern,
Flag pattern is the pattern which executable has only flag options like below (e.g., grep
),
$ grep —i -C 4 "some string" /tmp
│ │ │
│ │ `--------- Arguments
│ │
│ `------------------------ Option flags
│
`------------------------------ Executable
To generate above CLI application with flag fraemwork,
$ cd $GOPATH/src/github.com/YOUR_NAME
$ gcli new -F flag -flag=i:Bool -flag=C:Int grep
Created grep/main.go
Created grep/CHANGELOG.md
Created grep/cli_test.go
Created grep/README.md
Created grep/version.go
Created grep/cli.go
====> Successfully generated grep
gcli
supports the following packages for the flag pattern:
Command pattern is the pattern which executable has command for change its behavior. For example, todo CLI application which has add (Add new task), list (List all tasks) and delete(Delete a task) command.
$ todo add 'Buy a milk'
│ │ │
│ │ `---------- Arguments
│ │
│ `----------------- Command
│
`---------------------- Executable
To generate above CLI application with mitchellh/cli framework,
$ cd $GOPATH/src/github.com/YOUR_NAME
$ gcli new -F mitchellh_cli -c add -c list -c delete todo
Created todo/main.go
Created todo/command/meta.go
Created todo/cli.go
Created todo/CHANGELOG.md
Created todo/version.go
Created todo/commands.go
Created todo/command/add.go
Created todo/command/list.go
Created todo/command/delete.go
Created todo/README.md
Created todo/command/add_test.go
Created todo/command/list_test.go
Created todo/command/delete_test.go
====> Successfully generated todo
gcli
supports the following packages for the command pattern:
go
command)To install, use go get
and make install
. We tag versions so feel free to checkout that tag and compile.
$ go get -d github.com/tcnksm/gcli
$ cd $GOPATH/src/github.com/tcnksm/gcli
$ make install
make test
command and confirm that it passesgofmt -s
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.