GithubHelp home page GithubHelp logo

kubernetes-sigs / kui Goto Github PK

View Code? Open in Web Editor NEW
2.7K 38.0 181.0 89.93 MB

A hybrid command-line/UI development experience for cloud-native development

License: Apache License 2.0

JavaScript 2.04% Shell 1.76% CSS 1.09% TypeScript 85.59% HTML 0.01% Dockerfile 0.17% Go 0.26% Makefile 0.02% SCSS 8.98% EJS 0.08% Vim Script 0.01%
cli ui visualization kubernetes electron kubectl plugin dashboard visualizations

kui's Introduction

GitHub Stars GitHub Forks ts Electron License test

Blogs | PDF Summary | Installation | API | Custom Graphical CLIs

Kui: a Framework for Enhancing CLIs with Graphics

We love CLIs, and think they are critical for interacting in a flexible way with the cloud. We need the power to go off the rails. But ASCII is tedious.

Kui takes your normal kubectl command line requests and responds with graphics. Instead of ASCII tables, you are presented with sortable ones. Instead of copying and pasting long auto-generated resource names, in Kui you just click.

Kui is also fast. It launches in seconds, and can process kubectl commands 2-3 times faster than kubectl itself.

Help us make Kubernetes tools better by filling out a quick 2 minute survey on your tool preferences. Thanks!

We offer prebuilt images optimized for an enhanced Kubernetes CLI experience.

MacOS (Intel and Apple Silicon)

brew install kui
kubectl kui get pods
open /Applications/Kui.app

Windows and Linux

Download and unzip, then add the unzipped directory to your PATH. Now use kubectl kui or launch the Kui executable to use Kui's built-in REPL.

Windows Warning: Please use forward slashes for filepaths, e.g. c:/users, not c:\users.

I don't trust the prebuilts

We hear you. Choose your platform (e.g. mac:amd64), execute the following, then look in ./dist/electron.

git clone [email protected]:kubernetes-sigs/kui.git && cd kui && npm ci && \
    npm run build:electron:mac:amd64

Kui is a framework for adding graphics to CLIs. Kui allows for either a hosted client-server architecture, or the distribution of double-clickable applications (via Electron).

Using the Kui framework, you can design your own Kubernetes enhancements, set a custom theme or custom icon, and enhance the commands of your favorite CLI. Check out the template repo. If your enhancements would be generally valuable, please PR them back here, e.g. awesome Kubernetes enhancements can be integrated with the core Kubernetes plugin.

Code of Conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

kui's People

Contributors

abdonrd avatar algebrot avatar atinsood avatar avhhh avatar dependabot[bot] avatar hanqiuzh avatar imgbotapp avatar jayonlau avatar jesusprubio avatar joshuaauerbachwatson avatar justaugustus avatar kant avatar louisstamour avatar mra-ruiz avatar myan9 avatar nirvana-flame avatar paulcastro avatar rjsadow avatar ruanxianzhi avatar rvennam avatar starpit avatar ujibang avatar xmudrii avatar ydarias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kui's Issues

error in npm install

The error should be in ./app/plugins/modules/field-installed-plugins/src/lib/cmds/install.ts
screen shot 2018-12-10 at 2 04 46 pm

error during npm run webpack

At commit 847481d, on a clean install, somewhere in the logs while running npm run webpack:

ERROR in ./app/plugins/modules/grid/plugin/lib/util.js
Module not found: Error: Can't resolve '../../../composer/lib/composer' in '/Users/rabbah/projects/kui/app/plugins/modules/grid/plugin/lib'
 @ ./app/plugins/modules/grid/plugin/lib/util.js 103:21-62
 @ ./app/plugins sync ^\.\/.*$
 @ ./app/build/core/plugins.js
 @ ./app/build/webapp/bootstrap/boot.js
 @ ./app/build/webapp/bootstrap/webpack.js

ERROR in ./app/plugins/modules/apache-composer/@demos/combinators/async.js
Module not found: Error: Can't resolve 'openwhisk-composer/plugins/cloudant' in '/Users/rabbah/projects/kui/app/plugins/modules/apache-composer/@demos/combinators'
 @ ./app/plugins/modules/apache-composer/@demos/combinators/async.js 2:17-63
 @ ./app/plugins sync ^\.\/.*$
 @ ./app/build/core/plugins.js
 @ ./app/build/webapp/bootstrap/boot.js
 @ ./app/build/webapp/bootstrap/webpack.js

ERROR in ./app/plugins/modules/apache-composer/@demos/combinators/http.js
Module not found: Error: Can't resolve 'openwhisk-composer/plugins/http' in '/Users/rabbah/projects/kui/app/plugins/modules/apache-composer/@demos/combinators'
 @ ./app/plugins/modules/apache-composer/@demos/combinators/http.js 2:13-55
 @ ./app/plugins sync ^\.\/.*$
 @ ./app/build/core/plugins.js
 @ ./app/build/webapp/bootstrap/boot.js
 @ ./app/build/webapp/bootstrap/webpack.js

openwhisk command usage bugs

This command is wrong with insufficient arguments, but the error message is weird. We should provide clearer usage helper message.

screen shot 2018-12-04 at 2 16 26 pm

add support for session list --scan-limit

The current feature we have: session list --limit N
Behavior: We search and list at most N sessions in 20 activations.

We want to offer users a new feature: session list --scan-limit N.
Try our best to search and list N sessions (can't guarantee ).

Investigate the OpenwhiskError in app invoke

The following error log appears everywhere with app invoke but the invocation result is fine.

kui/app/plugins/modules/openwhisk/plugin/lib/cmds/openwhisk-core.js 512:20

 TypeError: Cannot read property 'name' of undefined
    at Object.invoke (/Users/mengting.yan1ibm.com/Documents/GitHub/kui/app/plugins/modules/openwhisk/plugin/lib/cmds/openwhisk-core.js:912:65)
    at entity (/Users/mengting.yan1ibm.com/Documents/GitHub/kui/app/plugins/modules/openwhisk/plugin/lib/cmds/openwhisk-core.js:509:51)
    at process._tickCallback (internal/process/next_tick.js:68:7)

https://travis-ci.com/IBM/kui/jobs/162066066#L2903

reverse i search issues

when the sidecar is open, the reverse-i-search input only gets half of the remaining width

we also should figure out the linux and windows keyboard shortcut story; ctrl+r reloads electron (and the browser) on those platforms

k8s related error during npm install

Updated to 847481d and with a clean install, I see this error:

Setting up modules true

> [email protected] postinstall /Users/rabbah/projects/kui/app/plugins/modules/k8s
> ../../../../node_modules/.bin/tsc

src/test/k8s/create-pod.ts:23:32 - error TS2345: Argument of type '{ noOpenWhisk: boolean; }' is not assignable to parameter of type 'IBeforeOptions'.
  Object literal may only specify known properties, and 'noOpenWhisk' does not exist in type 'IBeforeOptions'.

23   before(common.before(this, { noOpenWhisk: true }))
                                  ~~~~~~~~~~~~~~~~~

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] postinstall: `../../../../node_modules/.bin/tsc`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/rabbah/.npm/_logs/2018-12-01T14_22_13_073Z-debug.log

support app lang js

Add support for the following command:

command: app lang js
usage: convert javascript source code to composition AST

improve webpack-local devex

there are a few path issues with the webpack-local env; also, let's add http-server to the devDeps of the webpack packager directory

the order of app list result is different in Electron and Headless

It seems like in Electron mode, app list gets sorted by alphabetic order, but in Headless mode, app list is in correct time order. The weird thing is that the code of app list command handler didn't differentiate Headless and Electron. I set debug('apps', apps) after let apps = actions.filter(astUtil.isAnApp), and the order of resulted apps is different in Electron and Headless.

Code Reference:
https://github.com/IBM/kui/blob/master/app/plugins/modules/apache-composer/src/lib/controller/commands.ts#L180-#L194

app list in Electron:
screen shot 2018-12-06 at 10 46 43 am

app list in Headless:
screen shot 2018-12-06 at 10 53 22 am

error logged during npm install

During npm install, I noticed the following errors.

src/lib/cmds/edit-amd.ts:42:52 - error TS2307: Cannot find module '../../../../apache-composer/plugin/lib/utility/compile'.

42 import { compileSource, sourceToComposition } from '../../../../apache-composer/plugin/lib/utility/compile'
                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] postinstall: `../../../../node_modules/.bin/tsc`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/rabbah/.npm/_logs/2018-11-29T20_18_19_578Z-debug.log
src/test/composer1/wskflow_tests.ts:200:43 - error TS2345: Argument of type '() => Client<boolean>' is not assignable to parameter of type '() => boolean | Promise<boolean> | (Client<RawResult<any>> & RawResult<any>)'.
  Type 'Client<boolean>' is not assignable to type 'boolean | Promise<boolean> | (Client<RawResult<any>> & RawResult<any>)'.
    Type 'Client<boolean>' is not assignable to type 'Client<RawResult<any>> & RawResult<any>'.
      Type 'Client<boolean>' is not assignable to type 'Client<RawResult<any>>'.
        Type 'boolean' is not assignable to type 'RawResult<any>'.

200     .then(() => this.app.client.waitUntil(() => {
                                              ~~~~~~~

src/test/composer1/zzz-bottom-bar-back-button.ts:69:21 - error TS2531: Object is possibly 'null'.

69       .then(path => path.substring(path.lastIndexOf('/') + 1))
                       ~~~~

src/test/composer1/zzz-bottom-bar-back-button.ts:69:36 - error TS2531: Object is possibly 'null'.

69       .then(path => path.substring(path.lastIndexOf('/') + 1))
                                      ~~~~

src/test/composer1/zzz-bottom-bar-back-button.ts:83:21 - error TS2531: Object is possibly 'null'.

83       .then(path => path.substring(path.lastIndexOf('/') + 1))
                       ~~~~

src/test/composer1/zzz-bottom-bar-back-button.ts:83:36 - error TS2531: Object is possibly 'null'.

83       .then(path => path.substring(path.lastIndexOf('/') + 1))
                                      ~~~~

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @shell/[email protected] postinstall: `../../../../node_modules/.bin/tsc`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the @shell/[email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/rabbah/.npm/_logs/2018-11-29T20_18_19_723Z-debug.log
src/lib/flowCommand.ts:23:26 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/ast'.

23 import * as astUtil from '../../../apache-composer/plugin/lib/utility/ast'
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/lib/preview.ts:34:25 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/badges'.

34 import * as badges from '../../../apache-composer/plugin/lib/utility/badges'
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/lib/preview.ts:35:27 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/messages'.

35 import * as messages from '../../../apache-composer/plugin/lib/utility/messages'  // TODO: import from plugin js file
                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/lib/preview.ts:38:30 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/compile'.

38 import * as compileUtil from '../../../apache-composer/plugin/lib/utility/compile'
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/lib/util.ts:18:26 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/ast'.

18 import * as astUtil from '../../../apache-composer/plugin/lib/utility/ast'
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/lib/util.ts:19:25 - error TS2307: Cannot find module '../../../apache-composer/plugin/lib/utility/badges'.

19 import * as badges from '../../../apache-composer/plugin/lib/utility/badges'
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @shell/[email protected] postinstall: `../../../../node_modules/.bin/tsc && rm -rf node_modules/jquery/src && rm -f node_modules/jquery/external/sizzle/dist/sizzle.js && rm -f node_modules/jquery/dist/core.js && mv -f node_modules/jquery/dist/jquery.min.js node_modules/jquery/dist/jquery.js && rm -f node_modules/jquery/dist/jquery.slim* && mv -f node_modules/jquery/dist/jquery.min.map node_modules/jquery/dist/jquery.map && rm -rf node_modules/d3/src && mv node_modules/d3/d3.min.js node_modules/d3/d3.js && rm -f node_modules/elkjs/lib/elk-worker.js node_modules/elkjs/lib/elk.bundled.js`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the @shell/[email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/rabbah/.npm/_logs/2018-11-29T20_18_20_166Z-debug.log
npm WARN [email protected] No repository field.

added 93 packages in 30.775s

...

> [email protected] compile /Users/rabbah/projects/kui/app
> if [ -d ../dist ]; then cd ../dist/bin && ./compile.js; fi

  ✓ plugin	apache-composer
  ✓ preload	apache-composer
  ✓ plugin	bash-like
  ✓ plugin	core-support
  ✓ preload	core-support
  ✓ plugin	editor
  ✓ preload	editor
  ✓ plugin	field-installed-plugins
  ✓ plugin	grid
  ✓ plugin	k8s
  ✓ plugin	openwhisk
  ✓ plugin	openwhisk-debug
  ✓ plugin	tutorials
  ✓ preload	tutorials
  ✓ plugin	wskflow
commencing seticon
Using appName=Kui and appIcon=../app/content/icons/png/kui.png

done
added 210 packages in 41.676s
added 291 packages in 56.672s

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.