diff --git a/Ivette/.gitignore b/Ivette/.gitignore index 1efbc2521d6c0dff5b7105180523d02e9c033406..ba1bdcdb1d98c0fbb219d8bef30c60d864e51a94 100644 --- a/Ivette/.gitignore +++ b/Ivette/.gitignore @@ -10,6 +10,5 @@ yarn-error.log /bin /dist /html -/src/dome # -------------------------------------------------------------------------- diff --git a/Ivette/push-dome.sh b/Ivette/push-dome.sh deleted file mode 100755 index 4e7e6914e3106f2cba50ed04afcbb943fe577ed8..0000000000000000000000000000000000000000 --- a/Ivette/push-dome.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -DOME=$1 -BRANCH=$2 - -if [ "$DOME" == "" ] || [ "$BRANCH" == "" ] -then - echo "Usage: push-electron.sh <dome-clone-dir> <new-branch>" - exit 1 -fi - -git -C $DOME remote -v | grep -q dome/electron.git - -if [ "$?" != "0" ] -then - echo "Clone of dome/electron not found in '$DOME'" - exit 1 -fi - -echo "Push updates to $DOME#$BRANCH" - -git -C $DOME checkout -B $BRANCH - -FILES=$(cd src/dome ; git ls-files) - -for f in $FILES -do - cp -f src/dome/$f $DOME/$f -done - -git -C $DOME commit -a diff --git a/Ivette/src/dome/.gitignore b/Ivette/src/dome/.gitignore index 48a7072b2d78c362021afca3d7840f424b1e2e05..7cd1e3e820fe332ae0b7c2364e684d9dfebb5d87 100644 --- a/Ivette/src/dome/.gitignore +++ b/Ivette/src/dome/.gitignore @@ -7,6 +7,12 @@ .dome-*.orig .dome-*.lock +######################################### +# Dome Repository +######################################### + +/.gitdome + ######################################### # JavaScript ######################################### diff --git a/Ivette/src/dome/template/dome-pull.sh b/Ivette/src/dome/template/dome-pull.sh new file mode 100755 index 0000000000000000000000000000000000000000..b579cf35a1a2492f9cbe452e63abbc1a6dcf7244 --- /dev/null +++ b/Ivette/src/dome/template/dome-pull.sh @@ -0,0 +1,50 @@ +# -------------------------------------------------------------------------- +# --- Pulling Dome Updates +# -------------------------------------------------------------------------- + +if [ ! -z "$(git status --porcelain)" ] +then + echo "Local non-commited modifications, aborted." + exit 1 +fi + +if [ ! -d .gitdome ] +then + git clone git@git.frama-c.com:dome/electron.git .gitdome +fi + +head=$(git rev-parse --abbrev-ref HEAD) +commit=$(git -C .gitdome rev-parse HEAD) +remote=$(git -C .gitdome rev-parse --abbrev-ref HEAD) + +git checkout stable/dome + +if [ "$?" != "0" ] +then + echo "Missing local branch stable/dome, aborted." + exit 1 +fi + +echo "Pulling Dome updates from $remote to stable/dome..." +git -C .gitdome pull --prune + +for f in $(git -C .gitdome ls-files) +do + mkdir -p $(dirname $f) + cp -f .gitdome/$f $f + git add $f +done + +if [ ! -z "$(git status --porcelain)" ] +then + git commit -m "[Dome] $commit" + echo "Dome repository updated." + git checkout $head + echo "Merging Dome updates..." + git merge stable/dome +else + echo "Dome is already up-to-date." + git checkout $head +fi + +# -------------------------------------------------------------------------- diff --git a/Ivette/src/dome/template/dome-push.sh b/Ivette/src/dome/template/dome-push.sh new file mode 100755 index 0000000000000000000000000000000000000000..60816ed9ecb0103ee1206d5c28db7ecada3737e5 --- /dev/null +++ b/Ivette/src/dome/template/dome-push.sh @@ -0,0 +1,56 @@ +# -------------------------------------------------------------------------- +# --- Pulling Dome Updates +# -------------------------------------------------------------------------- + +branch=$1 +app=$(basename $1) + +if [ "$branch" == "" ] +then + echo "Missing branch name, aborted." + exit 1 +fi + +if [ ! -z "$(git status --porcelain)" ] +then + echo "Local non-commited modifications, aborted." + exit 1 +fi + +if [ ! -d .gitdome ] +then + git clone git@git.frama-c.com:dome/electron.git .gitdome +fi + +head=$(git rev-parse --abbrev-ref HEAD) +commit=$(git rev-parse HEAD) +remote=$(git -C .gitdome rev-parse --abbrev-ref HEAD) + +echo "[dome] update $branch" +git -C .gitdome fetch --prune +git -C .gitdome checkout $branch + +if [ "$?" != "0" ] +then + git -C .gitdome checkout -b $branch +else + git -C .gitdome pull --rebase +fi + +echo "[dome] push updates from $head to $branch..." + +for f in $(git ls-files) +do + mkdir -p .gitdome/$(dirname $f) + cp -f $f .gitdome/$f + git -C .gitdome add $f +done + +echo "[dome] commit $branch" +git -C .gitdome commit -e -m "[$app] $commit" +echo "[dome] push $branch" +git -C .gitdome push origin -f -u $branch +echo "[dome] back to $remote" +git -C .gitdome checkout $remote + +# -------------------------------------------------------------------------- diff --git a/Ivette/src/dome/template/makefile b/Ivette/src/dome/template/makefile index 2a555d2ce160e6648604a65c100c8c86ef1bc522..5e5f58e85da47ed71cce0fac289c89ea3d2b9fbe 100644 --- a/Ivette/src/dome/template/makefile +++ b/Ivette/src/dome/template/makefile @@ -7,13 +7,15 @@ APP?=$(shell basename $(PWD)) COPYRIGHT?=CEA Tech +DOME_MK_NAME=$(shell echo $(APP) | tr [:upper:] [:lower:]) + DOME?=dome DOME_ARGS?= DOME_EXPORTS?= DOME_PLUGINS?= DOME_DOC?=html/dome -DOME_APP_CLI?=bin/$(shell echo $(APP) | tr [:upper:] [:lower:]) -DOME_APP_DOC?=html/$(shell echo $(APP) | tr [:upper:] [:lower:]) +DOME_APP_CLI?=bin/$(DOME_MK_NAME) +DOME_APP_DOC?=html/$(DOME_MK_NAME) DOME_APP_SRC?=src/renderer # -------------------------------------------------------------------------- @@ -99,6 +101,28 @@ dome-pkg: .dome-pkg.stamp package.json: yarn init +# -------------------------------------------------------------------------- +# --- Dome Synchronization +# -------------------------------------------------------------------------- + +ifneq ("$(DOME)",".") + +.PHONY: dome-pull dome-push + +dome-pull: + @echo "[Dome] ----------------------------------------------------------------" + @echo "[Dome] Synchronize with updates" + @echo "[Dome] ----------------------------------------------------------------" + @(cd $(DOME) && ./template/dome-pull.sh) + +dome-push: + @echo "[Dome] ----------------------------------------------------------------" + @echo "[Dome] Publishing Dome updates to feature/app/$(DOME_MK_NAME)" + @echo "[Dome] ----------------------------------------------------------------" + @(cd $(DOME) && ./template/dome-push.sh feature/app/$(DOME_MK_NAME)) + +endif + # -------------------------------------------------------------------------- # --- Application Templating # --------------------------------------------------------------------------