flydata 0.0.5.6 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +8 -0
- data/Gemfile.lock +36 -1
- data/VERSION +1 -1
- data/bin/fdmysqldump +59 -0
- data/flydata.gemspec +49 -5
- data/lib/flydata.rb +3 -1
- data/lib/flydata/api/data_entry.rb +4 -0
- data/lib/flydata/api/redshift_cluster.rb +15 -0
- data/lib/flydata/cli.rb +1 -0
- data/lib/flydata/command/base.rb +8 -2
- data/lib/flydata/command/conf.rb +48 -0
- data/lib/flydata/command/encrypt.rb +18 -0
- data/lib/flydata/command/sender.rb +10 -3
- data/lib/flydata/command/setlogdel.rb +1 -1
- data/lib/flydata/command/setup.rb +26 -3
- data/lib/flydata/command/sync.rb +962 -0
- data/lib/flydata/command/version.rb +10 -0
- data/lib/flydata/fluent-plugins/in_mysql_binlog_flydata.rb +305 -0
- data/lib/flydata/fluent-plugins/out_forward_ssl.rb +91 -0
- data/lib/flydata/fluent-plugins/preference.rb +92 -0
- data/lib/flydata/helpers.rb +13 -1
- data/lib/flydata/preference/data_entry_preference.rb +98 -0
- data/lib/flydata/sync_file_manager.rb +120 -0
- data/lib/flydata/table_def.rb +2 -0
- data/lib/flydata/table_def/mysql_table_def.rb +128 -0
- data/lib/flydata/table_def/redshift_table_def.rb +144 -0
- data/lib/flydata/util/encryptor.rb +53 -0
- data/spec/fluent_plugins_spec_helper.rb +19 -0
- data/spec/flydata/command/sender_spec.rb +3 -29
- data/spec/flydata/command/sync_spec.rb +1049 -0
- data/spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb +204 -0
- data/spec/flydata/util/encryptor_spec.rb +96 -0
- data/spec/spec_helper.rb +1 -0
- data/tmpl/redshift_mysql_data_entry.conf.tmpl +11 -0
- metadata +153 -4
data/Gemfile
CHANGED
@@ -6,6 +6,9 @@ gem "activesupport", "~> 4.0.0"
|
|
6
6
|
gem "json", "~> 1.8.0"
|
7
7
|
gem "highline", "~> 1.6.19"
|
8
8
|
gem "fluentd", "0.10.35"
|
9
|
+
gem "ruby-binlog", ">= 1.0.0", :git => "https://github.com/hapyrus/ruby-binlog.git"
|
10
|
+
gem "fluent-plugin-mysql-binlog", "~> 0.0.2"
|
11
|
+
gem "mysql2", "~> 0.3.11"
|
9
12
|
|
10
13
|
group :development do
|
11
14
|
gem "bundler"
|
@@ -14,5 +17,10 @@ group :development do
|
|
14
17
|
#gem "autotest"
|
15
18
|
#gem "autotest-standalone"
|
16
19
|
#gem "autotest-notification"
|
20
|
+
gem 'timecop'
|
17
21
|
gem "sqlite3"
|
22
|
+
gem 'ruby-prof'
|
23
|
+
gem 'activemodel', '~> 4.0.0'
|
24
|
+
gem 'activerecord', '~> 4.0.0'
|
25
|
+
gem 'protected_attributes'
|
18
26
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,6 +1,21 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/hapyrus/ruby-binlog.git
|
3
|
+
revision: e381b4fc411ca2c2402aefc25809ac3c97d75f94
|
4
|
+
specs:
|
5
|
+
ruby-binlog (1.0.0)
|
6
|
+
|
1
7
|
GEM
|
2
8
|
remote: http://rubygems.org/
|
3
9
|
specs:
|
10
|
+
activemodel (4.0.0)
|
11
|
+
activesupport (= 4.0.0)
|
12
|
+
builder (~> 3.1.0)
|
13
|
+
activerecord (4.0.0)
|
14
|
+
activemodel (= 4.0.0)
|
15
|
+
activerecord-deprecated_finders (~> 1.0.2)
|
16
|
+
activesupport (= 4.0.0)
|
17
|
+
arel (~> 4.0.0)
|
18
|
+
activerecord-deprecated_finders (1.0.3)
|
4
19
|
activesupport (4.0.0)
|
5
20
|
i18n (~> 0.6, >= 0.6.4)
|
6
21
|
minitest (~> 4.2)
|
@@ -8,13 +23,18 @@ GEM
|
|
8
23
|
thread_safe (~> 0.1)
|
9
24
|
tzinfo (~> 0.3.37)
|
10
25
|
addressable (2.3.5)
|
26
|
+
arel (4.0.2)
|
11
27
|
atomic (1.1.14)
|
12
|
-
builder (3.
|
28
|
+
builder (3.1.4)
|
13
29
|
cool.io (1.1.1)
|
14
30
|
iobuffer (>= 1.0.0)
|
15
31
|
diff-lcs (1.2.4)
|
16
32
|
faraday (0.8.8)
|
17
33
|
multipart-post (~> 1.2.0)
|
34
|
+
fluent-plugin-mysql-binlog (0.0.2)
|
35
|
+
activesupport
|
36
|
+
fluentd
|
37
|
+
kodama
|
18
38
|
fluentd (0.10.35)
|
19
39
|
cool.io (~> 1.1.0)
|
20
40
|
http_parser.rb (~> 0.5.1)
|
@@ -47,12 +67,15 @@ GEM
|
|
47
67
|
json (1.8.0)
|
48
68
|
jwt (0.1.8)
|
49
69
|
multi_json (>= 1.5)
|
70
|
+
kodama (0.1.1)
|
71
|
+
ruby-binlog (>= 0.1.9)
|
50
72
|
mime-types (1.25)
|
51
73
|
minitest (4.7.5)
|
52
74
|
msgpack (0.5.6)
|
53
75
|
multi_json (1.8.2)
|
54
76
|
multi_xml (0.5.5)
|
55
77
|
multipart-post (1.2.0)
|
78
|
+
mysql2 (0.3.11)
|
56
79
|
nokogiri (1.5.10)
|
57
80
|
oauth2 (0.9.2)
|
58
81
|
faraday (~> 0.8)
|
@@ -61,6 +84,8 @@ GEM
|
|
61
84
|
multi_json (~> 1.0)
|
62
85
|
multi_xml (~> 0.5)
|
63
86
|
rack (~> 1.2)
|
87
|
+
protected_attributes (1.0.3)
|
88
|
+
activemodel (>= 4.0.0, < 5.0)
|
64
89
|
rack (1.5.2)
|
65
90
|
rake (10.1.0)
|
66
91
|
rdoc (4.0.1)
|
@@ -75,9 +100,11 @@ GEM
|
|
75
100
|
rspec-expectations (2.14.3)
|
76
101
|
diff-lcs (>= 1.1.3, < 2.0)
|
77
102
|
rspec-mocks (2.14.3)
|
103
|
+
ruby-prof (0.14.2)
|
78
104
|
sqlite3 (1.3.8)
|
79
105
|
thread_safe (0.1.3)
|
80
106
|
atomic
|
107
|
+
timecop (0.7.1)
|
81
108
|
tzinfo (0.3.38)
|
82
109
|
yajl-ruby (1.1.0)
|
83
110
|
|
@@ -85,13 +112,21 @@ PLATFORMS
|
|
85
112
|
ruby
|
86
113
|
|
87
114
|
DEPENDENCIES
|
115
|
+
activemodel (~> 4.0.0)
|
116
|
+
activerecord (~> 4.0.0)
|
88
117
|
activesupport (~> 4.0.0)
|
89
118
|
bundler
|
119
|
+
fluent-plugin-mysql-binlog (~> 0.0.2)
|
90
120
|
fluentd (= 0.10.35)
|
91
121
|
highline (~> 1.6.19)
|
92
122
|
i18n (~> 0.6.5)
|
93
123
|
jeweler
|
94
124
|
json (~> 1.8.0)
|
125
|
+
mysql2 (~> 0.3.11)
|
126
|
+
protected_attributes
|
95
127
|
rest-client (~> 1.6.7)
|
96
128
|
rspec
|
129
|
+
ruby-binlog (>= 1.0.0)!
|
130
|
+
ruby-prof
|
97
131
|
sqlite3
|
132
|
+
timecop
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/bin/fdmysqldump
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#require 'optparse'
|
4
|
+
|
5
|
+
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
6
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
7
|
+
|
8
|
+
require 'flydata/table_def'
|
9
|
+
|
10
|
+
if `which mysqldump`.empty?
|
11
|
+
abort "mysqldump is not installed."
|
12
|
+
end
|
13
|
+
|
14
|
+
# TODO Implement options instead of passing all to mysqldump.
|
15
|
+
=begin
|
16
|
+
opts = {}
|
17
|
+
|
18
|
+
op = OptionParser.new do |o|
|
19
|
+
o.on('-h', '--host NAME', 'Connect to host.') do |v|
|
20
|
+
opts[:host] = v
|
21
|
+
end
|
22
|
+
o.on('-P', '--port NUMBER', 'Port number to use for connection.') do |v|
|
23
|
+
opts[:port] = v
|
24
|
+
end
|
25
|
+
o.on('-u', '--user NAME', 'User for login if not current user.') do |v|
|
26
|
+
opts[:user] = v
|
27
|
+
end
|
28
|
+
o.on('-p', '--password [TEXT]', "Password to use when connecting to server. If password is not given it's solicited on the tty.") do |v|
|
29
|
+
opts[:password] = v
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
op.parse!
|
34
|
+
|
35
|
+
=end
|
36
|
+
command = "mysqldump -d"
|
37
|
+
|
38
|
+
=begin
|
39
|
+
command += " -u#{opts[:user]}" if opts[:user]
|
40
|
+
command += " -h#{opts[:host]}" if opts[:host]
|
41
|
+
command += " -P#{opts[:port]}" if opts[:port]
|
42
|
+
command += " -p#{opts[:password]}" if opts[:password]
|
43
|
+
=end
|
44
|
+
command += " " + ARGV.join(' ')
|
45
|
+
|
46
|
+
IO.popen(command, 'r') do |io|
|
47
|
+
create_flydata_ctl_table = true
|
48
|
+
while !io.eof?
|
49
|
+
mysql_tabledef = Flydata::Sync::MysqlTableDef.create(io)
|
50
|
+
if mysql_tabledef.nil?
|
51
|
+
# stream had no more create table definition
|
52
|
+
break
|
53
|
+
end
|
54
|
+
flydata_tabledef = mysql_tabledef.to_flydata_tabledef
|
55
|
+
puts Flydata::Sync::RedshiftTableDef.from_flydata_tabledef(flydata_tabledef, flydata_ctl_table: create_flydata_ctl_table)
|
56
|
+
create_flydata_ctl_table = false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
data/flydata.gemspec
CHANGED
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "flydata"
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Koichi Fujikawa"]
|
12
|
-
s.date = "2014-
|
12
|
+
s.date = "2014-04-18"
|
13
13
|
s.description = "FlyData Command Line Interface"
|
14
14
|
s.email = "sysadmin@flydata.co"
|
15
|
-
s.executables = ["flydata"]
|
15
|
+
s.executables = ["fdmysqldump", "flydata"]
|
16
16
|
s.files = [
|
17
17
|
".gitignore",
|
18
18
|
".rspec",
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
"Gemfile.lock",
|
21
21
|
"Rakefile",
|
22
22
|
"VERSION",
|
23
|
+
"bin/fdmysqldump",
|
23
24
|
"bin/flydata",
|
24
25
|
"flydata.gemspec",
|
25
26
|
"lib/fly_data_model.rb",
|
@@ -27,10 +28,13 @@ Gem::Specification.new do |s|
|
|
27
28
|
"lib/flydata/api/base.rb",
|
28
29
|
"lib/flydata/api/data_entry.rb",
|
29
30
|
"lib/flydata/api/data_port.rb",
|
31
|
+
"lib/flydata/api/redshift_cluster.rb",
|
30
32
|
"lib/flydata/api_client.rb",
|
31
33
|
"lib/flydata/cli.rb",
|
32
34
|
"lib/flydata/command/base.rb",
|
35
|
+
"lib/flydata/command/conf.rb",
|
33
36
|
"lib/flydata/command/crontab.rb",
|
37
|
+
"lib/flydata/command/encrypt.rb",
|
34
38
|
"lib/flydata/command/kill_all.rb",
|
35
39
|
"lib/flydata/command/login.rb",
|
36
40
|
"lib/flydata/command/restart.rb",
|
@@ -40,26 +44,42 @@ Gem::Specification.new do |s|
|
|
40
44
|
"lib/flydata/command/setup.rb",
|
41
45
|
"lib/flydata/command/start.rb",
|
42
46
|
"lib/flydata/command/stop.rb",
|
47
|
+
"lib/flydata/command/sync.rb",
|
48
|
+
"lib/flydata/command/version.rb",
|
43
49
|
"lib/flydata/credentials.rb",
|
44
50
|
"lib/flydata/cron.rb",
|
51
|
+
"lib/flydata/fluent-plugins/in_mysql_binlog_flydata.rb",
|
52
|
+
"lib/flydata/fluent-plugins/out_forward_ssl.rb",
|
53
|
+
"lib/flydata/fluent-plugins/preference.rb",
|
45
54
|
"lib/flydata/flydata_crontab.sh",
|
46
55
|
"lib/flydata/helpers.rb",
|
47
56
|
"lib/flydata/heroku.rb",
|
48
57
|
"lib/flydata/heroku/configuration_methods.rb",
|
49
58
|
"lib/flydata/heroku/instance_methods.rb",
|
50
59
|
"lib/flydata/log_monitor.rb",
|
60
|
+
"lib/flydata/preference/data_entry_preference.rb",
|
51
61
|
"lib/flydata/proxy.rb",
|
62
|
+
"lib/flydata/sync_file_manager.rb",
|
63
|
+
"lib/flydata/table_def.rb",
|
64
|
+
"lib/flydata/table_def/mysql_table_def.rb",
|
65
|
+
"lib/flydata/table_def/redshift_table_def.rb",
|
66
|
+
"lib/flydata/util/encryptor.rb",
|
67
|
+
"spec/fluent_plugins_spec_helper.rb",
|
52
68
|
"spec/fly_data_model_spec.rb",
|
53
69
|
"spec/flydata/api/data_entry_spec.rb",
|
54
70
|
"spec/flydata/command/sender_spec.rb",
|
71
|
+
"spec/flydata/command/sync_spec.rb",
|
72
|
+
"spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb",
|
55
73
|
"spec/flydata/heroku_spec.rb",
|
74
|
+
"spec/flydata/util/encryptor_spec.rb",
|
56
75
|
"spec/flydata_spec.rb",
|
57
|
-
"spec/spec_helper.rb"
|
76
|
+
"spec/spec_helper.rb",
|
77
|
+
"tmpl/redshift_mysql_data_entry.conf.tmpl"
|
58
78
|
]
|
59
79
|
s.homepage = "http://flydata.co/"
|
60
80
|
s.licenses = ["All right reserved."]
|
61
81
|
s.require_paths = ["lib"]
|
62
|
-
s.rubygems_version = "1.8.
|
82
|
+
s.rubygems_version = "1.8.24"
|
63
83
|
s.summary = "FlyData CLI"
|
64
84
|
|
65
85
|
if s.respond_to? :specification_version then
|
@@ -72,10 +92,18 @@ Gem::Specification.new do |s|
|
|
72
92
|
s.add_runtime_dependency(%q<json>, ["~> 1.8.0"])
|
73
93
|
s.add_runtime_dependency(%q<highline>, ["~> 1.6.19"])
|
74
94
|
s.add_runtime_dependency(%q<fluentd>, ["= 0.10.35"])
|
95
|
+
s.add_runtime_dependency(%q<ruby-binlog>, [">= 1.0.0"])
|
96
|
+
s.add_runtime_dependency(%q<fluent-plugin-mysql-binlog>, ["~> 0.0.2"])
|
97
|
+
s.add_runtime_dependency(%q<mysql2>, ["~> 0.3.11"])
|
75
98
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
76
99
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
77
100
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
101
|
+
s.add_development_dependency(%q<timecop>, [">= 0"])
|
78
102
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
103
|
+
s.add_development_dependency(%q<ruby-prof>, [">= 0"])
|
104
|
+
s.add_development_dependency(%q<activemodel>, ["~> 4.0.0"])
|
105
|
+
s.add_development_dependency(%q<activerecord>, ["~> 4.0.0"])
|
106
|
+
s.add_development_dependency(%q<protected_attributes>, [">= 0"])
|
79
107
|
else
|
80
108
|
s.add_dependency(%q<rest-client>, ["~> 1.6.7"])
|
81
109
|
s.add_dependency(%q<i18n>, ["~> 0.6.5"])
|
@@ -83,10 +111,18 @@ Gem::Specification.new do |s|
|
|
83
111
|
s.add_dependency(%q<json>, ["~> 1.8.0"])
|
84
112
|
s.add_dependency(%q<highline>, ["~> 1.6.19"])
|
85
113
|
s.add_dependency(%q<fluentd>, ["= 0.10.35"])
|
114
|
+
s.add_dependency(%q<ruby-binlog>, [">= 1.0.0"])
|
115
|
+
s.add_dependency(%q<fluent-plugin-mysql-binlog>, ["~> 0.0.2"])
|
116
|
+
s.add_dependency(%q<mysql2>, ["~> 0.3.11"])
|
86
117
|
s.add_dependency(%q<bundler>, [">= 0"])
|
87
118
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
88
119
|
s.add_dependency(%q<rspec>, [">= 0"])
|
120
|
+
s.add_dependency(%q<timecop>, [">= 0"])
|
89
121
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
122
|
+
s.add_dependency(%q<ruby-prof>, [">= 0"])
|
123
|
+
s.add_dependency(%q<activemodel>, ["~> 4.0.0"])
|
124
|
+
s.add_dependency(%q<activerecord>, ["~> 4.0.0"])
|
125
|
+
s.add_dependency(%q<protected_attributes>, [">= 0"])
|
90
126
|
end
|
91
127
|
else
|
92
128
|
s.add_dependency(%q<rest-client>, ["~> 1.6.7"])
|
@@ -95,10 +131,18 @@ Gem::Specification.new do |s|
|
|
95
131
|
s.add_dependency(%q<json>, ["~> 1.8.0"])
|
96
132
|
s.add_dependency(%q<highline>, ["~> 1.6.19"])
|
97
133
|
s.add_dependency(%q<fluentd>, ["= 0.10.35"])
|
134
|
+
s.add_dependency(%q<ruby-binlog>, [">= 1.0.0"])
|
135
|
+
s.add_dependency(%q<fluent-plugin-mysql-binlog>, ["~> 0.0.2"])
|
136
|
+
s.add_dependency(%q<mysql2>, ["~> 0.3.11"])
|
98
137
|
s.add_dependency(%q<bundler>, [">= 0"])
|
99
138
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
100
139
|
s.add_dependency(%q<rspec>, [">= 0"])
|
140
|
+
s.add_dependency(%q<timecop>, [">= 0"])
|
101
141
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
142
|
+
s.add_dependency(%q<ruby-prof>, [">= 0"])
|
143
|
+
s.add_dependency(%q<activemodel>, ["~> 4.0.0"])
|
144
|
+
s.add_dependency(%q<activerecord>, ["~> 4.0.0"])
|
145
|
+
s.add_dependency(%q<protected_attributes>, [">= 0"])
|
102
146
|
end
|
103
147
|
end
|
104
148
|
|
data/lib/flydata.rb
CHANGED
@@ -12,7 +12,9 @@ lib_dir = File.expand_path(File.dirname(__FILE__))
|
|
12
12
|
ActiveSupport::Dependencies.autoload_paths << lib_dir
|
13
13
|
|
14
14
|
module Flydata
|
15
|
+
FLYDATA_DEBUG = !!(ENV['FLYDATA_DEBUG'])
|
15
16
|
FLYDATA_HOME = ENV['FLYDATA_HOME'] || "#{ENV['HOME']}/.flydata"
|
16
|
-
|
17
|
+
FLYDATA_GEM_HOME = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
18
|
+
FLYDATA_TMPL_DIR = File.join(FLYDATA_GEM_HOME, 'tmpl')
|
17
19
|
include Flydata::Heroku
|
18
20
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Flydata
|
2
|
+
module Api
|
3
|
+
class RedshiftCluster < Base
|
4
|
+
def initialize(api_client)
|
5
|
+
@model_name = 'redshift_cluster'
|
6
|
+
@url_path = "/#{@model_name.pluralize}"
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_query(sql)
|
11
|
+
@client.post("#{@url_path}/query", nil, {redshift_query: {body: sql}})
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/flydata/cli.rb
CHANGED
data/lib/flydata/command/base.rb
CHANGED
@@ -8,10 +8,16 @@ module Flydata
|
|
8
8
|
|
9
9
|
def retrieve_data_entries
|
10
10
|
data_entries = flydata.get('/data_entries')
|
11
|
-
unless flydata.response.code == 200
|
11
|
+
unless flydata.response.code == 200 and data_entries
|
12
12
|
raise "Failed to retrieve data_entries"
|
13
13
|
end
|
14
|
-
data_entries
|
14
|
+
data_entries.collect do |de|
|
15
|
+
if Flydata::Preference::DataEntryPreference.conf_exists?(de)
|
16
|
+
Flydata::Preference::DataEntryPreference.load_conf(de)
|
17
|
+
else
|
18
|
+
de
|
19
|
+
end
|
20
|
+
end
|
15
21
|
end
|
16
22
|
def register_crontab
|
17
23
|
data_entries = retrieve_data_entries
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Flydata
|
2
|
+
module Command
|
3
|
+
class Conf < Base
|
4
|
+
def run
|
5
|
+
data_entries = retrieve_data_entries
|
6
|
+
copy_conf_tmpl(data_entries)
|
7
|
+
usage(data_entries)
|
8
|
+
end
|
9
|
+
|
10
|
+
def copy_templates
|
11
|
+
copy_conf_tmpl(retrieve_data_entries)
|
12
|
+
end
|
13
|
+
|
14
|
+
def help
|
15
|
+
usage(retrieve_data_entries)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def copy_conf_tmpl(data_entries)
|
21
|
+
data_entries.each { |de| Flydata::Preference::DataEntryPreference.copy_template(de) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def usage(data_entries)
|
25
|
+
puts "Data Entry Configuration"
|
26
|
+
puts "=" * 64
|
27
|
+
cnt = 0
|
28
|
+
data_entries.each do |de|
|
29
|
+
name = "#{de['display_name']}" || de['name']
|
30
|
+
file = if Flydata::Preference::DataEntryPreference.configurable?(de)
|
31
|
+
cnt += 1
|
32
|
+
Flydata::Preference::DataEntryPreference.conf_path(de)
|
33
|
+
else
|
34
|
+
"(not supported)"
|
35
|
+
end
|
36
|
+
puts "#{name.ljust(24)} -> #{file}"
|
37
|
+
end
|
38
|
+
puts "=" * 64
|
39
|
+
puts
|
40
|
+
if cnt < 1
|
41
|
+
puts "There are no configurable data entries."
|
42
|
+
else
|
43
|
+
puts "Edit above files to change the configuration."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Flydata
|
2
|
+
module Command
|
3
|
+
class Encrypt < Base
|
4
|
+
def run
|
5
|
+
dp = flydata.data_port.get
|
6
|
+
key = dp['key']
|
7
|
+
text = ask_password
|
8
|
+
encrypted_text = Flydata::Util::Encryptor.encrypt(text, key)
|
9
|
+
puts "Encrypted text: #{encrypted_text}"
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def ask_password
|
14
|
+
ask("Enter text: ") { |x| x.echo = "*" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|