Files
gocryptotrader/cmd/gctcli/main.go
Andrew 92147cdc5f (Engine): Database system improvements (#358)
* Migrated to goose & sqlboiler

* create tests with sqlboiler

* code clean up

* Added gct -> sqlboiler config gen

* dropped pgx support

* dropped pgx support because who needs connection pools

* reenable sqlite audit tests

* first pass of migration changes

* stuff is broken :D

* sqlboiler :D

* end of date commit

* Added comments code clean up

* revert go module files back to upstream

* bug fix

* pushed go.mod update to use correc goose version

* renamed sqlite to sqlite3 for consistency across codebase and PR feedback changes

* makefile updates

* things are broken end of day commit

* added postgresql test

* use correct database name

* travis fixes for env vars

* travis fixes for env vars

* test fixes

* run migration on test setup

* test adding postgres support to appveyor

* Skip tests on appveyor due to issues with missing binaries

* oh yeah i have to support windows don't i

* bumped goose version up

* add postgres to osx

* fix travis config as osx does not support services move spin up to before_script

* added PGDATA path fix

* pass PG_DATA to pg_ctl

* added initdb to before install

* fixes to wording and bumps up goose version

* who needs ssl anyway

* moved ssl to correct section :D

* bumped goose version up

* unbreak travis

* unbreak travis

* fix if database is disabled in config

* move strings to consts

* converted more strings to const

* improvements to sqlboiler mmodel gen

* Added contrib\sqlboiler file

* sqlboiler windows contrib fixes

* bumped goose version up

* :D whoops

* further fixes to sql models

* further fixes to sql models

* database type fix for config gen

* README update

* go.mod clean up

* added config details for appveyor

* appveyor ordering fix

* force psql9.6

* appveyor config changes

* all the environmen vars

* model changes for psql

* model changes for psql

* sqlite model fixes

* attempt at osx fix

* added error check for migration

* typos and check against goose error instead of string :D

* updated sqlboiler commit id

* bump sqlboiler version again

* set decimal package to @0bb1631

* readme and makefile updates

* bump goose version update readme and add override flag to config gen

* README typo fix and lowered inserts in test down to 20 as we are only testing that inserts work running 200 was unnecessary

* added gctcli command for audit event

* Added debug output toggle to config added both postgres & sqlite support to gctcli command

* Wording changes on errors

* set sqlite to 1 connection to stop locke database issues

* Usage update for order

* README updates with config examples

* go.mod/sum tidy

* removed lines in import second

* removed lines in imports

* convert local time to utc for database and display output

* go mod clean up and error checking to time

* renamed all packages to sqlite3

* added windows command output for sql model gen

* time conversion fix

* time conversion on gctcli
2019-10-08 15:28:31 +11:00

143 lines
3.2 KiB
Go

package main
import (
"encoding/json"
"fmt"
"log"
"os"
"path/filepath"
"runtime"
"github.com/thrasher-corp/gocryptotrader/common"
"github.com/thrasher-corp/gocryptotrader/core"
"github.com/thrasher-corp/gocryptotrader/gctrpc/auth"
"github.com/urfave/cli"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)
var (
host string
username string
password string
pairDelimiter string
)
func jsonOutput(in interface{}) {
j, err := json.MarshalIndent(in, "", " ")
if err != nil {
return
}
fmt.Print(string(j))
}
func setupClient() (*grpc.ClientConn, error) {
targetPath := filepath.Join(common.GetDefaultDataDir(runtime.GOOS), "tls", "cert.pem")
creds, err := credentials.NewClientTLSFromFile(targetPath, "")
if err != nil {
return nil, err
}
opts := []grpc.DialOption{grpc.WithTransportCredentials(creds),
grpc.WithPerRPCCredentials(auth.BasicAuth{
Username: username,
Password: password,
}),
}
conn, err := grpc.Dial(host, opts...)
if err != nil {
return nil, err
}
return conn, err
}
func main() {
app := cli.NewApp()
app.Name = "gctcli"
app.Version = core.Version(true)
app.EnableBashCompletion = true
app.Usage = "command line interface for managing the gocryptotrader daemon"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "rpchost",
Value: "localhost:9052",
Usage: "the gRPC host to connect to",
Destination: &host,
},
cli.StringFlag{
Name: "rpcuser",
Value: "admin",
Usage: "the gRPC username",
Destination: &username,
},
cli.StringFlag{
Name: "rpcpassword",
Value: "Password",
Usage: "the gRPC password",
Destination: &password,
},
cli.StringFlag{
Name: "delimiter",
Value: "-",
Usage: "the default currency pair delimiter used to standardise currency pair input",
Destination: &pairDelimiter,
},
}
app.Commands = []cli.Command{
getInfoCommand,
getSubsystemsCommand,
enableSubsystemCommand,
disableSubsystemCommand,
getRPCEndpointsCommand,
getCommunicationRelayersCommand,
getExchangesCommand,
enableExchangeCommand,
disableExchangeCommand,
getExchangeOTPCommand,
getExchangeOTPsCommand,
getExchangeInfoCommand,
getTickerCommand,
getTickersCommand,
getOrderbookCommand,
getOrderbooksCommand,
getAccountInfoCommand,
getConfigCommand,
getPortfolioCommand,
getPortfolioSummaryCommand,
addPortfolioAddressCommand,
removePortfolioAddressCommand,
getForexProvidersCommand,
getForexRatesCommand,
getOrdersCommand,
getOrderCommand,
submitOrderCommand,
simulateOrderCommand,
whaleBombCommand,
cancelOrderCommand,
cancelAllOrdersCommand,
getEventsCommand,
addEventCommand,
removeEventCommand,
getCryptocurrencyDepositAddressesCommand,
getCryptocurrencyDepositAddressCommand,
withdrawCryptocurrencyFundsCommand,
withdrawFiatFundsCommand,
getLoggerDetailsCommand,
setLoggerDetailsCommand,
getExchangePairsCommand,
enableExchangePairCommand,
disableExchangePairCommand,
getOrderbookStreamCommand,
getExchangeOrderbookStreamCommand,
getTickerStreamCommand,
getExchangeTickerStreamCommand,
getAuditEventCommand,
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}