cmd/gondole-cli/main.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 15 Apr 2017 10:26:36 +0200
changeset 120 579912e9d0ef
parent 107 f0db7634e540
permissions -rw-r--r--
Refactor API calls
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
cab58bf80778 Basic CLI-tool for testing.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     1
package main
cab58bf80778 Basic CLI-tool for testing.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     2
7
0fbbac6d8e8c We have an skeleton now.
Ollivier Robert <roberto@keltia.net>
parents: 5
diff changeset
     3
import (
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
     4
	"log"
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
     5
	"os"
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
     6
	"strings"
85
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
     7
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
     8
	"github.com/urfave/cli"
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
     9
86
ae6efea0207f Change import for the experiment branch
Mikael Berthe <mikael@lilotux.net>
parents: 85
diff changeset
    10
	"github.com/McKael/gondole"
7
0fbbac6d8e8c We have an skeleton now.
Ollivier Robert <roberto@keltia.net>
parents: 5
diff changeset
    11
)
0fbbac6d8e8c We have an skeleton now.
Ollivier Robert <roberto@keltia.net>
parents: 5
diff changeset
    12
19
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
    13
var (
85
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    14
	fVerbose             bool
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    15
	fInstance            string
89
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    16
	fAuthMethod          string
85
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    17
	fUsername, fPassword string
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
    18
	fScopes              string
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    19
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    20
	instance *gondole.Client
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    21
	cnf      *Server
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    22
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    23
	// Default scopes
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    24
	ourScopes = []string{
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    25
		"read",
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    26
		"write",
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    27
		"follow",
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    28
	}
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    29
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    30
	defaultInstanceURL = "https://mastodon.social"
89
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    31
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    32
	authMethods = map[string]bool{
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    33
		"basic":  true,
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    34
		"oauth2": true,
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    35
	}
19
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
    36
)
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
    37
84
519be52bfced Some Fixes
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    38
// Server holds our application details
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    39
type Server struct {
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    40
	ID          string `json:"id"`
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    41
	Name        string `json:"name"`
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    42
	BearerToken string `json:"bearer_token"`
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    43
	APIBase     string `json:"base_url"`
107
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    44
	InstanceURL string `json:"instance_url"`
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    45
}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    46
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    47
type Config struct {
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    48
	Default string
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    49
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    50
	// Can be "oauth2", "basic"
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    51
	Auth string
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    52
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    53
	// If not using OAuth2
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    54
	User     string
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    55
	Password string
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    56
}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    57
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    58
func setupEnvironment(c *cli.Context) (err error) {
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    59
	var config Config
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    60
	var scopes []string
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    61
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    62
	instanceURL := defaultInstanceURL
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    63
	if fInstance != "" {
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    64
		if strings.Contains(fInstance, "://") {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    65
			instanceURL = fInstance
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    66
		} else {
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    67
			instanceURL = "https://" + fInstance
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    68
		}
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    69
	}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    70
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    71
	instanceName := basename(instanceURL)
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    72
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    73
	if fAuthMethod != "" && authMethods[fAuthMethod] {
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    74
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    75
	}
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
    76
107
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    77
	// Set scopes
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    78
	if fScopes != "" {
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    79
		scopes = strings.Split(fScopes, " ")
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    80
	} else {
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    81
		scopes = ourScopes
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    82
	}
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
    83
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    84
	// Load configuration, will register if none is found
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
    85
	cnf, err = LoadConfig(instanceName)
90
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    86
	if err == nil && cnf != nil {
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    87
		instance = &gondole.Client{
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    88
			ID:          cnf.ID,
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    89
			InstanceURL: cnf.InstanceURL,
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    90
			APIBase:     cnf.APIBase,
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    91
			Name:        cnf.Name,
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    92
			Secret:      cnf.BearerToken,
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    93
		}
686374268c54 Restore instance loaded from configuration
Mikael Berthe <mikael@lilotux.net>
parents: 89
diff changeset
    94
	} else {
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
    95
		// Nothing exist yet
89
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    96
		/*
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    97
			defName := Config{
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    98
				Default:  instanceName,
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
    99
				Auth:     "basic",
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   100
				User:     "",
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   101
				Password: "",
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   102
			}
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   103
		*/
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   104
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   105
		err = config.Write()
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   106
		if err != nil {
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   107
			log.Fatalf("error: can not write config for %s", instanceName)
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   108
		}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   109
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   110
		instance, err = gondole.NewApp("gondole-cli", scopes, gondole.NoRedirect, instanceURL)
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 107
diff changeset
   111
		if err != nil {
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 107
diff changeset
   112
			log.Fatalf("error: can not register application:", err.Error())
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 107
diff changeset
   113
		}
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   114
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   115
		server := &Server{
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   116
			ID:          instance.ID,
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   117
			Name:        instance.Name,
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   118
			BearerToken: instance.Secret,
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   119
			APIBase:     instance.APIBase,
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   120
			InstanceURL: instance.InstanceURL,
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   121
		}
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   122
		err = server.WriteToken(instanceName)
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   123
		if err != nil {
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   124
			log.Fatalf("error: can not write token for %s", instance.Name)
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   125
		}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   126
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   127
		cnf := Config{
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   128
			Default: instance.Name,
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   129
		}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   130
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   131
		err = cnf.Write()
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   132
		if err != nil {
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   133
			log.Fatalf("error: can not write config for %s", instance.Name)
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   134
		}
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   135
	}
89
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   136
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   137
	// Log in to the instance
91
ae9ad3c7bca5 Use basic auth if oauth2 is not explicitely requested
Mikael Berthe <mikael@lilotux.net>
parents: 90
diff changeset
   138
	if fAuthMethod != "oauth2" {
107
f0db7634e540 Add scopes to the basic login, fix some login bugs
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
   139
		err = instance.LoginBasic(fUsername, fPassword, scopes)
89
8a7a33bec6e1 Merge remote-tracking branch 'upstream/develop' into mckael-experiments_2
Mikael Berthe <mikael@lilotux.net>
parents: 86 82
diff changeset
   140
	}
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   141
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   142
	return err
24
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   143
}
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   144
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   145
func init() {
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   146
	cli.VersionFlag = cli.BoolFlag{Name: "version, V"}
19
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
   147
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   148
	cli.VersionPrinter = func(c *cli.Context) {
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   149
		log.Printf("API wrapper: %s Mastodon CLI: %s\n", c.App.Version, gondole.GondoleVersion)
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   150
	}
24
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   151
}
19
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
   152
24
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   153
func main() {
19
9f4ae6d2a995 Barebone CLI app.
Ollivier Robert <roberto@keltia.net>
parents: 7
diff changeset
   154
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   155
	app := cli.NewApp()
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   156
	app.Name = "gondole"
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   157
	app.Usage = "Mastodon CLI interface"
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   158
	app.Author = "Ollivier Robert <roberto@keltia.net>"
83
adc39ae774c0 Make it work with non-defaut instances
Mikael Berthe <mikael@lilotux.net>
parents: 76
diff changeset
   159
	app.Version = gondole.GondoleVersion
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   160
	//app.HideVersion = true
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   161
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   162
	app.Before = setupEnvironment
24
a01761bc5837 Register() will be used to load the config & create on first run.
Ollivier Robert <roberto@keltia.net>
parents: 19
diff changeset
   163
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   164
	app.Flags = []cli.Flag{
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   165
		cli.StringFlag{
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   166
			Name:        "auth,A",
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   167
			Usage:       "authentication mode",
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   168
			Destination: &fAuthMethod,
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   169
		},
67
1ff7afce37fe Add a baseURL parameter to NewApp().
Ollivier Robert <roberto@keltia.net>
parents: 53
diff changeset
   170
		cli.StringFlag{
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   171
			Name:        "instance,I",
67
1ff7afce37fe Add a baseURL parameter to NewApp().
Ollivier Robert <roberto@keltia.net>
parents: 53
diff changeset
   172
			Usage:       "use that instance",
76
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   173
			Destination: &fInstance,
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   174
		},
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   175
		cli.StringFlag{
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   176
			Name:        "scopes,S",
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   177
			Usage:       "use these scopes",
dd9b9c02bfff Complete rewrite with config integration here.
Ollivier Robert <roberto@keltia.net>
parents: 67
diff changeset
   178
			Destination: &fScopes,
67
1ff7afce37fe Add a baseURL parameter to NewApp().
Ollivier Robert <roberto@keltia.net>
parents: 53
diff changeset
   179
		},
85
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   180
		cli.StringFlag{
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   181
			Name:        "username,login",
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   182
			Usage:       "user name",
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   183
			Destination: &fUsername,
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   184
		},
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   185
		cli.StringFlag{
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   186
			Name:        "password",
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   187
			Usage:       "user password",
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   188
			Destination: &fPassword,
abf0f5e40281 Initial login support
Mikael Berthe <mikael@lilotux.net>
parents: 84
diff changeset
   189
		},
82
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   190
		cli.BoolFlag{
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   191
			Name:        "verbose,v",
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   192
			Usage:       "verbose mode",
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   193
			Destination: &fVerbose,
09f5e04b1b37 Begin auth support.
Ollivier Robert <roberto@keltia.net>
parents: 76
diff changeset
   194
		},
38
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   195
	}
8343e5264a9b Hook up the application registration + gofmt.
Ollivier Robert <roberto@keltia.net>
parents: 31
diff changeset
   196
	app.Run(os.Args)
5
cab58bf80778 Basic CLI-tool for testing.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
   197
}