blob: 95614828eee486d93d346ecc03dd27388a8d2ad5 [file] [log] [blame]
#!/usr/bin/env ruby
#
# Server side setup
#
require 'whimsy/asf/agenda'
require 'whimsy/asf/board'
require 'wunderbar/sinatra'
require 'wunderbar/vue'
require 'wunderbar/bootstrap/theme'
require 'ruby2js/es2017'
require 'ruby2js/strict'
require 'ruby2js/filter/functions'
require 'ruby2js/filter/require'
require 'listen'
require 'yaml'
require 'thread'
require 'net/http'
require 'shellwords'
require 'mail'
require 'open-uri'
require 'erubis'
require 'tzinfo'
require 'active_support/time'
require 'mustache'
unless ENV['RACK_ENV'] == 'development'
disable :logging # suppress log of requests to stderr/error.log
end
# determine where relevant data can be found
if ENV['RACK_ENV'] == 'test'
FOUNDATION_BOARD = File.expand_path('test/work/board').untaint
AGENDA_WORK = File.expand_path('test/work/data').untaint
STDERR.puts "* SVN board : #{FOUNDATION_BOARD}"
STDERR.puts "* Agenda work: #{AGENDA_WORK}"
else
FOUNDATION_BOARD = ASF::SVN['foundation_board']
AGENDA_WORK = ASF::Config.get(:agenda_work).untaint || '/srv/agenda'
STDERR.puts "* SVN board : #{FOUNDATION_BOARD}"
STDERR.puts "* Agenda work: #{AGENDA_WORK}"
end
FileUtils.mkdir_p AGENDA_WORK if not Dir.exist? AGENDA_WORK
require_relative './routes'
require_relative './models/pending'
require_relative './models/agenda'
require_relative './models/minutes'
require_relative './models/comments'
require_relative './models/reporter'
require_relative './helpers/string'
require_relative './helpers/integer'
require_relative './daemon/session'
require_relative './daemon/events'
require 'websocket-client-simple'
# if AGENDA_WORK doesn't exist yet, make it
if not Dir.exist? AGENDA_WORK
require 'fileutils'
FileUtils.mkdir_p AGENDA_WORK
end
# get a directory listing given a pattern and a base directory
def dir(pattern, base=FOUNDATION_BOARD)
Dir[File.join(base, pattern)].map {|name| File.basename name}
end
# workaround for https://github.com/rubygems/rubygems/issues/1265
if Gem::Specification.respond_to? :stubs
Gem::Specification.stubs.each do |stub|
stub.full_require_paths.each {|path| path.untaint}
end
end