-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy patharguments.go
86 lines (72 loc) · 2.18 KB
/
arguments.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
package main
import (
"fmt"
"os"
"path/filepath"
"github.com/akamensky/argparse"
)
var arguments = struct {
Input string
Output string
URL string
DryRun bool
Recursive bool
Jobs int
Network string
}{
// Default arguments
Jobs: 1,
}
func argumentParsing(args []string) {
// Create new parser object
parser := argparse.NewParser("deepsort", "AI powered image tagger backed by DeepDetect")
// Create flags
URL := parser.String("u", "url", &argparse.Options{
Required: true,
Help: "URL of your DeepDetect instance (i.e: http://localhost:8080)"})
input := parser.String("i", "input", &argparse.Options{
Required: true,
Help: "Your input folder."})
output := parser.String("o", "output", &argparse.Options{
Required: false,
Help: "Your output folder, if output is set, " +
"original files will not be renamed, " +
"but the renamed version will be copied in the output folder."})
network := parser.Selector("n", "network", []string{"resnet-50", "googlenet"}, &argparse.Options{
Required: false,
Help: "The pre-trained deep neural network you want to use, " +
"can be resnet-50 or googlenet",
Default: "resnet-50"})
recursive := parser.Flag("R", "recursive", &argparse.Options{
Required: false,
Help: "Process files recursively."})
jobs := parser.Int("j", "jobs", &argparse.Options{
Required: false,
Help: "Number of parallel jobs",
Default: 1})
dryRun := parser.Flag("d", "dry-run", &argparse.Options{
Required: false,
Help: "Just classify images and return results, do not apply."})
// Parse input
err := parser.Parse(args)
if err != nil {
// In case of error print error and print usage
// This can also be done by passing -h or --help flags
fmt.Print(parser.Usage(err))
os.Exit(0)
}
// Convert path parameters to absolute paths
inputFolder, _ := filepath.Abs(*input)
var outputFolder string
if *output != "" {
outputFolder, _ = filepath.Abs(*output)
}
// Finally save the collected flags
arguments.Network = *network
arguments.Jobs = *jobs
arguments.DryRun = *dryRun
arguments.Recursive = *recursive
arguments.Input = inputFolder
arguments.Output = outputFolder
arguments.URL = *URL
}