github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/pkg/complete/doc.go (about)

     1  // Copyright 2012-2018 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Package complete implements a simple completion package
     6  // designed to be used in shells and other programs. It currently
     7  // offers completion functions to implement table-based and
     8  // file search path based completion. It also offers a multi
     9  // completion capability so that you can construct completions
    10  // from other completions.
    11  //
    12  // Goals:
    13  // small code base, so it can easily be embedded in firmware
    14  //
    15  // easily embedded in other programs, like the ip command
    16  //
    17  // friendly to mixed modes, i.e. if we say
    18  // ip l
    19  // and stdin is interactive, it would be nice if ip dropped into
    20  // a command line prompt and let you use completion to get the rest
    21  // of the line, instead of printing out a bnf
    22  //
    23  // The structs should be very light weight and hence cheap to build, use,
    24  // and throw away. They should NOT have lots of state.
    25  //
    26  // Rely on the fact that system calls and kernels are fast and cache file system
    27  // info so you should not. This means that we don't need to put huge effort into building in-memory
    28  // structs representing file system information. Just ask the kernel.
    29  //
    30  // Non-Goals:
    31  // be just like bash or zsh
    32  //
    33  // do extensive caching from the file system or environment. There was a time
    34  // (the 1970s as it happens) when extensive in-shell hash tables made sense.
    35  // Disco balls were also big. We don't need either.
    36  //
    37  // Use:
    38  // see the code, but basically, you can create completer and call a function
    39  // to read one word. The intent is that completers are so cheap that just
    40  // creating them on demand costs nothing. So far this seems to work.
    41  package complete