rsence 2.1.11 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/INSTALL.rdoc +5 -3
- data/README.rdoc +23 -22
- data/VERSION +1 -1
- data/conf/default_conf.yaml +65 -29
- data/conf/rsence_command_strings.yaml +101 -71
- data/js/comm/autosync/autosync.js +3 -3
- data/js/comm/jsloader/jsloader.js +16 -3
- data/js/comm/queue/queue.js +1 -1
- data/js/comm/transporter/transporter.js +106 -83
- data/js/comm/values/values.js +8 -2
- data/js/controls/button/button.js +9 -4
- data/js/controls/button/themes/default/button.css +1 -1
- data/js/controls/checkbox/themes/default/checkbox.css +1 -1
- data/js/controls/dialogs/sheet/sheet.js +27 -18
- data/js/controls/radiobutton/themes/default/radiobutton.css +1 -1
- data/js/controls/searchfield/searchfield.coffee +2 -0
- data/js/controls/searchfield/themes/default/searchfield.css +96 -0
- data/js/controls/searchfield/themes/default/searchfield.html +12 -0
- data/js/controls/searchfield/themes/default/searchfield_parts1-ie6.gif +0 -0
- data/js/controls/searchfield/themes/default/searchfield_parts1.png +0 -0
- data/js/controls/sliders/slider/slider.js +7 -1
- data/js/controls/stepper/stepper.js +6 -1
- data/js/controls/stringview/stringview.js +50 -39
- data/js/controls/tab/tab.js +103 -7
- data/js/controls/tab/themes/default/tab.css +2 -0
- data/js/controls/textarea/themes/default/textarea.css +4 -0
- data/js/controls/textcontrol/textcontrol.js +32 -2
- data/js/controls/textcontrol/themes/default/textcontrol.css +17 -2
- data/js/controls/uploader/themes/default/uploader.css +3 -3
- data/js/controls/uploader/themes/default/uploader.html +1 -1
- data/js/controls/uploader/uploader.coffee +110 -0
- data/js/controls/window/themes/default/window.css +28 -5
- data/js/controls/window/themes/default/window.html +2 -0
- data/js/controls/window/window.js +5 -1
- data/js/core/class/class.js +22 -4
- data/js/core/elem/elem.coffee +816 -0
- data/js/core/event/event.js +2 -2
- data/js/core/rsence_ns/rsence_ns.coffee +31 -0
- data/js/core/rsence_ns/rsence_ns.js +6 -6
- data/js/datetime/calendar/calendar.coffee +307 -0
- data/js/datetime/calendar/themes/default/calendar.css +90 -9
- data/js/datetime/calendar/themes/default/calendar.html +11 -0
- data/js/datetime/calendar/themes/default/calendar_bg-ie6.gif +0 -0
- data/js/datetime/calendar/themes/default/calendar_bg.png +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts1-ie6.gif +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts1.png +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts2-ie6.gif +0 -0
- data/js/datetime/calendar/themes/default/calendar_parts2.png +0 -0
- data/js/datetime/datetimepicker/datetimepicker.js +217 -0
- data/js/datetime/datetimevalue/datetimevalue.js +22 -5
- data/js/datetime/timesheet/themes/default/timesheet.css +51 -22
- data/js/datetime/timesheet/themes/default/timesheet.html +4 -2
- data/js/datetime/timesheet/timesheet.js +782 -192
- data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -11
- data/js/datetime/timesheet_item/themes/default/timesheet_item.html +4 -2
- data/js/datetime/timesheet_item/themes/default/timesheet_item_icons.png +0 -0
- data/js/datetime/timesheet_item/timesheet_item.js +158 -254
- data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +0 -274
- data/js/foundation/application/application.js +52 -9
- data/js/foundation/control/eventresponder/eventresponder.js +7 -4
- data/js/foundation/control/valueaction/valueaction.js +71 -0
- data/js/foundation/eventmanager/eventmanager.js +71 -33
- data/js/foundation/geom/rect/rect.js +39 -7
- data/js/foundation/json_renderer/json_renderer.js +278 -62
- data/js/foundation/locale_settings/locale_settings.js +131 -0
- data/js/foundation/system/system.js +40 -13
- data/js/foundation/thememanager/thememanager.js +21 -0
- data/js/foundation/view/markupview/markupview.js +12 -12
- data/js/foundation/view/view.js +221 -27
- data/js/graphics/svgcontrol/svgcontrol.js +400 -0
- data/js/lists/checkboxlist/checkboxlist.js +18 -7
- data/js/lists/listitems/listitems.js +52 -38
- data/js/lists/radiobuttonlist/radiobuttonlist.js +23 -7
- data/js/menus/menuitem/menuitem.js +5 -0
- data/js/menus/menuitem/themes/default/menuitem.css +45 -0
- data/js/menus/menuitem/themes/default/menuitem.html +4 -0
- data/js/menus/minimenu/minimenu.js +47 -16
- data/js/menus/minimenuitem/minimenuitem.js +62 -0
- data/js/menus/{minimenu/minimenuitem → minimenuitem}/themes/default/minimenuitem.css +2 -2
- data/js/menus/{minimenu/minimenuitem → minimenuitem}/themes/default/minimenuitem.html +0 -0
- data/js/menus/{minimenu/minimenuitem → minimenuitem}/themes/default/minimenuitem_checkmark.png +0 -0
- data/js/menus/popupmenu/popupmenu.js +14 -0
- data/js/menus/popupmenu/themes/default/popupmenu.css +65 -0
- data/js/menus/popupmenu/themes/default/popupmenu.html +7 -0
- data/js/menus/popupmenu/themes/default/popupmenu.png +0 -0
- data/js/no_pkg/no_pkg.js +2 -0
- data/js/util/reloadapp/reloadapp.js +1 -1
- data/js/views/scrollview/scrollview.js +6 -0
- data/lib/rsence.rb +136 -3
- data/lib/rsence/argv.rb +218 -0
- data/lib/rsence/argv/argv_util.rb +58 -0
- data/lib/rsence/argv/env_check.rb +58 -0
- data/lib/rsence/argv/help_argv.rb +15 -0
- data/lib/rsence/argv/initenv_argv.rb +218 -0
- data/lib/rsence/argv/save_argv.rb +92 -0
- data/lib/rsence/argv/startup_argv.rb +118 -0
- data/lib/rsence/argv/status_argv.rb +132 -0
- data/lib/rsence/argv/test_port.rb +32 -0
- data/lib/{daemon → rsence}/daemon.rb +67 -23
- data/lib/{conf/default.rb → rsence/default_config.rb} +18 -10
- data/lib/{plugins → rsence}/dependencies.rb +0 -0
- data/lib/{util → rsence}/gzstring.rb +0 -0
- data/lib/rsence/http.rb +3 -0
- data/lib/{http → rsence/http}/broker.rb +106 -19
- data/lib/{http → rsence/http}/rackup.rb +0 -0
- data/lib/{http → rsence/http}/request.rb +0 -4
- data/lib/{http → rsence/http}/response.rb +0 -1
- data/lib/{session → rsence}/msg.rb +17 -1
- data/lib/{plugins → rsence}/pluginmanager.rb +29 -12
- data/lib/{plugins → rsence}/plugins.rb +7 -7
- data/lib/{plugins → rsence/plugins}/gui_plugin.rb +8 -3
- data/lib/{plugins → rsence/plugins}/guiparser.rb +9 -6
- data/lib/{plugins → rsence/plugins}/plugin.rb +23 -4
- data/lib/{plugins → rsence/plugins}/plugin_base.rb +11 -1
- data/lib/{plugins → rsence/plugins}/plugin_plugins.rb +2 -2
- data/lib/{plugins → rsence/plugins}/plugin_sqlite_db.rb +0 -0
- data/lib/{plugins → rsence/plugins}/servlet.rb +0 -0
- data/lib/{session → rsence}/sessionmanager.rb +101 -39
- data/lib/{session → rsence}/sessionstorage.rb +30 -16
- data/lib/{daemon → rsence}/sigcomm.rb +0 -0
- data/lib/{transporter → rsence}/transporter.rb +13 -11
- data/lib/{values/hvalue.rb → rsence/value.rb} +6 -1
- data/lib/{values → rsence}/valuemanager.rb +1 -1
- data/plugins/client_pkg/client_pkg.rb +14 -4
- data/plugins/client_pkg/info.yaml +2 -2
- data/plugins/client_pkg/lib/client_pkg_build.rb +145 -45
- data/plugins/client_pkg/lib/client_pkg_cache.rb +1 -1
- data/plugins/client_pkg/lib/client_pkg_serve.rb +1 -1
- data/plugins/main/main.rb +43 -3
- data/plugins/main/tmpl/index.html +2 -10
- data/plugins/main/values.yaml +3 -1
- data/plugins/ticket/lib/common.rb +6 -3
- data/plugins/ticket/ticket.rb +11 -3
- metadata +144 -174
- data/js/comm/autosync/js.inc +0 -0
- data/js/comm/js.inc +0 -0
- data/js/comm/jsloader/js.inc +0 -0
- data/js/comm/queue/js.inc +0 -0
- data/js/comm/session/js.inc +0 -0
- data/js/comm/sessionwatcher/js.inc +0 -0
- data/js/comm/transporter/js.inc +0 -0
- data/js/comm/urlresponder/js.inc +0 -0
- data/js/comm/values/js.inc +0 -0
- data/js/controls/button/js.inc +0 -0
- data/js/controls/checkbox/js.inc +0 -0
- data/js/controls/dialogs/alert_sheet/js.inc +0 -0
- data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/js.inc +0 -0
- data/js/controls/imageview/js.inc +0 -0
- data/js/controls/passwordcontrol/js.inc +0 -0
- data/js/controls/progress/progressbar/js.inc +0 -0
- data/js/controls/progress/progressindicator/js.inc +0 -0
- data/js/controls/radiobutton/js.inc +0 -0
- data/js/controls/sliders/slider/js.inc +0 -0
- data/js/controls/sliders/vslider/js.inc +0 -0
- data/js/controls/stepper/js.inc +0 -0
- data/js/controls/stringview/js.inc +0 -0
- data/js/controls/tab/js.inc +0 -0
- data/js/controls/textarea/js.inc +0 -0
- data/js/controls/textcontrol/js.inc +0 -0
- data/js/controls/uploader/js.inc +0 -0
- data/js/controls/uploader/uploader.js +0 -154
- data/js/controls/validatorview/js.inc +0 -0
- data/js/controls/window/js.inc +0 -0
- data/js/core/class/js.inc +0 -0
- data/js/core/elem/elem.js +0 -1325
- data/js/core/elem/js.inc +0 -0
- data/js/core/event/js.inc +0 -0
- data/js/core/iefix/js.inc +0 -0
- data/js/core/rsence_ns/js.inc +0 -0
- data/js/datetime/calendar/calendar.js +0 -198
- data/js/datetime/calendar/js.inc +0 -0
- data/js/datetime/datetimevalue/js.inc +0 -0
- data/js/datetime/timesheet/js.inc +0 -0
- data/js/datetime/timesheet/old_timesheet.js +0 -292
- data/js/datetime/timesheet/themes/default/old_timesheet.css +0 -30
- data/js/datetime/timesheet/themes/default/old_timesheet.html +0 -2
- data/js/datetime/timesheet_item/js.inc +0 -0
- data/js/datetime/timesheet_item/old_timesheet_item.js +0 -308
- data/js/datetime/timesheet_item/themes/default/old_timesheet_item.css +0 -42
- data/js/datetime/timesheet_item/themes/default/old_timesheet_item.html +0 -8
- data/js/datetime/timesheet_item_edit/js.inc +0 -0
- data/js/datetime/timesheet_item_edit/old_timesheet_item_edit.js +0 -274
- data/js/foundation/application/js.inc +0 -0
- data/js/foundation/control/controldefaults/js.inc +0 -0
- data/js/foundation/control/dummyvalue/js.inc +0 -0
- data/js/foundation/control/dyncontrol/js.inc +0 -0
- data/js/foundation/control/eventresponder/js.inc +0 -0
- data/js/foundation/control/js.inc +0 -0
- data/js/foundation/control/valuematrix/js.inc +0 -0
- data/js/foundation/control/valueresponder/js.inc +0 -0
- data/js/foundation/eventmanager/js.inc +0 -0
- data/js/foundation/geom/point/js.inc +0 -0
- data/js/foundation/geom/rect/js.inc +0 -0
- data/js/foundation/json_renderer/js.inc +0 -0
- data/js/foundation/system/js.inc +0 -0
- data/js/foundation/thememanager/js.inc +0 -0
- data/js/foundation/value/js.inc +0 -0
- data/js/foundation/view/js.inc +0 -0
- data/js/foundation/view/markupview/js.inc +0 -0
- data/js/foundation/view/morphanimation/js.inc +0 -0
- data/js/foundation/view/viewdefaults/js.inc +0 -0
- data/js/lists/checkboxlist/js.inc +0 -0
- data/js/lists/listitems/js.inc +0 -0
- data/js/lists/propertylist/js.inc +0 -0
- data/js/lists/propertylist/propertylisteditor/js.inc +0 -0
- data/js/lists/radiobuttonlist/js.inc +0 -0
- data/js/menus/minimenu/js.inc +0 -0
- data/js/menus/minimenu/minimenuitem/js.inc +0 -0
- data/js/menus/minimenu/minimenuitem/minimenuitem.js +0 -33
- data/js/util/reloadapp/js.inc +0 -0
- data/js/util/sha/js.inc +0 -0
- data/js/views/centerview/js.inc +0 -0
- data/js/views/inlineview/js.inc +0 -0
- data/js/views/scrollview/js.inc +0 -0
- data/lib/conf/argv.rb +0 -880
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.minimenuitem_label,
|
|
4
4
|
.minimenuitem_state {
|
|
5
5
|
position: absolute;
|
|
6
|
-
top: 0px; height:
|
|
6
|
+
top: 0px; height: 16px;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
.minimenuitem_control {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
.minimenuitem_label {
|
|
29
29
|
left: 14px; right: 11px; top: 0px;
|
|
30
|
-
height: 15px; line-height:
|
|
30
|
+
height: 15px; line-height: 14px;
|
|
31
31
|
text-align: left;
|
|
32
32
|
text-overflow: ellipsis;
|
|
33
33
|
overflow: hidden;
|
|
File without changes
|
data/js/menus/{minimenu/minimenuitem → minimenuitem}/themes/default/minimenuitem_checkmark.png
RENAMED
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var
|
|
2
|
+
HPopupMenu = HMiniMenu.extend({
|
|
3
|
+
componentName: 'popupmenu',
|
|
4
|
+
subComponentHeight: 24,
|
|
5
|
+
createComponent: function( i, _label ){
|
|
6
|
+
return HMenuItem.nu(
|
|
7
|
+
[ 0, (i*24), null, 24, 0, null ],
|
|
8
|
+
this.menuItemView, {
|
|
9
|
+
label: _label
|
|
10
|
+
}
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
var HPopUpMenu = HPopupMenu;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
.popupmenu_control,
|
|
3
|
+
.popupmenu_edge_left,
|
|
4
|
+
.popupmenu_center,
|
|
5
|
+
.popupmenu_edge_right,
|
|
6
|
+
.popupmenu_label,
|
|
7
|
+
.popupmenu_antiselect {
|
|
8
|
+
position: absolute;
|
|
9
|
+
top: 0px; height: 23px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.popupmenu_control {
|
|
13
|
+
left: 0px; right: 0px;
|
|
14
|
+
cursor: pointer;
|
|
15
|
+
}
|
|
16
|
+
.disabled .popupmenu_control {
|
|
17
|
+
cursor: default;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.popupmenu_edge_left,
|
|
21
|
+
.popupmenu_center,
|
|
22
|
+
.popupmenu_edge_right {
|
|
23
|
+
background-image: #{this.getCssFilePath('popupmenu.png')};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.popupmenu_edge_left {
|
|
27
|
+
left: 0px; width: 9px;
|
|
28
|
+
background-position: 0px 0px;
|
|
29
|
+
background-repeat: no-repeat;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.popupmenu_edge_right {
|
|
33
|
+
right: 0px; width: 17px;
|
|
34
|
+
background-position: -9px 0px;
|
|
35
|
+
background-repeat: no-repeat;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.popupmenu_center {
|
|
39
|
+
left: 9px; right: 17px;
|
|
40
|
+
background-position: 0px -23px;
|
|
41
|
+
background-repeat: repeat-x;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.popupmenu_label {
|
|
45
|
+
left: 13px; right: 11px; top: 0px;
|
|
46
|
+
height: 22px; line-height: #{(BROWSER_TYPE.ie7||BROWSER_TYPE.ie6)?'20':'22'}px;
|
|
47
|
+
text-align: left;
|
|
48
|
+
text-overflow: ellipsis;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
white-space:nowrap;
|
|
51
|
+
vertical-align: middle;
|
|
52
|
+
font-family: Arial, sans-serif;
|
|
53
|
+
font-size: 12px;
|
|
54
|
+
color: #333;
|
|
55
|
+
}
|
|
56
|
+
.popupmenu_control:hover > .popupmenu_label {
|
|
57
|
+
color: #000;
|
|
58
|
+
}
|
|
59
|
+
.disabled .popupmenu_control {
|
|
60
|
+
opacity: 0.6;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.popupmenu_antiselect {
|
|
64
|
+
left: 0px; right: 0px;
|
|
65
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<div class="popupmenu_control" id="control#{_ID}">
|
|
2
|
+
<div class="popupmenu_edge_left"></div>
|
|
3
|
+
<div class="popupmenu_center"></div>
|
|
4
|
+
<div class="popupmenu_edge_right"></div>
|
|
5
|
+
<div class="popupmenu_label" id="label#{_ID}">#{this.label}</div>
|
|
6
|
+
<div class="popupmenu_antiselect"></div>
|
|
7
|
+
</div>
|
|
Binary file
|
data/js/no_pkg/no_pkg.js
ADDED
|
@@ -101,7 +101,7 @@ ReloadApp = HApplication.extend({
|
|
|
101
101
|
ELEM.setCSS(_alertIcon,'position:absolute;left:8px;top:8px;width:48px;height:48px;background-image:url('+_iconUrl+');');
|
|
102
102
|
ELEM.setCSS(_alertTitle,'position:absolute;left:64px;top:8px;width:300px;height:24px;line-height:24px;vertical-align:middle;text-align:center;font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;');
|
|
103
103
|
ELEM.setHTML(_alertTitle,_this.app._title);
|
|
104
|
-
ELEM.setCSS(_alertMessage,'position:absolute;left:64px;top:42px;width:332px;height:186px;border-bottom:1px dotted #999;line-height:
|
|
104
|
+
ELEM.setCSS(_alertMessage,'position:absolute;left:64px;top:42px;width:332px;height:186px;border-bottom:1px dotted #999;line-height:18px;vertical-align:middle;overflow:auto;');
|
|
105
105
|
ELEM.setHTML(_alertMessage,_this.app._message);
|
|
106
106
|
HButton.extend({
|
|
107
107
|
click: this.app.reload
|
|
@@ -17,6 +17,12 @@ HScrollView = HControl.extend({
|
|
|
17
17
|
scrollY: true
|
|
18
18
|
}),
|
|
19
19
|
drawSubviews: function(){
|
|
20
|
+
if(this.options.scrollX === 'auto' || this.options.scrollY === 'auto'){
|
|
21
|
+
this.setStyle('overflow','auto');
|
|
22
|
+
}
|
|
23
|
+
else if(this.options.scrollX || this.options.scrollY){
|
|
24
|
+
this.setStyle('overflow','scroll');
|
|
25
|
+
}
|
|
20
26
|
if(!this.options.scrollX){
|
|
21
27
|
this.setStyle('overflow-x','hidden');
|
|
22
28
|
}
|
data/lib/rsence.rb
CHANGED
|
@@ -25,8 +25,141 @@
|
|
|
25
25
|
#
|
|
26
26
|
# Most other classes are inner workings of RSence itself and are subject to change without further notice.
|
|
27
27
|
module RSence
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
# @private Returns true, if platform fully supports POSIX standard signals.
|
|
30
|
+
def self.pid_support?
|
|
31
|
+
# true for non-windows
|
|
32
|
+
return (not ['i386-mingw32','x86-mingw32'].include?(RUBY_PLATFORM))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @private Returns true, if platform is linux
|
|
36
|
+
def self.linux?
|
|
37
|
+
return RUBY_PLATFORM.end_with?('-linux')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# @private Returns true, if platform is Mac OS X
|
|
41
|
+
def self.darwin?
|
|
42
|
+
return RUBY_PLATFORM.include?('-darwin')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @private Returns signal name that resembles INFO or PWR (extra signal to poll for server status)
|
|
46
|
+
def self.info_signal_name
|
|
47
|
+
if self.linux?
|
|
48
|
+
return 'PWR'
|
|
49
|
+
else
|
|
50
|
+
return 'INFO'
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @private This accessor enables RSence.argv method, which returns the ARGVParser instance
|
|
55
|
+
def self.argv; @@argv_parser; end
|
|
56
|
+
|
|
57
|
+
# @private This accessor enables RSence.cmd method, which returns the command the process was started with.
|
|
58
|
+
def self.cmd; @@argv_parser.cmd; end
|
|
59
|
+
|
|
60
|
+
# Command line options parsed
|
|
61
|
+
# @return [Hash] Parsed command-line options:
|
|
62
|
+
# *Key* (Symbol):: *Value*
|
|
63
|
+
# +:env_path+:: (String) The directory of the environment.
|
|
64
|
+
# +:conf_files+:: (Array of Strings) Additional configuration files given with the +--conf+ command-line option. Default is +[]+.
|
|
65
|
+
# +:debug+:: (true or false) True, if the +-d+ or +--debug+ command-line option was given. Default is false.
|
|
66
|
+
# +:verbose+:: (true or false) True, if the +-v+ or +--verbose+ command-line option was given. Default is false.
|
|
67
|
+
# +:log_fg+:: (true or false) True, if the +-f+ or +--log-fg+ command-line option was given. Default is false.
|
|
68
|
+
# +:trace_js+:: (true or false) True, if the +--trace-js+ command-line option was given. Default is false.
|
|
69
|
+
# +:trace_delegate+:: (true or false) True, if the +--trace-delegate+ command-line option was given. Default is false.
|
|
70
|
+
# +:port+:: (String or nil) The TCP port number given with the +--port+ command-line option. Default is nil.
|
|
71
|
+
# +:addr+:: (String or nil) The TCP bind address given with the +--addr+ command-line option. Default is nil.
|
|
72
|
+
# +:server+:: (String or nil) The Rack http server handler given with the +--server+ command-line option. Default is nil.
|
|
73
|
+
# +:reset_ses+:: (true or false) True, if the +-r+ or +--reset-sessions+ command-line option was given. Default is false.
|
|
74
|
+
# +:autoupdate+:: (true or false) True, if the +-a+ or +--auto-update+ command-line option was given. Default is false.
|
|
75
|
+
# +:latency+:: (Number) Amount of milliseconds to sleep in each request given with the +--latency+ command-line option. Default is 0.
|
|
76
|
+
# +:say+:: (true or false) True, if the +-S+ or +--say+ command-line option was given. Default is false.
|
|
77
|
+
def self.args; @@argv_parser.args; end
|
|
78
|
+
|
|
79
|
+
def self.env_path; @@argv_parser.args[:env_path]; end
|
|
80
|
+
|
|
81
|
+
# @private This accessor enables RSence.startable? method, which returns true if a start-type command was given.
|
|
82
|
+
def self.startable?; @@argv_parser.startable?; end
|
|
83
|
+
|
|
84
|
+
# @return [String] The version of RSence
|
|
85
|
+
def self.version; @@argv_parser.version; end
|
|
86
|
+
|
|
87
|
+
# @private This accessor enables RSence.startup method, which starts RSence.
|
|
88
|
+
def self.startup
|
|
89
|
+
puts "Loading configuration..." if self.args[:verbose]
|
|
90
|
+
# Use the default configuration:
|
|
91
|
+
require 'rsence/default_config'
|
|
92
|
+
@@config = Configuration.new(self.args).config
|
|
93
|
+
|
|
94
|
+
# RSence runtime configuration data
|
|
95
|
+
# @return [Hash] the active configuration structure as defined by the {file:default_conf default configuration} and overridden by local configuration files.
|
|
96
|
+
def self.config
|
|
97
|
+
@@config
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def self.transporter
|
|
101
|
+
@@transporter
|
|
102
|
+
end
|
|
103
|
+
def self.transporter=(transporter)
|
|
104
|
+
if class_variable_defined?(:'@@transporter')
|
|
105
|
+
warn "WARN: Transporter already set."
|
|
106
|
+
return
|
|
107
|
+
else
|
|
108
|
+
@@transporter = transporter
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def self.plugin_manager
|
|
113
|
+
@@plugin_manager
|
|
114
|
+
end
|
|
115
|
+
def self.plugin_manager=(plugin_manager)
|
|
116
|
+
if class_variable_defined?(:'@@plugin_manager')
|
|
117
|
+
warn "WARN: @@plugin_manager already set."
|
|
118
|
+
return
|
|
119
|
+
else
|
|
120
|
+
@@plugin_manager = plugin_manager
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def self.value_manager
|
|
125
|
+
@@value_manager
|
|
126
|
+
end
|
|
127
|
+
def self.value_manager=(value_manager)
|
|
128
|
+
if class_variable_defined?(:'@@value_manager')
|
|
129
|
+
warn "WARN: @@value_manager already set."
|
|
130
|
+
return
|
|
131
|
+
else
|
|
132
|
+
@@value_manager = value_manager
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def self.session_manager
|
|
137
|
+
@@session_manager
|
|
138
|
+
end
|
|
139
|
+
def self.session_manager=(session_manager)
|
|
140
|
+
if class_variable_defined?(:'@@session_manager')
|
|
141
|
+
warn "WARN: @@session_manager already set."
|
|
142
|
+
return
|
|
143
|
+
else
|
|
144
|
+
@@session_manager = session_manager
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
## Riassence Daemon controls
|
|
149
|
+
require 'rsence/daemon'
|
|
150
|
+
puts "Starting RSence..." if self.args[:verbose]
|
|
151
|
+
daemon = HTTPDaemon.new
|
|
152
|
+
daemon.daemonize!
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
# Includes the Signal Communication utility.
|
|
157
|
+
# Used to respond via special PID files in the run directory of the environment
|
|
158
|
+
require 'rsence/sigcomm'
|
|
29
159
|
|
|
30
|
-
|
|
31
|
-
|
|
160
|
+
|
|
161
|
+
# Requires the ARGVParser that functions as the command-line user interface.
|
|
162
|
+
require 'rsence/argv'
|
|
163
|
+
|
|
164
|
+
end
|
|
32
165
|
|
data/lib/rsence/argv.rb
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
## RSence
|
|
2
|
+
# Copyright 2010 Riassence Inc.
|
|
3
|
+
# http://riassence.com/
|
|
4
|
+
#
|
|
5
|
+
# You should have received a copy of the GNU General Public License along
|
|
6
|
+
# with this software package. If not, contact licensing@riassence.com
|
|
7
|
+
##
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
module RSence
|
|
11
|
+
|
|
12
|
+
require 'erb'
|
|
13
|
+
require 'yaml'
|
|
14
|
+
|
|
15
|
+
# @private ARGVParser is the "user interface" as a command-line argument parser.
|
|
16
|
+
# It parses the command-line arguments and sets up things accordingly.
|
|
17
|
+
class ARGVParser
|
|
18
|
+
|
|
19
|
+
# Returns true if one of the 'start' -type commands were supplied
|
|
20
|
+
# and the environment seems valid.
|
|
21
|
+
def startable?; @startable; end
|
|
22
|
+
|
|
23
|
+
# Parses an argument of the 'help' command
|
|
24
|
+
def parse_help_argv
|
|
25
|
+
if @argv.length >= 2
|
|
26
|
+
help_cmd = @argv[1].to_sym
|
|
27
|
+
else
|
|
28
|
+
help_cmd = :help_main
|
|
29
|
+
end
|
|
30
|
+
help( help_cmd )
|
|
31
|
+
exit
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Creates the default and initial @args hash.
|
|
35
|
+
def init_args
|
|
36
|
+
@args = {
|
|
37
|
+
:env_path => Dir.pwd,
|
|
38
|
+
:conf_files => [ ], # --conf
|
|
39
|
+
:debug => false, # -d --debug
|
|
40
|
+
:verbose => false, # -v --verbose
|
|
41
|
+
:log_fg => false, # -f --log-fg
|
|
42
|
+
:trace_js => false, # --trace-js
|
|
43
|
+
:trace_delegate => false, # --trace-delegate
|
|
44
|
+
:port => nil, # --port
|
|
45
|
+
:addr => nil, # --addr --bind
|
|
46
|
+
:server => nil, # --server
|
|
47
|
+
:reset_ses => false, # -r --reset-sessions
|
|
48
|
+
:autoupdate => false, # -a --auto-update
|
|
49
|
+
:latency => 0, # --latency
|
|
50
|
+
:say => false, # -S --say
|
|
51
|
+
:http_delayed_start => nil, # --http-delayed-start
|
|
52
|
+
|
|
53
|
+
# client_pkg (not supported yet)
|
|
54
|
+
:client_pkg_no_gzip => false, # --disable-gzip
|
|
55
|
+
:client_pkg_no_obfuscation => false, # --disable-obfuscation
|
|
56
|
+
:client_pkg_no_whitespace_removal => false, # --disable-jsmin
|
|
57
|
+
:suppress_build_messages => true, # --build-report
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Sets various debug-related options on.
|
|
63
|
+
def set_debug
|
|
64
|
+
@args[:debug] = true
|
|
65
|
+
@args[:verbose] = true
|
|
66
|
+
@args[:autoupdate] = true
|
|
67
|
+
@args[:client_pkg_no_obfuscation] = true
|
|
68
|
+
@args[:client_pkg_no_whitespace_removal] = true
|
|
69
|
+
@args[:suppress_build_messages] = false
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Set the verbose argument on
|
|
73
|
+
def set_verbose
|
|
74
|
+
@args[:verbose] = true
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Set the foreground logging argument on
|
|
78
|
+
def set_log_fg
|
|
79
|
+
@args[:log_fg] = true
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Sets the session reset argument on
|
|
83
|
+
def set_reset_ses
|
|
84
|
+
@args[:reset_ses] = true
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Sets the auto-update argument on
|
|
88
|
+
def set_autoupdate
|
|
89
|
+
@args[:autoupdate] = true
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Sets the speech synthesis argument on
|
|
93
|
+
def set_say
|
|
94
|
+
@args[:say] = true
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Error message when an invalid environment is encountered, exits.
|
|
98
|
+
def invalid_env( env_path=false )
|
|
99
|
+
env_path = @args[:env_path] unless env_path
|
|
100
|
+
puts ERB.new( @strs[:messages][:invalid_environment] ).result( binding )
|
|
101
|
+
exit
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Error message when an invalid option is encountered, exits.
|
|
105
|
+
def invalid_option(arg,chr=false)
|
|
106
|
+
if chr
|
|
107
|
+
puts ERB.new( @strs[:messages][:invalid_option_chr] ).result( binding )
|
|
108
|
+
else
|
|
109
|
+
puts ERB.new( @strs[:messages][:invalid_option] ).result( binding )
|
|
110
|
+
end
|
|
111
|
+
exit
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
require 'rsence/argv/startup_argv'
|
|
115
|
+
require 'rsence/argv/status_argv'
|
|
116
|
+
require 'rsence/argv/save_argv'
|
|
117
|
+
require 'rsence/argv/initenv_argv'
|
|
118
|
+
require 'rsence/argv/help_argv'
|
|
119
|
+
require 'rsence/argv/env_check'
|
|
120
|
+
require 'rsence/argv/test_port'
|
|
121
|
+
include ArgvUtil
|
|
122
|
+
|
|
123
|
+
# Returns the version of RSence
|
|
124
|
+
def version; @version; end
|
|
125
|
+
|
|
126
|
+
# Returns the command the process was started with.
|
|
127
|
+
def cmd; @cmd; end
|
|
128
|
+
|
|
129
|
+
# Returns the parsed optional arguments
|
|
130
|
+
def args; @args; end
|
|
131
|
+
|
|
132
|
+
# Top-level argument parser, checks for command and calls sub-parser, if valid command.
|
|
133
|
+
def parse_argv
|
|
134
|
+
if @argv.empty?
|
|
135
|
+
puts @strs[:help][:help_help]
|
|
136
|
+
exit
|
|
137
|
+
else
|
|
138
|
+
cmd = @argv[0].to_sym
|
|
139
|
+
cmd = :help if [:h, :'-h', :'--help', :'-help'].include? cmd
|
|
140
|
+
end
|
|
141
|
+
if @cmds.include?(cmd)
|
|
142
|
+
@cmd = cmd
|
|
143
|
+
unless [:help, :version].include?( cmd )
|
|
144
|
+
puts "RSence #{@version} -- Ruby #{RUBY_VERSION}"
|
|
145
|
+
end
|
|
146
|
+
if cmd == :help
|
|
147
|
+
parse_help_argv
|
|
148
|
+
elsif cmd == :version
|
|
149
|
+
puts version
|
|
150
|
+
exit
|
|
151
|
+
elsif [:run,:start,:stop,:restart].include? cmd
|
|
152
|
+
parse_startup_argv
|
|
153
|
+
elsif cmd == :status
|
|
154
|
+
parse_status_argv
|
|
155
|
+
elsif cmd == :save
|
|
156
|
+
parse_save_argv
|
|
157
|
+
elsif cmd == :initenv or cmd == :init
|
|
158
|
+
parse_initenv_argv
|
|
159
|
+
end
|
|
160
|
+
else
|
|
161
|
+
puts @strs[:help][:unknown] + cmd.to_s.inspect
|
|
162
|
+
puts @strs[:help][:help_help]
|
|
163
|
+
exit
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# The constructor sets the @startable flag as false. Use the #parse method with ARGV as the argument to start parsing the ARGV.
|
|
168
|
+
def initialize
|
|
169
|
+
@startable = false
|
|
170
|
+
|
|
171
|
+
# The RSence version string, read from the VERSION file in
|
|
172
|
+
# the root directory of RSence.
|
|
173
|
+
@version = File.read( File.join( SERVER_PATH, 'VERSION' ) ).strip
|
|
174
|
+
|
|
175
|
+
# Makes various commands available depending on the platform.
|
|
176
|
+
# The status/start/stop/restart/save -commands depend on an operating
|
|
177
|
+
# system that fully implements POSIX standard signals.
|
|
178
|
+
# These are necessary to send signals to the background process.
|
|
179
|
+
if not RSence.pid_support?
|
|
180
|
+
@cmds = [ :run, :init, :initenv, :version, :help ]
|
|
181
|
+
else
|
|
182
|
+
@cmds = [ :run, :status, :start, :stop, :restart, :save,
|
|
183
|
+
:init, :initenv, :version, :help ]
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
help_avail_cmds = @cmds.map{|cmd|cmd.to_s}.join("\n ")
|
|
187
|
+
|
|
188
|
+
# Load the strings from the strings file.
|
|
189
|
+
strs_path = File.join( SERVER_PATH, 'conf',
|
|
190
|
+
'rsence_command_strings.yaml' )
|
|
191
|
+
strs_data = File.read( strs_path )
|
|
192
|
+
|
|
193
|
+
strs_data = ERB.new( strs_data ).result( binding )
|
|
194
|
+
|
|
195
|
+
@strs = YAML.load( strs_data )
|
|
196
|
+
|
|
197
|
+
@strs[:help][:run] += @strs[:help][:path]+@strs[:help][:options]
|
|
198
|
+
@strs[:help][:start] += @strs[:help][:path]+@strs[:help][:options]
|
|
199
|
+
@strs[:help][:stop] += @strs[:help][:path]+@strs[:help][:options]
|
|
200
|
+
@strs[:help][:restart] += @strs[:help][:path]+@strs[:help][:options]
|
|
201
|
+
@strs[:help][:status] += @strs[:help][:path]
|
|
202
|
+
@strs[:help][:save] += @strs[:help][:path]
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# Entry point for ARGV parsing
|
|
206
|
+
def parse( argv )
|
|
207
|
+
@argv = argv
|
|
208
|
+
parse_argv
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# @private The ARGVParser instance and its startup
|
|
214
|
+
@@argv_parser = ARGVParser.new
|
|
215
|
+
@@argv_parser.parse( ARGV )
|
|
216
|
+
|
|
217
|
+
end
|
|
218
|
+
|