#!/usr/bin/env bash
#clear
#export PS4='\e[90m+${LINENO} in ${#BASH_SOURCE[@]}>${FUNCNAME[0]}:${BASH_SOURCE[@]##*/} \e[0m'
#set -x

#echo "starting: $0 <LOG_LEVEL=$1>"

### new.method

setup.headless() # # sets up everything needed for headless operation
{
  ossh status
  sh -c "$(wget -O- https://gist.githubusercontent.com/vietanhdev/c2cb96eb6cf5b9232a04dfbe8bdaba2f/raw/164c8f9f7eccbcacaa44b14ddb4225d283e6a3c7/install_realvnc_server.sh)"

  # on pixel i used tigervnc

}

setup.docker() # # sets up everything needed for headless operation
{
  oo cmd docker-ce
  oo cmd docker-ce-cli
  oo cmd containerd.io
  oo cmd docker-compose-plugin
  user group.add docker $USER

}

setup.nvm() # <?version> # Installs node.js via nvm
{
  setup.nodejs "$*"
}

setup.nodejs() # <?version> # Installs node.js via nvm
{
  #set -x
  local version="$1"
  if [ -z "$1" ]; then
    version="node"
  else
    #cd /root
    # curl -sL "https://raw.githubusercontent.com/nvm-sh/nvm/$version/install.sh" -o install_nvm.sh
    # chmod +x install_nvm.sh
    # bash install_nvm.sh
    shift
  fi

    oo cmd curl
    #curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
    curl -sL "https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh" -o ~/oosh/su/install_nvm.sh
    chmod +x ~/oosh/su/install_nvm.sh
    bash -x ~/oosh/su/install_nvm.sh
    source ~/.bashrc
    export NVM_DIR="~/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
    nvm install "$version"
  # $NVM_DIR/nvm ls
  rm install_nvm.sh
}

setup.npm() # # Installs npm package manager via oo cmd
{
  oo cmd npm
}

setup.status.headless() {
  systemctl status vncserver-virtuald.service
  systemctl status vncserver-x11-serviced.service
}

setup.headless.enable() {
  systemctl start vncserver-virtuald.service
  systemctl start vncserver-x11-serviced.servicep
  systemctl enable vncserver-virtuald.service
  systemctl enable vncserver-x11-serviced.service
}

setup.pacstall() {
  bash -c "$(wget -q https://git.io/JsADh -O -)"
}

setup.snapAppStore() # # sets up everything needed for headless operation
{
  oo cmd snapd
  snap install snap-store

}

setup.chromium() # # sets up everything needed for headless operation
{
  oo cmd chromium-browser
}

setup.samba.support() # #
{
  important.log "Needs to be run as ROOT"
  oo cmd samba 
  oo cmd samba-common-bin
  oo cmd smbclient

  oo cmd netatalk

  important.log "Please set a samba password..."
  smbpasswd -a

  systemctl restart smbd

  #vim /etc/samba/smb.conf
    # [pishare]
    # path = /media/pi/shared
    # writeable=Yes
    # create mask=0777
    # directory mask=0777
    # public=no

  #vim /etc/nsswitch.conf
  #vim /etc/avahi/services/rfb.service
      # <?xml version="1.0" standalone='no'?>
      # <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
      # <service-group>
      #   <name replace-wildcards="yes">%h</name>
      #   <service>
      #     <type>_rfb._tcp</type>
      #     <port>5900</port>
      #   </service>
      # </service-group>  

  #vim /etc/avahi/services/smb.service
      # <?xml version="1.0" standalone='no'?>
      # <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
      # <service-group>
      #   <name replace-wildcards="yes">%h</name>
      #   <service>
      #     <type>_smb._tcp</type>
      #     <port>445</port>
      #   </service>
      #   <service>
      #     <type>_device-info._tcp</type>
      #     <port>0</port>
      #     <txt-record>model=Xserve</txt-record>
      #   </service>
      # </service-group>

  ## xxx service avahi-daemon start
  ## xxx service netatalk start
  systemctl enable avahi-daemon
  systemctl enable netatalk

  systemctl restart smbd
  systemctl restart avahi-daemon
  systemctl restart netatalk

  important.log "Please Reboot before you continue...."
}

setup.usage()
{
  local this=${0##*/}
  echo "You started" 
  echo "$0

  Usage:
  $this: command   Parameter and Description"
  this.help
  echo "
  
  Examples
    $this v
    $this init
    ----------
  "
}

setup.start()
{
  #echo "sourcing init"
  source this

  # if [ -z "$1" ]; then
  #   status.discover "$@"
  #   return 0
  # fi

  this.start "$@"
}

setup.start "$@"

