diff options
Diffstat (limited to 'scripts/frontend/startup_css/setup.sh')
-rwxr-xr-x | scripts/frontend/startup_css/setup.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/scripts/frontend/startup_css/setup.sh b/scripts/frontend/startup_css/setup.sh new file mode 100755 index 00000000000..795799bd9fd --- /dev/null +++ b/scripts/frontend/startup_css/setup.sh @@ -0,0 +1,76 @@ +path_public_dir="public" +path_tmp="tmp" +path_dest="$path_tmp/startup_css_assets" +glob_css_dest="$path_dest/application*.css" +glob_css_src="$path_public_dir/assets/application*.css" +should_clean=false + +should_force() { + $1=="force" +} + +has_dest_already() { + find $glob_css_dest -quit +} + +has_src_already() { + find $glob_css_src -quit +} + +compile_assets() { + # We need to build the same test bundle that is built in CI + RAILS_ENV=test bundle exec rake rake:assets:precompile +} + +clean_assets() { + bundle exec rake rake:assets:clobber +} + +copy_assets() { + rm -rf $path_dest + mkdir $path_dest + cp $glob_css_src $path_dest +} + +echo "-----------------------------------------------------------" +echo "If you are run into any issues with Startup CSS generation," +echo "please check out the feedback issue:" +echo "" +echo "https://gitlab.com/gitlab-org/gitlab/-/issues/331812" +echo "-----------------------------------------------------------" + +if [ ! -e $path_public_dir ]; then + echo "Could not find '$path_public_dir/'. This script must be run in the root directory of the gitlab project." + exit 1 +fi + +if [ ! -e $path_tmp ]; then + echo "Could not find '$path_tmp/'. This script must be run in the root directory of the gitlab project." + exit 1 +fi + +if [ "$1" != "force" ] && has_dest_already; then + echo "Already found assets for '$glob_css_dest'. Did you want to run this script with 'force' argument?" + exit 0 +fi + +# If we are in CI, don't recompile things... +if [ -n "$CI" ]; then + if ! has_src_already; then + echo "Could not find '$glob_css_src'. Expected these artifacts to be generated by CI pipeline." + exit 1 + fi +elif has_src_already; then + echo "Found '$glob_css_src'. Skipping compile assets..." +else + echo "Starting compile assets process..." + compile_assets + should_clean=true +fi + +copy_assets + +if $should_clean; then + echo "Starting cleanup..." + clean_assets +fi |