mirror of
https://github.com/ipfs/kubo.git
synced 2025-05-24 02:17:15 +08:00

To be less confusing to newcomers (the IPFS filesystem isn't Unix-specific anyway, and it isn't even very POSIX-specific [1,2,3]). I'm a bit uncertain about having one name for users and another for devs, but the consensus seems to be that mainaining two names is worth the trouble [4]. We also kicked around: * 'files' (plural), * 'filesystem' (too long), and * 'fs' (redundant after 'ipfs', even though IPFS isn't just about filesystems) on IRC [5 through 6]. I wish there was a more evocative term. I'm never sure where "file" lands on the scale between "filesysytem", "everything is a file", "a single chunk of data with an associated inode". But we can't think of anything better. [1]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529070 [2]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529921 [3]: https://github.com/ipfs/go-ipfs/pull/1136/files#r29377283 In my response to this (no longer visibile on GitHub): On Wed, Apr 29, 2015 at 01:30:04PM -0700, Juan Batiz-Benet wrote: > > +package fsnode > > i think this package should be called `unixfs` as that's the > abstraction that this is calling to. Will do, although I don't see what's especially Unix-y about these file nodes. [4]: https://github.com/ipfs/go-ipfs/pull/1348#issuecomment-110529811 [5]: https://botbot.me/freenode/ipfs/2015-06-09/?msg=41428456&page=5 [6]: https://botbot.me/freenode/ipfs/2015-06-09/?msg=41430703&page=5 License: MIT Signed-off-by: W. Trevor King <wking@tremily.us>
124 lines
3.3 KiB
Go
124 lines
3.3 KiB
Go
package commands
|
|
|
|
import (
|
|
"io"
|
|
"strings"
|
|
|
|
cmds "github.com/ipfs/go-ipfs/commands"
|
|
unixfs "github.com/ipfs/go-ipfs/core/commands/unixfs"
|
|
evlog "github.com/ipfs/go-ipfs/thirdparty/eventlog"
|
|
)
|
|
|
|
var log = evlog.Logger("core/commands")
|
|
|
|
type TestOutput struct {
|
|
Foo string
|
|
Bar int
|
|
}
|
|
|
|
var Root = &cmds.Command{
|
|
Helptext: cmds.HelpText{
|
|
Tagline: "global p2p merkle-dag filesystem",
|
|
Synopsis: `
|
|
ipfs [<flags>] <command> [<arg>] ...
|
|
`,
|
|
ShortDescription: `
|
|
BASIC COMMANDS
|
|
|
|
init Initialize ipfs local configuration
|
|
add <path> Add an object to ipfs
|
|
cat <ref> Show ipfs object data
|
|
get <ref> Download ipfs objects
|
|
ls <ref> List links from an object
|
|
refs <ref> List hashes of links from an object
|
|
|
|
DATA STRUCTURE COMMANDS
|
|
|
|
block Interact with raw blocks in the datastore
|
|
object Interact with raw dag nodes
|
|
file Interact with Unix filesystem objects
|
|
|
|
ADVANCED COMMANDS
|
|
|
|
daemon Start a long-running daemon process
|
|
mount Mount an ipfs read-only mountpoint
|
|
resolve Resolve any type of name
|
|
name Publish or resolve IPNS names
|
|
dns Resolve DNS links
|
|
pin Pin objects to local storage
|
|
repo gc Garbage collect unpinned objects
|
|
|
|
NETWORK COMMANDS
|
|
|
|
id Show info about ipfs peers
|
|
bootstrap Add or remove bootstrap peers
|
|
swarm Manage connections to the p2p network
|
|
dht Query the dht for values or peers
|
|
ping Measure the latency of a connection
|
|
diag Print diagnostics
|
|
|
|
TOOL COMMANDS
|
|
|
|
config Manage configuration
|
|
version Show ipfs version information
|
|
update Download and apply go-ipfs updates
|
|
commands List all available commands
|
|
|
|
Use 'ipfs <command> --help' to learn more about each command.
|
|
`,
|
|
},
|
|
Options: []cmds.Option{
|
|
cmds.StringOption("config", "c", "Path to the configuration file to use"),
|
|
cmds.BoolOption("debug", "D", "Operate in debug mode"),
|
|
cmds.BoolOption("help", "Show the full command help text"),
|
|
cmds.BoolOption("h", "Show a short version of the command help text"),
|
|
cmds.BoolOption("local", "L", "Run the command locally, instead of using the daemon"),
|
|
},
|
|
}
|
|
|
|
// commandsDaemonCmd is the "ipfs commands" command for daemon
|
|
var CommandsDaemonCmd = CommandsCmd(Root)
|
|
|
|
var rootSubcommands = map[string]*cmds.Command{
|
|
"add": AddCmd,
|
|
"block": BlockCmd,
|
|
"bootstrap": BootstrapCmd,
|
|
"cat": CatCmd,
|
|
"commands": CommandsDaemonCmd,
|
|
"config": ConfigCmd,
|
|
"dht": DhtCmd,
|
|
"diag": DiagCmd,
|
|
"dns": DNSCmd,
|
|
"get": GetCmd,
|
|
"id": IDCmd,
|
|
"log": LogCmd,
|
|
"ls": LsCmd,
|
|
"mount": MountCmd,
|
|
"name": NameCmd,
|
|
"object": ObjectCmd,
|
|
"pin": PinCmd,
|
|
"ping": PingCmd,
|
|
"refs": RefsCmd,
|
|
"repo": RepoCmd,
|
|
"resolve": ResolveCmd,
|
|
"stats": StatsCmd,
|
|
"swarm": SwarmCmd,
|
|
"tour": tourCmd,
|
|
"file": unixfs.UnixFSCmd,
|
|
"update": UpdateCmd,
|
|
"version": VersionCmd,
|
|
"bitswap": BitswapCmd,
|
|
}
|
|
|
|
func init() {
|
|
Root.Subcommands = rootSubcommands
|
|
}
|
|
|
|
type MessageOutput struct {
|
|
Message string
|
|
}
|
|
|
|
func MessageTextMarshaler(res cmds.Response) (io.Reader, error) {
|
|
return strings.NewReader(res.Output().(*MessageOutput).Message), nil
|
|
}
|