chore(commands): more commands for suggestions (#10)
## What's new - color completion message command green https://github.com/versenilvis/IRIS/pull/10/commits/6e141f5e6909fad1ec42725cce38d51729acf399 - new flat command folder structure https://github.com/versenilvis/IRIS/pull/10/commits/87026a854a529ec5d5baed967d5f7a7f0085a24b - fix some linter problems https://github.com/versenilvis/IRIS/pull/10/commits/536de790cefda912f50bf4022e40ce2b965db2e2 - fix some gemini fix suggestions
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
package js
|
||||
|
||||
import (
|
||||
"github.com/versenilvis/iris/commands/core"
|
||||
)
|
||||
|
||||
func init() {
|
||||
core.Register(&core.Spec{
|
||||
Name: "bun",
|
||||
Description: "bun js runtime",
|
||||
Subcommands: []core.Subcommand{
|
||||
{Name: "install", Description: "install packages", Options: []core.Option{
|
||||
{Name: "--frozen-lockfile", Description: "no lockfile update"},
|
||||
{Name: "--production", Description: "production only"},
|
||||
{Name: "--no-save", Description: "don't update package.json"},
|
||||
{Name: "--dry-run", Description: "print what would be installed"},
|
||||
}},
|
||||
{Name: "add", Description: "add package", Options: []core.Option{
|
||||
{Name: "-d", Description: "dev dependency"},
|
||||
{Name: "--dev", Description: "dev dependency (long form)"},
|
||||
{Name: "--optional", Description: "optional dependency"},
|
||||
{Name: "--peer", Description: "peer dependency"},
|
||||
{Name: "-g", Description: "global"},
|
||||
{Name: "--exact", Description: "exact version"},
|
||||
{Name: "--no-save", Description: "don't update package.json"},
|
||||
}},
|
||||
{Name: "remove", Description: "remove package", Options: []core.Option{
|
||||
{Name: "-g", Description: "remove global package"},
|
||||
}},
|
||||
{Name: "run", Description: "run script", Generator: NpmScriptGenerator, Options: []core.Option{
|
||||
{Name: "--silent", Description: "suppress output"},
|
||||
{Name: "--bun", Description: "force bun runtime"},
|
||||
{Name: "--watch", Description: "watch mode"},
|
||||
{Name: "--hot", Description: "hot reload"},
|
||||
{Name: "--smol", Description: "reduce memory usage"},
|
||||
}},
|
||||
{Name: "build", Description: "bundle files", Generator: core.FileGenerator(".ts", ".tsx", ".js", ".jsx"), Options: []core.Option{
|
||||
{Name: "--outdir", Description: "output directory"},
|
||||
{Name: "--outfile", Description: "output file"},
|
||||
{Name: "--minify", Description: "enable all minification"},
|
||||
{Name: "--minify-syntax", Description: "minify syntax only"},
|
||||
{Name: "--minify-whitespace", Description: "minify whitespace only"},
|
||||
{Name: "--minify-identifiers", Description: "minify identifiers only"},
|
||||
{Name: "--sourcemap", Description: "generate sourcemap (none/inline/external)"},
|
||||
{Name: "--target", Description: "target environment (browser/bun/node)"},
|
||||
{Name: "--format", Description: "output format (esm/cjs/iife)"},
|
||||
{Name: "--splitting", Description: "enable code splitting"},
|
||||
{Name: "--entry-naming", Description: "entry file naming pattern"},
|
||||
{Name: "--chunk-naming", Description: "chunk file naming pattern"},
|
||||
{Name: "--asset-naming", Description: "asset file naming pattern"},
|
||||
{Name: "--watch", Description: "watch mode"},
|
||||
{Name: "--external", Description: "mark package as external"},
|
||||
{Name: "--define", Description: "replace global identifiers"},
|
||||
{Name: "--loader", Description: "set file loader"},
|
||||
{Name: "--public-path", Description: "prefix for public assets"},
|
||||
}},
|
||||
{Name: "test", Description: "run tests", Options: []core.Option{
|
||||
{Name: "--watch", Description: "watch mode"},
|
||||
{Name: "-t", Description: "filter by test name"},
|
||||
{Name: "--coverage", Description: "collect coverage"},
|
||||
{Name: "--bail", Description: "stop after first failure"},
|
||||
{Name: "--timeout", Description: "test timeout in ms"},
|
||||
{Name: "--rerun-each", Description: "rerun each test n times"},
|
||||
{Name: "--only", Description: "run test.only tests"},
|
||||
{Name: "--todo", Description: "show todo tests"},
|
||||
{Name: "--reporter", Description: "test reporter (default/junit/tap)"},
|
||||
}},
|
||||
{Name: "x", Description: "execute package (bunx)", Options: []core.Option{
|
||||
{Name: "--bun", Description: "force bun runtime"},
|
||||
{Name: "--silent", Description: "suppress output"},
|
||||
}},
|
||||
{Name: "outdated", Description: "check outdated packages"},
|
||||
{Name: "patch", Description: "patch a package", Options: []core.Option{
|
||||
{Name: "--commit", Description: "commit the patch"},
|
||||
}},
|
||||
{Name: "publish", Description: "publish package to npm", Options: []core.Option{
|
||||
{Name: "--dry-run", Description: "simulate publish"},
|
||||
{Name: "--tag", Description: "dist-tag"},
|
||||
{Name: "--access", Description: "public or restricted"},
|
||||
}},
|
||||
{Name: "init", Description: "create new project", Options: []core.Option{
|
||||
{Name: "-y", Description: "skip prompts"},
|
||||
}},
|
||||
{Name: "create", Description: "create from template"},
|
||||
{Name: "repl", Description: "launch bun repl"},
|
||||
{Name: "upgrade", Description: "upgrade bun"},
|
||||
{Name: "link", Description: "link package"},
|
||||
{Name: "unlink", Description: "unlink package"},
|
||||
{Name: "pm", Description: "package manager helpers", Subcommands: []core.Subcommand{
|
||||
{Name: "cache", Description: "show cache path"},
|
||||
{Name: "ls", Description: "list packages"},
|
||||
{Name: "hash", Description: "print lockfile hash"},
|
||||
{Name: "hash-print", Description: "print resolved lockfile hash"},
|
||||
{Name: "trust", Description: "trust package scripts"},
|
||||
{Name: "untrusted", Description: "show untrusted packages"},
|
||||
}},
|
||||
},
|
||||
Options: []core.Option{
|
||||
{Name: "--watch", Description: "watch for changes"},
|
||||
{Name: "--hot", Description: "hot module reload"},
|
||||
{Name: "--smol", Description: "reduce memory usage"},
|
||||
{Name: "--silent", Description: "suppress output"},
|
||||
{Name: "--bun", Description: "force bun runtime"},
|
||||
{Name: "--version", Description: "print version"},
|
||||
},
|
||||
})
|
||||
|
||||
core.Register(&core.Spec{
|
||||
Name: "bunx",
|
||||
Description: "execute package (bun x)",
|
||||
Options: []core.Option{
|
||||
{Name: "--bun", Description: "force bun runtime"},
|
||||
{Name: "--silent", Description: "suppress output"},
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package js
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/versenilvis/iris/commands/core"
|
||||
)
|
||||
|
||||
func NpmScriptGenerator(tokens []string, _ string, _ string) []core.Suggestion {
|
||||
cwd := core.GetCWD()
|
||||
data, err := os.ReadFile(filepath.Join(cwd, "package.json"))
|
||||
if err != nil {
|
||||
return []core.Suggestion{
|
||||
{Cmd: "dev", Desc: "development server"},
|
||||
{Cmd: "build", Desc: "build for production"},
|
||||
{Cmd: "start", Desc: "start application"},
|
||||
{Cmd: "test", Desc: "run test suite"},
|
||||
{Cmd: "lint", Desc: "run linter"},
|
||||
}
|
||||
}
|
||||
|
||||
var pkg struct {
|
||||
Scripts map[string]string `json:"scripts"`
|
||||
}
|
||||
if err := json.Unmarshal(data, &pkg); err != nil || len(pkg.Scripts) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
priority := []string{"dev", "start", "build", "test", "lint", "preview", "typecheck", "format"}
|
||||
seen := make(map[string]bool)
|
||||
var results []core.Suggestion
|
||||
|
||||
for _, name := range priority {
|
||||
if cmd, ok := pkg.Scripts[name]; ok {
|
||||
results = append(results, core.Suggestion{Cmd: name, Desc: cmd})
|
||||
seen[name] = true
|
||||
}
|
||||
}
|
||||
|
||||
for name, cmd := range pkg.Scripts {
|
||||
if !seen[name] {
|
||||
results = append(results, core.Suggestion{Cmd: name, Desc: cmd})
|
||||
}
|
||||
}
|
||||
|
||||
return results
|
||||
}
|
||||
|
||||
func init() {
|
||||
core.Register(&core.Spec{
|
||||
Name: "npm",
|
||||
Description: "node packages",
|
||||
Subcommands: []core.Subcommand{
|
||||
{Name: "install", Description: "install packages", Options: []core.Option{
|
||||
{Name: "--save-dev", Description: "save as devDependency"},
|
||||
{Name: "--save-exact", Description: "exact version"},
|
||||
{Name: "--legacy-peer-deps", Description: "skip peer deps"},
|
||||
}},
|
||||
{Name: "run", Description: "run script", Generator: NpmScriptGenerator},
|
||||
{Name: "test", Description: "run tests"},
|
||||
{Name: "init", Description: "create package.json", Options: []core.Option{
|
||||
{Name: "-y", Description: "skip prompts"},
|
||||
}},
|
||||
{Name: "publish", Description: "publish package"},
|
||||
{Name: "update", Description: "update packages"},
|
||||
{Name: "uninstall", Description: "remove package"},
|
||||
{Name: "ls", Description: "list installed"},
|
||||
{Name: "audit", Description: "security audit", Options: []core.Option{
|
||||
{Name: "fix", Description: "auto fix"},
|
||||
}},
|
||||
{Name: "ci", Description: "clean install from lockfile"},
|
||||
{Name: "pack", Description: "create tarball"},
|
||||
{Name: "link", Description: "symlink package"},
|
||||
{Name: "cache", Description: "manage cache", Subcommands: []core.Subcommand{
|
||||
{Name: "clean", Description: "clear cache"},
|
||||
{Name: "verify", Description: "verify cache"},
|
||||
}},
|
||||
},
|
||||
Options: []core.Option{
|
||||
{Name: "--prefix", Description: "set working directory"},
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package js
|
||||
|
||||
import (
|
||||
"github.com/versenilvis/iris/commands/core"
|
||||
)
|
||||
|
||||
func init() {
|
||||
core.Register(&core.Spec{
|
||||
Name: "pnpm",
|
||||
Description: "fast node packages",
|
||||
Subcommands: []core.Subcommand{
|
||||
{Name: "install", Description: "install packages", Options: []core.Option{
|
||||
{Name: "--frozen-lockfile", Description: "no lockfile update"},
|
||||
{Name: "--prod", Description: "production only"},
|
||||
}},
|
||||
{Name: "add", Description: "add package", Options: []core.Option{
|
||||
{Name: "-D", Description: "save as devDependency"},
|
||||
{Name: "-g", Description: "install globally"},
|
||||
{Name: "-E", Description: "exact version"},
|
||||
}},
|
||||
{Name: "remove", Description: "remove package"},
|
||||
{Name: "run", Description: "run script", Generator: NpmScriptGenerator},
|
||||
{Name: "build", Description: "build project"},
|
||||
{Name: "dev", Description: "start dev server"},
|
||||
{Name: "test", Description: "run tests"},
|
||||
{Name: "update", Description: "update packages", Options: []core.Option{
|
||||
{Name: "--latest", Description: "update to latest"},
|
||||
{Name: "-i", Description: "interactive"},
|
||||
}},
|
||||
{Name: "store", Description: "manage store", Subcommands: []core.Subcommand{
|
||||
{Name: "prune", Description: "remove unreferenced"},
|
||||
{Name: "status", Description: "check store"},
|
||||
{Name: "path", Description: "print store path"},
|
||||
}},
|
||||
{Name: "exec", Description: "exec shell command"},
|
||||
{Name: "dlx", Description: "fetch and run package"},
|
||||
{Name: "ls", Description: "list packages"},
|
||||
{Name: "audit", Description: "security audit"},
|
||||
{Name: "patch", Description: "patch package"},
|
||||
{Name: "init", Description: "create package.json"},
|
||||
{Name: "publish", Description: "publish package"},
|
||||
},
|
||||
Options: []core.Option{
|
||||
{Name: "--filter", Description: "filter by package"},
|
||||
{Name: "-r", Description: "recursive"},
|
||||
{Name: "--workspace-root", Description: "run in workspace root"},
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package js
|
||||
|
||||
import (
|
||||
"github.com/versenilvis/iris/commands/core"
|
||||
)
|
||||
|
||||
func init() {
|
||||
core.Register(&core.Spec{
|
||||
Name: "yarn",
|
||||
Description: "yarn package manager",
|
||||
Subcommands: []core.Subcommand{
|
||||
{Name: "install", Description: "install packages", Options: []core.Option{
|
||||
{Name: "--frozen-lockfile", Description: "error on lockfile change"},
|
||||
{Name: "--production", Description: "production only"},
|
||||
}},
|
||||
{Name: "add", Description: "add package", Options: []core.Option{
|
||||
{Name: "-D", Description: "dev dependency"},
|
||||
{Name: "-P", Description: "peer dependency"},
|
||||
{Name: "-E", Description: "exact version"},
|
||||
{Name: "-g", Description: "global"},
|
||||
}},
|
||||
{Name: "remove", Description: "remove package"},
|
||||
{Name: "run", Description: "run script", Generator: NpmScriptGenerator},
|
||||
{Name: "build", Description: "build project"},
|
||||
{Name: "dev", Description: "start dev server"},
|
||||
{Name: "test", Description: "run tests"},
|
||||
{Name: "upgrade", Description: "upgrade packages", Options: []core.Option{
|
||||
{Name: "--latest", Description: "upgrade to latest"},
|
||||
{Name: "-i", Description: "interactive"},
|
||||
}},
|
||||
{Name: "workspace", Description: "run command in workspace"},
|
||||
{Name: "workspaces", Description: "list workspaces", Subcommands: []core.Subcommand{
|
||||
{Name: "info", Description: "workspace info"},
|
||||
{Name: "run", Description: "run in all workspaces"},
|
||||
}},
|
||||
{Name: "link", Description: "symlink package"},
|
||||
{Name: "unlink", Description: "unlink package"},
|
||||
{Name: "audit", Description: "security audit"},
|
||||
{Name: "cache", Description: "manage cache", Subcommands: []core.Subcommand{
|
||||
{Name: "clean", Description: "clear cache"},
|
||||
{Name: "list", Description: "list cache"},
|
||||
{Name: "dir", Description: "print cache dir"},
|
||||
}},
|
||||
{Name: "init", Description: "create package.json", Options: []core.Option{
|
||||
{Name: "-2", Description: "berry (v2+)"},
|
||||
}},
|
||||
{Name: "publish", Description: "publish package"},
|
||||
{Name: "info", Description: "show package info"},
|
||||
},
|
||||
Options: []core.Option{
|
||||
{Name: "--cwd", Description: "working directory"},
|
||||
{Name: "--verbose", Description: "verbose output"},
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user