-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.go
97 lines (77 loc) · 2.14 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Copyright 2018 Wilhelm Peter Püschel
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"log"
"os"
)
// version will be set during build (-ldflags)
var version string
func main() {
// Vars we need here
var remote Remote
var config *Config
var err error
var providers = []string{"gitea", "github", "gitlab"}
// Conftype is allways the last command line parameter
provider := os.Args[len(os.Args)-1]
// Get a config
config, err = NewConfig()
if err != nil {
log.Fatalf("Could not read config: %s", err)
}
switch provider {
case "gitea":
// Set remote
remote = NewGiteaRemote(config)
case "gitlab":
// Set remote
remote = NewGitlabRemote(config)
case "github":
// Set remote
remote = NewGithubRemote(config)
case "version":
log.Printf("Version: %s\n", version)
os.Exit(0)
default:
log.Fatalf("Unknown provider: %s\nTry -h [provider] where provider type can be one of: %s", provider, providers)
}
// List repos
if config.list || config.listLong {
err = remote.ListRepos()
if err != nil {
log.Fatalf("Could not list repos: %s\n", err)
}
}
// Create a remote repo
if config.repoName != "" && !config.del {
err := remote.CreateRepo()
if err != nil {
log.Fatalf("Could not create repository %s: %s\n", config.repoName, err)
}
// Clone the remote repo
if config.newrepo {
err := remote.CloneRepo()
if err != nil {
log.Fatalf("Could not clone the remote repository %s: %s\n", config.repoName, err)
}
}
}
// Delete a remote repo
if config.repoName != "" && config.del {
err := remote.DeleteRepo()
if err != nil {
log.Fatalf("Could not delete repository %s: %s\n", config.repoName, err)
}
}
}