Commit d92b8bb4 authored by Jerome Chauveau's avatar Jerome Chauveau
Browse files

installation des démos : --d-tei ou --d-ead #123

parent 267615f9
Loading
Loading
Loading
Loading
+269 −130
Original line number Diff line number Diff line
@@ -5,9 +5,13 @@ MAX_VERSION=$(node -p -e "require('$DIRECTORY/../package.json').version")
MAX_PLUGINS_DIR=$DIRECTORY/../plugins
BASEX_CLIENT_BIN="basexclient"
BASEX_BIN="basex"
MAX_DEMO_VERION_NUMBER="v1.1"
MAX_DEMO_VERSION="max-tei-demo-"$MAX_DEMO_VERION_NUMBER
DEMO_RELEASE_URL="https://git.unicaen.fr/pdn-certic/max-tei-demo/-/archive/v1.1/"$MAX_DEMO_VERSION".zip"
MAX_TEI_DEMO_VERION_NUMBER="v1.1"
MAX_TEI_DEMO_VERSION="max-tei-demo-"$MAX_TEI_DEMO_VERION_NUMBER
MAX_EAD_DEMO_VERION_NUMBER="v1.0"
MAX_EAD_DEMO_VERSION="max-ead-demo-"$MAX_EAD_DEMO_VERION_NUMBER
#lorsque gitlab sera en version 14.9 ou + : https://host/namespace/project/-/releases/permalink/latest
TEI_DEMO_RELEASE_URL="https://git.unicaen.fr/pdn-certic/max-tei-demo/-/archive/"$MAX_TEI_DEMO_VERION_NUMBER"/"$MAX_TEI_DEMO_VERSION".zip"
EAD_DEMO_RELEASE_URL="https://git.unicaen.fr/pdn-certic/max-ead-demo/-/archive/"$MAX_EAD_DEMO_VERION_NUMBER"/"$MAX_EAD_DEMO_VERSION".zip"

dependency_test(){
  result=$(command -v $1)
@@ -55,8 +59,9 @@ display_usage(){
    echo "   -h: Display help."
    echo "   -p: Specify BaseX port to use for db feed. Default one is "$PORT"."
    echo "   -i: Max development env initialization."
    echo "   -d: Deploy the demo edition project."
    echo "   -n: Deploy new edition with its XML sources."
    echo "   --d-tei: Deploy the TEI demo edition project."
    echo "   --d-ead: Deploy the EAD demo edition project."
    echo "   --list-plugins: show plugins and status."
    echo "   --enable-plugin [plugin_name]: Enable [plugin_name] plugin."
    echo "   --disable-plugin [plugin_name]: Disable [plugin_name] plugin."
@@ -136,44 +141,6 @@ disable_plugin(){
}


# 1 argument required
if [  $# -lt 1 ]
then
    display_usage
    exit 1
fi


NEW_EDITION_MODE='-n'
DEMO_MODE='-d'
INIT_MODE='-i'

CHOOSEN_MODE=''

while [[ "$#" -gt 0 ]]; do
    case $1 in
        -h) display_usage
            exit 0;;
        -p) PORT="$2"; shift ;;
        -n|-d|-i) CHOOSEN_MODE="$1"; shift ;;
        --list-plugins) list_plugins;exit 0;;
        --enable-plugin) enable_plugin $2 $3;exit 0;;
        --disable-plugin) disable_plugin $2 $3;exit 0;;
         *) echo "Unknown parameter passed: $1"; exit 1 ;;
    esac
    shift
done


if [ -z $CHOOSEN_MODE ]
then
  display_usage
  exit 1
fi

db_demo_feed(){
    db_project_feed max_tei_demo $DIRECTORY/../editions/max_tei_demo/dataset/
}
#adds xml datas to a new db
db_project_feed(){
   feed_cmd=$BASEX_CLIENT_BIN" -p$PORT -w -cfeed.txt"
@@ -184,51 +151,70 @@ db_project_feed(){
   ret_code=$?
   if [ $ret_code -gt 0 ]
    then echo "Cannot insert data in DB. Is your BaseX running on "$PORT" ?"
    return 1
   else
    rm feed.txt
    echo "INFO: The "$1" DB was successfully created."
    return 0
   fi
}

demo_edition_build(){
# install demo sources from its dataset directory
db_demo_feed(){
    edition_name=$1
    db_project_feed $1 $DIRECTORY/../editions/$1/dataset/
    ret_code=$?
    return $ret_code
}

# demo edition deployment
install_demo(){
  url=$1
  zip_name=$2
  edition_name=$3

  if [ ! -d $DIRECTORY/../editions ]
  then
    echo 'Creates "editions" directory.'
    mkdir $DIRECTORY/../editions
  fi

    if [ -d $DIRECTORY/../editions/max_tei_demo ]; then
  if [ -d $DIRECTORY/../editions/$edition_name ]
  then
    echo "Removes existing demo edition."
      rm -rf $DIRECTORY/../editions/max_tei_demo
    rm -rf $DIRECTORY/../editions/$edition_name
  fi

#    cp -r $DIRECTORY/demo/demo_edition $DIRECTORY/../editions/demo_lorem
#    cp $DIRECTORY/demo/demo_lorem_config_inc.xml $DIRECTORY/../editions/demo_lorem
#    echo "  -> resource files copy: DONE"
  cd $DIRECTORY/../editions
    echo "Downloading Max TEI Demo resources"

    wget $DEMO_RELEASE_URL

  echo "Downloading Max Demo resources at "$urlcd .
  wget $url
  getResult=$?
  if [ $getResult -ne 0 ]
  then
     echo 'MaX demo install error : Cannot fetch '$DEMO_RELEASE_URL
   echo 'MaX demo install error : Cannot fetch '$url
   exit -1
  fi
    unzip $MAX_DEMO_VERSION.zip
    mv $MAX_DEMO_VERSION max_tei_demo
    rm $MAX_DEMO_VERSION.zip
  unzip $zip_name.zip
  mv $zip_name $edition_name
  rm $zip_name.zip
  cd $DIRECTORY

    #    enable project plugins
  #enable  plugins
  if [ $edition_name == 'max_tei_demo' ]
  then
    enable_plugin apparat_critique max_tei_demo
    enable_plugin breadcrumb max_tei_demo
    enable_plugin correction max_tei_demo
    enable_plugin img_viewer max_tei_demo
    enable_plugin search max_tei_demo
    enable_plugin tei_pdf max_tei_demo
    include_project_config max_tei_demo
  else
    enable_plugin side_toc max_ead_demo
    enable_plugin ead_basket max_ead_demo
  fi

  #include edition conf file in main max config one
  include_project_config $edition_name

  if [ $? -ne 0 ]
  then
@@ -237,6 +223,58 @@ demo_edition_build(){
  else
    format_configuration_file
  fi


  db_demo_feed $edition_name

  ret_code=$?
  if [ $ret_code -gt 0 ]
    then echo $edition_name": installation failed"
    return 1
  else
    echo "INFO: The edition "$edition_name" was successfully deployed."
    return 0
  fi

}


deploy_new_edition(){
  read -e -p "Project ID ? " project_id
  read -e -p "XML Project type (tei, ead, ...) ? " xmlns
  read -e -p "Database path ? " db_path
  new_edition_build $project_id $db_path $xmlns
  read -e -p "XML sources path ? " data_path
  db_project_feed $db_path $data_path
  mkdir -p $DIRECTORY/../editions/$project_id/fragments/fr
  mkdir $DIRECTORY/../editions/$project_id/xq
  mkdir $DIRECTORY/../editions/$project_id/ui
  mkdir $DIRECTORY/../editions/$project_id/ui/css
  mkdir $DIRECTORY/../editions/$project_id/ui/fonts
  mkdir $DIRECTORY/../editions/$project_id/ui/i18n
  mkdir $DIRECTORY/../editions/$project_id/ui/images
  mkdir $DIRECTORY/../editions/$project_id/ui/js
  mkdir $DIRECTORY/../editions/$project_id/ui/templates
  mkdir $DIRECTORY/../editions/$project_id/ui/xsl

  touch $DIRECTORY/../editions/$project_id/ui/css/$project_id.css

  #creates about frag page
  touch $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
  echo "<section>" > $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
  echo "<h1>À propos</h1>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
  echo "<p>Modifiez moi dans editions/$project_id/fragments/fr/about.frag.html.</p>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
  echo "</section>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html

  cp $DIRECTORY/menu_default.xml $DIRECTORY/../editions/$project_id/menu.xml
  if [ $xmlns = 'ead' ]
  then
    enable_plugin 'ead_basket'
    enable_plugin 'side_toc'
  fi
  echo ''
  echo "Project "$project_id" is ready !"
  exit 0
}


@@ -244,6 +282,14 @@ include_project_config(){
    $BASEX_BIN -u -bprojectId=$1 $DIRECTORY"/xq/include_project_config.xq" # -u => save modified file on disk
}


format_configuration_file(){
    FILE=$DIRECTORY"/../configuration/configuration.xml"
    mv $FILE $FILE".bak" || exit 1
    xmllint --format $FILE".bak" > $FILE
    rm $FILE".bak"
}

new_edition_build(){
  if [ ! -d $DIRECTORY/../editions ]
  then
@@ -258,12 +304,6 @@ new_edition_build(){



format_configuration_file(){
    FILE=$DIRECTORY"/../configuration/configuration.xml"
    mv $FILE $FILE".bak" || exit 1
    xmllint --format $FILE".bak" > $FILE
    rm $FILE".bak"
}

init_dev_max(){
    cd $DIRECTORY/..
@@ -285,6 +325,15 @@ init_dev_max(){
}



# 1 argument required
if [  $# -lt 1 ]
then
    display_usage
    exit 1
fi


#creates config file if not exists (.dist copy)
if [ ! -f $DIRECTORY/../configuration/configuration.xml ]
then
@@ -292,55 +341,145 @@ then
    cp  $DIRECTORY/../configuration/configuration.dist.xml $DIRECTORY/../configuration/configuration.xml
fi

#NEW_EDITION_MODE='-n'
#DEMO_MODE='-d'
#INIT_MODE='-i'

if [ $CHOOSEN_MODE == $NEW_EDITION_MODE ]
then
    read -e -p "Project ID ? " project_id
    read -e -p "XML Project type (tei, ead, ...) ? " xmlns
    read -e -p "Database path ? " db_path
    new_edition_build $project_id $db_path $xmlns
    read -e -p "XML sources path ? " data_path
    db_project_feed $db_path $data_path
    mkdir -p $DIRECTORY/../editions/$project_id/fragments/fr
    mkdir $DIRECTORY/../editions/$project_id/xq
    mkdir $DIRECTORY/../editions/$project_id/ui
    mkdir $DIRECTORY/../editions/$project_id/ui/css
    mkdir $DIRECTORY/../editions/$project_id/ui/fonts
    mkdir $DIRECTORY/../editions/$project_id/ui/i18n
    mkdir $DIRECTORY/../editions/$project_id/ui/images
    mkdir $DIRECTORY/../editions/$project_id/ui/js
    mkdir $DIRECTORY/../editions/$project_id/ui/templates
    mkdir $DIRECTORY/../editions/$project_id/ui/xsl
#CHOOSEN_MODE=''

    touch $DIRECTORY/../editions/$project_id/ui/css/$project_id.css
while [[ "$#" -gt 0 ]]; do
    case $1 in
        -h) display_usage
            exit 0;;
        -p) PORT="$2"; shift ;;
        -n) deploy_new_edition;exit 0;;
#        -n|-d|-i) CHOOSEN_MODE="$1"; shift ;;
        -i) init_dev_max;exit 0;;
        --d-tei) install_demo $TEI_DEMO_RELEASE_URL $MAX_TEI_DEMO_VERSION max_tei_demo;exit 0;;
        --d-ead) install_demo $EAD_DEMO_RELEASE_URL $MAX_EAD_DEMO_VERSION max_ead_demo;exit 0;;
        --list-plugins) list_plugins;exit 0;;
        --enable-plugin) enable_plugin $2 $3;exit 0;;
        --disable-plugin) disable_plugin $2 $3;exit 0;;
         *) echo "Unknown parameter passed: $1"; exit 1 ;;
    esac
    shift
done

    #creates about frag page
    touch $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
    echo "<section>" > $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
    echo "<h1>À propos</h1>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
    echo "<p>Modifiez moi dans editions/$project_id/fragments/fr/about.frag.html.</p>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
    echo "</section>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html

    cp $DIRECTORY/menu_default.xml $DIRECTORY/../editions/$project_id/menu.xml
    if [ $xmlns = 'ead' ]
if [ -z $CHOOSEN_MODE ]
then
      enable_plugin 'ead_basket'
      enable_plugin 'side_toc'
    fi
    echo ''
    echo "Project "$project_id" is ready !"
    exit 0
  display_usage
  exit 1
fi

if [ $CHOOSEN_MODE == $DEMO_MODE ]
then
    demo_edition_build
    db_demo_feed
    exit 0
fi

if [ $CHOOSEN_MODE == $INIT_MODE ]
then
    init_dev_max
    exit 0
fi


#demo_edition_build(){
#  if [ ! -d $DIRECTORY/../editions ]
#    then
#      echo 'Creates "editions" directory.'
#      mkdir $DIRECTORY/../editions
#    fi
#
#    if [ -d $DIRECTORY/../editions/max_tei_demo ]; then
#      echo "Removes existing demo edition."
#      rm -rf $DIRECTORY/../editions/max_tei_demo
#    fi
#
##    cp -r $DIRECTORY/demo/demo_edition $DIRECTORY/../editions/demo_lorem
##    cp $DIRECTORY/demo/demo_lorem_config_inc.xml $DIRECTORY/../editions/demo_lorem
##    echo "  -> resource files copy: DONE"
#    cd $DIRECTORY/../editions
#    echo "Downloading Max TEI Demo resources"
#
#    wget $TEI_DEMO_RELEASE_URL
#
#    getResult=$?
#    if [ $getResult -ne 0 ]
#    then
#     echo 'MaX demo install error : Cannot fetch '$TEI_DEMO_RELEASE_URL
#     exit -1
#    fi
#    unzip $MAX_TEI_DEMO_VERSION.zip
#    mv $MAX_TEI_DEMO_VERSION max_tei_demo
#    rm $MAX_TEI_DEMO_VERSION.zip
#    cd $DIRECTORY
#
#    #    enable project plugins
#    enable_plugin apparat_critique max_tei_demo
#    enable_plugin breadcrumb max_tei_demo
#    enable_plugin correction max_tei_demo
#    enable_plugin img_viewer max_tei_demo
#    enable_plugin search max_tei_demo
#    enable_plugin tei_pdf max_tei_demo
#    include_project_config max_tei_demo
#
#    if [ $? -ne 0 ]
#    then
#      echo 'Process failed'
#      exit 1
#    else
#      format_configuration_file
#    fi
#}









#if [ $CHOOSEN_MODE == $NEW_EDITION_MODE ]
#then
#    read -e -p "Project ID ? " project_id
#    read -e -p "XML Project type (tei, ead, ...) ? " xmlns
#    read -e -p "Database path ? " db_path
#    new_edition_build $project_id $db_path $xmlns
#    read -e -p "XML sources path ? " data_path
#    db_project_feed $db_path $data_path
#    mkdir -p $DIRECTORY/../editions/$project_id/fragments/fr
#    mkdir $DIRECTORY/../editions/$project_id/xq
#    mkdir $DIRECTORY/../editions/$project_id/ui
#    mkdir $DIRECTORY/../editions/$project_id/ui/css
#    mkdir $DIRECTORY/../editions/$project_id/ui/fonts
#    mkdir $DIRECTORY/../editions/$project_id/ui/i18n
#    mkdir $DIRECTORY/../editions/$project_id/ui/images
#    mkdir $DIRECTORY/../editions/$project_id/ui/js
#    mkdir $DIRECTORY/../editions/$project_id/ui/templates
#    mkdir $DIRECTORY/../editions/$project_id/ui/xsl
#
#    touch $DIRECTORY/../editions/$project_id/ui/css/$project_id.css
#
#    #creates about frag page
#    touch $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
#    echo "<section>" > $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
#    echo "<h1>À propos</h1>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
#    echo "<p>Modifiez moi dans editions/$project_id/fragments/fr/about.frag.html.</p>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
#    echo "</section>" >> $DIRECTORY/../editions/$project_id/fragments/fr/about.frag.html
#
#    cp $DIRECTORY/menu_default.xml $DIRECTORY/../editions/$project_id/menu.xml
#    if [ $xmlns = 'ead' ]
#    then
#      enable_plugin 'ead_basket'
#      enable_plugin 'side_toc'
#    fi
#    echo ''
#    echo "Project "$project_id" is ready !"
#    exit 0
#fi

#if [ $CHOOSEN_MODE == $DEMO_MODE ]
#then
#    demo_edition_build
#    db_demo_feed max_tei_demo
#    exit 0
#fi

#if [ $CHOOSEN_MODE == $INIT_MODE ]
#then
#    init_dev_max
#    exit 0
#fi