KEY = ../../admin/extensions_private_key.pem

# directories to get stuff from
DIRS_ALL := $(wildcard edit/admin/*/ ) # all directories
DIRS_ENC := $(wildcard edit/admin/_*/ ) # to be encrypted - those that start with undrescore
DIRS_REG := $(filter-out $(DIRS_ENC), $(DIRS_ALL)) # the rest are regular (not secure)

# input files 
IN_FILES_PRJ := $(wildcard $(foreach DIR, $(DIRS_ALL), $(DIR)project.prj ) ) # project.prj files from all dirs
IN_FILES_LUA := $(wildcard $(foreach DIR, $(DIRS_REG), $(DIR)*.lua ) ) # .lua files - from regular dirs
IN_FILES_ENC := $(wildcard $(foreach DIR, $(DIRS_ENC), $(DIR)*.lua ) ) # .lua files - to be encrypted

# output files
OUT_DIRS := $(foreach DIR, $(DIRS_ALL), packaged/$(DIR) )
OUT_FILES_PRJ := $(foreach FILE, $(IN_FILES_PRJ), packaged/$(FILE))
OUT_FILES_LUA := $(foreach FILE, $(IN_FILES_LUA), packaged/$(FILE))
OUT_FILES_ENC := $(foreach FILE, $(IN_FILES_ENC), packaged/$(FILE).encrypted)
OUT_FILES_SIG := $(foreach FILE, $(IN_FILES_ENC), packaged/$(FILE).sig)

# all outputs, sorted
OUT_ALL := $(sort $(OUT_DIRS) $(OUT_FILES_PRJ) $(OUT_FILES_LUA) $(OUT_FILES_ENC) $(OUT_FILES_SIG) )

all: packaged packaged/edit packaged/edit/admin $(OUT_ALL)

# making directories
packaged packaged/edit packaged/edit/admin $(OUT_DIRS):
	mkdir $@

# copying .prj files
packaged/edit/admin/%.prj: edit/admin/%.prj
	cp -p $< $@

# copying .lua files
packaged/edit/admin/%.lua: edit/admin/%.lua
	cp -p $< $@

# encryptable .lua files -> .encrypted
packaged/edit/admin/%.lua.encrypted: edit/admin/%.lua
	openssl enc -e -aes-128-cfb -K C2D7C3DF251D253631E3D58A592DB136 -in $< -out $@ -iv BF164D11B9E1EE712A9619892D43A1CA

# encryptable .lua files -> .sig
packaged/edit/admin/%.lua.sig: edit/admin/%.lua
	openssl dgst -sha1 -binary < $< | openssl pkeyutl -sign -inkey $(KEY) -out $@

clean:
	-rm -rf packaged 
