apiotics-test 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +260 -0
- data/Rakefile +33 -0
- data/lib/apiotics.rb +58 -0
- data/lib/apiotics/client.rb +20 -0
- data/lib/apiotics/configuration.rb +23 -0
- data/lib/apiotics/extract.rb +107 -0
- data/lib/apiotics/hardware.rb +109 -0
- data/lib/apiotics/insert.rb +115 -0
- data/lib/apiotics/parse.rb +20 -0
- data/lib/apiotics/portal.rb +217 -0
- data/lib/apiotics/railtie.rb +14 -0
- data/lib/apiotics/server.rb +238 -0
- data/lib/apiotics/version.rb +3 -0
- data/lib/generators/apiotics/channel/USAGE +10 -0
- data/lib/generators/apiotics/channel/channel_generator.rb +35 -0
- data/lib/generators/apiotics/channel/templates/apiotics_channel.rb.erb +9 -0
- data/lib/generators/apiotics/channel/templates/apiotics_channel_client.coffee.erb +16 -0
- data/lib/generators/apiotics/channel/templates/apiotics_channel_initializer.rb.erb +3 -0
- data/lib/generators/apiotics/controller/USAGE +8 -0
- data/lib/generators/apiotics/controller/controller_generator.rb +25 -0
- data/lib/generators/apiotics/controller/templates/apiotics_scaffold.rb.erb +60 -0
- data/lib/generators/apiotics/create_model/USAGE +10 -0
- data/lib/generators/apiotics/create_model/create_model_generator.rb +76 -0
- data/lib/generators/apiotics/create_model/templates/apiotics_logs_model.rb.erb +7 -0
- data/lib/generators/apiotics/create_model/templates/apiotics_model.rb.erb +49 -0
- data/lib/generators/apiotics/create_model/templates/apiotics_module.rb.erb +14 -0
- data/lib/generators/apiotics/create_model/templates/apiotics_module_model.rb.erb +8 -0
- data/lib/generators/apiotics/create_model/templates/create_module_model_table.rb.erb +9 -0
- data/lib/generators/apiotics/create_table/USAGE +9 -0
- data/lib/generators/apiotics/create_table/create_table_generator.rb +62 -0
- data/lib/generators/apiotics/create_table/templates/create_logs_table.rb.erb +14 -0
- data/lib/generators/apiotics/create_table/templates/create_table.rb.erb +16 -0
- data/lib/generators/apiotics/initializer/USAGE +8 -0
- data/lib/generators/apiotics/initializer/initializer_generator.rb +29 -0
- data/lib/generators/apiotics/initializer/templates/apiotics.rb.erb +10 -0
- data/lib/generators/apiotics/initializer/templates/apiotics_module.rb.erb +6 -0
- data/lib/generators/apiotics/initializer/templates/apiotics_parents.rb.erb +3 -0
- data/lib/generators/apiotics/initializer/templates/apiotics_settings.rb.erb +9 -0
- data/lib/generators/apiotics/initializer/templates/apiotics_targets.rb.erb +4 -0
- data/lib/generators/apiotics/initializer/templates/setting.rb.erb +3 -0
- data/lib/generators/apiotics/install/USAGE +11 -0
- data/lib/generators/apiotics/install/install_generator.rb +11 -0
- data/lib/generators/apiotics/migration/USAGE +10 -0
- data/lib/generators/apiotics/migration/migration_generator.rb +54 -0
- data/lib/generators/apiotics/migration/templates/create_logs_table.rb.erb +14 -0
- data/lib/generators/apiotics/migration/templates/migrate_table.rb.erb +12 -0
- data/lib/generators/apiotics/model/USAGE +11 -0
- data/lib/generators/apiotics/model/model_generator.rb +58 -0
- data/lib/generators/apiotics/scaffold/scaffold_generator.rb +23 -0
- data/lib/generators/apiotics/scaffold/templates/USAGE +0 -0
- data/lib/generators/apiotics/script/USAGE +8 -0
- data/lib/generators/apiotics/script/script_generator.rb +45 -0
- data/lib/generators/apiotics/script/templates/comm_server.rake +19 -0
- data/lib/generators/apiotics/script/templates/dev_comm_server.rake +19 -0
- data/lib/generators/apiotics/script/templates/dev_server.rb +8 -0
- data/lib/generators/apiotics/script/templates/dev_server_control.rb +7 -0
- data/lib/generators/apiotics/script/templates/install_firmware.rake +10 -0
- data/lib/generators/apiotics/script/templates/publish_script.rake +6 -0
- data/lib/generators/apiotics/script/templates/script.rb.erb +12 -0
- data/lib/generators/apiotics/script/templates/server.rb +8 -0
- data/lib/generators/apiotics/script/templates/server_control.rb +7 -0
- data/lib/generators/apiotics/script/templates/test_comm_server.rake +19 -0
- data/lib/generators/apiotics/script/templates/test_server.rb +8 -0
- data/lib/generators/apiotics/script/templates/test_server_control.rb +7 -0
- data/lib/generators/apiotics/view/USAGE +12 -0
- data/lib/generators/apiotics/view/templates/default.css.erb +18 -0
- data/lib/generators/apiotics/view/templates/edit.html.erb +6 -0
- data/lib/generators/apiotics/view/templates/form.html.erb +52 -0
- data/lib/generators/apiotics/view/templates/index.html.erb +66 -0
- data/lib/generators/apiotics/view/templates/show.html.erb +56 -0
- data/lib/generators/apiotics/view/view_generator.rb +26 -0
- data/lib/tasks/simbiotes_tasks.rake +4 -0
- metadata +256 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
class <%= class_name %>Logs < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
create_table :<%= logs_table_name(@k) %> do |t|
|
4
|
+
t.<%= @v %> :<%= @k %>
|
5
|
+
t.boolean :<%= @k %>_ack
|
6
|
+
t.boolean :<%= @k %>_complete
|
7
|
+
t.string :<%= @k %>_timestamp
|
8
|
+
t.string :<%= @k %>_status
|
9
|
+
t.string :<%= @k %>_action
|
10
|
+
t.integer :<%= table_name %>_id
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class <%= class_name %> < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
<% attributes.each do |k,v| %>
|
4
|
+
add_column :<%= table_name %>, :<%= k %>, :<%= v %>
|
5
|
+
add_column :<%= table_name %>, :<%= k %>_ack, :boolean
|
6
|
+
add_column :<%= table_name %>, :<%= k %>_complete, :boolean
|
7
|
+
add_column :<%= table_name %>, :<%= k %>_timestamp, :string
|
8
|
+
add_column :<%= table_name %>, :<%= k %>_status, :string
|
9
|
+
add_column :<%= table_name %>, :<%= k %>_action, :string
|
10
|
+
<% end %>
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Description:
|
2
|
+
Creates a model and associated database table with the attributes specified. If using data from the portal (recommended) Worker should be the name of a worker defined in your Hive, and Model should be the name of a Driver or Script in that Worker.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate apiotics:model Worker Model attribute:type attribute:type ... attribute:type
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
app/models/worker.rb
|
9
|
+
app/models/worker/model.rb
|
10
|
+
db/migrate/{datetime_stamp}_create_table.rb
|
11
|
+
db/migrate/{datetime_stamp}_create_table_attribute_logs.rb
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Apiotics
|
2
|
+
class ModelGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
argument :parent, :type => :string
|
5
|
+
argument :name, :type => :string
|
6
|
+
argument :attributes, :type => :hash, :required => false
|
7
|
+
|
8
|
+
def run_generators
|
9
|
+
generate "apiotics:create_table", arguments
|
10
|
+
if @c == nil
|
11
|
+
generate "apiotics:create_model", "#{parent} #{name}"
|
12
|
+
else
|
13
|
+
generate "apiotics:create_model", thorify
|
14
|
+
generate "apiotics:initializer", "true"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def arguments
|
21
|
+
if attributes == nil
|
22
|
+
return get_attributes
|
23
|
+
else
|
24
|
+
return parent.to_s + " " + name.to_s + " " + stringify
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def stringify
|
29
|
+
string = String.new
|
30
|
+
attributes.each do |k,v|
|
31
|
+
string = string + k + ":" + v + " "
|
32
|
+
end
|
33
|
+
string
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_attributes
|
37
|
+
@c = Apiotics.get_attributes(parent, name)
|
38
|
+
if @c[:kind] == "script"
|
39
|
+
generate "apiotics:script", "#{parent} #{name}"
|
40
|
+
end
|
41
|
+
string = String.new
|
42
|
+
@c[:attributes].each do |k,v|
|
43
|
+
if v[:type] == "enum"
|
44
|
+
string = string + k.gsub(" ", "_").downcase + ":" + "integer" + " "
|
45
|
+
else
|
46
|
+
string = string + k.gsub(" ", "_").downcase + ":" + v[:type] + " "
|
47
|
+
end
|
48
|
+
end
|
49
|
+
return parent.to_s + " " + name.to_s + " " + string
|
50
|
+
end
|
51
|
+
|
52
|
+
def thorify
|
53
|
+
string = String.new
|
54
|
+
string = parent.to_s + " " + name.to_s + " " + "true"
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Apiotics
|
2
|
+
class ScaffoldGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
argument :worker_name, :type => :string
|
5
|
+
|
6
|
+
def create_scaffold
|
7
|
+
@c = Apiotics::Portal.parse_all_interfaces
|
8
|
+
generate "apiotics:initializer", "true"
|
9
|
+
drivers = @c[worker_name].keys
|
10
|
+
drivers.each do |driver|
|
11
|
+
generate "apiotics:model", "#{worker_name} #{driver}"
|
12
|
+
end
|
13
|
+
generate "apiotics:controller", "#{worker_name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def date_string
|
19
|
+
date_string = DateTime.now.strftime("%Y%m%d%H%M%S")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
File without changes
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Apiotics
|
2
|
+
class ScriptGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
argument :parent, :type => :string, :required => false
|
5
|
+
argument :name, :type => :string, :required => false
|
6
|
+
|
7
|
+
def create_script
|
8
|
+
if name != nil
|
9
|
+
@c = Apiotics::Portal.get_attributes(parent, name)
|
10
|
+
template "script.rb.erb", "lib/scripts/apiotics/#{parent_file_name}/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
copy_file "server.rb", "lib/scripts/server.rb"
|
13
|
+
copy_file "test_server.rb", "lib/scripts/test_server.rb"
|
14
|
+
copy_file "dev_server.rb", "lib/scripts/dev_server.rb"
|
15
|
+
copy_file "server_control.rb", "lib/scripts/server_control.rb"
|
16
|
+
copy_file "test_server_control.rb", "lib/scripts/test_server_control.rb"
|
17
|
+
copy_file "dev_server_control.rb", "lib/scripts/dev_server_control.rb"
|
18
|
+
copy_file "comm_server.rake", "lib/tasks/comm_server.rake"
|
19
|
+
copy_file "test_comm_server.rake", "lib/tasks/test_comm_server.rake"
|
20
|
+
copy_file "dev_comm_server.rake", "lib/tasks/dev_comm_server.rake"
|
21
|
+
copy_file "publish_script.rake", "lib/tasks/publish_script.rake"
|
22
|
+
copy_file "install_firmware.rake", "lib/tasks/install_firmware.rake"
|
23
|
+
FileUtils.chmod 0775, "lib/scripts/server_control.rb"
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def file_name
|
29
|
+
name.underscore
|
30
|
+
end
|
31
|
+
|
32
|
+
def class_name
|
33
|
+
name.classify
|
34
|
+
end
|
35
|
+
|
36
|
+
def parent_class_name
|
37
|
+
parent.classify
|
38
|
+
end
|
39
|
+
|
40
|
+
def parent_file_name
|
41
|
+
parent.underscore
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
namespace :comms do
|
2
|
+
desc "Start local communication server"
|
3
|
+
task start: :environment do
|
4
|
+
system("ruby", "#{Rails.root}/lib/scripts/server_control.rb", "start")
|
5
|
+
puts $?
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Stop local communication server"
|
9
|
+
task stop: :environment do
|
10
|
+
system("ruby", "#{Rails.root}/lib/scripts/server_control.rb", "stop")
|
11
|
+
puts $?
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Restart local communication server"
|
15
|
+
task restart: :environment do
|
16
|
+
system("ruby", "#{Rails.root}/lib/scripts/server_control.rb", "restart")
|
17
|
+
puts $?
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
namespace :dev_comms do
|
2
|
+
desc "Start local communication server"
|
3
|
+
task start: :environment do
|
4
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "start")
|
5
|
+
puts $?
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Stop local communication server"
|
9
|
+
task stop: :environment do
|
10
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "stop")
|
11
|
+
puts $?
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Restart local communication server"
|
15
|
+
task restart: :environment do
|
16
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "restart")
|
17
|
+
puts $?
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
namespace :firmware do
|
2
|
+
desc "Install firmware on devices. Use rake firmware:install {worker_name} to install firmware on a device. Use rake firmware:install {worker_name} {instance_name} to install firmware and set a name for the device."
|
3
|
+
task :install, [:worker, :name] => [:environment] do |task, args|
|
4
|
+
if args[:name] == nil
|
5
|
+
Apiotics::Hardware.openocd(args[:worker], nil)
|
6
|
+
else
|
7
|
+
Apiotics::Hardware.openocd(args[:worker], args[:name])
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#######
|
2
|
+
# This script will be deployed to your device.
|
3
|
+
# The $global variables below represent the values your script will receive/needs to provide to/from its various interfaces and inputs.
|
4
|
+
# Your script should change the value of these variables to what they should be, and they will then get passed back.
|
5
|
+
# You can also add additional global variables. If you do, these will be passed back to the script along with the
|
6
|
+
# interface and input variables the next time the script is invoked. These are useful for keeping state across script
|
7
|
+
# invocations.
|
8
|
+
<% @c[:attributes].each do |k,v|%>
|
9
|
+
$<%= k.gsub(" ","_") %><% end %><% @c[:inputs].each do |k,v|%>
|
10
|
+
$<%= "#{k.gsub(" ","_")}_#{v.gsub(" ","_")}" %><% end %>
|
11
|
+
|
12
|
+
# put your logic here.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
namespace :test_comms do
|
2
|
+
desc "Start local communication server"
|
3
|
+
task start: :environment do
|
4
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "start")
|
5
|
+
puts $?
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Stop local communication server"
|
9
|
+
task stop: :environment do
|
10
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "stop")
|
11
|
+
puts $?
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Restart local communication server"
|
15
|
+
task restart: :environment do
|
16
|
+
system("ruby", "#{Rails.root}/lib/scripts/dev_server_control.rb", "restart")
|
17
|
+
puts $?
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Description:
|
2
|
+
Creates a model and associated database table with the attributes specified. If using data from the portal (recommended) Worker should be the name of a worker defined in your Hive, and Model should be the name of a Driver or Script in that Worker.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate apiotics:view Worker
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
app/views/worker/show.html.erb
|
9
|
+
app/views/worker/new.html.erb
|
10
|
+
app/views/worker/edit.html.erb
|
11
|
+
app/views/worker/index.html.erb
|
12
|
+
app/views/worker/_form.html.erb
|
@@ -0,0 +1,18 @@
|
|
1
|
+
table {
|
2
|
+
border-collapse: collapse;
|
3
|
+
border: 1px solid black;
|
4
|
+
}
|
5
|
+
|
6
|
+
th, td {
|
7
|
+
padding: 15px;
|
8
|
+
text-align: center;
|
9
|
+
}
|
10
|
+
|
11
|
+
th {
|
12
|
+
background-color: #f5f5f5;
|
13
|
+
color: black;
|
14
|
+
}
|
15
|
+
|
16
|
+
tr:nth-child(even) {
|
17
|
+
background-color: #f2f2f2
|
18
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<%%= simple_form_for(@<%= module_file_name %>, url: <%= module_file_name %>_path(@<%= module_file_name %>)) do |form| %>
|
2
|
+
<table>
|
3
|
+
<tr>
|
4
|
+
<th>
|
5
|
+
Id
|
6
|
+
</th>
|
7
|
+
<td>
|
8
|
+
<%%= @<%= module_file_name %>.apiotics_instance %>
|
9
|
+
</td>
|
10
|
+
</tr>
|
11
|
+
<tr>
|
12
|
+
<th>
|
13
|
+
Name
|
14
|
+
</th>
|
15
|
+
<td>
|
16
|
+
<%%= @<%= module_file_name %>.name %>
|
17
|
+
</td>
|
18
|
+
</tr>
|
19
|
+
<% Apiotics.configuration.targets[module_name].keys.each do |key| %>
|
20
|
+
<tr>
|
21
|
+
<th rowspan='<%= Apiotics.configuration.targets[module_name][key].count %>'>
|
22
|
+
<%= key %>
|
23
|
+
</th>
|
24
|
+
<%%= form.simple_fields_for :<%= key.underscore.downcase %> do |fields| %>
|
25
|
+
<% n = 0 %>
|
26
|
+
<% Apiotics.configuration.targets[module_name][key].each do |interface| %>
|
27
|
+
<% if n != 0 %>
|
28
|
+
<tr>
|
29
|
+
<% end %>
|
30
|
+
<td>
|
31
|
+
<%%= fields.input :<%= interface %> %>
|
32
|
+
</td>
|
33
|
+
<% if n != 0 %>
|
34
|
+
</tr>
|
35
|
+
<% end %>
|
36
|
+
<% n += 1 %>
|
37
|
+
<% end %>
|
38
|
+
<%% end %>
|
39
|
+
</tr>
|
40
|
+
<% end %>
|
41
|
+
<tr>
|
42
|
+
<th>
|
43
|
+
|
44
|
+
</th>
|
45
|
+
<td>
|
46
|
+
<div class="actions">
|
47
|
+
<%%= form.submit %>
|
48
|
+
</div>
|
49
|
+
</td>
|
50
|
+
</tr>
|
51
|
+
</table>
|
52
|
+
<%% end %>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<p id="notice"><%%= notice %></p>
|
2
|
+
<h1>
|
3
|
+
<%= module_name %>s
|
4
|
+
</h1>
|
5
|
+
|
6
|
+
<table>
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th style="border: 1px solid black;">
|
10
|
+
Id
|
11
|
+
</th>
|
12
|
+
<th style="border: 1px solid black;">
|
13
|
+
Name
|
14
|
+
</th>
|
15
|
+
<% Apiotics.configuration.targets[module_name].keys.each do |key| %>
|
16
|
+
<th colspan='<%= Apiotics.configuration.targets[module_name][key].count %>' style="border: 1px solid black;">
|
17
|
+
<%= key %>
|
18
|
+
</th>
|
19
|
+
<% end %>
|
20
|
+
<th style="border: 1px solid black;">
|
21
|
+
|
22
|
+
</th>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<th>
|
26
|
+
|
27
|
+
</th>
|
28
|
+
<th>
|
29
|
+
|
30
|
+
</th>
|
31
|
+
<% Apiotics.configuration.targets[module_name].keys.each do |key| %>
|
32
|
+
<% Apiotics.configuration.targets[module_name][key].each do |interface| %>
|
33
|
+
<th>
|
34
|
+
<%= interface %>
|
35
|
+
</th>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
<th>
|
39
|
+
|
40
|
+
</th>
|
41
|
+
</tr>
|
42
|
+
</thead>
|
43
|
+
<tbody>
|
44
|
+
<%% @<%= module_file_name %>s.each do |object| %>
|
45
|
+
<tr id='<%%= object.apiotics_instance %>'>
|
46
|
+
<td>
|
47
|
+
<%%= object.apiotics_instance %>
|
48
|
+
</td>
|
49
|
+
<td>
|
50
|
+
<%%= object.name %>
|
51
|
+
</td>
|
52
|
+
<% Apiotics.configuration.targets[module_name].keys.each do |key| %>
|
53
|
+
<% Apiotics.configuration.targets[module_name][key].each do |interface| %>
|
54
|
+
<td class='<%= module_file_name %>-<%= key.underscore.downcase %>-<%= interface %>'>
|
55
|
+
<%%= object.<%= key.underscore.downcase %>.<%= interface %> %>
|
56
|
+
</td>
|
57
|
+
<% end %>
|
58
|
+
<% end %>
|
59
|
+
<td>
|
60
|
+
<%%= link_to "Edit", edit_<%= module_file_name %>_path(object)%>
|
61
|
+
<%%= link_to "Show", <%= module_file_name %>_path(object) %>
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
<%% end %>
|
65
|
+
</tbody>
|
66
|
+
</table>
|