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

###
# Directoris a copiar
COPYDIRS = 
#COPYDIRS = img

###
# 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

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

### 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/%,$(OUTDIR)/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)/%,$(OUTDIR)/%,$(CSS_FILES))

### Fitxers js
# Excloure els fitxers que acaben amb _{EL QUE SIGUI}.js
EXCLUDE_JS = $(wildcard \
	$(SRCDIR)/js/*_*.js \
	$(SRCDIR)/js/**/*_*.js \
)
JS_FILES = $(filter-out $(EXCLUDE_JS),$(wildcard \
	$(SRCDIR)/js/*.js \
	$(SRCDIR)/js/**/*.js \
))
JS_BUILD := $(patsubst $(SRCDIR)/%,$(OUTDIR)/%,$(JS_FILES))

build: build-scss minify-css minify-js 

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)

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

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

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

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

copy-js:
	@test -d $(OUTPATH)/js || $(MKDIR) $(OUTPATH)/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 $(INSTALL_PREFIX) || $(MKDIR) $(INSTALL_PREFIX)
	@echo '==> Copiant $@ '
	rsync -rupE $(SRCDIR)/$@ $(INSTALL_PREFIX)

# 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

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