Revision control

Copy as Markdown

#!/usr/bin/env bash
# Find out where the FML root directory is.
this_file="${BASH_SOURCE[0]}"
this_dir=$(dirname "$this_file")
function fail {
echo "Failure with: $*"
exit 1
}
fml_root=$(cd "$this_dir/.." || fail "Can't find where the nimbus-fml directory is" ; pwd)
build_dir="$fml_root/build/cli_test"
fixtures="$fml_root/fixtures"
fml_file="$fixtures/fe/importing/simple/app.yaml"
if [ ! -f "$fml_file" ] ;
then
fail "fml_root is not set properly: $fml_root"
fi
pushd "$fml_root" > /dev/null || fail "Can't change to FML root directory"
rm -Rf "$build_dir" 2>/dev/null
mkdir -p "$build_dir"
if ! cargo build \
2> /dev/null ;
then
fail "cargo build"
fi
# Legacy command line interface, we have to support for now.
if ! cargo run -- \
"$fml_file" \
android features \
--output "$build_dir/Legacy.kt" \
--channel release \
--package com.foo \
--classname FooNimbus \
--r-package com.foo.app \
2> /dev/null ;
then
fail "Legacy 'android features' command, as used in NimbusGradlePlugin.grooovy"
fi
if ! cargo run -- \
"$fml_file" \
-o "$build_dir/Legacy.swift" \
ios features \
--classname FooNimbus \
--channel release \
2> /dev/null ;
then
fail "Legacy 'ios features' command, as used in nimbus-fml.sh"
fi
if ! cargo run -- \
"$fml_file" \
-o "$build_dir/legacy-experimenter-ios.yaml" \
experimenter \
--channel release \
2> /dev/null ;
then
fail "Legacy 'experimenter' command, as used in numbus-fml.sh"
fi
if ! cargo run -- \
"$fml_file" \
experimenter \
--output "$build_dir/legacy-experimenter-android.yaml" \
2> /dev/null ;
then
fail "Legacy 'experimenter' command, as used in NimbusGradlePlugin.grooovy"
fi
# Target command line interface
if ! cargo run -- generate \
--channel release \
--language kotlin \
"$fml_file" \
"$build_dir" \
2> /dev/null ;
then
fail "New style 'generate' with directory and explicit 'language' = kotlin"
fi
if ! cargo run -- generate \
--channel release \
--language swift \
"$fml_file" \
"$build_dir" \
2> /dev/null ;
then
fail "New style 'generate' with directory and explicit 'language' = swift"
fi
if ! cargo run -- generate \
--channel release \
"$fml_file" \
"$build_dir/Implied.kt" \
2> /dev/null ;
then
fail "New style 'generate' with filename and implied language = kotlin"
fi
if ! cargo run -- generate \
--channel release \
"$fml_file" \
"$build_dir/Implied.swift" \
2> /dev/null ;
then
fail "New style 'generate' with filename and implied language = swift"
fi
if ! cargo run -- generate-experimenter \
"$fml_file" \
"$build_dir/generate-experimenter.json" \
2> /dev/null ;
then
fail "New style 'generate-experimenter' with implied language = json"
fi
fml_dir="$fixtures/fe/importing/cli-test"
if ! cargo run -- generate \
--channel release \
--language swift \
"$fml_dir" \
"$build_dir" \
2> /dev/null ;
then
fail "New style 'generate' with directory and language = swift"
fi
fml_dir="$fixtures/fe/importing/including-imports"
if ! cargo run -- generate \
--channel release \
--language kotlin \
"$fml_dir" \
"$build_dir" \
2> /dev/null ;
then
fail "New style 'generate' with glob and language = kotlin, and single channel files allowed"
fi
if ! cargo run -- fetch \
"@mozilla-mobile/android-components/version.txt" \
> /dev/null 2>&1;
then
fail "Fetch from another repo"
fi
popd >/dev/null || exit 0