Module: Redcar

Defined in:
lib/redcar.rb,
lib/redcar/usage.rb,
lib/redcar/plist.rb,
lib/redcar/logger.rb,
lib/redcar/runner.rb,
lib/redcar_quick_start.rb,
plugins/scm/lib/scm.rb,
plugins/repl/lib/repl.rb,
plugins/help/lib/help.rb,
plugins/redcar/redcar.rb,
plugins/ruby/lib/ruby.rb,
plugins/core/lib/core.rb,
plugins/scm/lib/scm/model.rb,
plugins/scm_hg/lib/scm_hg.rb,
plugins/macros/lib/macros.rb,
plugins/core/lib/core/gui.rb,
plugins/scm/lib/scm/errors.rb,
plugins/core/lib/core/task.rb,
plugins/core/lib/core/model.rb,
plugins/scm_git/lib/scm_git.rb,
plugins/project/lib/project.rb,
plugins/comment/lib/comment.rb,
plugins/scm_svn/lib/scm_svn.rb,
plugins/scm/lib/scm/commands.rb,
plugins/core/lib/core/plugin.rb,
plugins/repl_swt/lib/repl_swt.rb,
plugins/core/lib/core/has_spi.rb,
plugins/snippets/lib/snippets.rb,
plugins/textmate/lib/textmate.rb,
plugins/help/lib/help/help_tab.rb,
plugins/repl/lib/repl/repl_tab.rb,
plugins/core/lib/core/resource.rb,
plugins/macros/lib/macros/macro.rb,
plugins/todo_list/lib/todo_list.rb,
plugins/my_plugin/lib/my_plugin.rb,
plugins/scm/lib/scm/diff_mirror.rb,
plugins/html_view/lib/html_view.rb,
plugins/edit_view/lib/edit_view.rb,
plugins/runnables/lib/runnables.rb,
plugins/core/lib/core/controller.rb,
plugins/core/lib/core/observable.rb,
plugins/core/lib/core/task_queue.rb,
plugins/ruby/lib/ruby/repl_mirror.rb,
plugins/repl/lib/repl/repl_mirror.rb,
plugins/line_tools/lib/line_tools.rb,
plugins/scm/lib/scm/commit_mirror.rb,
plugins/scm_git/lib/scm_git/commit.rb,
plugins/project/lib/project/recent.rb,
plugins/scm_svn/lib/scm_svn/change.rb,
plugins/java/lib/syntax_check/java.rb,
plugins/repl/lib/repl/repl_command.rb,
plugins/macros/lib/macros/commands.rb,
plugins/scm_git/lib/scm_git/change.rb,
plugins/splash_screen/splash_screen.rb,
plugins/auto_pairer/lib/auto_pairer.rb,
plugins/application/lib/application.rb,
plugins/test_runner/lib/test_runner.rb,
plugins/project/lib/project/manager.rb,
plugins/textmate/lib/textmate/plist.rb,
plugins/textmate/lib/textmate/editor.rb,
plugins/project/lib/project/commands.rb,
plugins/ruby/lib/ruby/syntax_checker.rb,
plugins/textmate/lib/textmate/bundle.rb,
plugins/core/lib/core/plugin/storage.rb,
plugins/syntax_check/lib/syntax_check.rb,
plugins/declarations/lib/declarations.rb,
plugins/project/lib/project/file_list.rb,
plugins/help/lib/help/view_controller.rb,
plugins/html_view/lib/html_controller.rb,
plugins/key_bindings/lib/key_bindings.rb,
plugins/core/lib/core/reentry_helpers.rb,
plugins/textmate/lib/textmate/snippet.rb,
plugins/task_manager/lib/task_manager.rb,
plugins/redcar_debug/lib/redcar_debug.rb,
plugins/project/lib/project/dir_mirror.rb,
plugins/snippets/lib/snippets/explorer.rb,
plugins/core/lib/core/persistent_cache.rb,
plugins/scm/lib/scm/scm_commits_mirror.rb,
plugins/scm/lib/scm/scm_changes_mirror.rb,
plugins/textmate/lib/textmate/commands.rb,
plugins/scm_git/lib/scm_git/config_file.rb,
plugins/project/lib/project/sub_project.rb,
plugins/tree_view_swt/lib/tree_view_swt.rb,
plugins/project/lib/project/file_mirror.rb,
plugins/auto_indenter/lib/auto_indenter.rb,
plugins/edit_view/lib/edit_view/command.rb,
plugins/web_bookmarks/lib/web_bookmarks.rb,
plugins/project/lib/project/drb_service.rb,
plugins/edit_view_swt/lib/edit_view_swt.rb,
plugins/edit_view/lib/edit_view/grammar.rb,
plugins/repl/features/support/fake_repl.rb,
plugins/application/lib/application/tab.rb,
plugins/application/lib/application/menu.rb,
plugins/edit_view/lib/edit_view/document.rb,
plugins/runnables/lib/runnables/commands.rb,
plugins/edit_view/lib/edit_view/edit_tab.rb,
plugins/textmate/lib/textmate/preference.rb,
plugins/html_view/lib/html_view/html_tab.rb,
plugins/application/lib/application/tree.rb,
plugins/html_view/lib/html_view/commands.rb,
plugins/macros/lib/macros/action_sequence.rb,
plugins/auto_completer/lib/auto_completer.rb,
plugins/textmate/lib/textmate/environment.rb,
plugins/project/lib/project/support/trash.rb,
plugins/textmate/lib/textmate/tree_mirror.rb,
plugins/snippets/lib/snippets/tab_handler.rb,
plugins/repl_swt/lib/repl_swt/key_listener.rb,
plugins/scm/lib/scm/scm_commits_controller.rb,
plugins/scm/lib/scm/scm_changes_controller.rb,
plugins/application/lib/application/keymap.rb,
plugins/application/lib/application/dialog.rb,
plugins/declarations/lib/declarations/file.rb,
plugins/project/lib/project/dir_controller.rb,
plugins/application/lib/application/window.rb,
plugins/html_view/lib/html_view/browser_bar.rb,
plugins/application/lib/application/toolbar.rb,
plugins/application_swt/lib/application_swt.rb,
plugins/edit_view/lib/edit_view/actions/tab.rb,
plugins/syntax_check/lib/syntax_check/error.rb,
plugins/application/lib/application/command.rb,
plugins/document_search/lib/document_search.rb,
plugins/application/lib/application/updates.rb,
plugins/todo_list/lib/todo_list/file_parser.rb,
plugins/edit_view/lib/edit_view/actions/esc.rb,
plugins/application/lib/application/treebook.rb,
plugins/declarations/lib/declarations/parser.rb,
plugins/application/lib/application/notebook.rb,
plugins/edit_view/lib/edit_view/tab_settings.rb,
plugins/application/lib/application/speedbar.rb,
plugins/macros/lib/macros/manager_controller.rb,
plugins/web_bookmarks/lib/web_bookmarks/tree.rb,
plugins/project/lib/project/find_file_dialog.rb,
plugins/project/lib/project/local_filesystem.rb,
plugins/syntax_check/lib/syntax_check/checker.rb,
plugins/pair_highlighter/lib/pair_highlighter.rb,
plugins/auto_indenter/lib/auto_indenter/rules.rb,
plugins/application/lib/application/menu/item.rb,
plugins/clipboard-viewer/lib/clipboard_viewer.rb,
plugins/edit_view/lib/edit_view/grammars/ruby.rb,
plugins/open_default_app/lib/open_default_app.rb,
plugins/scm/lib/scm/scm_commits_mirror/commit.rb,
plugins/application/lib/application/sensitive.rb,
plugins/application/lib/application/clipboard.rb,
plugins/scm/lib/scm/scm_changes_mirror/change.rb,
plugins/declarations/lib/declarations/commands.rb,
plugins/project/lib/project/find_recent_dialog.rb,
plugins/edit_view/lib/edit_view/document/mirror.rb,
plugins/todo_list/lib/todo_list/todo_controller.rb,
plugins/application/lib/application/tree/mirror.rb,
plugins/application_swt/lib/application_swt/tab.rb,
plugins/application/lib/application/sensitivity.rb,
plugins/plugin_manager_ui/lib/plugin_manager_ui.rb,
plugins/application/lib/application/tab/command.rb,
plugins/edit_view/lib/edit_view/grammars/default.rb,
plugins/application/lib/application/tree/command.rb,
plugins/auto_indenter/lib/auto_indenter/analyzer.rb,
plugins/application_swt/lib/application_swt/icon.rb,
plugins/runnables/lib/runnables/output_processor.rb,
plugins/syntax_check/lib/syntax_check/annotation.rb,
plugins/edit_view/lib/edit_view/document/history.rb,
plugins/auto_indenter/lib/auto_indenter/commands.rb,
plugins/application/lib/application/event_spewer.rb,
plugins/application_swt/lib/application_swt/menu.rb,
plugins/edit_view_swt/lib/edit_view_swt/document.rb,
plugins/declarations/spec/declarations/file_spec.rb,
plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb,
plugins/web_bookmarks/lib/web_bookmarks/commands.rb,
plugins/edit_view/lib/edit_view/document/command.rb,
plugins/test_runner/lib/test_runner/rspec_runner.rb,
plugins/application/lib/application/global_state.rb,
plugins/application/lib/application/toolbar/item.rb,
plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb,
plugins/edit_view/lib/edit_view/actions/deletion.rb,
plugins/application/lib/application/menu/builder.rb,
plugins/edit_view/lib/edit_view/actions/cmd_enter.rb,
plugins/snippets/lib/snippets/document_controller.rb,
plugins/project_search/lib/project_search/project.rb,
plugins/application/lib/application/keymap/builder.rb,
plugins/edit_view/lib/edit_view/actions/arrow_keys.rb,
plugins/application/lib/application/menu/lazy_menu.rb,
plugins/edit_view/lib/edit_view/select_font_dialog.rb,
plugins/html_view/lib/html_view/default_controller.rb,
plugins/application_swt/lib/application_swt/window.rb,
plugins/scm/lib/scm/scm_changes_mirror/changes_node.rb,
plugins/edit_view/lib/edit_view/document/controller.rb,
plugins/application/lib/application/tree/controller.rb,
plugins/project/lib/project/project_tree_controller.rb,
plugins/scm/lib/scm/scm_commits_mirror/commits_node.rb,
plugins/application/lib/application/toolbar/builder.rb,
plugins/application_swt/lib/application_swt/toolbar.rb,
plugins/application/lib/application/command/history.rb,
plugins/edit_view/lib/edit_view/select_theme_dialog.rb,
plugins/auto_pairer/lib/auto_pairer/pairs_for_scope.rb,
plugins/auto_completer/lib/auto_completer/word_list.rb,
plugins/execute_current_tab/lib/execute_current_tab.rb,
plugins/test_runner/lib/test_runner/run_test_command.rb,
plugins/macros/lib/macros/predictive/sequence_finder.rb,
plugins/application/lib/application/command/executor.rb,
plugins/application_swt/lib/application_swt/speedbar.rb,
plugins/application_swt/lib/application_swt/notebook.rb,
plugins/application_swt/lib/application_swt/gradient.rb,
plugins/application_swt/lib/application_swt/treebook.rb,
plugins/application_swt/lib/application_swt/html_tab.rb,
plugins/edit_view/lib/edit_view/document/indentation.rb,
plugins/document_search/lib/document_search/commands.rb,
plugins/textmate/lib/textmate/editor/drag_controller.rb,
plugins/auto_completer/lib/auto_completer/list_dialog.rb,
plugins/edit_view/lib/edit_view/modified_tabs_checker.rb,
plugins/application_swt/lib/application_swt/clipboard.rb,
plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb,
plugins/application/lib/application/navigation_history.rb,
plugins/scm/lib/scm/scm_changes_mirror/drag_controller.rb,
plugins/textmate/lib/textmate/editor/bundle_controller.rb,
plugins/edit_view/lib/edit_view/grammars/ruby_on_rails.rb,
plugins/application/lib/application/menu/builder/group.rb,
plugins/runnables/lib/runnables/running_process_checker.rb,
plugins/test_runner/lib/test_runner/jasmine_test_runner.rb,
plugins/auto_pairer/lib/auto_pairer/document_controller.rb,
plugins/auto_completer/lib/auto_completer/word_iterator.rb,
plugins/textmate/lib/textmate/editor/snippet_controller.rb,
plugins/declarations/lib/declarations/completion_source.rb,
plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb,
plugins/declarations/lib/declarations/select_tag_dialog.rb,
plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb,
plugins/macros/lib/macros/predictive/document_controller.rb,
plugins/application/lib/application/toolbar/lazy_toolbar.rb,
plugins/test_runner/lib/test_runner/runnable_test_runner.rb,
plugins/document_search/lib/document_search/find_speedbar.rb,
plugins/application/lib/application/commands/tab_commands.rb,
plugins/application/lib/application/toolbar/builder/group.rb,
plugins/runnables/lib/runnables/command_output_controller.rb,
plugins/document_search/lib/document_search/query_options.rb,
plugins/runnables/lib/runnables/tree_mirror/nodes/runnable.rb,
plugins/application_swt/lib/application_swt/dialog_adapter.rb,
plugins/application_swt/lib/application_swt/bring_to_front.rb,
plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb,
plugins/auto_indenter/lib/auto_indenter/document_controller.rb,
plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb,
plugins/application/lib/application/commands/window_commands.rb,
plugins/application_swt/lib/application_swt/listener_helpers.rb,
plugins/auto_completer/lib/auto_completer/document_controller.rb,
plugins/application/lib/application/dialogs/filter_list_dialog.rb,
plugins/application/lib/application/commands/notebook_commands.rb,
plugins/application/lib/application/commands/treebook_commands.rb,
plugins/application_swt/lib/application_swt/speedbar/combo_item.rb,
plugins/application_swt/lib/application_swt/speedbar/label_item.rb,
plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb,
plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb,
plugins/edit_view/lib/edit_view/commands/change_language_command.rb,
plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb,
plugins/application/lib/application/dialogs/modeless_list_dialog.rb,
plugins/application_swt/lib/application_swt/dialogs/input_dialog.rb,
plugins/application_swt/lib/application_swt/speedbar/slider_item.rb,
plugins/application_swt/lib/application_swt/speedbar/button_item.rb,
plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb,
plugins/application/lib/application/commands/application_commands.rb,
plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb,
plugins/edit_view/lib/edit_view/commands/align_assignment_command.rb,
plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb,
plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb,
plugins/edit_view/lib/edit_view/commands/language_settings_commands.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb,
plugins/application_swt/lib/application_swt/menu/binding_translator.rb,
plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb,
plugins/application_swt/lib/application_swt/dialogs/no_buttons_dialog.rb,
plugins/application_swt/lib/application_swt/toolbar/binding_translator.rb,
plugins/document_search/lib/document_search/incremental_search_speedbar.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb,
plugins/application_swt/lib/application_swt/dialogs/text_and_file_dialog.rb,
plugins/auto_completer/lib/auto_completer/current_document_completion_source.rb,
plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb,
plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb,
plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb

Overview

$:.push(File.expand_path(File.join(File.dirname(__FILE__),

"vendor", "activesupport-3.0.3", "lib")))

require 'active_support' require 'active_support/inflections'

Defined Under Namespace

Modules: Controller, DocumentSearch, HasSPI, HtmlController, Macros, Model, Observable, ReentryHelpers, Scm, Sensitive, SyntaxCheck, Textmate, Top Classes: Application, ApplicationSWT, AutoCompleter, AutoIndenter, AutoPairer, Clipboard, ClipboardViewer, Command, Comment, ConfigTab, Core, Debug, Declarations, Document, DocumentCommand, EditTab, EditTabCommand, EditView, EditViewSWT, ExecuteCurrentTab, FilterListDialog, Grammar, Gui, Help, HtmlTab, HtmlView, JasmineTestRunner, KeyBindings, Keymap, LineTools, Logger, Macro, Menu, ModelessListDialog, MyPlugin, NavigationHistory, Notebook, OpenDefaultApp, OpenDefaultBrowserCommand, PairHighlighter, PersistentCache, Plist, Plugin, PluginManagerUi, Project, ProjectCommand, REPL, REPLSWT, Resource, RspecRunner, Ruby, RunTestCommand, RunnableTestRunner, Runnables, Runner, Sensitivity, Snippets, Speedbar, SplashScreen, StripTrailingSpaces, Tab, TabCommand, Task, TaskManager, TaskQueue, TestRunner, TimeoutError, TodoList, ToolBar, Tree, TreeCommand, TreeViewSWT, Treebook, Usage, WebBookmarks, Window

Constant Summary

VERSION =

also change in the gemspec!

'0.14.0dev'
VERSION_MAJOR =
0
VERSION_MINOR =
14
VERSION_RELEASE =
0
ENVIRONMENTS =
[:user, :debug, :test]
PROCESS_START_TIME =
Time.now
DRB_PORTS =
{"user" => 10021, "test" => 10022, "development" => 10021}
DONT_READ_STDIN_ARG =
"--ignore-stdin"
GROOVY_YAML =
<<-YAML
- regex:    "class\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     class
- regex:    "interface\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     interface
- regex:    "^\\s*((public|private|protected)?\\s+|)(static\\s+)?(([\\.\\w]+|)[A-Z]\\w*(<\\w+>)?|void|int|boolean|byte|short|long|char|float|def)\\s+(\\w*)\\s*\\((.*)\\)\\s*\\{"
  capture:  7
  type:     id
  kind:     method
- regex:    "(def|static)\\s+(\\w+)\\s*=\\s*\\{"
  capture:  2
  type:     id
  kind:     closure
- regex:    "enum\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     attribute
- regex:    "^\\s*(public|private|protected)\\s+(static\\s+|)([A-Z]\\w+|int|boolean|byte|short|long|char|float|def)\s+(\\w+)\\s*(=|\\n)"
  capture:  4
  type:     id
  kind:     assignment
YAML
JAVA_YAML =
<<-YAML
- regex:    "class\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     class
- regex:    "interface\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     interface
- regex:    "^\\s*((public|private|protected|)\\s+|)(static\\s+|)(([\\.\\w]+|)[A-Z]\\w*(<\\w+>|)|void|int|boolean|byte|short|long|char|float)\\s+(\\w+\\s*\\((.*)\\))?"
  capture:  7
  type:     id
  kind:     method
- regex:    "enum\\s+(\\w*)"
  capture:  1
  type:     id
  kind:     attribute
- regex:    "^\\s*(public|private|protected)\\s+(static\\s+|)([A-Z]\\w+|int|boolean|byte|short|long|char|float|def)\s+(\\w+)\\s*(=|;)"
  capture:  4
  type:     id
  kind:     assignment
YAML
RUBY_YAML =
<<-YAML
- regex:    "^[^#]*(class|module)\\s+(?:\\w*::)*(\\w+)(?:$|\\s|<)"
  capture:  2
  type:     id
  kind:     class
- regex:    "^[^#]*def (self\\.)?(\\w+[?!=]?)(\\(.*\\))?(\\s|\\;|\\z|\\b)"
  capture:  2
  type:     id
  kind:     method
- regex:    "^[^#]*attr(_reader|_accessor|_writer)(.*)$"
  capture:  2
  type:     id-list
  kind:     attribute
- regex:    "^[^#]*alias\\s+:(\\w+)"
  capture:  1
  type:     id
  kind:     alias
- regex:    "^[^#]*alias_method\\s+:(\\w+[?!]?)"
  capture:  1
  type:     id
  kind:     alias
- regex:    "^\\s*([A-Z]\\w*)\\s*="
  capture:  1
  type:     id
  kind:     assignment
YAML
PHP_YAML =
<<-YAML
- regex:    "class\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     class
- regex:    "interface\\s+(\\w+)"
  capture:  1
  type:     id
  kind:     interface
- regex:    "function\\s+(\\w+)\s*\\("
  capture:  1
  type:     id
  kind:     method
YAML
JS_YAML =
<<-YAML
- regex:    "function\\s+([A-Z]\\w*)\\(.*\\)"
  capture:  1
  type:     id
  kind:     class
- regex:    "function\\s+([a-z]\\w*)\\s*\\(.*\\)"
  capture:  1
  type:     id
  kind:     method
YAML
CUKE_YAML =
<<-YAML
- regex:    "Feature:\\s*(.*)"
  capture:  1
  type:     id
  kind:     class
- regex:    "Scenario:\\s*(.*)"
  capture:  1
  type:     id
  kind:     method
- regex:    "(When|Then|And)\\s*\\/\\^?(.*?)\\$?\\/\\s*do"
  capture:  2
  type:     id
  kind:     closure
YAML
SPEC_YAML =
<<-YAML
- regex:    "describe\\s*\\"(.*?)\\"\\s*do"
  capture:  1
  type:     id
  kind:     method
- regex:    "it\\s*\\"(.*?)\\"\\s*do"
  capture:  1
  type:     id
  kind:     closure
YAML

Class Attribute Summary (collapse)

Class Method Summary (collapse)

Class Attribute Details

+ (Object) app

Returns the value of attribute app



277
278
279
# File 'lib/redcar.rb', line 277

def app
  @app
end

+ (Object) gui

Returns the value of attribute gui



278
279
280
# File 'lib/redcar.rb', line 278

def gui
  @gui
end

Class Method Details

+ (Object) add_plugin_sources(manager)



115
116
117
118
# File 'lib/redcar.rb', line 115

def self.add_plugin_sources(manager)
  manager.add_plugin_source(File.join(root, "plugins"))
  manager.add_plugin_source(File.join(user_dir, "plugins"))
end

+ (Object) asset_dir

Platform specific ~/.redcar/assets



253
254
255
# File 'lib/redcar.rb', line 253

def self.asset_dir
  File.join(home_dir, ".redcar", "assets")
end

+ (Object) custom_log_level



311
312
313
# File 'lib/redcar.rb', line 311

def self.custom_log_level
  ARGV.map {|a| a =~ /--log-level=(info|debug|warn|error)/; $1}.compact.first
end

+ (Object) disabled_plugins

Pulls the list of plugins the user has selected to disable from storage/disabled_plugins.yaml an array of plugin name.



174
175
176
177
178
179
180
181
182
# File 'lib/redcar.rb', line 174

def self.disabled_plugins
  return @disabled_plugins if @disabled_plugins
  path = File.join Redcar.user_dir, 'storage/disabled_plugins.yaml'
  if File.exists? path
    list = YAML.load_file path
    return @disabled_plugins = list if list.is_a? Array 
  end
  @disabled_plugins = []
end

+ (Object) drb_port



8
9
10
# File 'lib/redcar_quick_start.rb', line 8

def self.drb_port
  DRB_PORTS[Redcar.environment.to_s]
end

+ (Object) ensure_user_dir_config



236
237
238
# File 'lib/redcar.rb', line 236

def self.ensure_user_dir_config
  FileUtils.mkdir_p(user_dir)
end

+ (Object) environment



91
92
93
94
# File 'lib/redcar.rb', line 91

def self.environment
  raise "no environment set" unless @environment
  @environment
end

+ (Object) environment=(env)



84
85
86
87
88
89
# File 'lib/redcar.rb', line 84

def self.environment=(env)
  unless ENVIRONMENTS.include?(env)
    raise "environment must be one of #{ENVIRONMENTS.inspect}"
  end
  @environment = env
end

+ (String) home_dir

Platform specific ~/

Returns:



260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/redcar.rb', line 260

def self.home_dir
  @userdir ||= begin
    if arg = ARGV.map {|v| v[/^--home-dir=(.*)/, 1] }.compact.first
      File.expand_path(arg)
    elsif platform == :windows
      if ENV['USERPROFILE'].nil?
        "C:/My Documents/"
      else
        ENV['USERPROFILE']
      end
    else
      ENV['HOME'] unless ENV['HOME'].nil?
    end
  end
end

+ (Object) icons_directory



80
81
82
# File 'lib/redcar.rb', line 80

def self.icons_directory
  RedcarIcons.directory
end

+ (Bool) installed?

Check if redcar was already installed (currently it just looks if the user_dir is present)

Returns:

  • (Bool)

    true if redcar was installed previously



231
232
233
234
# File 'lib/redcar.rb', line 231

def self.installed?
  return true if File.directory? user_dir
  false
end

+ (Object) load_plugins



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/redcar.rb', line 149

def self.load_plugins
  begin
    exit if ARGV.include?("--quit-after-splash")
    
    plugin_manager.load
    
    if plugin_manager.unreadable_definitions.any?
      puts "Couldn't read definition files:  " + plugin_manager.unreadable_definitions.map {|pd| pd.name}.join(", ")
    end
    if plugin_manager.plugins_with_errors.any?
      puts "There was an error loading plugins:  " + plugin_manager.plugins_with_errors.map {|pd| pd.name}.join(", ")
    end
    if ENV["PLUGIN_DEBUG"]
      puts "Loaded plugins:  " + plugin_manager.loaded_plugins.map {|pd| pd.name}.join(", ")
      puts
      puts "Unloaded plugins:  " + plugin_manager.unloaded_plugins.map {|pd| pd.name}.join(", ")
    end
  rescue => e
    puts e.message
    puts e.backtrace
  end
end

+ (Object) load_prerequisites(options = {})



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/redcar.rb', line 120

def self.load_prerequisites(options={})
  exit if ARGV.include?("--quit-immediately")
  require 'java'
  
  require 'redcar_quick_start'
  vendor_path = File.expand_path("../../vendor", __FILE__)
  require "#{vendor_path}/bundler/setup.rb"
  require 'plugin_manager'

  unless defined?(JSON)
    $:.unshift("#{vendor_path}/json-1.6.4-java/lib")
    require 'json'
  end

  require 'bouncy-castle-java'
  require 'openssl'
  plugin_manager.load("core")
  require 'swt/minimal'
    
  unless no_gui_mode?
    gui = Redcar::Gui.new("swt")
    gui.register_event_loop(Swt::EventLoop.new)
    gui.register_features_runner(Swt::CucumberRunner.new)
    Redcar.gui = gui
  
    plugin_manager.load("splash_screen")
  end
end

+ (Object) load_threaded

Tells the plugin manager to load plugins, and prints debug output.



185
186
187
188
189
190
191
192
193
194
# File 'lib/redcar.rb', line 185

def self.load_threaded
  load_prerequisites
  thread = Thread.new do
    load_plugins
    Redcar::Top.start(ARGV)
  end
  if no_gui_mode?
    thread.join
  end
end

+ (Object) load_unthreaded(options = {})



196
197
198
199
# File 'lib/redcar.rb', line 196

def self.load_unthreaded(options={})
  load_prerequisites(options)
  load_plugins
end

+ (Object) log



288
289
290
291
292
293
294
295
296
297
# File 'lib/redcar.rb', line 288

def self.log
  @log ||= begin
    targets = [log_file]
    targets << STDOUT if show_log?
    logger = Redcar::Logger.new(*targets)
    logger.level = custom_log_level
    at_exit { logger.close }
    logger
  end
end

+ (Object) log_file



303
304
305
# File 'lib/redcar.rb', line 303

def self.log_file
  File.open(log_path, "a")
end

+ (Object) log_path



299
300
301
# File 'lib/redcar.rb', line 299

def self.log_path
  user_dir + "/#{environment}.log"
end

+ (Object) no_gui_mode!



205
206
207
# File 'lib/redcar.rb', line 205

def self.no_gui_mode!
  @no_gui_mode = true
end

+ (Boolean) no_gui_mode?

Returns:

  • (Boolean)


201
202
203
# File 'lib/redcar.rb', line 201

def self.no_gui_mode?
  @no_gui_mode || ARGV.include?("--no-gui")
end

+ (Object) null_device



94
95
96
97
98
99
100
101
# File 'lib/redcar_quick_start.rb', line 94

def self.null_device
  case platform
  when :windows
    'nul'
  else
    '/dev/null'
  end
end

+ (:osx/:windows/:linux) platform

Platform symbol

Returns:

  • (:osx/:windows/:linux)


83
84
85
86
87
88
89
90
91
92
# File 'lib/redcar_quick_start.rb', line 83

def self.platform
  case Config::CONFIG["target_os"]
  when /darwin/
    :osx
  when /mswin|mingw/
    :windows
  when /linux/
    :linux
  end
end

+ (Object) plugin_manager



106
107
108
109
110
111
112
113
# File 'lib/redcar.rb', line 106

def self.plugin_manager
  @plugin_manager ||= begin
    m = PluginManager.new
    add_plugin_sources(m)
    m.disabled_plugins = disabled_plugins
    m
  end
end

+ (Object) process_start_time



315
316
317
318
319
320
# File 'lib/redcar.rb', line 315

def self.process_start_time
  @process_start_time ||= begin
    t = ARGV.map {|arg| arg =~ /--start-time=(\d+)$/; $1}.compact.first
    t ? Time.at(t.to_i) : $redcar_process_start_time
  end
end

+ (Object) pump

Starts the GUI.



222
223
224
225
226
# File 'lib/redcar.rb', line 222

def self.pump
  return if Redcar.no_gui_mode?
  
  Redcar.gui.start
end

+ (Object) read_stdin



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/redcar_quick_start.rb', line 16

def self.read_stdin
  if not $stdin.tty? and not ARGV.include?(DONT_READ_STDIN_ARG)
    data = ""
    begin
    data = $stdin.read
    rescue Errno::EAGAIN
    #  retry
    rescue EOFError
    end

    if data.size > 0
      require 'tmpdir'
      file = File.join(Dir.tmpdir, "tmp#{$$}.txt")
      File.open(file, 'w') {|f| f.write data}
      ARGV.unshift "--untitled-file=#{file}", DONT_READ_STDIN_ARG
    end
  end
end

+ (Object) root



102
103
104
# File 'lib/redcar.rb', line 102

def self.root
  File.expand_path(File.join(File.dirname(__FILE__), ".."))
end

+ (Object) safely(text = nil)



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'plugins/redcar/redcar.rb', line 3

def self.safely(text=nil)
  begin
    yield
  rescue => e
    message = "Error in: " + (text || e.message)
    $stderr.puts message
    $stderr.puts e.class.to_s + ": " + e.message
    $stderr.puts e.backtrace
    return if Redcar.no_gui_mode?
    Application::Dialog.message_box(
      message,
      :type => :error, :buttons => :ok)
  end
end

+ (Boolean) show_log?

Returns:

  • (Boolean)


307
308
309
# File 'lib/redcar.rb', line 307

def self.show_log?
  ARGV.include?("--show-log") or ENV["REDCAR_SHOW_LOG"]
end

+ (Object) show_splash



209
210
211
212
213
214
215
216
217
218
219
# File 'lib/redcar.rb', line 209

def self.show_splash
  return if Redcar.no_gui_mode?
  unless ARGV.include?("--no-splash")
    SplashScreen.create_splash_screen(plugin_manager.plugins.length - plugin_manager.disabled_plugins.size + 10)
  end
  plugin_manager.on_load do |plugin|
    Swt.sync_exec do
      SplashScreen.splash_screen.inc if SplashScreen.splash_screen
    end
  end
end

+ (Object) spin_up



96
97
98
99
100
# File 'lib/redcar.rb', line 96

def self.spin_up
  require 'redcar/runner'
  runner = Redcar::Runner.new
  runner.run
end

+ (Object) timeout(limit)



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'plugins/core/lib/core.rb', line 44

def self.timeout(limit)
  x = Thread.current
  result = nil
  y = Thread.new do
    begin
      result = yield
    rescue Object => e
      x.raise e
    end
  end
  s = Time.now
  loop do
    if not y.alive?
      break
    elsif Time.now - s > limit
      y.kill
      raise Redcar::TimeoutError, "timed out after #{Time.now - s}s"
      break
    end
    sleep 0.1
  end
  result
end

+ (Object) tmp_dir



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

def self.tmp_dir
  path = File.join(Redcar.user_dir, "tmp")
  unless File.exists?(path)
    FileUtils.mkdir(path)
  end
  path
end

+ (Object) try_to_load_via_drb



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/redcar_quick_start.rb', line 35

def self.try_to_load_via_drb
  if ARGV.find {|arg| arg == "--multiple-instance" || arg == '--help' || arg == '-h' || arg == "-v"}
    return false
  end
  begin
    begin
      TCPSocket.new('127.0.0.1', drb_port).close
    rescue Errno::ECONNREFUSED
      # no other instance is currently running...
      return
    end
    puts 'attempting to start via running instance' if $VERBOSE

    require 'drb' # late require to avoid loadup time
    drb = DRbObject.new(nil, "druby://127.0.0.1:#{drb_port}")

    if ARGV.any?
      ARGV.each do |arg|
        if arg =~ /--untitled-file=(.*)/
          path = $1 if File.file?($1)
          untitled = true
        elsif arg !~ /^-/ # not --something
          path = File.expand_path(arg)
          if !File.exist?(path)
            require 'fileutils'
            FileUtils.mkdir_p File.dirname(path)
            FileUtils.touch path
          end
        end
        next unless path
        drb_answer = drb.open_item_drb(path, untitled, ARGV.include?("-w"))
        return unless drb_answer == 'ok'
      end
    else
      return unless drb.open_item_drb('just_bring_to_front')
    end
    puts 'Success' if $VERBOSE
    true
  rescue Exception => e
    puts e.class.to_s + ": " + e.message
    puts e.backtrace
    false
  end
end

+ (Object) update_gui



18
19
20
21
22
23
24
25
26
# File 'plugins/redcar/redcar.rb', line 18

def self.update_gui
  result = nil
  Swt.sync_exec do
    safely do
      result = yield
    end
  end
  result
end

+ (String) user_dir

Platform specific ~/.redcar

Returns:



243
244
245
246
247
248
249
250
# File 'lib/redcar.rb', line 243

def self.user_dir
  dirname = {
    :user => ".redcar",
    :test => ".redcar_test",
    :debug => ".redcar_debug"
  }[Redcar.environment]
  File.expand_path(File.join(home_dir, dirname))
end