npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ismi-command

v0.0.13

Published

a fully functional of terminal ( Not allowed to be used in browsers)

Downloads

28

Readme

is mi command

This is a project for terminal interaction, serving the cil class

language

install

npm install   ismi-command  --save

use

import Command from 'ismi-command';

Command section

The comprehensive part is to put Args, selection, and question together

For specific usage, please refer to their own instructions section

Args section (get user start program params)

Args can obtain the parameters passed in by the user when starting the program

Analyzing user input parameters

will only start working after calling run, and all bind must be completed before run

Please note that the execution is sequential, and once the run operation is completed, the bind operation cannot be executed. If you insist on doing so, users may see strange information that was originally meant to remind you .

During the execution process, you can refer to the 'state' value to view. When the user is only referring to the version number or printing help, the 'state. code' will be 4, and 'state. overText' will be returned to indicate whether they are referring to the version number or printing help. It is not recommended to execute other commands when 'state. code' is 4. You can also print some other fun ones

  • commandName argName
  • commandName argName value
  • commandName argName optionName
  • commandName argName optionName value

Example:

If your command name is gig , You added parameters:

Please avoid abbreviations as much as possible hv

When you have multiple configuration items, you can use an array to group the configuration items that comply with the rules

  • Simplified example
    import { Args } from "ismi-command";
    const command: Args = new Args("ixxx");
    command.bind("init <-i> (Initialize configuration file)").run();
  • Simple configuration example
    import { Args } from "ismi-command";
    const command: Args = new Args("ixxx");
    command
      .bind({
        name: "init",
        abbr: "-i",
        info: "Initialize configuration file",
      })
      .run();
  • Example of carrying sub item configuration
import { Args } from "ismi-command";
const command: Args = new Args("ixxx");
command.bind({
  name: "init",
  abbr: "-i",
  info: "Initialize configuration file",
  options: [
    "ts <-t> (Initialize a `ts` configuration file)",
    "js <-j> (Initialize a `js` configuration file)",
    "json <-o> (Initialize a `json` configuration file)",
  ],
});
command.run(); // Users can use `gig init -o`
  • Example of carrying detailed configuration of sub items
import { Args } from "ismi-command";
const command: Args = new Args('ixxx');
command.bind({
  name: "init",
  abbr: "-i",
  info: "Initialize configuration file",
  options: [
    {
      name: "ts",
      abbr: "-t",
      info: "Initialize a `ts` configuration file",
    },
    {
      name: "js",
      abbr: "-j",
      info: "Initialize a `js` configuration file",
    },
    {
      name: "json",
      abbr: "-o",
      info: "Initialize a `json` configuration file",
    },
  ],
});
command.run(); // Users can use `gig init -o`
  • Strange behavior binding parameters:
import { Args } from 'ismi-command';
const command: Args = new Args('ixxx');
command.bind({
  'init <-i> (Initialize project)': [
    'ts  (Initialize a ts configuration file)',
    'js  (Initialize a js configuration file)',
    'json  (Initialize a json configuration file)',
  ],
  'create <-c> (Add a file)': [
    'ts  (add a ts  file)',
    'js  (add a js file)',
    'json  (add a  json file)',
  ],
});
command.run(); // Users can use `gig init ts`
  • Finally, you can use args to obtain the user's actual value input
    ... // other code

     /**
      *   Obtain processed user input parameters
      *
      *  This mode preserves user input as much as possible, but also discards some unrecognized inputs
      * */
    command.args;
    /**
     *  Obtain the Object form of the processed user input parameters
     *
     *  This mode is more suitable for configuring files
     *
     * **_In this mode, `subOptions` will overwrite the superior's `value`_**
     *
     * */
    command.args.$map;
    /**
     * For the convenience of obtaining ordered object pattern data
     *
     *  this has been added
     *
     */
    command.args.$arrMap
     /**
      *   Obtain a simple form of the processed user input parameters
      *
      *  This mode is suitable for simple commands, only checking if the command has
      * */
    command.args.$only;

      /**
   *
   *   Is it empty? Check if the user has not entered command parameters
   */
    command.args.$isVoid;
    /**
     *
     * User's original input parameters
     */
    command.args.$original;

Get current status

/**
 * is over ? you will get  a  boolean value
 *  although ,it over
 *  you can do other thing  if you want , you can get `state`  for what over
 *
 */
command.isEnd;
/**
 * If you have nothing else to do after
 *  the user uses the help document or
 * printed version information,
 *
 * you can use the `end`
 *
 */
command.isEnd.end;
command.state; //  state
command.state.code; // state code
command.state.overText; //    "version" | "help" | undefined;

Proactively using help documents

Now you can actively display help documents by calling the help method

Proactively calling, saying I hope you can use complete spelling instead of abbreviations

command.help();
command.help('init'); // Display init command
command.help('init', 'vue'); // Display vue command information under init

Proactively using version instructions

Now you can actively display version information by calling the version method

command.version();

question section (Q&A mode)

Question 'is a question and answer mode that can be used to ask users questions or make simple choices. After referencing this function, use it where needed _A function waiting for user input. Because it needs to wait, it is asynchronous, and when using it, wait` should be used_

Example

The simplest use :

import { question } from 'ismi-command';
const result = await question('What do you want for lunch');

Using custom configurations can provide users with a better experience.

import { question } from 'ismi-command';
const result = await question({
  text: 'What do you want for lunch',
  tip: 'Hamburg or Italian pasta',
  type: 'text',
});

You can also configure 'tip' as an array and configure Q&A as a simple selection.At this point, users can only choose from the values provided by 'tip' Only suitable for simple selection, such as' yes' or 'no' or 'male' or 'female' options with more words, it is recommended to use [selection] (# selection - section - selection mode -)

import { question } from 'ismi-command';

const result = await question({
  text: 'What do you want for lunch', // Required parameters
  tip: ['Hamburg ', ' Italian pasta'], // Optional parameter, enter selection mode when it is an array
  type: 'text', //A type selection that supports `text` and `password`,Optional parameter, default : `text``
  private: false, // Overwrite after input,Optional parameter,,default: `false`
  resultText: "Okay, then let's go eat", // Optional parameter,of  result display
});

Multiple questions can also be provided at once, just place them in an array (array and object patterns can be mixed and matched)

import { question } from 'ismi-command';

const result = await question([
  {
    text: 'What do you want for lunch',
    tip: ['Hamburg ', 'Italian pasta'],
    resultText: "Okay, then let's go eat",
  },
  {
    text: 'What`s your favorite dessert',
    private: true,
  },
  'Where to play after dinner',
]);

selection section (Select mode)

After referencing this function, use it where needed A function waiting for user input. Because it needs to wait, it is asynchronous, and when using it, wait should be used

Example

The simplest use :

import { selection } from 'ismi-command';
console.log('What do you want for lunch');
const result = await selection([
  'Hamburg',
  'Italian pasta',
  'steak',
  'pizza',
  'chafing dish',
]);

Full configuration :

import  { selection } from "ismi-command";

const result = await selection({
    showInfo: true,
    info: "What do you want for lunch?",
    data: [
        "Hamburg",
        "Italian pasta",
        "steak",
        "pizza",
        "chafing dish",

    ],
    showPreview: true,
    preview: "currently want to eat"
     resultText: "Okay, then let's go eat "
});

If you don't want to display the issue and preview, you can use the pattern of the incoming object for custom configuration

If you have any questions, you can directly submit question