@cryptotaxi247 / kubo / commits / 0a45ada4e

CLI: discoverability and consistency (#2542)

* reduces help indent from 4 to 2 spaces License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * reduces horz/vert space taken by "ipfs" cmd License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * show subcommands on shorthelp License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Drops colons at the end of cmd headings. This makes command headings consistent with the output of 'ipfs', which does not include colons. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * more consistent output between short-/long-help License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Puts DESCRIPTION before SUBCOMMANDS. Users likely want to understand what a command does before worrying about its subcommands. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Keeps ipfs cmd from outputting its subcmds twice. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant synopsis from "file" License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes extra whitespace from longhelp License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Consistent spacing whether SUBCMDS or not. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant SUBCMD output from ipfs object. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant synopsis from "name" License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Newline after Description only if it exists. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant synopsis from "bootstrap" License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant synopsis from "swarm" License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes trailing newline in ping help. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Prints shorthelp on parse error. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * tiny comment fixes License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * updates README usage License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Don't include extra whitespace if no .MoreHelp License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * description improvements License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Hides the obscure 'file' subcommand. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Splits 'ipfs daemon' into Short and Long help. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes redundant synopsis from "config" License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Wraps lines to keep from going over 80. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * specify repo separately License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * s/structure/hierarchy License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * missing . License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes trailing colon from 'usage' test. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Updates sharness test error messages. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes trailing colon from 'usage' test. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Updates add-symlink to use /bin/sh. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Removes "hierarchy". License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io> * Updates "ipfs ping" synopsis. * Updates t0040 with latest wording. * Removes unnecessary daemon setup. License: MIT Signed-off-by: Stephen Whitmore <noffle@ipfs.io>

Stephen Whitmore committed Apr 28, 2016 at 14:08 UTC 0a45ada4ed0f2679bc9434757fb07d00d4bd967c
21 files changed +120 -159
README.md
+47 -50
@@ -122,56 +122,53 @@ or install it from source with `go get -u github.com/ipfs/ipfs-update`.
122 ## Usage
123
124 ```
125 -USAGE:
126 -
127 - ipfs - global p2p merkle-dag filesystem
128 -
129 - ipfs [<flags>] <command> [<arg>] ...
130 -
131 - BASIC COMMANDS
132 -
133 - init Initialize ipfs local configuration
134 - add <path> Add an object to ipfs
135 - cat <ref> Show ipfs object data
136 - get <ref> Download ipfs objects
137 - ls <ref> List links from an object
138 - refs <ref> List hashes of links from an object
139 -
140 - DATA STRUCTURE COMMANDS
141 -
142 - block Interact with raw blocks in the datastore
143 - object Interact with raw dag nodes
144 - file Interact with Unix filesystem objects
145 -
146 - ADVANCED COMMANDS
147 -
148 - daemon Start a long-running daemon process
149 - mount Mount an ipfs read-only mountpoint
150 - resolve Resolve any type of name
151 - name Publish or resolve IPNS names
152 - dns Resolve DNS links
153 - pin Pin objects to local storage
154 - repo gc Garbage collect unpinned objects
155 -
156 - NETWORK COMMANDS
157 -
158 - id Show info about ipfs peers
159 - bootstrap Add or remove bootstrap peers
160 - swarm Manage connections to the p2p network
161 - dht Query the DHT for values or peers
162 - ping Measure the latency of a connection
163 - diag Print diagnostics
164 -
165 - TOOL COMMANDS
166 -
167 - config Manage configuration
168 - version Show ipfs version information
169 - update Download and apply go-ipfs updates
170 - commands List all available commands
171 -
172 - Use 'ipfs <command> --help' to learn more about each command.
173 -
174 -
125 + ipfs - Global p2p merkle-dag filesystem.
126 +
127 + ipfs [<flags>] <command> [<arg>] ...
128 +
129 +SUBCOMMANDS
130 + BASIC COMMANDS
131 + init Initialize ipfs local configuration
132 + add <path> Add a file to ipfs
133 + cat <ref> Show ipfs object data
134 + get <ref> Download ipfs objects
135 + ls <ref> List links from an object
136 + refs <ref> List hashes of links from an object
137 +
138 + DATA STRUCTURE COMMANDS
139 + block Interact with raw blocks in the datastore
140 + object Interact with raw dag nodes
141 + files Interact with objects as if they were a unix filesystem
142 +
143 + ADVANCED COMMANDS
144 + daemon Start a long-running daemon process
145 + mount Mount an ipfs read-only mountpoint
146 + resolve Resolve any type of name
147 + name Publish or resolve IPNS names
148 + dns Resolve DNS links
149 + pin Pin objects to local storage
150 + repo Manipulate an IPFS repository
151 +
152 + NETWORK COMMANDS
153 + id Show info about ipfs peers
154 + bootstrap Add or remove bootstrap peers
155 + swarm Manage connections to the p2p network
156 + dht Query the DHT for values or peers
157 + ping Measure the latency of a connection
158 + diag Print diagnostics
159 +
160 + TOOL COMMANDS
161 + config Manage configuration
162 + version Show ipfs version information
163 + update Download and apply go-ipfs updates
164 + commands List all available commands
165 +
166 + Use 'ipfs <command> --help' to learn more about each command.
167 +
168 + ipfs uses a repository in the local file system. By default, the repo is located
169 + at ~/.ipfs. To change the repo location, set the $IPFS_PATH environment variable:
170 +
171 + export IPFS_PATH=/path/to/ipfsrepo
172 ```
173
174 ## Getting Started
cmd/ipfs/daemon.go
+2 -1
@@ -55,7 +55,8 @@ over the network. Most applications that use IPFS will do so by
55 communicating with a daemon over the HTTP API. While the daemon is
56 running, calls to 'ipfs' commands will be sent over the network to
57 the daemon.
58 -
58 +`,
59 + LongDescription: `
60 The daemon will start listening on ports on the network, which are
61 documented in (and can be modified through) 'ipfs config Addresses'.
62 For example, to change the 'Gateway' port:
cmd/ipfs/init.go
-2
@@ -24,8 +24,6 @@ var initCmd = &cmds.Command{
24 ShortDescription: `
25 Initializes IPFS configuration files and generates a new keypair.
26
27 -IPFS_PATH environment variable
28 -
27 ipfs uses a repository in the local file system. By default, the repo is located
28 at ~/.ipfs. To change the repo location, set the $IPFS_PATH environment variable:
29
cmd/ipfs/main.go
+1 -1
@@ -132,7 +132,7 @@ func main() {
132 if invoc.cmd != nil {
133 // we need a newline space.
134 fmt.Fprintf(os.Stderr, "\n")
135 - printMetaHelp(os.Stderr)
135 + printHelp(false, os.Stderr)
136 }
137 os.Exit(1)
138 }
commands/cli/helptext.go
+22 -16
@@ -20,7 +20,7 @@ const (
20
21 whitespace = "\r\n\t "
22
23 - indentStr = " "
23 + indentStr = " "
24 )
25
26 type helpFields struct {
@@ -74,38 +74,38 @@ func (f *helpFields) IndentAll() {
74
75 const usageFormat = "{{if .Usage}}{{.Usage}}{{else}}{{.Path}}{{if .ArgUsage}} {{.ArgUsage}}{{end}} - {{.Tagline}}{{end}}"
76
77 -const longHelpFormat = `
77 +const longHelpFormat = `USAGE
78 {{.Indent}}{{template "usage" .}}
79
80 -{{if .Arguments}}ARGUMENTS:
80 +{{if .Arguments}}ARGUMENTS
81
82 {{.Arguments}}
83
84 -{{end}}{{if .Options}}OPTIONS:
84 +{{end}}{{if .Options}}OPTIONS
85
86 {{.Options}}
87
88 -{{end}}{{if .Subcommands}}SUBCOMMANDS:
88 +{{end}}{{if .Description}}DESCRIPTION
89
90 +{{.Description}}
91 +
92 +{{end}}{{if .Subcommands}}SUBCOMMANDS
93 {{.Subcommands}}
94
95 {{.Indent}}Use '{{.Path}} <subcmd> --help' for more information about each command.
93 -
94 -{{end}}{{if .Description}}DESCRIPTION:
95 -
96 -{{.Description}}
97 -
96 {{end}}
97 `
100 -const shortHelpFormat = `USAGE:
101 -
98 +const shortHelpFormat = `USAGE
99 {{.Indent}}{{template "usage" .}}
100 {{if .Synopsis}}
101 {{.Synopsis}}
102 {{end}}{{if .Description}}
103 {{.Description}}
107 -{{end}}
108 -{{if .MoreHelp}}Use '{{.Path}} --help' for more information about this command.
104 +{{end}}{{if .Subcommands}}
105 +SUBCOMMANDS
106 +{{.Subcommands}}
107 +{{end}}{{if .MoreHelp}}
108 +Use '{{.Path}} --help' for more information about this command.
109 {{end}}
110 `
111
@@ -119,7 +119,7 @@ func init() {
119 shortHelpTemplate = template.Must(usageTemplate.New("shortHelp").Parse(shortHelpFormat))
120 }
121
122 -// LongHelp returns a formatted CLI helptext string, generated for the given command
122 +// LongHelp writes a formatted CLI helptext string to a Writer for the given command
123 func LongHelp(rootName string, root *cmds.Command, path []string, out io.Writer) error {
124 cmd, err := root.Get(path)
125 if err != nil {
@@ -169,7 +169,7 @@ func LongHelp(rootName string, root *cmds.Command, path []string, out io.Writer)
169 return longHelpTemplate.Execute(out, fields)
170 }
171
172 -// ShortHelp returns a formatted CLI helptext string, generated for the given command
172 +// ShortHelp writes a formatted CLI helptext string to a Writer for the given command
173 func ShortHelp(rootName string, root *cmds.Command, path []string, out io.Writer) error {
174 cmd, err := root.Get(path)
175 if err != nil {
@@ -193,10 +193,16 @@ func ShortHelp(rootName string, root *cmds.Command, path []string, out io.Writer
193 Tagline: cmd.Helptext.Tagline,
194 Synopsis: cmd.Helptext.Synopsis,
195 Description: cmd.Helptext.ShortDescription,
196 + Subcommands: cmd.Helptext.Subcommands,
197 Usage: cmd.Helptext.Usage,
198 MoreHelp: (cmd != root),
199 }
200
201 + // autogen fields that are empty
202 + if len(fields.Subcommands) == 0 {
203 + fields.Subcommands = strings.Join(subcommandText(cmd, rootName, path), "\n")
204 + }
205 +
206 // trim the extra newlines (see TrimNewlines doc)
207 fields.TrimNewlines()
208
core/commands/add.go
+2 -4
@@ -30,11 +30,9 @@ const (
30
31 var AddCmd = &cmds.Command{
32 Helptext: cmds.HelpText{
33 - Tagline: "Add a file to ipfs.",
33 + Tagline: "Add a file or directory to ipfs.",
34 ShortDescription: `
35 -Adds contents of <path> to ipfs. Use -r to add directories.
36 -Note that directories are added recursively, to form the ipfs
37 -MerkleDAG.
35 +Adds contents of <path> to ipfs. Use -r to add directories (recursively).
36 `,
37 LongDescription: `
38 Adds contents of <path> to ipfs. Use -r to add directories.
core/commands/bootstrap.go
-5
@@ -22,11 +22,6 @@ var peerOptionDesc = "A peer to add to the bootstrap list (in the format '<multi
22 var BootstrapCmd = &cmds.Command{
23 Helptext: cmds.HelpText{
24 Tagline: "Show or edit the list of bootstrap peers.",
25 - Synopsis: `
26 -ipfs bootstrap list - Show peers in the bootstrap list
27 -ipfs bootstrap add <peer>... - Add peers to the bootstrap list
28 -ipfs bootstrap rm <peer>... - Removes peers from the bootstrap list
29 -`,
25 ShortDescription: `
26 Running 'ipfs bootstrap' with no arguments will run 'ipfs bootstrap list'.
27 ` + bootstrapSecurityWarning,
core/commands/config.go
-7
@@ -25,13 +25,6 @@ type ConfigField struct {
25 var ConfigCmd = &cmds.Command{
26 Helptext: cmds.HelpText{
27 Tagline: "Get and set IPFS config values.",
28 - Synopsis: `
29 -ipfs config <key> - Get value of <key>
30 -ipfs config <key> <value> - Set value of <key> to <value>
31 -ipfs config show - Show config file
32 -ipfs config edit - Edit config file in $EDITOR
33 -ipfs config replace <file> - Replaces the config file with <file>
34 -`,
28 ShortDescription: `
29 'ipfs config' controls configuration variables. It works like 'git config'.
30 The configuration values are stored in a config file inside your IPFS
core/commands/name.go
-4
@@ -10,10 +10,6 @@ type IpnsEntry struct {
10 var NameCmd = &cmds.Command{
11 Helptext: cmds.HelpText{
12 Tagline: "IPFS namespace (IPNS) tool.",
13 - Synopsis: `
14 -ipfs name publish [<name>] <ipfs-path> - Publish an object to IPNS
15 -ipfs name resolve [<name>] - Gets the value currently published at an IPNS name
16 -`,
13 ShortDescription: `
14 IPNS is a PKI namespace, where names are the hashes of public keys, and
15 the private key enables publishing new (signed) values. In both publish
core/commands/object/object.go
-10
@@ -47,16 +47,6 @@ var ObjectCmd = &cmds.Command{
47 ShortDescription: `
48 'ipfs object' is a plumbing command used to manipulate DAG objects
49 directly.`,
50 - Synopsis: `
51 -ipfs object data <key> - Outputs raw bytes in an object
52 -ipfs object diff <key1> <key2> - Diffs two given objects
53 -ipfs object get <key> - Get the DAG node named by <key>
54 -ipfs object links <key> - Outputs links pointed to by object
55 -ipfs object new <template> - Create new ipfs objects
56 -ipfs object patch <args> - Create new object from old ones
57 -ipfs object put <data> - Stores input, outputs its key
58 -ipfs object stat <key> - Outputs statistics of object
59 -`,
50 },
51
52 Subcommands: map[string]*cmds.Command{
core/commands/pin.go
+1 -1
@@ -94,7 +94,7 @@ var addPinCmd = &cmds.Command{
94
95 var rmPinCmd = &cmds.Command{
96 Helptext: cmds.HelpText{
97 - Tagline: "Removes the pinned object from local storage. (By default, recursively. Use -r=false for direct pins).",
97 + Tagline: "Removes the pinned object from local storage.",
98 ShortDescription: `
99 Removes the pin from the given object allowing it to be garbage
100 collected if needed. (By default, recursively. Use -r=false for direct pins)
core/commands/ping.go
+2 -4
@@ -27,10 +27,8 @@ type PingResult struct {
27
28 var PingCmd = &cmds.Command{
29 Helptext: cmds.HelpText{
30 - Tagline: "Send echo request packets to IPFS hosts.",
31 - Synopsis: `
32 -Send pings to a peer using the routing system to discover its address
33 - `,
30 + Tagline: "Send echo request packets to IPFS hosts.",
31 + Synopsis: "Send pings to a peer to verify connectivity and determine latency.",
32 ShortDescription: `
33 'ipfs ping' is a tool to test sending data to other nodes. It finds nodes
34 via the routing system, sends pings, waits for pongs, and prints out round-
core/commands/refs.go
+2 -1
@@ -35,7 +35,8 @@ var RefsCmd = &cmds.Command{
35 Helptext: cmds.HelpText{
36 Tagline: "Lists links (references) from an object.",
37 ShortDescription: `
38 -Displays the link hashes an IPFS or IPNS object(s) contains, with the following format:
38 +Lists the hashes of all the links an IPFS or IPNS object(s) contains,
39 +with the following format:
40
41 <link base58 hash>
42
core/commands/root.go
+28 -34
@@ -23,55 +23,49 @@ var Root = &cmds.Command{
23 Synopsis: `
24 ipfs [<flags>] <command> [<arg>] ...
25 `,
26 - ShortDescription: `
26 + Subcommands: `
27 BASIC COMMANDS
28 -
29 - init Initialize ipfs local configuration
30 - add <path> Add a file to ipfs
31 - cat <ref> Show ipfs object data
32 - get <ref> Download ipfs objects
33 - ls <ref> List links from an object
34 - refs <ref> List hashes of links from an object
28 + init Initialize ipfs local configuration
29 + add <path> Add a file to ipfs
30 + cat <ref> Show ipfs object data
31 + get <ref> Download ipfs objects
32 + ls <ref> List links from an object
33 + refs <ref> List hashes of links from an object
34
35 DATA STRUCTURE COMMANDS
37 -
38 - block Interact with raw blocks in the datastore
39 - object Interact with raw dag nodes
40 - files Interact with objects as if they were a unix filesystem
41 - file Interact with Unix filesystem objects
36 + block Interact with raw blocks in the datastore
37 + object Interact with raw dag nodes
38 + files Interact with objects as if they were a unix filesystem
39
40 ADVANCED COMMANDS
44 -
45 - daemon Start a long-running daemon process
46 - mount Mount an ipfs read-only mountpoint
47 - resolve Resolve any type of name
48 - name Publish or resolve IPNS names
49 - dns Resolve DNS links
50 - pin Pin objects to local storage
51 - repo gc Garbage collect unpinned objects
41 + daemon Start a long-running daemon process
42 + mount Mount an ipfs read-only mountpoint
43 + resolve Resolve any type of name
44 + name Publish or resolve IPNS names
45 + dns Resolve DNS links
46 + pin Pin objects to local storage
47 + repo Manipulate the IPFS repository
48
49 NETWORK COMMANDS
54 -
55 - id Show info about ipfs peers
56 - bootstrap Add or remove bootstrap peers
57 - swarm Manage connections to the p2p network
58 - dht Query the DHT for values or peers
59 - ping Measure the latency of a connection
60 - diag Print diagnostics
50 + id Show info about ipfs peers
51 + bootstrap Add or remove bootstrap peers
52 + swarm Manage connections to the p2p network
53 + dht Query the DHT for values or peers
54 + ping Measure the latency of a connection
55 + diag Print diagnostics
56
57 TOOL COMMANDS
63 -
64 - config Manage configuration
65 - version Show ipfs version information
66 - update Download and apply go-ipfs updates
67 - commands List all available commands
58 + config Manage configuration
59 + version Show ipfs version information
60 + update Download and apply go-ipfs updates
61 + commands List all available commands
62
63 Use 'ipfs <command> --help' to learn more about each command.
64
65 ipfs uses a repository in the local file system. By default, the repo is located
66 at ~/.ipfs. To change the repo location, set the $IPFS_PATH environment variable:
67
74 - export IPFS_PATH=/path/to/ipfsrepo
68 + export IPFS_PATH=/path/to/ipfsrepo
69 `,
70 },
71 Options: []cmds.Option{
core/commands/swarm.go
-7
@@ -28,13 +28,6 @@ type addrMap struct {
28 var SwarmCmd = &cmds.Command{
29 Helptext: cmds.HelpText{
30 Tagline: "Swarm inspection tool.",
31 - Synopsis: `
32 -ipfs swarm addrs - List known addresses. Useful for debugging.
33 -ipfs swarm connect <address> - Open connection to a given address
34 -ipfs swarm disconnect <address> - Close connection to a given address
35 -ipfs swarm filters - Manipulate filters addresses
36 -ipfs swarm peers - List peers with open connections
37 -`,
31 ShortDescription: `
32 'ipfs swarm' is a tool to manipulate the network swarm. The swarm is the
33 component that opens, listens for, and maintains connections to other
core/commands/unixfs/unixfs.go
-3
@@ -9,9 +9,6 @@ var UnixFSCmd = &cmds.Command{
9 'ipfs file' provides a familiar interface to file systems represented
10 by IPFS objects, which hides IPFS implementation details like layout
11 objects (e.g. fanout and chunking).
12 -`,
13 - Synopsis: `
14 -ipfs file ls <path>... - List directory contents for <path>...
12 `,
13 },
14
test/sharness/t0010-basic-commands.sh
+1 -1
@@ -26,7 +26,7 @@ test_expect_success "ipfs help succeeds" '
26 '
27
28 test_expect_success "ipfs help output looks good" '
29 - egrep -i "^Usage:" help.txt >/dev/null &&
29 + egrep -i "^Usage" help.txt >/dev/null &&
30 egrep "ipfs .* <command>" help.txt >/dev/null ||
31 test_fsh cat help.txt
32 '
test/sharness/t0040-add-and-cat.sh
+10 -3
@@ -8,8 +8,15 @@ test_description="Test add and cat commands"
8
9 . lib/test-lib.sh
10
11 -client_err() {
12 - printf "$@\n\nUse 'ipfs add --help' for information about this command\n"
11 +client_err_add() {
12 + printf "$@\n\n"
13 + echo 'USAGE
14 + ipfs add <path>... - Add a file or directory to ipfs.
15 +
16 + Adds contents of <path> to ipfs. Use -r to add directories (recursively).
17 +
18 +Use '"'"'ipfs add --help'"'"' for more information about this command.
19 +'
20 }
21
22 test_add_cat_file() {
@@ -156,7 +163,7 @@ test_add_named_pipe() {
163 test_expect_success "useful error message when adding a named pipe" '
164 mkfifo named-pipe &&
165 test_expect_code 1 ipfs add named-pipe 2>actual &&
159 - client_err "Error: Unrecognized file type for named-pipe: $(generic_stat named-pipe)" >expected &&
166 + client_err_add "Error: Unrecognized file type for named-pipe: $(generic_stat named-pipe)" >expected &&
167 rm named-pipe &&
168 test_cmp expected actual
169 '
test/sharness/t0044-add-symlink.sh
+1 -1
@@ -1,4 +1,4 @@
1 -#!/bin/bash
1 +#!/bin/sh
2 #
3 # Copyright (c) 2014 Christian Couder
4 # MIT Licensed; see the LICENSE file in this repository.
test/sharness/t0060-daemon.sh
+1 -1
@@ -69,7 +69,7 @@ test_expect_success "ipfs help succeeds" '
69 '
70
71 test_expect_success "ipfs help output looks good" '
72 - egrep -i "^Usage:" help.txt >/dev/null &&
72 + egrep -i "^Usage" help.txt >/dev/null &&
73 egrep "ipfs .* <command>" help.txt >/dev/null ||
74 test_fsh cat help.txt
75 '
test/sharness/t0235-cli-request.sh
-3
@@ -9,7 +9,6 @@ test_description="test http requests made by cli"
9 . lib/test-lib.sh
10
11 test_init_ipfs
12 -test_launch_ipfs_daemon
12
13 test_expect_success "can make http request against nc server" '
14 go-sleep 0.5s | nc -l 5005 > nc_out &
@@ -28,6 +27,4 @@ test_expect_success "api flag does not appear in request" '
27 test_expect_code 1 grep "api=/ip4" nc_out
28 '
29
31 -test_kill_ipfs_daemon
32 -
30 test_done