#!/bin/bash

if [ -z "$1" ] || [ ${1:0:1} == "_" ] || [[ $1 == *[-]* ]]
then
  echo 'Please provide a partial name with underscores for spaces and no leading underscore, ex: example_name'
  exit 0
fi

css_string=$(echo $1 | sed 's/_/\-/g')
upper_case_name=$(echo $(echo $1 | sed 's/_/\ /g') | tr /a-z/ /A-Z/)
partial_file_name="_$1.html.erb"
css_file_name="$css_string.scss"
js_file_name="$css_string.js"

partial_file_already_exists=false
css_file_already_exists=false
js_file_already_exists=false

if [ -f "app/views/partials/$partial_file_name" ]
then
  echo "$partial_file_name already exists"
  partial_file_already_exists=true
fi

if [ -f "app/assets/stylesheets/teachable/public/$css_file_name" ]
then
	echo "$css_file_name already exists"
  css_file_already_exists=true
fi

if [ -f "app/assets/javascripts/teachable/public/$js_file_name" ]
then
	echo "$js_file_name already exists"
  js_file_already_exists=true
fi

if $partial_file_already_exists || $css_file_already_exists || $js_file_already_exists
then
  exit 0
fi

echo "<% field_values = page_partial.field_values_hash %>
<section class=\"$css_string <%= \"_#{page_partial.id}\" %>\">
  <style>
    <%= standard_margin_bottoms(page_partial.id, field_values) %>
  </style>
</section>" >> "app/views/partials/$partial_file_name"

echo ".$css_string {

}" >> "app/assets/stylesheets/teachable/public/$css_file_name"

file_to_insert="@import 'teachable/public/$css_string';"
inserted=false
partial_section=false

while read
do
    ok_to_insert=false

    if [[ "$file_to_insert" < "$REPLY" ]] || [[ "$REPLY" == "" ]]
    then
      ok_to_insert=true
    fi

    if $partial_section && ! $inserted && $ok_to_insert
    then
      echo "$file_to_insert" >> "new-application.css.scss"
      inserted=true
    fi

    echo "$REPLY" >> "new-application.css.scss"

    if [[ "$REPLY" == "// Public Partials" ]]
    then
      partial_section=true
    fi
done < "app/assets/stylesheets/application.css.scss"

cat "new-application.css.scss" > "app/assets/stylesheets/application.css.scss"
rm "new-application.css.scss"

if [ "$2" == '-js' ]
then
  pascal_case_name=$(echo $1 | gsed -r 's/(^|_)([a-z])/\U\2/g')
  echo "\$(document).ready(function() {
    $pascal_case_name.initialize();
  });

  var $pascal_case_name = {

    initialize: function() {

    }
  };" >> "app/assets/javascripts/teachable/public/$js_file_name"
fi

echo "Successfully created $partial_file_name and $css_file_name files"
exit 0
