/textile-go

Textile CLI/daemon, Desktop Application, and iOS/Android Mobile Bindings

Primary LanguageGoMIT LicenseMIT

textile-go

banner


MIT License Go Report Card Commitizen friendly CircleCI

Status

Throughput Graph

What is Textile?

Riding on IPFS and libp2p, Textile aims to provide a set of straightforward primitives for building decentralized mobile applications.

This repository currently contains a CLI/daemon, a desktop application, and iOS/Android mobile bindings for running a Textile Photos node. See textile-mobile for the Textile Photos iOS/Android app.

Install

Download the latest release for your OS.

Usage

NOTE: The command line tool currently has limited access to the internal node APIs. We're quickly mapping everything over to a newly designed REST API and command line tool. Stay tuned for docs.

~ $ textile --help
Usage:
  textile [OPTIONS] <command>

Help Options:
  -h, --help  Show this help message

Available commands:
  address  Show wallet address
  daemon   Start a node daemon
  images   Manage images
  init     Init the node repo and exit
  migrate  Migrate the node repo and exit
  peer     Show peer ID
  ping     Ping another peer
  shell    Start a node shell
  threads  Manage threads
  version  Print version and exit
  wallet   Manage a wallet of accounts

Textile uses an HD Wallet as an account key manager. You may use the name derived account seed on multiple devices to sync wallet data. To get started, run:

$ textile wallet init

This will generate a recovery phrase for all your accounts. You may specify a word count and password as well (run with --help for usage).

Next, use an account from you wallet to initialize a node. First time users should just use Account 0, which is printed out by the wallet init subcommand. Use the accounts subcommand to access deeper derived wallet accounts.

$ textile init -s <account_seed>

Finally, start the daemon:

$ textile daemon

TODO: Run through creating a thread, adding images, comments, etc.

Contributing

$ go get github.com/textileio/textile-go

You'll need a few different tools here to get setup...

Install dep

Golang package manager:

$ brew install dep

Install gx

IPFS package manager:

$ go get -u github.com/whyrusleeping/gx
$ go get -u github.com/whyrusleeping/gx-go

Install node

NodeJS is used for git hooks and some build tooling:

$ brew install node

Install dependencies

Finally, download deps managed by gx and dep:

$ npm run setup

Building

There are various things to build:

CLI/daemon

$ make build

iOS Framework

$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile init
$ make ios_framework

Android Framework

$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile init
$ make android_framework

Desktop Application

WARNING: Desktop is an unmaintained experiment. Security issues may exist.

The build is made by a vendored version of go-astilectron-bundler. Due to Go's painful package management, you'll want to delete any go-astilectron-related binaries and source code you have installed from github.com/asticode in your $GOPATH. Then you can install the vendored go-astilectron-bundler:

$ go install ./vendor/github.com/asticode/go-astilectron-bundler/astilectron-bundler

Pick your OS: Linux, Darwin, or Windows:

$ cd desktop
$ astilectron-bundler -v -c bundler.linux.json
$ astilectron-bundler -v -c bundler.darwin.json
$ astilectron-bundler -v -c bundler.windows.json

Double-click the built app in desktop/output, or run it directly:

$ cd desktop && go run *.go

See go-astilectron-bundler for more build configurations.

Note: Because cgo is required, you'll need to setup a proper C toolchain for cross-OS-compilation.

Commitizen

The easiest way to write a valid commit message is to use the npm script:

$ npm run cm

This will start the interactive commit prompt.

Acknowledgments

While almost entirely different now, this project was jumpstarted from OpenBazaar. Thanks to @cpacia, @drwasho and the rest of the contributors for their work on openbazaar-go.

License

MIT