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

remove some user features (climax part), no more CI (climax does not need package).

parent d9487b0e
Loading
Loading
Loading
Loading

.gitlab-ci.yml

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
stages:
  - build
  - upload
  - release

variables:
  REGISTRY_PROJECT_ID: "855"

build:
  stage: build
  image: openjdk:17-alpine
  rules:
    - if: $CI_COMMIT_TAG
  before_script:
    - apk add --no-cache make
    - apk add --no-cache curl
    - apk add --no-cache bash
    - apk add --no-cache zip
  script:
    - echo $CI_COMMIT_TAG  > VERSION
    - make package
  artifacts:
    paths:
      - dist/

upload:
  stage: upload
  image: curlimages/curl:latest
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - ASSET="max-v2_${CI_COMMIT_TAG}.zip"
    - PACKAGE_REGISTRY_URL=${CI_API_V4_URL}/projects/${REGISTRY_PROJECT_ID}/packages/generic/max-v2/${CI_COMMIT_TAG}
    - echo "will upload "$ASSET" at "${PACKAGE_REGISTRY_URL}/${ASSET}
    - |
      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file dist/${ASSET} "${PACKAGE_REGISTRY_URL}/${ASSET}"

release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - ASSET="max-v2_${CI_COMMIT_TAG}.zip"
    - PACKAGE_REGISTRY_URL=${CI_API_V4_URL}/projects/${REGISTRY_PROJECT_ID}/packages/generic/max-v2/${CI_COMMIT_TAG}
    - |
      release-cli create --name "MaX-v2_$CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
        --description "Pour installer MaX V2, télécharger l'archive packagée (rubrique *other*) ci-dessus." \
        --assets-link "{\"name\":\"Télécharger la version packagée - ${ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${ASSET}\"}"
+43 −43
Original line number Diff line number Diff line
@@ -40,56 +40,55 @@ tests: ## Exécution des tests unitaires
.PHONY: tests


package: install ## Construction d'une version distribuable de MaX
	@if [ -d dist ]; then\
		rm -rf dist;\
	fi
# génération d'un fichier VERSION
	@if [ ! -f VERSION ]; then\
		echo 'Génération fichier de VERSION à partir du numéro de commit.';\
		git rev-parse HEAD > VERSION ;\
check: ## vérification de la configuration
	@if [ -f 'config.xml' ]; then\
		.max/basex/bin/basex -q"validate:rng('config.xml', '.max/resources/max-configuration.rng')" || false;\
		echo 'MaX : Fichier config.xml valide.';\
	else\
  		echo 'MaX : Fichier de configuration manquant : config.xml';\
  		exit 1;\
  	fi
	@mkdir -p package
	@cp -rL .max package/.max
	@cp VERSION package/.max/
	@rm -rf package/.max/basex/webapp/max/bundles/*
# nettoyage du BaseX copié : suppression fichiers liées aux bundles, des données
	@rm package/.max/basex/.basex
	@find package/.max/basex/data/ -mindepth 1 -type d -exec rm -rf '{}' '+'
# copie des sources
	@cp -r $(SRC_DIR)/main/core package/.max/basex/webapp/max/
	@cp -r $(SRC_DIR)/main/bundles/max-dev package/.max/basex/webapp/max/bundles/
	@cp -r $(SRC_DIR)/main/bundles/max-export package/.max/basex/webapp/max/bundles/
	@cp -r $(SRC_DIR)/scripts/max.sh package/
	$(eval version=`cat VERSION`)
	mv package max-v2_$(version)
	@zip -r max-v2_$(version).zip max-v2_$(version)
	@mkdir dist
	@mv max-v2_$(version).zip dist/
	@echo 'Package créé : dist/max-v2_'$(version)'.zip'
	@rm -rf max-v2_$(version)
	@rm VERSION
.PHONY: package

run: ## Lancement de MaX
	@./src/scripts/max.sh run
.PHONY: check

run:  check ## Lancement de MaX
	@.max/basex/bin/basexhttpstop || true
	@.max/basex/bin/basexhttp -h1234
.PHONY: run



clean: ## Supprime l'installation de MaX et les fichiers du projet
	@./src/scripts/max.sh clean
	@read -p "Êtes-vous sûr? [o/N] " ans && ans=$${ans:-N} ; \
    if [ $${ans} = o ] || [ $${ans} = O ]; then \
		rm -rf content_html;\
		rm -rf templates;\
		rm -rf autoroute;\
		rm -rf locales;\
		rm config.xml;\
		rm -rf .max;\
    else\
        echo "Opération annulée" ; \
    fi
.PHONY: clean

init: ## Initialisation à partir du fichier de configuration courant
	@ ./src/scripts/max.sh install
.PHONY: init


demo:  ## Installation d'une édition de démo
	@./src/scripts/max.sh demo
	@if [ ! -d '.max/basex' ]; then\
		echo 'Installation de MaX manquante, veuillez lancer : make install.';\
	else\
		cp -r .max/fixtures/max .max/basex/data/;\
		cp -r .max/fixtures/content_html .;\
		cp -r .max/fixtures/templates .;\
		cp -r .max/fixtures/autoroute .;\
		cp -r .max/fixtures/config.xml .;\
		cp -r .max/fixtures/locales .;\
		$(MAKE) init ;\
		echo 'Demo installée avec succès.';\
	fi
.PHONY: demo

feed : ## Ajout de sources xml

feed: ## Insertion de sources XML
	@if [ -z $(path) ]; then\
  		echo "USAGE : make feed path=/path/to/dir/";\
  		exit 1;\
@@ -98,11 +97,12 @@ feed : ## Ajout de sources xml
  		echo "USAGE : make feed path=/path/to/dir/"; \
  		exit 1;\
  	fi;\
	
	@./src/scripts/max.sh feed $(path)
    $(shell .max/basex/bin/basex -c"OPEN max; ADD "$(path))\
    echo $(path)" ajouté à la base 'max'."
.PHONY: feed



help: ## Affiche cette aide
	@echo "\nChoisissez une commande. Les choix sont:\n"
	@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[0;36m%-12s\033[m %s\n", $$1, $$2}'
+0 −6
Original line number Diff line number Diff line
@@ -44,12 +44,6 @@ Ce dépôt contient les bundles
Il contient le serveur BaseX. C'est un dossier (caché) purement technique dans lequel l'utilisateur n'aura pas (et ne devra pas) intervenir.


## Makefile et max.sh

 - Le Makefile propose les fonctionnalités liées au développement du coeur de MaX.
 - `max.sh` (src/scripts/max.sh) contient les commandes utilisateur de MaX


## Documentations

Consultables [ici](https://git.unicaen.fr/pdn-certic/max-documentation/-/tree/max-v2/docs)
+1 −1
Original line number Diff line number Diff line
<package xmlns="http://expath.org/ns/pkg"
         name="max"
         abbrev="max"
         version="0.0.1"
         version="0.0.2-alpha"
         spec="1.0">

   <title>MaX app</title>

src/scripts/max.sh

deleted100755 → 0
+0 −165
Original line number Diff line number Diff line
#!/bin/bash

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

abort(){
  echo -e "\n ${RED}Abort${NC} \n"
  exit 1
}

display_usage(){
    echo
    echo -e "\thelp: Affichage de l'aide."
    echo -e "\tversion: Affichage de la version de MaX."
    echo -e "\tdemo: Installation du corpus de démo."
    echo -e "\trun: Démarrage du serveur."
    echo -e "\tfeed: Ajout de sources XML"
    echo -e "\tadd: Installation d'un bundle"
    echo -e "\tfreeze: Statification du corpus"
    echo -e "\tclean: Suppression du corpus"
    echo
}


install(){ # install demo corpus
  .max/basex/bin/basex -Q".max/resources/bundles-installer.xq"
}


install_demo(){
  if [ ! -d '.max/basex' ]; then
		echo 'Installation de MaX erronée.'
	else
		cp -r .max/fixtures/max .max/basex/data/
		cp -r .max/fixtures/content_html .
		cp -r .max/fixtures/templates .
		cp -r .max/fixtures/autoroute .
		cp -r .max/fixtures/config.xml .
		cp -r .max/fixtures/locales .
		install
		echo 'Demo installée avec succès.'
	fi
}

check(){ # check config file according to rng
	if [ -f 'config.xml' ]; then\
		.max/basex/bin/basex -q"validate:rng('config.xml', '.max/resources/max-configuration.rng')" || false
		echo 'MaX : Fichier config.xml valide.'
	else
  		echo 'MaX : Fichier de configuration manquant : config.xml'
  		abort
  fi
}

run() { # run server
  check
	.max/basex/bin/basexhttpstop || true
	.max/basex/bin/basexhttp -h1234
}

clean() { # clean files
  read -r -e -p "Êtes-vous sûr? [o/N] ? " res
  if [ $res == 'o' ] || [ $res == 'O' ]; then
		rm -rf content_html;\
		rm -rf templates;\
		rm -rf autoroute;\
		rm -rf locales;\
		rm config.xml;\
		if [ ! -f .max/VERSION ]; then rm -rf .max; fi;
  else
    echo "Opération annulée"
  fi
}

feed(){ # add XML sources to 'max' db
	if [ -z $1 ]; then
  	echo "USAGE : max.sh feed /path/to/dir/"
 		abort
  elif [ ! -d $1 ]; then\
 		echo "Dossier "$1" introuvable !"
  		echo "USAGE : max.sh feed path=/path/to/dir/"
  		abort
  fi;
  .max/basex/bin/basex -c"OPEN max; ADD "$1
  echo $1" ajouté à la base 'max'."
}


freeze(){ # freeze corpus as HTML pages
  run &
	if [ -d site ]; then
		rm -rf site
	fi
	sleep 5
	echo -n "Statification..."
	wget -P site -nH --mirror --page-requisites --html-extension --convert-links 'http://127.0.0.1:1234/fr/pages/index.html'
	echo -n "Version statique construite dans le répertoire site/"
}

add(){ # Add bundle
  if [ -z $1 ]; then
  	echo "USAGE : max.sh add bundle_url.git"
 		abort
	elif [[ $1 == *.git ]] # * is used for pattern matching
  then
    basename=$(basename $1)
    filename=${basename%.*}
    if [ -d '.max/basex/webapp/max/bundles/'$filename ]; then
      echo 'Le bundle est déjà installé : .max/basex/webapp/max/bundles/'$filename
      abort
    else
      git clone $1 .max/basex/webapp/max/bundles/$filename
      if [ $? -eq 0 ]; then
        .max/basex/bin/basex -u -b bundleUrl="$1" ".max/resources/add-bundle.xq"
      else
        echo 'Clonage impossible de '$1
        abort
      fi
    fi  
  else
    echo "Seul les URLs de dépôt git sont acceptées"
  fi    
}

DIRECTORY=$(cd "$(dirname "$0")" && pwd)
#get max version
if [[ ! -f ${DIRECTORY}/.max/VERSION ]]
then
  MAX_VERSION=$(git rev-parse HEAD)'-dev'
else
  MAX_VERSION=$(cat "${DIRECTORY}/.max/VERSION")
fi



echo "---------------------------"
echo "  MaX V2 - $MAX_VERSION"
echo "---------------------------"


if [[  "$#" -eq 0 ]]; then display_usage; fi;


while [[ "$#" -gt 0 ]]; do
    case $1 in
        help) display_usage
            exit 0;;
        version) echo $MAX_VERSION
            exit 0;;
        demo) install_demo
            exit 0;;
        run) run
            exit 0;;
        clean) clean
            exit 0;; 
        freeze) freeze
            exit 0;;   
        feed) feed $2
            exit 0;;
        add) add $2
            exit 0;;           
    esac
    shift
done