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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/onering/cli/assets.rb', line 34
def self.run(args)
sc = args.shift
case (sc.downcase.to_sym rescue nil)
when :show
return @api.assets.show(args[0])
when :get
Onering::Logger.fatal!("Expected 1 parameter, got #{args.length}", "Onering::CLI::Assets") unless args.length == 1
if @opts[:query_given]
return @api.list('id', {
:filter => @opts[:query]
}).collect{|i| @api.get_field(i, args[0])}
elsif @opts[:id_given]
return @api.get_field(@opts[:id], args[0])
end
when :set
Onering::Logger.fatal!("Expected 2 parameters, got #{args.length}", "Onering::CLI::Assets") unless args.length == 2
if @opts[:query]
return @api.list('id', {
:filter => @opts[:query]
}).collect{|i| @api.set_field(i, args[0])}
elsif @opts[:id]
return @api.set_field(@opts[:id], args[0], args[1])
end
when :list
Onering::Logger.fatal!("Expected 1 parameter, got #{args.length}", "Onering::CLI::Assets") unless args.length >= 1
return @api.list(args, {
:filter => @opts[:query]
}.compact)
when :find
Onering::Logger.fatal!("Expected 1 parameter, got #{args.length}", "Onering::CLI::Assets") unless args.length == 1
return @api.find(args[0])
when :save
rv = @api.save(args[0] || @opts[:id]) do
if not STDIN.tty?
STDIN.read()
elsif (File.readable?(args[1]) rescue false)
File.read(args[1])
else
Onering::Logger.fatal!("Cannot save data, no input data specified", "Onering::CLI::Assets")
end
end
rv.parsed_response
when :tag
Onering::Logger.fatal!("Expected 1 parameters, got #{args.length}", "Onering::CLI::Assets") unless args.length > 0
if @opts[:query]
@api.list('id', {
:filter => @opts[:query]
}).collect{|i| @api.get("devices/#{i}/tag/#{args.join('/')}") }
elsif @opts[:id]
@api.get("devices/#{@opts[:id]}/tag/#{args.join('/')}")
end
return nil
when :untag
Onering::Logger.fatal!("Expected 1 parameters, got #{args.length}", "Onering::CLI::Assets") unless args.length > 0
if @opts[:query]
@api.list('id', {
:filter => @opts[:query]
}).collect{|i| @api.get("devices/#{i}/untag/#{args.join('/')}") }
elsif @opts[:id]
@api.get("devices/#{@opts[:id]}/untag/#{args.join('/')}")
end
return nil
else
Onering::Logger.fatal!("Unknown subcommand #{sc.inspect}", "Onering::CLI::Assets")
end
end
|