1package main
2
3import (
4	"bytes"
5	"fmt"
6	"github.com/olekukonko/tablewriter"
7	kingpin "gopkg.in/alecthomas/kingpin.v2"
8	"os"
9	"strings"
10
11	artifactory "artifactory.v401"
12)
13
14var (
15	groupid    = kingpin.Flag("groupid", "groupid coordinate").String()
16	artifactid = kingpin.Flag("artifactid", "artifactid coordinate").String()
17	version    = kingpin.Flag("version", "version coordinate").String()
18	classifier = kingpin.Flag("classifier", "classifier coordinate").String()
19	repo       = kingpin.Flag("repo", "repo to search against. can be specified multiple times").Strings()
20)
21
22func main() {
23	kingpin.Parse()
24	client := artifactory.NewClientFromEnv()
25	var coords artifactory.Gavc
26	if groupid != nil {
27		coords.GroupID = *groupid
28	}
29	if artifactid != nil {
30		coords.ArtifactID = *artifactid
31	}
32	if version != nil {
33		coords.Version = *version
34	}
35	if classifier != nil {
36		coords.Classifier = *classifier
37	}
38	if repo != nil {
39		coords.Repos = *repo
40	}
41	data, err := client.GAVCSearch(&coords)
42	if err != nil {
43		fmt.Printf("%s\n", err)
44		os.Exit(1)
45	} else {
46		table := tablewriter.NewWriter(os.Stdout)
47		table.SetAutoWrapText(false)
48		table.SetBorder(false)
49		table.SetAlignment(tablewriter.ALIGN_LEFT)
50
51		for _, r := range data {
52			var innerBuf bytes.Buffer
53			innerTable := tablewriter.NewWriter(&innerBuf)
54			innerTable.SetHeader([]string{
55				"File",
56				"Repo",
57				"RemoteUrl",
58				"Created",
59				"Last Modified",
60				"Created By",
61				"Modified By",
62				"SHA1",
63				"MD5",
64				"Size",
65				"MimeType",
66			})
67			elems := strings.Split(r.Path, "/")
68			fileName := elems[len(elems)-1]
69			innerTable.Append([]string{
70				fileName,
71				r.Repo,
72				r.RemoteUrl,
73				r.Created,
74				r.LastModified,
75				r.CreatedBy,
76				r.ModifiedBy,
77				r.Checksums.SHA1,
78				r.Checksums.MD5,
79				r.Size,
80				r.MimeType,
81			})
82			innerTable.Render()
83			table.Append([]string{
84				innerBuf.String(),
85			})
86			table.Append([]string{
87				fmt.Sprintf("Download: %s\n", r.Uri),
88			})
89
90		}
91		table.Render()
92		os.Exit(0)
93	}
94}
95