summaryrefslogtreecommitdiff
path: root/scripts/frontend/startup_css/setup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/frontend/startup_css/setup.sh')
-rwxr-xr-xscripts/frontend/startup_css/setup.sh76
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