Skip to content

Commit 28dabc7

Browse files
authored
Merge pull request #5825 from ipfs/feat/coreapi/opts
CoreAPI: Global offline option
2 parents daa1202 + 3f0945a commit 28dabc7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+453
-242
lines changed

cmd/ipfs/daemon.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ const (
4040
ipnsMountKwd = "mount-ipns"
4141
migrateKwd = "migrate"
4242
mountKwd = "mount"
43-
offlineKwd = "offline"
43+
offlineKwd = "offline" // global option
4444
routingOptionKwd = "routing"
4545
routingOptionSupernodeKwd = "supernode"
4646
routingOptionDHTClientKwd = "dhtclient"
@@ -161,7 +161,6 @@ Headers.
161161
cmdkit.BoolOption(unencryptTransportKwd, "Disable transport encryption (for debugging protocols)"),
162162
cmdkit.BoolOption(enableGCKwd, "Enable automatic periodic repo garbage collection"),
163163
cmdkit.BoolOption(adjustFDLimitKwd, "Check and raise file descriptor limits if needed").WithDefault(true),
164-
cmdkit.BoolOption(offlineKwd, "Run offline. Do not connect to the rest of the network but provide local API."),
165164
cmdkit.BoolOption(migrateKwd, "If true, assume yes at the migrate prompt. If false, assume no."),
166165
cmdkit.BoolOption(enablePubSubKwd, "Instantiate the ipfs daemon with the experimental pubsub feature enabled."),
167166
cmdkit.BoolOption(enableIPNSPubSubKwd, "Enable IPNS record distribution through pubsub; enables pubsub."),

commands/context.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ func (c *Context) GetAPI() (coreiface.CoreAPI, error) {
6868
if err != nil {
6969
return nil, err
7070
}
71-
c.api = coreapi.NewCoreAPI(n)
71+
c.api, err = coreapi.NewCoreAPI(n)
72+
if err != nil {
73+
return nil, err
74+
}
7275
}
7376
return c.api, nil
7477
}

core/commands/add.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ You can now check what blocks have been created by:
139139
return nil
140140
},
141141
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
142-
api, err := cmdenv.GetApi(env)
142+
api, err := cmdenv.GetApi(env, req)
143143
if err != nil {
144144
return err
145145
}
@@ -160,7 +160,6 @@ You can now check what blocks have been created by:
160160
inline, _ := req.Options[inlineOptionName].(bool)
161161
inlineLimit, _ := req.Options[inlineLimitOptionName].(int)
162162
pathName, _ := req.Options[stdinPathName].(string)
163-
local, _ := req.Options["local"].(bool)
164163

165164
hashFunCode, ok := mh.Names[strings.ToLower(hashFunStr)]
166165
if !ok {
@@ -179,7 +178,6 @@ You can now check what blocks have been created by:
179178

180179
options.Unixfs.Pin(dopin),
181180
options.Unixfs.HashOnly(hash),
182-
options.Unixfs.Local(local),
183181
options.Unixfs.FsCache(fscache),
184182
options.Unixfs.Nocopy(nocopy),
185183

core/commands/block.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ on raw IPFS blocks. It outputs the following to stdout:
6060
cmdkit.StringArg("key", true, false, "The base58 multihash of an existing block to stat.").EnableStdin(),
6161
},
6262
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
63-
api, err := cmdenv.GetApi(env)
63+
api, err := cmdenv.GetApi(env, req)
6464
if err != nil {
6565
return err
6666
}
@@ -102,7 +102,7 @@ It outputs to stdout, and <key> is a base58 encoded multihash.
102102
cmdkit.StringArg("key", true, false, "The base58 multihash of an existing block to get.").EnableStdin(),
103103
},
104104
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
105-
api, err := cmdenv.GetApi(env)
105+
api, err := cmdenv.GetApi(env, req)
106106
if err != nil {
107107
return err
108108
}
@@ -148,7 +148,7 @@ than 'sha2-256' or format to anything other than 'v0' will result in CIDv1.
148148
cmdkit.IntOption(mhlenOptionName, "multihash hash length").WithDefault(-1),
149149
},
150150
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
151-
api, err := cmdenv.GetApi(env)
151+
api, err := cmdenv.GetApi(env, req)
152152
if err != nil {
153153
return err
154154
}
@@ -218,7 +218,7 @@ It takes a list of base58 encoded multihashes to remove.
218218
cmdkit.BoolOption(blockQuietOptionName, "q", "Write minimal output."),
219219
},
220220
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
221-
api, err := cmdenv.GetApi(env)
221+
api, err := cmdenv.GetApi(env, req)
222222
if err != nil {
223223
return err
224224
}

core/commands/cat.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var CatCmd = &cmds.Command{
3434
cmdkit.Int64Option(lengthOptionName, "l", "Maximum number of bytes to read."),
3535
},
3636
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
37-
api, err := cmdenv.GetApi(env)
37+
api, err := cmdenv.GetApi(env, req)
3838
if err != nil {
3939
return err
4040
}

core/commands/cmdenv/env.go

+22-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@ package cmdenv
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/ipfs/go-ipfs/commands"
78
"github.com/ipfs/go-ipfs/core"
89
coreiface "github.com/ipfs/go-ipfs/core/coreapi/interface"
10+
options "github.com/ipfs/go-ipfs/core/coreapi/interface/options"
911

1012
config "gx/ipfs/QmYyzmMnhNTtoXx5ttgUaRdHHckYnQWjPL98hgLAR2QLDD/go-ipfs-config"
1113
cmds "gx/ipfs/QmaAP56JAwdjwisPTu4yx17whcjTr6y5JCSCF77Y1rahWV/go-ipfs-cmds"
14+
logging "gx/ipfs/QmcuXC5cxs79ro2cUuHs4HQ2bkDLJUYokwL8aivcX6HW3C/go-log"
1215
)
1316

17+
var log = logging.Logger("core/commands/cmdenv")
18+
1419
// GetNode extracts the node from the environment.
1520
func GetNode(env interface{}) (*core.IpfsNode, error) {
1621
ctx, ok := env.(*commands.Context)
@@ -22,13 +27,28 @@ func GetNode(env interface{}) (*core.IpfsNode, error) {
2227
}
2328

2429
// GetApi extracts CoreAPI instance from the environment.
25-
func GetApi(env cmds.Environment) (coreiface.CoreAPI, error) {
30+
func GetApi(env cmds.Environment, req *cmds.Request) (coreiface.CoreAPI, error) {
2631
ctx, ok := env.(*commands.Context)
2732
if !ok {
2833
return nil, fmt.Errorf("expected env to be of type %T, got %T", ctx, env)
2934
}
3035

31-
return ctx.GetAPI()
36+
offline, _ := req.Options["offline"].(bool)
37+
if !offline {
38+
offline, _ = req.Options["local"].(bool)
39+
if offline {
40+
log.Errorf("Command '%s', --local is deprecated, use --offline instead", strings.Join(req.Path, " "))
41+
}
42+
}
43+
api, err := ctx.GetAPI()
44+
if err != nil {
45+
return nil, err
46+
}
47+
if offline {
48+
return api.WithOptions(options.Api.Offline(offline))
49+
}
50+
51+
return api, nil
3252
}
3353

3454
// GetConfig extracts the config from the environment.

core/commands/files.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ var filesStatCmd = &cmds.Command{
124124
return err
125125
}
126126

127-
api, err := cmdenv.GetApi(env)
127+
api, err := cmdenv.GetApi(env, req)
128128
if err != nil {
129129
return err
130130
}
@@ -308,7 +308,7 @@ var filesCpCmd = &cmds.Command{
308308
return err
309309
}
310310

311-
api, err := cmdenv.GetApi(env)
311+
api, err := cmdenv.GetApi(env, req)
312312
if err != nil {
313313
return err
314314
}

core/commands/keystore.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ var keyGenCmd = &cmds.Command{
7171
cmdkit.StringArg("name", true, false, "name of key to create"),
7272
},
7373
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
74-
api, err := cmdenv.GetApi(env)
74+
api, err := cmdenv.GetApi(env, req)
7575
if err != nil {
7676
return err
7777
}
@@ -121,7 +121,7 @@ var keyListCmd = &cmds.Command{
121121
cmdkit.BoolOption("l", "Show extra information about keys."),
122122
},
123123
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
124-
api, err := cmdenv.GetApi(env)
124+
api, err := cmdenv.GetApi(env, req)
125125
if err != nil {
126126
return err
127127
}
@@ -161,7 +161,7 @@ var keyRenameCmd = &cmds.Command{
161161
cmdkit.BoolOption(keyStoreForceOptionName, "f", "Allow to overwrite an existing key."),
162162
},
163163
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
164-
api, err := cmdenv.GetApi(env)
164+
api, err := cmdenv.GetApi(env, req)
165165
if err != nil {
166166
return err
167167
}
@@ -206,7 +206,7 @@ var keyRmCmd = &cmds.Command{
206206
cmdkit.BoolOption("l", "Show extra information about keys."),
207207
},
208208
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
209-
api, err := cmdenv.GetApi(env)
209+
api, err := cmdenv.GetApi(env, req)
210210
if err != nil {
211211
return err
212212
}

core/commands/ls.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ The JSON output contains type information.
7474
return err
7575
}
7676

77-
api, err := cmdenv.GetApi(env)
77+
api, err := cmdenv.GetApi(env, req)
7878
if err != nil {
7979
return err
8080
}

core/commands/name/ipns.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,12 @@ Resolve the value of a dnslink:
8080
cmdkit.BoolOption(streamOptionName, "s", "Stream entries as they are found."),
8181
},
8282
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
83-
api, err := cmdenv.GetApi(env)
83+
api, err := cmdenv.GetApi(env, req)
8484
if err != nil {
8585
return err
8686
}
8787

8888
nocache, _ := req.Options["nocache"].(bool)
89-
local, _ := req.Options["local"].(bool)
9089

9190
var name string
9291
if len(req.Arguments) == 0 {
@@ -105,7 +104,6 @@ Resolve the value of a dnslink:
105104
stream, _ := req.Options[streamOptionName].(bool)
106105

107106
opts := []options.NameResolveOption{
108-
options.Name.Local(local),
109107
options.Name.Cache(!nocache),
110108
}
111109

core/commands/name/publish.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ Alternatively, publish an <ipfs-path> using a valid PeerID (as listed by
8383
cmdkit.BoolOption(quieterOptionName, "Q", "Write only final hash."),
8484
},
8585
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
86-
api, err := cmdenv.GetApi(env)
86+
api, err := cmdenv.GetApi(env, req)
8787
if err != nil {
8888
return err
8989
}

core/commands/object/diff.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Example:
5555
cmdkit.BoolOption(verboseOptionName, "v", "Print extra information."),
5656
},
5757
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
58-
api, err := cmdenv.GetApi(env)
58+
api, err := cmdenv.GetApi(env, req)
5959
if err != nil {
6060
return err
6161
}

core/commands/object/object.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ is the raw data of the object.
7777
cmdkit.StringArg("key", true, false, "Key of the object to retrieve, in base58-encoded multihash format.").EnableStdin(),
7878
},
7979
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
80-
api, err := cmdenv.GetApi(env)
80+
api, err := cmdenv.GetApi(env, req)
8181
if err != nil {
8282
return err
8383
}
@@ -114,7 +114,7 @@ multihash.
114114
cmdkit.BoolOption("headers", "v", "Print table headers (Hash, Size, Name)."),
115115
},
116116
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
117-
api, err := cmdenv.GetApi(env)
117+
api, err := cmdenv.GetApi(env, req)
118118
if err != nil {
119119
return err
120120
}
@@ -204,7 +204,7 @@ Supported values are:
204204
cmdkit.StringOption("data-encoding", "Encoding type of the data field, either \"text\" or \"base64\".").WithDefault("text"),
205205
},
206206
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
207-
api, err := cmdenv.GetApi(env)
207+
api, err := cmdenv.GetApi(env, req)
208208
if err != nil {
209209
return err
210210
}
@@ -294,7 +294,7 @@ var ObjectStatCmd = &cmds.Command{
294294
cmdkit.StringArg("key", true, false, "Key of the object to retrieve, in base58-encoded multihash format.").EnableStdin(),
295295
},
296296
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
297-
api, err := cmdenv.GetApi(env)
297+
api, err := cmdenv.GetApi(env, req)
298298
if err != nil {
299299
return err
300300
}
@@ -386,7 +386,7 @@ And then run:
386386
cmdkit.BoolOption("quiet", "q", "Write minimal output."),
387387
},
388388
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
389-
api, err := cmdenv.GetApi(env)
389+
api, err := cmdenv.GetApi(env, req)
390390
if err != nil {
391391
return err
392392
}
@@ -459,7 +459,7 @@ Available templates:
459459
cmdkit.StringArg("template", false, false, "Template to use. Optional."),
460460
},
461461
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
462-
api, err := cmdenv.GetApi(env)
462+
api, err := cmdenv.GetApi(env, req)
463463
if err != nil {
464464
return err
465465
}

core/commands/object/patch.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ the limit will not be respected by the network.
5050
cmdkit.FileArg("data", true, false, "Data to append.").EnableStdin(),
5151
},
5252
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
53-
api, err := cmdenv.GetApi(env)
53+
api, err := cmdenv.GetApi(env, req)
5454
if err != nil {
5555
return err
5656
}
@@ -97,7 +97,7 @@ Example:
9797
cmdkit.FileArg("data", true, false, "The data to set the object to.").EnableStdin(),
9898
},
9999
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
100-
api, err := cmdenv.GetApi(env)
100+
api, err := cmdenv.GetApi(env, req)
101101
if err != nil {
102102
return err
103103
}
@@ -140,7 +140,7 @@ Remove a Merkle-link from the given object and return the hash of the result.
140140
cmdkit.StringArg("name", true, false, "Name of the link to remove."),
141141
},
142142
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
143-
api, err := cmdenv.GetApi(env)
143+
api, err := cmdenv.GetApi(env, req)
144144
if err != nil {
145145
return err
146146
}
@@ -192,7 +192,7 @@ to a file containing 'bar', and returns the hash of the new object.
192192
cmdkit.BoolOption("create", "p", "Create intermediary nodes."),
193193
},
194194
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
195-
api, err := cmdenv.GetApi(env)
195+
api, err := cmdenv.GetApi(env, req)
196196
if err != nil {
197197
return err
198198
}

0 commit comments

Comments
 (0)