//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// This script is run each time a shell is created.
// You can define here closures or variables that will be available
// in each session.
//
ld = { log:display $args } ;
lde = { log:exception-display $args } ;
la = { bundle:list -t 0 $args } ;
ls = { service:list $args } ;
cl = { config:list "(service.pid=$args)" } ;
halt = { system:shutdown -h -f $args } ;
help = { *:help $args | more } ;
man = { help $args } ;
log:list = { log:get ALL } ;
service:get = { $.context getService ($.context getServiceReference $args) };

env = { shell:set $args }
edit = { shell:nano $args }
more = { shell:less -F $args }

\#prompt = { "[1m${USER}[0m@${APPLICATION}(${SUBSHELL})> "?};

__load_class = {
  (($.reader class) classLoader) loadClass $1
}

// make sure that we catch exceptions
// as they do occur if the session is headless / non-interactive
jlineReader = $.reader
if { %(jlineReader != null) } {

  # On 256 colors terminal, add a right prompt
  max_colors = ($.jline.terminal getNumericCapability max_colors)
  if { %(max_colors >= 256) } {
    __rprompt_formatter = (((__load_class java.text.SimpleDateFormat) getConstructor (__load_class java.lang.String)) newInstance \'$'\u001B\[90m'\'HH:mm:ss)
    __date_class = (__load_class java.util.Date)
// Do not use right prompt by default    
//    \#rprompt = { $__rprompt_formatter format ($__date_class newInstance) }
  }

  setopt group
  setopt auto-fresh-line
  unsetopt insert-tab
  keymap "^[OA" up-line-or-search
  keymap "^[[A" up-line-or-search
  keymap "^[OB" down-line-or-search
  keymap "^[[B" down-line-or-search

}
