Tools: 馃悰 fish-shell completion has unexpected descriptions

Created on 12 Aug 2020  路  3Comments  路  Source: rome/tools


Environment

$ rome rage --summary
Environment Variables
  Object {
    COLORTERM: "truecolor"
    LANG: "en_US.UTF-8"
    PATH: "/Users/wantedly215/.anyenv/envs/nodenv/versions/12.16.2/bin:/Users/wantedly215/.anyenv/envs/nodenv/libexec:/Users/wantedly215/.anyenv/envs/nodenv/plugins/nodenv-vars/bin:/Users/wantedly215/.anyenv/envs/nodenv/plugins/nodenv-default-packages/bin:/Users/wantedly215/.anyenv/envs/nodenv/plugins/node-build/bin:/Users/wantedly215/.anyenv/envs/rbenv/shims:/Users/wantedly215/.anyenv/envs/pyenv/shims:/Users/wantedly215/.anyenv/envs/nodenv/shims:.:/Users/wantedly215/.opam/default/bin:/usr/local/sbin:/Users/wantedly215/.anyenv/bin:/Users/wantedly215/.anyenv/envs/rbenv/shims:/Users/wantedly215/.anyenv/envs/pyenv/libexec/pyenv:/Users/wantedly215/.anyenv/envs/pyenv/libexec:/Users/wantedly215/.anyenv/envs/pyenv/shims:/Users/wantedly215/.anyenv/envs/pyenv/bin:/Users/wantedly215/.anyenv/envs/nodenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/wantedly215/.anyenv/envs/rbenv/shims:/Users/wantedly215/.anyenv/envs/pyenv/shims:/Users/wantedly215/.anyenv/envs/nodenv/shims:.:/Users/wantedly215/.anyenv/envs/pyenv/libexec/pyenv:/Users/wantedly215/.anyenv/envs/pyenv/libexec:/Users/wantedly215/.anyenv/envs/pyenv/bin:/Users/wantedly215/.anyenv/envs/nodenv/bin:/Users/wantedly215/.anyenv/envs/rbenv/bin:/Users/wantedly215/.cargo/bin:/Users/wantedly215/dev/bin:/Users/wantedly215/.deno/bin:/Users/wantedly215/.wantedly/bin:/Users/wantedly215/.anyenv/bin:/Users/wantedly215/.anyenv/envs/nodenv/bin:/Users/wantedly215/.anyenv/envs/pyenv/bin:/Users/wantedly215/.anyenv/envs/rbenv/bin:/Users/wantedly215/.cargo/bin:/Users/wantedly215/dev/bin:/Users/wantedly215/.deno/bin:/Users/wantedly215/.wantedly/bin:/Users/wantedly215/.anyenv/envs/nodenv/bin:/Users/wantedly215/.anyenv/envs/pyenv/bin:/Users/wantedly215/.anyenv/envs/rbenv/bin"
    TERM: "screen-256color"
    TMUX: "/private/tmp/tmux-501/default,2441,2"
    USER: "wantedly215"
  }

User Config
  unset

Rome Version
  10.0.3-beta

Node Version
  12.16.2

Platform
  darwin x64 19.3.0

Terminal Features
  Object {
    background: "unknown"
    colorDepth: 8
    columns: 256
    cursor: true
    hyperlinks: true
    isTTY: true
    unicode: true
  }

Client Flags
  Object {
    clientName: "cli"
    cwd: "/Users/wantedly215/dev/src/github.com/yamadayuki/rome"
    realCwd: "/Users/wantedly215/dev/src/github.com/yamadayuki/rome"
    silent: false
  }

Server Status
  Object {
    server: Object {
      heapTotal: 451_989_504
      pid: 38_714
      uptime: 1_996.49758669
    }
    projects: Array [
      Object {id: 0}
      Object {id: 1}
      Object {id: 2}
      Object {id: 3}
      Object {id: 4}
      Object {id: 5}
      Object {id: 6}
    ]
    workers: Array [
      Object {
        astCacheSize: 476
        heapTotal: 78_737_408
        ownedBytes: 1_553_312
        ownedFileCount: 602
        pid: 38_818
        uptime: 1_976.086273595
      }
      Object {
        astCacheSize: 451
        heapTotal: 89_452_544
        ownedBytes: 1_553_384
        ownedFileCount: 534
        pid: 38_819
        uptime: 1_975.580905857
      }
      Object {
        astCacheSize: 318
        heapTotal: 52_228_096
        ownedBytes: 1_553_572
        ownedFileCount: 324
        pid: 38_820
        uptime: 1_975.187024593
      }
      Object {
        astCacheSize: 451
        heapTotal: 79_654_912
        ownedBytes: 1_640_393
        ownedFileCount: 509
        pid: 38_821
        uptime: 1_974.796003722
      }
    ]
  }

Steps To Reproduce


  1. Invoke rome --log-shell-completions fish

    > rome --log-shell-completions fish
    complete -c rome -f
    complete -c rome -n '__fish_use_subcommand' -a 'start' -d '[object Object]'
    complete -c rome -n '__fish_use_subcommand' -a 'develop' -d '[object Object]'
    complete -c rome -n '__fish_use_subcommand' -a 'stop' -d '[object Object]'
    ...
    

Expected Results

Meaningful description is set if the subcommand's description exists.

> rome --log-shell-completions fish
complete -c rome -f
complete -c rome -n '__fish_use_subcommand' -a 'start' -d 'start daemon (if none running)'
complete -c rome -n '__fish_use_subcommand' -a 'develop' -d 'TODO'
complete -c rome -n '__fish_use_subcommand' -a 'stop' -d 'stop a running daemon if one exists'
...
unconfirmed

All 3 comments

The root cause located at genFishCompletions function in internal/cli-flags/Parser.ts. The meta.description is an object as AnyMarkup. But in this case, the interpolation is only template literal not in a markup tagged template string. So the meta.description object was called with toString (I suppose).

I found the mitigation for this issue. You can prints the fish completions with calling readMarkup function against meta.description.

@@ -783,7 +789,13 @@ export default class Parser<T> {

        // add command completions
        for (let [subcmd, meta] of this.commands.entries()) {
-           script += `${scriptPre} -n '__fish_use_subcommand' -a '${subcmd}' -d '${meta.description}'\n`;
+           // add command description if exists
+           let description = "";
+           if (meta.description) {
+               description += ` -d '${readMarkup(meta.description)}'`;
+           }
+
+           script += `${scriptPre} -n '__fish_use_subcommand' -a '${subcmd}'${description}\n`;
        }

        // add flag completions

Can I send a PR?

Go ahead!! Thank you!

Was this page helpful?
0 / 5 - 0 ratings