diff options
33 files changed, 97 insertions, 99 deletions
@@ -32,10 +32,10 @@ end group :plugin do - Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), "core/plugin/*/Gemfile"))){ |path| + Dir.glob(File.expand_path(File.join(__dir__, 'core/plugin/*/Gemfile'))){ |path| eval File.open(path).read } - Dir.glob(File.expand_path("~/.mikutter/plugin/*/Gemfile")){ |path| + Dir.glob(File.join(File.expand_path(ENV['MIKUTTER_CONFROOT'] || '~/.mikutter/plugin/'), '*/Gemfile')){ |path| eval File.open(path).read } end diff --git a/core/boot/option.rb b/core/boot/option.rb index 044b5dd7..b97d28b6 100644 --- a/core/boot/option.rb +++ b/core/boot/option.rb @@ -9,6 +9,10 @@ module Mopt @opts = { error_level: 1 } + def confroot + @opts[:confroot] || ENV['MIKUTTER_CONFROOT'] || File.join(Dir.home, '.mikutter') + end + def method_missing(key) scope = class << self; self end scope.__send__(:define_method, key){ @opts[key.to_sym] } @@ -32,7 +36,7 @@ module Mopt Process.daemon(true) } opt.on('--clean', 'delete all caches and duplicated files') { |v| require 'fileutils' - require File.expand_path(File.join(File.dirname(__FILE__), "..", 'utils')) + require_relative '../utils' miquire :core, 'environment' puts "delete "+File.expand_path(Environment::TMPDIR) FileUtils.rm_rf(File.expand_path(Environment::TMPDIR)) @@ -45,7 +49,7 @@ module Mopt exit } opt.on('-v', '--version', "Show mikutter version"){ |v| require 'fileutils' - require File.expand_path(File.join(File.dirname(__FILE__), "..", 'utils')) + require_relative '../utils' miquire :core, 'environment' puts Environment::NAME + ' ' + Environment::VERSION.to_s exit } @@ -62,7 +66,7 @@ module Mopt opt.parse!(argv) if exec_command and argv[0] - require File.expand_path(File.join(File.dirname(__FILE__), "..", 'utils')) + require_relative '../utils' miquire :boot, 'check_config_permission' file = File.join(File.dirname(__FILE__), "shell/#{argv[0]}.rb") if FileTest.exist?(file) diff --git a/core/config.rb b/core/config.rb index b1378f8c..0a4cebeb 100644 --- a/core/config.rb +++ b/core/config.rb @@ -21,9 +21,8 @@ module CHIConfig # pidファイル PIDFILE = "#{File::SEPARATOR}tmp#{File::SEPARATOR}#{ACRO}.pid" - confroot = File.expand_path(File.join("~", ".#{ACRO}")) # コンフィグファイルのディレクトリ - CONFROOT = (if Mopt.confroot then Mopt.confroot else confroot end) rescue confroot + CONFROOT = Mopt.confroot rescue File.expand_path('~/.mikutter') # 一時ディレクトリ TMPDIR = File.join(CONFROOT, 'tmp') diff --git a/core/lib/mikutwitter/error.rb b/core/lib/mikutwitter/error.rb index c042bb09..90d74a0d 100644 --- a/core/lib/mikutwitter/error.rb +++ b/core/lib/mikutwitter/error.rb @@ -55,6 +55,7 @@ MikuTwitter::ShouldNotBeUsedThisEndpointError = Class.new(MikuTwitter::TwitterEr MikuTwitter::DontHaveWriteAccessError = Class.new(MikuTwitter::TwitterError(261)) MikuTwitter::CantMuteYourselfError = Class.new(MikuTwitter::TwitterError(271)) MikuTwitter::NotMutingError = Class.new(MikuTwitter::TwitterError(272)) +MikuTwitter::TemporarilyLockedError = Class.new(MikuTwitter::TwitterError(326)) MikuTwitter::DirectMessageExceedTheNumberOfCharacterError = Class.new(MikuTwitter::TwitterError(354)) MikuTwitter::InReplyToStatusIdDoesNotExistError = Class.new(MikuTwitter::TwitterError(385)) MikuTwitter::TooManyAttachmentResourceError = Class.new(MikuTwitter::TwitterError(386)) diff --git a/core/lib/timelimitedqueue.rb b/core/lib/timelimitedqueue.rb index df71beff..b960ddcd 100644 --- a/core/lib/timelimitedqueue.rb +++ b/core/lib/timelimitedqueue.rb @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -require File.expand_path(File.join(File.dirname(__FILE__), 'timelimitedqueue', 'timelimitedqueue')) +require_relative 'timelimitedqueue/timelimitedqueue' diff --git a/core/mui/gtk_crud.rb b/core/mui/gtk_crud.rb index e47b424a..b2f61bec 100755 --- a/core/mui/gtk_crud.rb +++ b/core/mui/gtk_crud.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- require 'gtk2' -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'utils')) +require_relative '../utils' miquire :mui, 'extension' miquire :mui, 'contextmenu' diff --git a/core/mui/gtk_message_picker.rb b/core/mui/gtk_message_picker.rb index 85abfd0c..213b5c43 100644 --- a/core/mui/gtk_message_picker.rb +++ b/core/mui/gtk_message_picker.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- require 'gtk2' -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'utils')) +require_relative '../utils' miquire :core, 'message', 'skin' miquire :mui, 'mtk' miquire :mui, 'extension' diff --git a/core/mui/gtk_mtk.rb b/core/mui/gtk_mtk.rb index 8c85587d..94314a3b 100644 --- a/core/mui/gtk_mtk.rb +++ b/core/mui/gtk_mtk.rb @@ -1,6 +1,6 @@ # -*- coding:utf-8 -*- -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'utils')) +require_relative '../utils' miquire :mui, 'extension' miquire :mui, 'message_picker' miquire :mui, 'crud' diff --git a/core/mui/gtk_selectbox.rb b/core/mui/gtk_selectbox.rb index a353c0f8..0ad07312 100755 --- a/core/mui/gtk_selectbox.rb +++ b/core/mui/gtk_selectbox.rb @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- require 'gtk2' -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'utils')) +require_relative '../utils' miquire :mui, 'crud' =begin rdoc diff --git a/core/mui/gtk_webicon.rb b/core/mui/gtk_webicon.rb index e8955735..8dbed504 100644 --- a/core/mui/gtk_webicon.rb +++ b/core/mui/gtk_webicon.rb @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # /(^o^)\ -require File.expand_path(File.dirname(__FILE__+'/utils')) + +require_relative '../utils' miquire :core, 'environment', 'serialthread', 'skin' miquire :mui, 'web_image_loader' diff --git a/core/plugin/command/command.rb b/core/plugin/command/command.rb index b069ce63..12d5a6bb 100644 --- a/core/plugin/command/command.rb +++ b/core/plugin/command/command.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'conditions') +require_relative 'conditions' Plugin.create :command do diff --git a/core/plugin/console/console.rb b/core/plugin/console/console.rb index 5721d9cb..1ef6b1dd 100644 --- a/core/plugin/console/console.rb +++ b/core/plugin/console/console.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'console_control') +require_relative 'console_control' Plugin.create :console do command(:console_open, diff --git a/core/plugin/direct_message/direct_message.rb b/core/plugin/direct_message/direct_message.rb index ceb6b459..d55939d7 100644 --- a/core/plugin/direct_message/direct_message.rb +++ b/core/plugin/direct_message/direct_message.rb @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'userlist') -require File.expand_path File.join(File.dirname(__FILE__), 'sender') -require File.expand_path File.join(File.dirname(__FILE__), 'dmlistview') +require_relative 'userlist' +require_relative 'sender' +require_relative 'dmlistview' module Plugin::DirectMessage Plugin.create(:direct_message) do diff --git a/core/plugin/gtk/gtk.rb b/core/plugin/gtk/gtk.rb index 5e540346..5de982ec 100644 --- a/core/plugin/gtk/gtk.rb +++ b/core/plugin/gtk/gtk.rb @@ -11,13 +11,13 @@ miquire :mui, 'extension', 'intelligent_textview', 'keyconfig', 'listlist', 'message_picker', 'mtk', 'postbox', 'pseudo_signal_handler', 'selectbox', 'timeline_utils', 'userlist', 'webicon' -require File.expand_path File.join(File.dirname(__FILE__), 'mikutter_window') -require File.expand_path File.join(File.dirname(__FILE__), 'tab_container') -require File.expand_path File.join(File.dirname(__FILE__), 'tab_toolbar') -require File.expand_path File.join(File.dirname(__FILE__), 'delayer') -require File.expand_path File.join(File.dirname(__FILE__), 'slug_dictionary') -require File.expand_path File.join(File.dirname(__FILE__), 'mainloop') -require File.expand_path File.join(File.dirname(__FILE__), 'konami_watcher') +require_relative 'mikutter_window' +require_relative 'tab_container' +require_relative 'tab_toolbar' +require_relative 'delayer' +require_relative 'slug_dictionary' +require_relative 'mainloop' +require_relative 'konami_watcher' require_relative 'dialog_window' Plugin.create :gtk do diff --git a/core/plugin/gtk/mikutter_window.rb b/core/plugin/gtk/mikutter_window.rb index 30d70d15..9b7c1467 100644 --- a/core/plugin/gtk/mikutter_window.rb +++ b/core/plugin/gtk/mikutter_window.rb @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- require "gtk2" -require File.expand_path(File.join(File.dirname(__FILE__), 'toolbar_generator')) -require File.expand_path(File.join(File.dirname(__FILE__), 'account_box')) +require_relative 'toolbar_generator' +require_relative 'account_box' class Gtk::MikutterWindow < Gtk::Window diff --git a/core/plugin/gtk/tab_toolbar.rb b/core/plugin/gtk/tab_toolbar.rb index da68296f..79f23d96 100644 --- a/core/plugin/gtk/tab_toolbar.rb +++ b/core/plugin/gtk/tab_toolbar.rb @@ -2,7 +2,7 @@ require "gtk2" -require File.expand_path File.join(File.dirname(__FILE__), 'toolbar_generator') +require_relative 'toolbar_generator' class Gtk::TabToolbar < Gtk::HBox def initialize(imaginally, *args) diff --git a/core/plugin/gui/cluster.rb b/core/plugin/gui/cluster.rb index 8efd4b37..3682b459 100644 --- a/core/plugin/gui/cluster.rb +++ b/core/plugin/gui/cluster.rb @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # プロフィールタブを提供するクラス -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'window') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'cuscadable' +require_relative 'hierarchy_parent' +require_relative 'hierarchy_child' +require_relative 'window' +require_relative 'widget' class Plugin::GUI::Cluster diff --git a/core/plugin/gui/fragment.rb b/core/plugin/gui/fragment.rb index 3a55ee3a..b5998369 100644 --- a/core/plugin/gui/fragment.rb +++ b/core/plugin/gui/fragment.rb @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'window') -require File.expand_path File.join(File.dirname(__FILE__), 'tablike') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'cuscadable' +require_relative 'hierarchy_parent' +require_relative 'hierarchy_child' +require_relative 'window' +require_relative 'tablike' +require_relative 'widget' class Plugin::GUI::Fragment extend Gem::Deprecate diff --git a/core/plugin/gui/gui.rb b/core/plugin/gui/gui.rb index 1049b38f..a12f7e4b 100644 --- a/core/plugin/gui/gui.rb +++ b/core/plugin/gui/gui.rb @@ -1,16 +1,16 @@ # -*- coding: utf-8 -*- # mikutterにGUIをつけるプラグイン -require File.expand_path File.join(File.dirname(__FILE__), 'dsl') -require File.expand_path File.join(File.dirname(__FILE__), 'window') -require File.expand_path File.join(File.dirname(__FILE__), 'pane') -require File.expand_path File.join(File.dirname(__FILE__), 'tab') -require File.expand_path File.join(File.dirname(__FILE__), 'cluster') -require File.expand_path File.join(File.dirname(__FILE__), 'fragment') -require File.expand_path File.join(File.dirname(__FILE__), 'timeline') -require File.expand_path File.join(File.dirname(__FILE__), 'tab_child_widget') -require File.expand_path File.join(File.dirname(__FILE__), 'postbox') -require File.expand_path File.join(File.dirname(__FILE__), 'command') +require_relative 'dsl' +require_relative 'window' +require_relative 'pane' +require_relative 'tab' +require_relative 'cluster' +require_relative 'fragment' +require_relative 'timeline' +require_relative 'tab_child_widget' +require_relative 'postbox' +require_relative 'command' Plugin.create :gui do diff --git a/core/plugin/gui/pane.rb b/core/plugin/gui/pane.rb index eab17abe..2f653069 100644 --- a/core/plugin/gui/pane.rb +++ b/core/plugin/gui/pane.rb @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # ペインインターフェイスを提供するクラス -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'window') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'cuscadable' +require_relative 'hierarchy_parent' +require_relative 'hierarchy_child' +require_relative 'window' +require_relative 'widget' class Plugin::GUI::Pane diff --git a/core/plugin/gui/postbox.rb b/core/plugin/gui/postbox.rb index e9f6d3fa..31cd440c 100644 --- a/core/plugin/gui/postbox.rb +++ b/core/plugin/gui/postbox.rb @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # ツイート投稿ウィジェット -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'window') -require File.expand_path File.join(File.dirname(__FILE__), 'timeline') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'cuscadable' +require_relative 'hierarchy_child' +require_relative 'window' +require_relative 'timeline' +require_relative 'widget' class Plugin::GUI::Postbox diff --git a/core/plugin/gui/tab.rb b/core/plugin/gui/tab.rb index 8c776802..b0d4855d 100644 --- a/core/plugin/gui/tab.rb +++ b/core/plugin/gui/tab.rb @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- # タブのインターフェイスを提供するクラス -require File.expand_path File.join(File.dirname(__FILE__), 'pane') -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent') -require File.expand_path File.join(File.dirname(__FILE__), 'tablike') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') -require File.expand_path File.join(File.dirname(__FILE__), 'tab_toolbar') +require_relative 'pane' +require_relative 'cuscadable' +require_relative 'hierarchy_child' +require_relative 'hierarchy_parent' +require_relative 'tablike' +require_relative 'widget' +require_relative 'tab_toolbar' class Plugin::GUI::Tab diff --git a/core/plugin/gui/tab_child_widget.rb b/core/plugin/gui/tab_child_widget.rb index ebd012fc..b7121b41 100644 --- a/core/plugin/gui/tab_child_widget.rb +++ b/core/plugin/gui/tab_child_widget.rb @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'pane') -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'tab') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'pane' +require_relative 'cuscadable' +require_relative 'hierarchy_child' +require_relative 'tab' +require_relative 'widget' class Plugin::GUI::TabChildWidget diff --git a/core/plugin/gui/tab_toolbar.rb b/core/plugin/gui/tab_toolbar.rb index a521d94d..b7534bed 100644 --- a/core/plugin/gui/tab_toolbar.rb +++ b/core/plugin/gui/tab_toolbar.rb @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'pane') -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'tab') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'pane' +require_relative 'cuscadable' +require_relative 'hierarchy_child' +require_relative 'tab' +require_relative 'widget' # タブにコマンドを表示するウィジェット class Plugin::GUI::TabToolbar diff --git a/core/plugin/gui/timeline.rb b/core/plugin/gui/timeline.rb index 32986005..125d62f9 100644 --- a/core/plugin/gui/timeline.rb +++ b/core/plugin/gui/timeline.rb @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -require File.expand_path File.join(File.dirname(__FILE__), 'pane') -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child') -require File.expand_path File.join(File.dirname(__FILE__), 'tab') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'pane' +require_relative 'cuscadable' +require_relative 'hierarchy_child' +require_relative 'tab' +require_relative 'widget' class Plugin::GUI::Timeline diff --git a/core/plugin/gui/window.rb b/core/plugin/gui/window.rb index 8af7af89..d3e6f151 100644 --- a/core/plugin/gui/window.rb +++ b/core/plugin/gui/window.rb @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- # ウィンドウインターフェイスを提供するクラス -require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable') -require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent') -require File.expand_path File.join(File.dirname(__FILE__), 'widget') +require_relative 'cuscadable' +require_relative 'hierarchy_parent' +require_relative 'widget' class Plugin::GUI::Window diff --git a/core/plugin/libnotify/libnotify.rb b/core/plugin/libnotify/libnotify.rb index df33714a..f19fcbd6 100644 --- a/core/plugin/libnotify/libnotify.rb +++ b/core/plugin/libnotify/libnotify.rb @@ -2,7 +2,7 @@ # notify-sendコマンド又はruby-libnotifyで通知を表示する。 if require_if_exist('RNotify') and defined?(Notify) and Notify.init("mikutter") # ruby-libnotifyがつかえる場合 - require File.expand_path File.join(File.dirname(__FILE__), 'rnotify') + require_relative 'rnotify' elsif command_exist? 'notify-send' # notify-sendコマンドが有る場合 - require File.expand_path File.join(File.dirname(__FILE__), 'notify-send') + require_relative 'notify-send' end diff --git a/core/plugin/shortcutkey/shortcutkey.rb b/core/plugin/shortcutkey/shortcutkey.rb index 20fd8090..66a36fcb 100644 --- a/core/plugin/shortcutkey/shortcutkey.rb +++ b/core/plugin/shortcutkey/shortcutkey.rb @@ -1,5 +1,5 @@ # -*- coding:utf-8 -*- -require File.expand_path(File.join(File.dirname(__FILE__), "shortcutkey_listview")) +require_relative 'shortcutkey_listview' Plugin.create :shortcutkey do diff --git a/core/plugin/streaming/perma_streamer.rb b/core/plugin/streaming/perma_streamer.rb index dad52db3..d80fe8a9 100644 --- a/core/plugin/streaming/perma_streamer.rb +++ b/core/plugin/streaming/perma_streamer.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # 自動でコネクションを貼り直すStreamer -require File.expand_path File.join(File.dirname(__FILE__), 'streamer') +require_relative 'streamer' module ::Plugin::Streaming class PermaStreamer diff --git a/core/plugin/streaming/streamer.rb b/core/plugin/streaming/streamer.rb index 66836f46..99ea5fbc 100644 --- a/core/plugin/streaming/streamer.rb +++ b/core/plugin/streaming/streamer.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- require 'thread' -require File.expand_path File.join(File.dirname(__FILE__), 'streamer_error') +require_relative 'streamer_error' module ::Plugin::Streaming class Streamer diff --git a/core/serialthread.rb b/core/serialthread.rb index 5ddf4be9..77a05359 100644 --- a/core/serialthread.rb +++ b/core/serialthread.rb @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -require File.expand_path(File.join(File.dirname(__FILE__), 'utils')) +require_relative 'utils' require 'delayer' require 'delayer/deferred' diff --git a/core/utils.rb b/core/utils.rb index 3e511b8c..ddd8d0cc 100644 --- a/core/utils.rb +++ b/core/utils.rb @@ -3,12 +3,6 @@ CHI内部で共通で使われるユーティリティ。 =end -if defined? HYDE - raise "HYDEが再定義されました。utils.rbを2回Linkしてるんじゃないか?それはいけない。すぐにバグをSHOT AT THE DEVILしろ。" - # こんなふうにするといいと想います - require File.expand_path(File.join(File.dirname(__FILE__), 'utils')) -end - require 'thread' require 'monitor' require "open-uri" diff --git a/mikutter.rb b/mikutter.rb index 150ad22f..09da715f 100755 --- a/mikutter.rb +++ b/mikutter.rb @@ -11,10 +11,9 @@ This software is released under the MIT License. http://opensource.org/licenses/mit-license.php =end -mikutter_directory = File.expand_path(File.dirname(__FILE__)) module Mikutter; end -require File.expand_path(File.join(mikutter_directory, 'core/boot/option')) +require_relative 'core/boot/option' Mopt.parse exec_command: true if !ENV['DISABLE_BUNDLER_SETUP'] || ['', '0'].include?(ENV['DISABLE_BUNDLER_SETUP'].to_s) @@ -34,7 +33,7 @@ require 'webrick' require 'thread' require 'fileutils' -require File.expand_path(File.join(mikutter_directory, 'core/utils')) +require_relative 'core/utils' miquire :boot, 'check_config_permission', 'mainloop', 'delayer' miquire :core, 'service', 'environment' |