move many build/control scripts in artlog_toolbox, prepare artlog_toolbox to be shared between multiple projects
Signed-off-by: philippe lhardy <philippe@pavilionartlogiciel>
This commit is contained in:
45
artlog_toolbox/deploy.sh
Executable file
45
artlog_toolbox/deploy.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
A_TOOLBOX=artlog_toolbox
|
||||
|
||||
if [[ ! -d $A_TOOLBOX ]]
|
||||
then
|
||||
echo "[ERROR] this tool should be run from parent dir of $A_TOOLBOX this way : ${A_TOOLBOX}/deploy.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
destroy=0
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case $1 in
|
||||
destroy)
|
||||
destroy=1
|
||||
;;
|
||||
*)
|
||||
echo "[ERROR] unrecognized '$1' argument for $0" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
if [[ $destroy != 1 ]]
|
||||
then
|
||||
echo "Deploying scripts..."
|
||||
|
||||
pushd ${A_TOOLBOX}
|
||||
cp scripts/* ..
|
||||
popd
|
||||
else
|
||||
echo "destroy deployed toolbox"
|
||||
for script in $(ls ${A_TOOLBOX}/scripts)
|
||||
do
|
||||
if [[ -f $script ]]
|
||||
then
|
||||
shortscript=$(basename "$script")
|
||||
echo "deleting '$shortscript'"
|
||||
rm "$shortscript"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
65
artlog_toolbox/scripts/Makefile
Normal file
65
artlog_toolbox/scripts/Makefile
Normal file
@@ -0,0 +1,65 @@
|
||||
PROJECT_VERSION=`./debianize.sh getversion`
|
||||
DISTPREFIX=artloglaby
|
||||
DISTJAR=$(DISTPREFIX)-$(PROJECT_VERSION).jar
|
||||
JDEE_VERSION=2.4.1
|
||||
|
||||
all: build.xml dist/lib/$(DISTJAR)
|
||||
|
||||
getname:
|
||||
@echo dist/lib/$(DISTJAR)
|
||||
|
||||
dist:
|
||||
mkdir -p dist
|
||||
|
||||
dist/lib/$(DISTJAR): dist
|
||||
ant dist
|
||||
|
||||
build.xml:
|
||||
./antify.sh >$@
|
||||
|
||||
clean:
|
||||
rm -f build.xml
|
||||
rm -f dist/lib/$(DISTPREFIX)*.jar
|
||||
rm -rf build
|
||||
cd java; make clean
|
||||
|
||||
cleanall: clean
|
||||
rm -rf debian
|
||||
rm -rf deb
|
||||
rm -rf download
|
||||
@( [ -d ~/.emacs.d/jdee-$(JDEE_VERSION) ] && echo "DON'T remove installed ~/.emacs.d/jdee-$(JDEE_VERSION). To remove jdee do 'make removejdee'" ) || true
|
||||
|
||||
debian:
|
||||
mkdir debian
|
||||
|
||||
deb/%:
|
||||
mkdir -p deb
|
||||
touch $@
|
||||
./debianize.sh create $@
|
||||
|
||||
debian/compat:
|
||||
echo "7" >$@
|
||||
|
||||
debian/%:
|
||||
./debianize.sh create $@ >$@
|
||||
|
||||
deb: debian debian/rules debian/control debian/compat debian/changelog deb/javadoc deb/jlibs
|
||||
dpkg-buildpackage -uc -us
|
||||
|
||||
/usr/bin/emacs:
|
||||
sudo apt-get install emacs
|
||||
|
||||
download/jdee-bin-$(JDEE_VERSION).tar.bz2:
|
||||
mkdir -p download; cd download; wget http://sourceforge.net/projects/jdee/files/jdee/$(JDEE_VERSION)/jdee-bin-$(JDEE_VERSION).tar.bz2
|
||||
|
||||
~/.emacs.d/jdee-$(JDEE_VERSION): /usr/bin/emacs download/jdee-bin-$(JDEE_VERSION).tar.bz2
|
||||
mkdir -p ~/.emacs.d; tar -xjf download/jdee-bin-$(JDEE_VERSION).tar.bz2 -C ~/.emacs.d
|
||||
echo "(add-to-list 'load-path \"~/.emacs.d/jdee-$(JDEE_VERSION)/lisp\")\n(load \"jde\")" >>~/.emacs.d/init.el
|
||||
|
||||
emacsdevenv: ~/.emacs.d/jdee-$(JDEE_VERSION)
|
||||
|
||||
removejdee:
|
||||
rm -rf ~/.emacs.d/jdee-$(JDEE_VERSION)
|
||||
sed -i -n -e "/^(add-to-list 'load-path \"~\/\.emacs\.d\/jdee-$(JDEE_VERSION)\/lisp\")$$/d" -e "/^(load \"jde\")$$/d" -e"/^.*$$/p" ~/.emacs.d/init.el
|
||||
|
||||
.PHONY: clean all cleanall getname deb emacsdevenv removejdee
|
||||
12
artlog_toolbox/scripts/absant.sh
Executable file
12
artlog_toolbox/scripts/absant.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
buildscript=$1
|
||||
|
||||
if [[ -e $buildscript ]]
|
||||
then
|
||||
# protect ${ variables.
|
||||
sed 's/\${/\\\${/g' build.xml
|
||||
else
|
||||
echo "[ERROR] this $0 tool expect an initial argument with buildscript" >&2
|
||||
fi
|
||||
|
||||
50
artlog_toolbox/scripts/antify.sh
Executable file
50
artlog_toolbox/scripts/antify.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./project_params
|
||||
|
||||
# TODO reuse internal tsamp ${DSTAMP}
|
||||
|
||||
cat <<EOF
|
||||
<project name="$project_name" default="$project_default" basedir="$project_basedir">
|
||||
<description>
|
||||
simple example build file
|
||||
</description>
|
||||
<!-- set global properties for this build -->
|
||||
<property name="src" location="java"/>
|
||||
<property name="build" location="build"/>
|
||||
<property name="dist" location="dist"/>
|
||||
|
||||
<target name="init">
|
||||
<!-- Create the time stamp -->
|
||||
<tstamp/>
|
||||
<!-- Create the build directory structure used by compile -->
|
||||
<mkdir dir="\${build}"/>
|
||||
</target>
|
||||
|
||||
<target name="compile" depends="init"
|
||||
description="compile the source " >
|
||||
<!-- Compile the java code from \${src} into \${build} -->
|
||||
<javac srcdir="\${src}" destdir="\${build}"/>
|
||||
</target>
|
||||
|
||||
<target name="dist" depends="compile"
|
||||
description="generate the distribution" >
|
||||
<!-- Create the distribution directory -->
|
||||
<mkdir dir="\${dist}/lib"/>
|
||||
|
||||
<!-- Put everything in \${build} into the ${project_name}-${project_version}.jar file ( \${DSTAMP} not used yet )-->
|
||||
<jar jarfile="\${dist}/lib/${project_name}-${project_version}.jar" basedir="\${build}">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="$project_mainclass"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="clean"
|
||||
description="clean up" >
|
||||
<!-- Delete the \${build} and \${dist} directory trees -->
|
||||
<delete dir="\${build}"/>
|
||||
<delete dir="\${dist}"/>
|
||||
</target>
|
||||
</project>
|
||||
EOF
|
||||
67
artlog_toolbox/scripts/debianize.sh
Executable file
67
artlog_toolbox/scripts/debianize.sh
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
action=$1
|
||||
file=$2
|
||||
|
||||
maintainer="Artlog <pl@artisanlogiciel.net>"
|
||||
|
||||
if [[ $action == getversion ]]
|
||||
then
|
||||
source ./project_params
|
||||
echo $project_version
|
||||
elif [[ $action == create ]]
|
||||
then
|
||||
source ./project_params
|
||||
|
||||
if [[ $file == debian/control ]]
|
||||
then
|
||||
|
||||
cat <<EOF
|
||||
Source: ${project_name}-java
|
||||
Priority: extra
|
||||
Maintainer: $maintainer
|
||||
Build-Depends: debhelper (>= 7.0.50~), javahelper (>=0.25)
|
||||
Build-Depends-Indep: default-jdk, default-jdk-doc, libtrove-java, libtrove-java-doc, ant
|
||||
Standards-Version: ${project_version}
|
||||
Section: java
|
||||
|
||||
Package: ${project_name}-java
|
||||
Architecture: all
|
||||
Depends: \${java:Depends}, \${misc:Depends}
|
||||
Recommends: \${java:Recommends}
|
||||
Description: Labyrinth generator
|
||||
Labyrinth generator
|
||||
|
||||
Package: ${project_name}-java-doc
|
||||
Architecture: all
|
||||
Depends: \${java:Depends}, \${misc:Depends}
|
||||
Recommends: \${java:Recommends}
|
||||
Description: Labyrinth generator (documentation)
|
||||
Labyrinth generator
|
||||
EOF
|
||||
elif [[ $file = debian/changelog ]]
|
||||
then
|
||||
cat <<EOF
|
||||
${project_name}-java (${project_version}) unstable; urgency=low
|
||||
|
||||
* Initial debian package
|
||||
|
||||
-- ${maintainer} $(LANG=C date -R)
|
||||
EOF
|
||||
elif [[ $file = debian/rules ]]
|
||||
then
|
||||
cat <<EOF
|
||||
#!/usr/bin/make -f
|
||||
JAVA_HOME=/usr/lib/jvm/default-java
|
||||
|
||||
%:
|
||||
dh \$@ --with javahelper
|
||||
EOF
|
||||
elif [[ $file = deb/javadoc ]]
|
||||
then
|
||||
echo "api /usr/share/doc/${project_name}-java/api" >debian/${project_name}-java-doc.javadoc
|
||||
elif [[ $file = deb/jlibs ]]
|
||||
then
|
||||
echo "dist/lib/${project_name}-${project_version}.jar" >debian/${project_name}-java.jlibs
|
||||
fi
|
||||
fi
|
||||
270
artlog_toolbox/scripts/doit.sh
Executable file
270
artlog_toolbox/scripts/doit.sh
Executable file
@@ -0,0 +1,270 @@
|
||||
#!/bin/bash
|
||||
|
||||
setup()
|
||||
{
|
||||
if [[ ! -d java ]]
|
||||
then
|
||||
echo "[FATAL] this tools $0 is intended to be run within laby project. Missing java directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d lab ]]
|
||||
then
|
||||
echo "[INFO] Creating directory lab to save default lab created"
|
||||
mkdir lab
|
||||
fi
|
||||
}
|
||||
|
||||
do_code()
|
||||
{
|
||||
background=$1
|
||||
find java/org/artisanlogiciel/games/ -name "*.java" |
|
||||
{
|
||||
s=()
|
||||
while read codeline
|
||||
do
|
||||
javafile=$(basename "$codeline")
|
||||
javaclass=${javafile/.java/}
|
||||
echo "$javafile $javaclass"
|
||||
s+=("$javaclass" "$codeline")
|
||||
done
|
||||
javaclass=$($DIALOG --menu "Edit it" 20 100 10 ${s[@]} 3>&1 1>&2 2>&3)
|
||||
if [[ -n $javaclass ]]
|
||||
then
|
||||
pushd java
|
||||
if [[ $background == codebg ]]
|
||||
then
|
||||
nohup make work/$javaclass &
|
||||
else
|
||||
make work/$javaclass
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
edit_properties()
|
||||
{
|
||||
local property_file=$1
|
||||
if [[ -f $property_file ]]
|
||||
then
|
||||
modified=0
|
||||
s=()
|
||||
properties=()
|
||||
values=()
|
||||
{
|
||||
while read codeline
|
||||
do
|
||||
if [[ $codeline =~ (^[a-zA-Z_]*)=(.*) ]]
|
||||
then
|
||||
property=${BASH_REMATCH[1]}
|
||||
value=${BASH_REMATCH[2]}
|
||||
s+=("$property" "$value")
|
||||
properties+=("$property")
|
||||
values+=("$value")
|
||||
fi
|
||||
done
|
||||
s+=(exit "Exit")
|
||||
} < $property_file
|
||||
|
||||
while true
|
||||
do
|
||||
property=$($DIALOG --menu "Edit '$property_file'" 20 100 10 ${s[@]} 3>&1 1>&2 2>&3)
|
||||
if [[ $? = 0 ]]
|
||||
then
|
||||
if [[ -n $property ]]
|
||||
then
|
||||
if [[ $property == exit ]]
|
||||
then
|
||||
return 1
|
||||
elif [[ $property == save ]]
|
||||
then
|
||||
for (( i=0; i<${prop_len}; i++ ));
|
||||
do
|
||||
echo "${properties[$i]}=${values[$i]}"
|
||||
done >$property_file
|
||||
return 0
|
||||
fi
|
||||
prop_len="${#properties[@]}"
|
||||
for (( i=0; i<${prop_len}; i++ ));
|
||||
do
|
||||
if [[ ${properties[$i]} == $property ]]
|
||||
then
|
||||
init_value=${values[$i]}
|
||||
fi
|
||||
done
|
||||
value=$($DIALOG --inputbox "Enter $property value" 10 80 "$init_value" 3>&1 1>&2 2>&3)
|
||||
if [[ $? = 0 ]]
|
||||
then
|
||||
prop_len="${#properties[@]}"
|
||||
s=()
|
||||
if [[ "$value" != "$init_value" ]]
|
||||
then
|
||||
modified=$(( modified + 1 ))
|
||||
fi
|
||||
for (( i=0; i<${prop_len}; i++ ));
|
||||
do
|
||||
if [[ ${properties[$i]} == $property ]]
|
||||
then
|
||||
values[$i]=$value
|
||||
fi
|
||||
s+=("${properties[$i]}" "${values[$i]}")
|
||||
echo "${properties[$i]}=${values[$i]}"
|
||||
done
|
||||
s+=(exit "Exit")
|
||||
if [[ $modified != 0 ]]
|
||||
then
|
||||
s+=(save "Save")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "[ERROR] property_file '$propertyfile' not found" >&2
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# first argument mandatory : directory containing generated .lab and .stl files ( usualy ./lab )
|
||||
list_labs()
|
||||
{
|
||||
local lab_dir=$1
|
||||
if [[ -d $lab_dir ]]
|
||||
then
|
||||
modified=0
|
||||
s=()
|
||||
properties=()
|
||||
values=()
|
||||
{
|
||||
pushd $lab_dir
|
||||
for stl_lab in $(ls *lab*.stl)
|
||||
do
|
||||
if [[ $stl_lab =~ ^([^0-9]*[0-9]*x[0-9]*).stl ]]
|
||||
then
|
||||
property=${BASH_REMATCH[1]}
|
||||
value=$stl_lab
|
||||
s+=("$property" "$value")
|
||||
properties+=("$property")
|
||||
values+=("$value")
|
||||
fi
|
||||
done
|
||||
s+=(exit "Exit")
|
||||
popd
|
||||
}
|
||||
|
||||
while true
|
||||
do
|
||||
property=$($DIALOG --menu "Show stl file from $lab_dir" 20 100 10 ${s[@]} 3>&1 1>&2 2>&3)
|
||||
if [[ $? = 0 ]]
|
||||
then
|
||||
if [[ -n $property ]]
|
||||
then
|
||||
if [[ $property == exit ]]
|
||||
then
|
||||
return 1
|
||||
elif [[ $property == save ]]
|
||||
then
|
||||
echo "TODO"
|
||||
return 0
|
||||
fi
|
||||
prop_len=${#properties[*]}
|
||||
for (( i=0; i<${prop_len}; i++ ));
|
||||
do
|
||||
if [[ ${properties[$i]} == $property ]]
|
||||
then
|
||||
blender --python blender_import.py -- $lab_dir/${values[$i]}
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "[ERROR] lab dir '$propertyfile' not found" >&2
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
possible_console_gui="whiptail dialog"
|
||||
|
||||
for DIALOG in $possible_console_gui
|
||||
do
|
||||
DIALOG=$(which $DIALOG)
|
||||
if [[ -n $DIALOG ]]
|
||||
then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -z $DIALOG ]]
|
||||
then
|
||||
echo "[ERROR] no console gui support (no dialog tool found within $possible_console_gui) => no menus " >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
setup
|
||||
|
||||
action=initial
|
||||
|
||||
while [[ $action != quit ]]
|
||||
do
|
||||
action=$($DIALOG --menu "Ultra Light IDE" 20 80 12 readme "Read me" clean "Clean All" ant "Ant build" run "Run it" list_labs "Show Labyrinth with blender" test "Test it" code "Code" codebg "Code in background" deb "Debian package" properties "Edit Properties" create "Create a new class" emacsdevenv "Setup Emacs java bindings JDEE" quit "Quit" 3>&1 1>&2 2>&3)
|
||||
|
||||
if [[ $action == run ]]
|
||||
then
|
||||
echo "run it"
|
||||
java -jar $(make getname)
|
||||
elif [[ $action == ant ]]
|
||||
then
|
||||
make clean
|
||||
make
|
||||
ant compile
|
||||
elif [[ $action == clean ]]
|
||||
then
|
||||
make clean
|
||||
pushd java
|
||||
make clean
|
||||
popd
|
||||
elif [[ $action == test ]]
|
||||
then
|
||||
echo "test it"
|
||||
pushd java
|
||||
make display
|
||||
popd
|
||||
elif [[ $action == deb ]]
|
||||
then
|
||||
make deb
|
||||
elif [[ $action =~ code ]]
|
||||
then
|
||||
do_code $action
|
||||
elif [[ $action == readme ]]
|
||||
then
|
||||
$DIALOG --textbox README 40 80 --scrolltext
|
||||
elif [[ $action == properties ]]
|
||||
then
|
||||
edit_properties project_params
|
||||
elif [[ $action == create ]]
|
||||
then
|
||||
newclass=$($DIALOG --inputbox "Enter new class name" 10 80 "NewClass" 3>&1 1>&2 2>&3)
|
||||
if [[ $? = 0 ]]
|
||||
then
|
||||
if [[ -n $newclass ]]
|
||||
then
|
||||
pushd java
|
||||
make work/$newclass
|
||||
popd
|
||||
fi
|
||||
fi
|
||||
elif [[ $action == list_labs ]]
|
||||
then
|
||||
list_labs ./lab
|
||||
elif [[ $action == emacsdevenv ]]
|
||||
then
|
||||
make $action
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user