Module: Dialog::Triggers

Defined in:
lib/triggers/init.rb,
lib/triggers/_func.rb,
lib/triggers/false.rb,
lib/triggers/deploy.rb,
lib/triggers/console_start.rb,
lib/triggers/systemd_start.rb

Class Method Summary collapse

Class Method Details

.deploy_background_systemdObject



64
65
66
67
68
# File 'lib/triggers/deploy.rb', line 64

def deploy_background_systemd
  erbGen('systemd/dialog_background.service', "#{Dir.home}/.config/systemd/user/dialog_background.service")
  systemd('dialog_background', 'enstart')        
  Dialog.logger.info "Background systemd services deployed OK!"
end

.deploy_binaries_noticeObject



78
79
80
81
82
83
84
# File 'lib/triggers/deploy.rb', line 78

def deploy_binaries_notice
  Dialog.logger.warn "Please install neccessary binaries:"
  Dialog.logger.info "openSUSE: zypper ar -cf https://download.opensuse.org/repositories/home:/in4ops:/4wrap/openSUSE_Leap_15.0/home:in4ops:4wrap.repo"
  #will be 'home:in4ops:Innosense:libs'
  Dialog.logger.info "openSUSE: zypper --no-gpg-checks --non-interactive in zbar tdlib" 
  Dialog.logger.info "sudo loginctl enable-linger $USER"
end

.deploy_bot_dev_systemdObject



71
72
73
74
75
# File 'lib/triggers/deploy.rb', line 71

def deploy_bot_dev_systemd
  erbGen('systemd/[email protected]',    "#{Dir.home}/.config/systemd/user/[email protected]", {:desc => 'dialog_bot_dev runner', :path => "#{Dialog.config.path.dialog}/dialect/dialect.sqlite"})                  
  erbGen('systemd/[email protected]', "#{Dir.home}/.config/systemd/user/[email protected]", {:mode => 'dialect', :env => 'bot', :systemdChain => 'dialog_bot'}) 
  Dialog.logger.info "Bot development systemd services deployed OK!"        
end

.deploy_bot_systemdObject



50
51
52
53
54
55
# File 'lib/triggers/deploy.rb', line 50

def deploy_bot_systemd
  erbGen('systemd/[email protected]', "#{Dir.home}/.config/systemd/user/[email protected]", {:mode => 'bot'})
  erbGen('systemd/[email protected]',    "#{Dir.home}/.config/systemd/user/[email protected]", {:desc => "dialog_bot_pre runner", :path => "/tmp/in4/dialog_touch_%i"})            
  erbGen('systemd/[email protected]', "#{Dir.home}/.config/systemd/user/[email protected]",  {:mode => 'check', :env => 'bot', :systemdChain => "dialog_bot"})  
  Dialog.logger.info "Bot systemd services deployed OK!"                  
end

.deploy_gemsObject



87
88
89
90
91
92
93
94
95
# File 'lib/triggers/deploy.rb', line 87

def deploy_gems
  stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/libs/dialog_bot_ruby.git", :stdin_data => 'stdin')
  Dialog.logger.info stderr
  stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/MVP/dialect_lookup.git", :stdin_data => 'stdin')
  Dialog.logger.info stderr
  stderr, status = Open3.capture3("gem specific_install -u -l https://gitlab.com/Innosense/MVP/dialog_ruby.git", :stdin_data => 'stdin')
  Dialog.logger.info stderr        
  Dialog.logger.info "Gems deployment OK!"                  
end

.deploy_gitsyncObject



98
99
# File 'lib/triggers/deploy.rb', line 98

def deploy_gitsync
end

.deploy_redis_runObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/triggers/deploy.rb', line 33

def deploy_redis_run
  if File.file?('/usr/sbin/redis-server')
    redisDir = "#{Dialog.config.path.dialogData}/redis"
    FileUtils.mkdir_p redisDir
    erbGen('systemd/dialog_redis.service', "#{Dir.home}/.config/systemd/user/dialog_redis.service")
    erbGen('conf/redis_local.conf', "#{redisDir}/redis_local.conf")
    erbGen('conf/redis_global.conf', "#{redisDir}/redis_global.conf")
    systemd('dialog_redis', 'enstart')
    Dialog.logger.info "Redis deployment OK!"          
  else
    Dialog.logger.error "Please install Redis binary"
    Dialog.logger.info "openSUSE: zypper --no-gpg-checks --non-interactive in redis"
    exit(false)
  end
end

.deploy_tdlib_systemdObject



58
59
60
61
# File 'lib/triggers/deploy.rb', line 58

def deploy_tdlib_systemd
  erbGen('systemd/[email protected]', "#{Dir.home}/.config/systemd/user/[email protected]", {:mode => 'tdlib'})   
  Dialog.logger.info "TDLib systemd services deployed OK!"
end

.erbGen(erbFile, dst, erb = {}) ⇒ Object



17
18
19
20
21
22
# File 'lib/triggers/_func.rb', line 17

def erbGen(erbFile, dst, erb={})
  if not File.file?(dst)
    tmpl = ERB.new(File.read("#{Dialog.config.path.dialog_ruby}/exec/#{erbFile}")).result(binding)
    File.open(dst, 'w') do |f| f.write tmpl; end         
  end
end

.systemd(service, mode) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/triggers/_func.rb', line 25

def systemd(service, mode)
  Open3.popen3('/usr/bin/systemctl', '--user', 'daemon-reload')
  if mode == 'enstart'
    Open3.popen3('/usr/bin/systemctl', '--user', 'enable',  service)        
    Open3.popen3('/usr/bin/systemctl', '--user', 'restart', service)
  end
end

.trigger__runObject



33
34
35
# File 'lib/triggers/_func.rb', line 33

def trigger__run
  Dialog._run
end

.trigger_console_startObject



18
19
20
# File 'lib/triggers/console_start.rb', line 18

def trigger_console_start
  Dialog._run      
end

.trigger_deployObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/triggers/deploy.rb', line 17

def trigger_deploy
  require 'erb'      
  mode = Dialog.config.run.mode
  Dialog.logger.debug "Using mode '#{mode}'"      
  FileUtils.mkdir_p "#{Dir.home}/.config/systemd/user"
  deploy_redis_run unless File.file?("#{Dialog.config.path.dialogData}/redis/dump.rdb")
  deploy_background_systemd
  deploy_binaries_notice
  deploy_bot_systemd
  deploy_tdlib_systemd
  deploy_bot_dev_systemd if Dialog.config.run.mode == 'dev' 
  Open3.popen3('/usr/bin/systemctl', '--user', 'daemon-reload')
  deploy_gems unless File.file?("#{Dir.home}/.config/systemd/user/[email protected]")
end

.trigger_falseObject



17
18
19
# File 'lib/triggers/false.rb', line 17

def trigger_false
  Dialog.logger.error "Something wrong in runtime scenario, please use dialog.sh"
end

.trigger_initObject



17
18
19
20
21
# File 'lib/triggers/init.rb', line 17

def trigger_init
  require 'erb'      
  send("trigger_init_#{Dialog.config.run.mode.to_sym}", Dialog.config.run.mode)
  Dialog.logger.info "#{Dialog.config.run.mode} init finished successfully!"                          
end

.trigger_init_bot(mode) ⇒ Object



30
31
32
# File 'lib/triggers/init.rb', line 30

def trigger_init_bot(mode)
  true
end

.trigger_init_bot_dev(mode) ⇒ Object



34
35
36
# File 'lib/triggers/init.rb', line 34

def trigger_init_bot_dev(mode)
  true
end

.trigger_init_tdlib(mode) ⇒ Object



23
24
25
26
27
28
# File 'lib/triggers/init.rb', line 23

def trigger_init_tdlib(mode)
  require 'tdlib-ruby'
  Dir.glob(File.join("#{Dialog.config.path.dialog_rubyLib}/tdlib/**", "*.rb")).each{|f| require f}         
  sess = Dialog::TDLib.tdlibInit
  Dialog::TDLib.tdlibAuth('user', sess)
end

.trigger_systemd_startObject



17
18
19
20
# File 'lib/triggers/systemd_start.rb', line 17

def trigger_systemd_start
  systemd("dialog_#{Dialog.config.run.mode}@#{Dialog.config.naming.instance}", 'enstart')
  systemd("dialog_#{Dialog.config.run.mode}_pre@#{Dialog.config.naming.instance}.path", 'enstart')                    
end