### Carpeta destí
INSTALL_PREFIX = ../assets

###
# Directoris a copiar
COPYDIRS = vendor/ckeditor vendor/kcfinder

### Variables vàries
SRCDIR = .
INSTALL_DIR = $(INSTALL_PREFIX)
MKDIR = mkdir -p

# Path relatiu a INSTALL_DEST on posar totes els COPYTO_XXX
COPYTO_DEST = 

###
# Configuració yuicompressor
#COMPRESSOR = java -jar yuicompressor-2.4.6.jar
COMPRESSOR = yuicompressor
COMPRESSOR_FLAGS = --charset utf-8 --verbose

###
## Configuració SASS
# --style NAME
#	Output style. Can be nested (default), compact, compressed, or expanded.
#
# --sourcemap=TYPE
#	How to link generated output to the source files.
#	    auto (default): relative paths where possible, file URIs elsewhere
#	    file: always absolute file URIs
#	    inline: include the source text in the sourcemap
#	    none: no sourcemaps
#
# --debug-info
#	Emit output that can be used by the FireSass Firebug plugin.
#
# --no-cache
#	 Don't cache parsed Sass files.
SASS = sass
SASS_FLAGS = --style compressed --sourcemap=none

###
# Variables depenents del target
debug: SASS_FLAGS = --no-cache --style expanded --sourcemap=auto

#
# Paths absoluts
#
INSTALL_PATH = $(abspath $(INSTALL_PREFIX))
COPYCSS_PATH = $(abspath ${INSTALL_DIR})/css
COPYJS_PATH = $(abspath ${INSTALL_DIR})/js
COPYTO_PATH = $(abspath ${INSTALL_DIR}/${COPYTO_DEST})

### Fitxers css generat via SCSS
# Excloure els fitxers que comencen amb _
EXCLUDE_SCSS = $(wildcard \
	$(SRCDIR)/scss/_*.scss \
	$(SRCDIR)/scss/**/_*.scss \
)

SCSS_FILES = $(filter-out $(EXCLUDE_SCSS),$(wildcard \
	$(SRCDIR)/scss/*.scss \
	$(SRCDIR)/scss/**/*.scss \
))
SCSS_BUILD := $(patsubst $(SRCDIR)/scss/%,$(INSTALL_DIR)/css/%,$(SCSS_FILES:.scss=.css))
SCSS_INSTALL := $(patsubst $(SRCDIR)/scss/%,$(INSTALL_PREFIX)/css/%,$(SCSS_FILES:.scss=.css))

### Fitxers css que no estan fets via SCSS
CSS_FILES = $(filter-out %-min.css,$(wildcard \
	$(SRCDIR)/css/*.css \
	$(SRCDIR)/css/**/*.css \
))
CSS_BUILD := $(patsubst $(SRCDIR)/%,$(INSTALL_DIR)/%,$(CSS_FILES))

### Fitxers js
JS_FILES = $(shell find $(SRCDIR)/js -name '*.js')
JS_BUILD := $(patsubst $(SRCDIR)/%,$(INSTALL_DIR)/%,$(JS_FILES))

JS_FILES_EXTRA = $(shell find $(SRCDIR)/ckeditor -name '*.js')
JS_BUILD_EXTRA := $(patsubst $(SRCDIR)/%,$(INSTALL_DIR)/%,$(JS_FILES_EXTRA))

build: build-scss minify-css minify-js minify-js-extra

all: clean sass minify-css minify-js
debug: clean sass copy-css copy-js
release: clean sass minify-css minify-js install

build-scss: $(SCSS_FILES) $(SCSS_BUILD)
minify-css: $(CSS_FILES) $(CSS_BUILD)
minify-js: $(JS_FILES) $(JS_BUILD)
minify-js-extra: $(JS_FILES_EXTRA) $(JS_BUILD_EXTRA)

$(INSTALL_DIR)/css/%.css: $(SRCDIR)/scss/%.scss
	@test -d $(@D) || $(MKDIR) $(@D)
	$(SASS) -I $(SRCDIR)/scss/ $(SASS_FLAGS) $< $@

$(INSTALL_DIR)/%.css: $(SRCDIR)/%.css
	@test -d $(@D) || $(MKDIR) $(@D)
	$(COMPRESSOR) $(COMPRESSOR_FLAGS) --type css $< >$@

$(INSTALL_DIR)/%.js: $(SRCDIR)/%.js
	@test -d $(@D) || $(MKDIR) $(@D)
	$(COMPRESSOR) $(COMPRESSOR_FLAGS) --type js $< >$@

sass:
	@test -d $(INSTALL_PATH)/css || $(MKDIR) $(INSTALL_PATH)/css
	@echo '==> Compilant SASS'
	$(SASS) --update $(SRCDIR)/scss:$(INSTALL_PREFIX)/css/ $(SASS_FLAGS)
	
copy-css:
	@test -d $(INSTALL_PATH)/css || $(MKDIR) $(INSTALL_PATH)/css
	@echo '==> Copiant CSS'
	@for file in $(CSS_FILES); do \
	    cp $$file $(INSTALL_PREFIX)/css; \
	done

copy-js:
	@test -d $(INSTALL_PATH)/js || $(MKDIR) $(INSTALL_PATH)/js
	@echo '==> Copiant JS'
	@for file in $(JS_FILES); do \
	    cp $$file $(INSTALL_PREFIX)/js; \
	done

# Copiar directoris addicionals al directori destí. Son els definits a COPYDIRS (img, fonts, etz...)
copy: $(COPYDIRS)
$(COPYDIRS):
	@test -d $(COPYTO_PATH) || $(MKDIR) $(COPYTO_PATH)
	@echo '==> Copiant $@ '
	rsync -rupE $(SRCDIR)/$@ $(COPYTO_PATH)

# Copiem els fitxers que estan al directori css (que no son els generats via scss...)
install: all copy
	@test -d $(INSTALL_PREFIX) || $(MKDIR) $(INSTALL_PREFIX)

clean:
	@for file in $(SCSS_INSTALL); do \
	    if [ -a $$file ]; then \
		rm $$file; \
	    fi; \
	    if [ -a $$file.map ]; then \
		rm $$file.map; \
	    fi; \
	done
	@for file in $(CSS_BUILD); do \
	    if [ -a $$file ]; then \
		rm $$file; \
	    fi; \
	done
	@for file in $(JS_BUILD); do \
	    if [ -a $$file ]; then \
		rm $$file; \
	    fi; \
	done

cleancopyto:
	@if [ -d $(COPYCSS_PATH) ]; then \
	    echo "Eliminar de CSS:"; \
	    for f in $(COPYTO_CSS); do \
		if [ -f $(COPYCSS_PATH)/$${f##*/} ]; then \
		    echo "    $$f"; \
		    rm $(COPYCSS_PATH)/$${f##*/}; \
		fi; \
	    done; \
	fi
	@if [ -d $(COPYJS_PATH) ]; then \
	    echo "Eliminar de JS:"; \
	    for f in $(COPYTO_JS); do \
		if [ -f $(COPYJS_PATH)/$${f##*/} ]; then \
		    echo "    $$f"; \
		    rm $(COPYJS_PATH)/$${f##*/}; \
		fi; \
	    done; \
	fi
	@if [ -d $(COPYTO_PATH) ]; then \
	    echo "Eliminar del seu pròpi destí:"; \
	    for f in $(COPYDIRS); do \
		if ls $(COPYTO_PATH)/$$f &> /dev/null; then \
		    echo "    " $${f##%%/*}; \
		    rm -rf $(COPYTO_PATH)/$${f##%%/*}; \
		fi; \
		# Eliminar tota la subcarpeta sols si està buida \
		if [ -d $(COPYTO_PATH)/$${f%%/*} ]; then \
		    rmdir --ignore-fail-on-non-empty $(COPYTO_PATH)/$${f%%/*}; \
		fi; \
	    done; \
	fi

distclean: clean cleancopyto
	@if [ -z "$$(ls -A ${INSTALL_PATH})" ]; then \
	    rmdir ${INSTALL_PATH}; \
	fi

# Per mostrar els paths de destí
showpaths:
	@echo -n "Destí base:" ${INSTALL_PATH}
	@test -d $(INSTALL_PATH) || echo -n " NO EXISTEIX!!!"
	@echo ""

	@echo -n "Copiar a base/CSS:" ${COPYCSS_PATH}
	@test -d $(COPYCSS_PATH) || echo -n " NO EXISTEIX!!!"
	@echo ""

	@echo -n "Copiar a base/JS:" ${COPYJS_PATH}
	@test -d $(COPYJS_PATH) || echo -n " NO EXISTEIX!!!"
	@echo ""

	@echo -n "Copiar a base/[*]:" ${COPYTO_PATH}
	@test -d $(COPYTO_PATH) || echo -n " NO EXISTEIX!!!"
	@echo ""

# Per mostrar el contigut de qualsevol variable.
# eg: make showvar-CSS_FILES
showvar-%:
	@echo '$*=$($*)'

.PHONY : sass all release install copy $(COPYDIRS) clean distclean showpaths
