mirror of
https://github.com/tonydamage/nux-env.git
synced 2025-12-11 13:24:28 +01:00
nuxfs: Added support for custom / folder specific DSL
Signed-off-by: Tony Tkacik <tonydamage@gmail.com>
This commit is contained in:
parent
d3be24f3d7
commit
5d69659e3c
5 changed files with 102 additions and 80 deletions
90
bin/nuxfs
90
bin/nuxfs
|
|
@ -10,93 +10,24 @@ local TEMPLATE_FILTER="*$SUFFIX"
|
|||
nux.use nux.dsl
|
||||
nux.use nuxfs
|
||||
|
||||
|
||||
GIT_BIN=$(which git)
|
||||
|
||||
nux.fs.dsl() {
|
||||
.block dir
|
||||
.keyword link
|
||||
.keyword git
|
||||
.keyword origin
|
||||
.keyword name
|
||||
.keyword template
|
||||
|
||||
sdir() {
|
||||
dir "$@"
|
||||
enddir
|
||||
}
|
||||
|
||||
.preprocess() {
|
||||
abs_path=$NUXFS_DEF_DIR/$path;
|
||||
rel_path=$(realpath -m -s "$abs_path" --relative-base="$WORKDIR");
|
||||
}
|
||||
|
||||
.check() {
|
||||
nux.check.file.exists "$abs_path"
|
||||
}
|
||||
|
||||
.check.failed() {
|
||||
nux.dsl.error "$rel_path" does not exists.
|
||||
}
|
||||
}
|
||||
|
||||
task.check() {
|
||||
link.entered() {
|
||||
nux.log debug "Testing '$rel_path' as link"
|
||||
if test ! -h "$abs_path"; then
|
||||
nuxfs.error "$rel_path" "is not symlink."
|
||||
return
|
||||
fi
|
||||
local REAL_LINK=$(readlink "$abs_path")
|
||||
local TARGET="$3";
|
||||
if test ! "$REAL_LINK" = "$TARGET"; then
|
||||
MAT_REAL=$(realpath "$REAL_LINK")
|
||||
local cdir=$(dirname "$abs_path")
|
||||
MAT_TARGET=$(realpath "$cdir/$TARGET")
|
||||
if test "$MAT_REAL" = "$MAT_TARGET"; then
|
||||
nuxfs.warning "$rel_path" "is using different definition for target '$3'"
|
||||
else
|
||||
nuxfs.error "$rel_path" "links to $REAL_LINK instead of $TARGET"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
if test ! -e "$1"; then
|
||||
nuxfs.warning "$rel_path" "target '$NC_White$2$NC_No' does not exists."
|
||||
fi
|
||||
}
|
||||
git.entered() {
|
||||
nux.log debug "Testing '$rel_path' as git repository"
|
||||
if test ! -e "$1/.git"; then
|
||||
nuxfs.error "$rel_path" "is not git repository"
|
||||
return
|
||||
fi
|
||||
local remotes=$(grep "$3" "$rel_path/.git/config" | wc -l)
|
||||
if [ $remotes -eq 0 ]; then
|
||||
nuxfs.error "$rel_path" "Does not refer git remote '$3'"
|
||||
return;
|
||||
fi
|
||||
}
|
||||
process "$@";
|
||||
nuxfs.dsl.process "$@";
|
||||
}
|
||||
|
||||
task.describe() {
|
||||
nuxfs.dsl.process "$@";
|
||||
}
|
||||
|
||||
|
||||
## apply - Creates missing files as described in nuxfs definition.
|
||||
task.apply() {
|
||||
dir.check.recover() {
|
||||
nuxfs.info "$rel_path" "Created directory";
|
||||
mkdir -p "$abs_path"
|
||||
}
|
||||
link.check.recover() {
|
||||
nuxfs.info "$rel_path" "Creating link to '$3'";
|
||||
ln -s "$3" "$abs_path"
|
||||
}
|
||||
git.check.recover() {
|
||||
$GIT_BIN clone "$3" "$abs_path"
|
||||
}
|
||||
process "$@";
|
||||
nuxfs.dsl.process "$@";
|
||||
}
|
||||
|
||||
nux.dsl.load nux.fs.dsl
|
||||
|
||||
process() {
|
||||
nuxfs.dsl.process() {
|
||||
WORKDIR=$(pwd);
|
||||
TARGET=$1;
|
||||
if [ -n "$TARGET" ]; then
|
||||
|
|
@ -130,7 +61,7 @@ process() {
|
|||
|
||||
if test -e "$NUXFS_DEF"; then
|
||||
# #NUXFS_TARGET_FOUND=0;
|
||||
source "$NUXFS_DEF";
|
||||
nux.dsl.execute "$NUX_INC_DIR/dsl/nuxfs.$TASK" "$NUXFS_DEF";
|
||||
|
||||
# #if [ $NUXFS_TARGET_FOUND = 0 ]; then
|
||||
# # nuxfs.warning "$3" "Does not have definition in $DEF";
|
||||
|
|
@ -176,7 +107,6 @@ function task.init {
|
|||
#
|
||||
function task.template {
|
||||
nux.log debug $NUX_ENV_DIR
|
||||
|
||||
nuxfs.template.list
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue