Project

General

Profile

1 14817 aaronmk
selfDir_XlThrr := $(dir $(lastword $(MAKEFILE_LIST)))
2
root := $(selfDir_XlThrr)../../..
3
include $(root)/lib/common.Makefile
4
5
6
##### Vars/functions
7
8
unzip = unzip -d $@ $<
9
10
##### General targets
11
12
all: _always extract ;
13
	$(MAKE) tables
14
15
##### Downloads
16
17
urlPrefix := http://apps.fs.fed.us/fiadb-downloads/
18
19
states := AS GU PW AL AK AZ AR CA CO CT DE DC FL GA HI ID IL IN IA KS KY LA ME\
20
MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA PR RI SC SD TN TX UT\
21
VT VI VA WA WV WI WY
22
23
allZips := $(states:%=%.zip)
24
25
download: _always $(allZips) ;
26
27
%.zip:
28
	-curl --fail --output $@ $(urlPrefix)$@
29
# ignore errors for states which don't have a download
30
31
##### Extraction
32
33
zips := $(allZips)
34
dirs := $(zips:%.zip=%)
35
36
extract: _always $(dirs) ;
37
38
%: %.zip
39
	$(if $(wildcard $@),,$(unzip) || mkdir -p $@)
40
41
##### Table bundling
42
43
refCsvPattern := FIADB_REFERENCE/%.CSV
44
refCsvPattern* := $(subst %,*,$(refCsvPattern))
45
refDirCsvs := $(wildcard $(refCsvPattern*))
46
refTables := $(patsubst $(refCsvPattern),%,$(refDirCsvs))
47
refDirs := $(refTables:%=../%)
48
49
csvPattern = $(dir)/$(dir)_%.CSV
50
csvPattern* = $(subst %,*,$(csvPattern))
51
dirCsvs = $(wildcard $(csvPattern*))
52
dirTables = $(patsubst $(csvPattern),%,$(dirCsvs))
53
tableNames := $(sort $(foreach dir,$(dirs),$(dirTables)))
54
tableDirs := $(tableNames:%=../%)
55
56
tables: _always $(refDirs) $(tableDirs) ;
57
58
tableCsvs = $(wildcard $(foreach dir,$(dirs),$(subst %,$*,$(csvPattern))))
59
60
$(tableDirs): ../%: _always
61
	$(call mkdir,$@)
62
	$(if $(tableCsvs),mv $(tableCsvs) $@)
63
64
../%: $(refCsvPattern) _always
65
	$(call mkdir,$@)
66
	mv $< $@