feat(commands): refactor and add more commands
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -41,6 +41,7 @@ func init() {
|
|||||||
{
|
{
|
||||||
Name: "add",
|
Name: "add",
|
||||||
Description: "stage changes",
|
Description: "stage changes",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
Options: []core.Option{
|
Options: []core.Option{
|
||||||
{Name: "-A", Description: "add all files"},
|
{Name: "-A", Description: "add all files"},
|
||||||
{Name: "-p", Description: "interactive patch"},
|
{Name: "-p", Description: "interactive patch"},
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
package dev
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
globalBuildOptions := []core.Option{
|
||||||
|
{Name: "-v", Description: "print package names"},
|
||||||
|
{Name: "-n", Description: "print commands but do not run"},
|
||||||
|
{Name: "-x", Description: "print commands as they run"},
|
||||||
|
{Name: "-race", Description: "enable data race detection"},
|
||||||
|
{Name: "-tags", Description: "comma-separated build tags"},
|
||||||
|
{Name: "-ldflags", Description: "arguments to pass to linker"},
|
||||||
|
{Name: "-gcflags", Description: "arguments to pass to compiler"},
|
||||||
|
{Name: "-asmflags", Description: "arguments to pass to assembler"},
|
||||||
|
{Name: "-compiler", Description: "name of compiler to use (gccgo or gc)"},
|
||||||
|
{Name: "-work", Description: "print temporary work directory"},
|
||||||
|
{Name: "-mod", Description: "module download mode (readonly, vendor, or mod)"},
|
||||||
|
{Name: "-trimpath", Description: "remove file system paths from executable"},
|
||||||
|
{Name: "-p", Description: "number of programs to run in parallel"},
|
||||||
|
{Name: "-a", Description: "force rebuilding of up-to-date packages"},
|
||||||
|
}
|
||||||
|
|
||||||
|
buildModeSubcommands := []core.Subcommand{
|
||||||
|
{Name: "archive", Description: "build non-main packages into .a files"},
|
||||||
|
{Name: "c-archive", Description: "build main package into C archive"},
|
||||||
|
{Name: "c-shared", Description: "build main package into C shared library"},
|
||||||
|
{Name: "exe", Description: "build main packages into executables"},
|
||||||
|
{Name: "pie", Description: "build position independent executables"},
|
||||||
|
{Name: "plugin", Description: "build main packages into Go plugin"},
|
||||||
|
{Name: "shared", Description: "combine packages into single shared library"},
|
||||||
|
}
|
||||||
|
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "go",
|
||||||
|
Description: "tool for managing Go source code",
|
||||||
|
Subcommands: []core.Subcommand{
|
||||||
|
{
|
||||||
|
Name: "build",
|
||||||
|
Description: "compile packages and dependencies",
|
||||||
|
Generator: core.FileGenerator(".go"),
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: ".", Description: "current package"},
|
||||||
|
core.Option{Name: "./...", Description: "all packages"},
|
||||||
|
core.Option{Name: "-o", Description: "output file or directory"},
|
||||||
|
core.Option{Name: "-i", Description: "install dependency packages"},
|
||||||
|
core.Option{Name: "-buildmode", Description: "build mode to use"},
|
||||||
|
),
|
||||||
|
Subcommands: buildModeSubcommands,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "run",
|
||||||
|
Description: "compile and run Go program",
|
||||||
|
Generator: core.FileGenerator(".go"),
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: ".", Description: "current package"},
|
||||||
|
core.Option{Name: "-exec", Description: "invoke binary using xprog"},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "test",
|
||||||
|
Description: "test packages",
|
||||||
|
Generator: core.FileGenerator(".go"),
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: ".", Description: "current package"},
|
||||||
|
core.Option{Name: "./...", Description: "all packages"},
|
||||||
|
core.Option{Name: "-c", Description: "compile test binary but do not run"},
|
||||||
|
core.Option{Name: "-i", Description: "install test dependencies"},
|
||||||
|
core.Option{Name: "-json", Description: "convert output to JSON"},
|
||||||
|
core.Option{Name: "-bench", Description: "run benchmarks"},
|
||||||
|
core.Option{Name: "-run", Description: "run specific test regex"},
|
||||||
|
core.Option{Name: "-cover", Description: "enable coverage report"},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "mod",
|
||||||
|
Description: "module maintenance",
|
||||||
|
Subcommands: []core.Subcommand{
|
||||||
|
{Name: "init", Description: "initialize new module"},
|
||||||
|
{Name: "tidy", Description: "add missing and remove unused modules"},
|
||||||
|
{Name: "download", Description: "download modules to local cache"},
|
||||||
|
{Name: "vendor", Description: "make vendored copy of dependencies"},
|
||||||
|
{Name: "edit", Description: "edit go.mod from tools or scripts"},
|
||||||
|
{Name: "graph", Description: "print module requirement graph"},
|
||||||
|
{Name: "verify", Description: "verify dependencies have expected content"},
|
||||||
|
{Name: "why", Description: "explain why packages or modules are needed"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "get",
|
||||||
|
Description: "add dependencies to current module and install them",
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: "-u", Description: "update to newer minor/patch releases"},
|
||||||
|
core.Option{Name: "-t", Description: "download modules needed for tests"},
|
||||||
|
core.Option{Name: "-d", Description: "only download, do not install"},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "install",
|
||||||
|
Description: "compile and install packages and dependencies",
|
||||||
|
Options: globalBuildOptions,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "list",
|
||||||
|
Description: "list packages or modules",
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: "-m", Description: "list modules instead of packages"},
|
||||||
|
core.Option{Name: "-u", Description: "add upgrade information"},
|
||||||
|
core.Option{Name: "-json", Description: "print in JSON format"},
|
||||||
|
core.Option{Name: "-f", Description: "specify alternate format"},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "fmt",
|
||||||
|
Description: "gofmt (reformat) package sources",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-n", Description: "print commands that would be executed"},
|
||||||
|
{Name: "-x", Description: "print commands as they are executed"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "vet",
|
||||||
|
Description: "report likely mistakes in packages",
|
||||||
|
Options: globalBuildOptions,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "env",
|
||||||
|
Description: "print Go environment information",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-json", Description: "print environment in JSON format"},
|
||||||
|
{Name: "-u", Description: "unset named environment variables"},
|
||||||
|
{Name: "-w", Description: "change default settings of environment variables"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "version",
|
||||||
|
Description: "print Go version",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-m", Description: "print embedded module version info"},
|
||||||
|
{Name: "-v", Description: "report unrecognized files"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "clean",
|
||||||
|
Description: "remove object files and cached files",
|
||||||
|
Options: append(globalBuildOptions,
|
||||||
|
core.Option{Name: "-i", Description: "remove installed archive or binary"},
|
||||||
|
core.Option{Name: "-cache", Description: "remove entire go build cache"},
|
||||||
|
core.Option{Name: "-modcache", Description: "remove entire module cache"},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "tool",
|
||||||
|
Description: "run specified go tool",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-n", Description: "print command but do not execute"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "work",
|
||||||
|
Description: "workspace maintenance",
|
||||||
|
Subcommands: []core.Subcommand{
|
||||||
|
{Name: "init", Description: "initialize workspace file"},
|
||||||
|
{Name: "edit", Description: "edit go.work from tools or scripts"},
|
||||||
|
{Name: "sync", Description: "sync workspace build list to modules"},
|
||||||
|
{Name: "use", Description: "add modules to workspace file"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "doc",
|
||||||
|
Description: "show documentation for package or symbol",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-all", Description: "show all documentation"},
|
||||||
|
{Name: "-cmd", Description: "treat package main like regular package"},
|
||||||
|
{Name: "-src", Description: "show full source code"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "bug",
|
||||||
|
Description: "start a bug report",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "fix",
|
||||||
|
Description: "update packages to use new APIs",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "generate",
|
||||||
|
Description: "generate Go files by processing source",
|
||||||
|
Options: globalBuildOptions,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package dev
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "cd",
|
||||||
|
Description: "change directory",
|
||||||
|
Generator: core.FileGenerator("/"), // Directory only
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "chmod",
|
||||||
|
Description: "change file permissions",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-R", Description: "recursive"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "chown",
|
||||||
|
Description: "change file owner",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-R", Description: "recursive"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "cp",
|
||||||
|
Description: "copy files and directories",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-r", Description: "recursive"},
|
||||||
|
{Name: "-a", Description: "archive mode"},
|
||||||
|
{Name: "-v", Description: "verbose"},
|
||||||
|
{Name: "-i", Description: "interactive"},
|
||||||
|
{Name: "-u", Description: "update (copy only if newer)"},
|
||||||
|
{Name: "-p", Description: "preserve attributes"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "ln",
|
||||||
|
Description: "create links",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-s", Description: "symbolic link"},
|
||||||
|
{Name: "-f", Description: "force"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "ls",
|
||||||
|
Description: "list directory contents",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-a", Description: "all files"},
|
||||||
|
{Name: "-l", Description: "long format"},
|
||||||
|
{Name: "-h", Description: "human readable"},
|
||||||
|
{Name: "-R", Description: "recursive"},
|
||||||
|
{Name: "-t", Description: "sort by time"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "mkdir",
|
||||||
|
Description: "make directories",
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-p", Description: "create parent dirs"},
|
||||||
|
{Name: "-v", Description: "verbose"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "mv",
|
||||||
|
Description: "move (rename) files",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-i", Description: "interactive"},
|
||||||
|
{Name: "-f", Description: "force (overwrite)"},
|
||||||
|
{Name: "-n", Description: "no clobber (don't overwrite)"},
|
||||||
|
{Name: "-v", Description: "verbose"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "rm",
|
||||||
|
Description: "remove files or directories",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-r", Description: "recursive"},
|
||||||
|
{Name: "-f", Description: "force"},
|
||||||
|
{Name: "-i", Description: "interactive"},
|
||||||
|
{Name: "-v", Description: "verbose"},
|
||||||
|
{Name: "-d", Description: "remove empty directories"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "touch",
|
||||||
|
Description: "create or update file timestamp",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package commands
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/versenilvis/iris/commands/core"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
core.Register(&core.Spec{
|
|
||||||
Name: "go",
|
|
||||||
Description: "go toolchain",
|
|
||||||
Subcommands: []core.Subcommand{
|
|
||||||
{
|
|
||||||
Name: "build",
|
|
||||||
Description: "compile packages",
|
|
||||||
Options: []core.Option{
|
|
||||||
{Name: "-o", Description: "output file"},
|
|
||||||
{Name: "-v", Description: "verbose"},
|
|
||||||
{Name: "-race", Description: "enable race detector"},
|
|
||||||
{Name: "-ldflags", Description: "linker flags"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "run",
|
|
||||||
Description: "compile and run",
|
|
||||||
Options: []core.Option{
|
|
||||||
{Name: "-race", Description: "enable race detector"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "test",
|
|
||||||
Description: "run tests",
|
|
||||||
Options: []core.Option{
|
|
||||||
{Name: "-v", Description: "verbose output"},
|
|
||||||
{Name: "-run", Description: "run specific test"},
|
|
||||||
{Name: "-bench", Description: "run benchmarks"},
|
|
||||||
{Name: "-cover", Description: "coverage report"},
|
|
||||||
{Name: "-count", Description: "run count times"},
|
|
||||||
{Name: "-race", Description: "enable race detector"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "mod",
|
|
||||||
Description: "module maintenance",
|
|
||||||
Subcommands: []core.Subcommand{
|
|
||||||
{Name: "init", Description: "initialize module"},
|
|
||||||
{Name: "tidy", Description: "clean up modules"},
|
|
||||||
{Name: "download", Description: "download modules"},
|
|
||||||
{Name: "vendor", Description: "make vendor copy"},
|
|
||||||
{Name: "edit", Description: "edit go.mod"},
|
|
||||||
{Name: "graph", Description: "print module graph"},
|
|
||||||
{Name: "verify", Description: "verify dependencies"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "get",
|
|
||||||
Description: "add dependency",
|
|
||||||
Options: []core.Option{
|
|
||||||
{Name: "-u", Description: "update module"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "fmt",
|
|
||||||
Description: "format source",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "vet",
|
|
||||||
Description: "examine code",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "install",
|
|
||||||
Description: "compile and install",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "generate",
|
|
||||||
Description: "run go generate",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "clean",
|
|
||||||
Description: "remove object files",
|
|
||||||
Options: []core.Option{
|
|
||||||
{Name: "-cache", Description: "clean build cache"},
|
|
||||||
{Name: "-testcache", Description: "clean test cache"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "env",
|
|
||||||
Description: "print go environment",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "doc",
|
|
||||||
Description: "show documentation",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "tool",
|
|
||||||
Description: "run go tool",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package info
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "du",
|
||||||
|
Description: "estimate file space usage",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-h", Description: "human readable"},
|
||||||
|
{Name: "-s", Description: "summarize"},
|
||||||
|
{Name: "-a", Description: "all files"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package info
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "file",
|
||||||
|
Description: "determine file type",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package info
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "stat",
|
||||||
|
Description: "display file status",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package info
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "wc",
|
||||||
|
Description: "word, line, character count",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-l", Description: "count lines"},
|
||||||
|
{Name: "-w", Description: "count words"},
|
||||||
|
{Name: "-c", Description: "count bytes"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package runner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@@ -13,7 +13,7 @@ func init() {
|
|||||||
core.Register(&core.Spec{
|
core.Register(&core.Spec{
|
||||||
Name: "just",
|
Name: "just",
|
||||||
Description: "command runner",
|
Description: "command runner",
|
||||||
Generator: func(tokens []string, prefix string) []core.Suggestion {
|
Generator: func(tokens []string, prefix string, partial string) []core.Suggestion {
|
||||||
file, err := os.Open("justfile")
|
file, err := os.Open("justfile")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// try uppercase
|
// try uppercase
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package commands
|
package runner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@@ -12,7 +12,7 @@ func init() {
|
|||||||
core.Register(&core.Spec{
|
core.Register(&core.Spec{
|
||||||
Name: "make",
|
Name: "make",
|
||||||
Description: "build automation",
|
Description: "build automation",
|
||||||
Generator: func(tokens []string, prefix string) []core.Suggestion {
|
Generator: func(tokens []string, prefix string, partial string) []core.Suggestion {
|
||||||
// Read the Makefile
|
// Read the Makefile
|
||||||
file, err := os.Open("Makefile")
|
file, err := os.Open("Makefile")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package search
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "find",
|
||||||
|
Description: "search for files",
|
||||||
|
Generator: core.FileGenerator("/"),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-name", Description: "match by name"},
|
||||||
|
{Name: "-type", Description: "match by type (f/d)"},
|
||||||
|
{Name: "-size", Description: "match by size"},
|
||||||
|
{Name: "-mtime", Description: "match by modified time"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package search
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "grep",
|
||||||
|
Description: "search text in files",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-r", Description: "recursive"},
|
||||||
|
{Name: "-i", Description: "ignore case"},
|
||||||
|
{Name: "-n", Description: "show line numbers"},
|
||||||
|
{Name: "-v", Description: "invert match"},
|
||||||
|
{Name: "-l", Description: "show filenames only"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package view
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "cat",
|
||||||
|
Description: "concatenate and print",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-n", Description: "number lines"},
|
||||||
|
{Name: "-b", Description: "number non-blank"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package view
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "head",
|
||||||
|
Description: "output first lines of file",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-n", Description: "number of lines"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package view
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "less",
|
||||||
|
Description: "view file contents (scrollable)",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package view
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/versenilvis/iris/commands/core"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.Register(&core.Spec{
|
||||||
|
Name: "tail",
|
||||||
|
Description: "output last lines of file",
|
||||||
|
Generator: core.FileGenerator(),
|
||||||
|
Options: []core.Option{
|
||||||
|
{Name: "-n", Description: "number of lines"},
|
||||||
|
{Name: "-f", Description: "follow (live updates)"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
+6
-1
@@ -14,7 +14,12 @@ import (
|
|||||||
|
|
||||||
"github.com/creack/pty"
|
"github.com/creack/pty"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
_ "github.com/versenilvis/iris/commands"
|
_ "github.com/versenilvis/iris/commands/dev"
|
||||||
|
_ "github.com/versenilvis/iris/commands/fs"
|
||||||
|
_ "github.com/versenilvis/iris/commands/info"
|
||||||
|
_ "github.com/versenilvis/iris/commands/runner"
|
||||||
|
_ "github.com/versenilvis/iris/commands/search"
|
||||||
|
_ "github.com/versenilvis/iris/commands/view"
|
||||||
"github.com/versenilvis/iris/commands/core"
|
"github.com/versenilvis/iris/commands/core"
|
||||||
"github.com/versenilvis/iris/integration"
|
"github.com/versenilvis/iris/integration"
|
||||||
"golang.org/x/term"
|
"golang.org/x/term"
|
||||||
|
|||||||
Reference in New Issue
Block a user