1 |
7362
|
aaronmk
|
selfDir_XlThrr := $(dir $(lastword $(MAKEFILE_LIST)))
|
2 |
|
|
root := $(selfDir_XlThrr)../../..
|
3 |
|
|
include $(root)/lib/common.Makefile
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
##### Vars/functions
|
7 |
|
|
|
8 |
7364
|
aaronmk
|
unzip = unzip -d $@ $<
|
9 |
|
|
|
10 |
7362
|
aaronmk
|
##### General targets
|
11 |
|
|
|
12 |
7563
|
aaronmk
|
all: _always extract ;
|
13 |
|
|
$(MAKE) tables
|
14 |
7362
|
aaronmk
|
|
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 |
7364
|
aaronmk
|
allZips := $(states:%=%.zip)
|
24 |
7362
|
aaronmk
|
|
25 |
7364
|
aaronmk
|
download: _always $(allZips) ;
|
26 |
|
|
|
27 |
7362
|
aaronmk
|
%.zip:
|
28 |
10056
|
aaronmk
|
-curl --fail --output $@ $(urlPrefix)$@
|
29 |
|
|
# ignore errors for states which don't have a download
|
30 |
7364
|
aaronmk
|
|
31 |
|
|
##### Extraction
|
32 |
|
|
|
33 |
10058
|
aaronmk
|
zips := $(allZips)
|
34 |
7382
|
aaronmk
|
dirs := $(zips:%.zip=%)
|
35 |
7364
|
aaronmk
|
|
36 |
|
|
extract: _always $(dirs) ;
|
37 |
|
|
|
38 |
|
|
%: %.zip
|
39 |
10057
|
aaronmk
|
$(if $(wildcard $@),,$(unzip) || mkdir -p $@)
|
40 |
7364
|
aaronmk
|
|
41 |
|
|
##### Table bundling
|
42 |
7382
|
aaronmk
|
|
43 |
7636
|
aaronmk
|
refCsvPattern := FIADB_REFERENCE/%.CSV
|
44 |
|
|
refCsvPattern* := $(subst %,*,$(refCsvPattern))
|
45 |
|
|
refDirCsvs := $(wildcard $(refCsvPattern*))
|
46 |
|
|
refTables := $(patsubst $(refCsvPattern),%,$(refDirCsvs))
|
47 |
|
|
refDirs := $(refTables:%=../%)
|
48 |
|
|
|
49 |
7382
|
aaronmk
|
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 |
7383
|
aaronmk
|
tableDirs := $(tableNames:%=../%)
|
55 |
7382
|
aaronmk
|
|
56 |
7636
|
aaronmk
|
tables: _always $(refDirs) $(tableDirs) ;
|
57 |
7382
|
aaronmk
|
|
58 |
7384
|
aaronmk
|
tableCsvs = $(wildcard $(foreach dir,$(dirs),$(subst %,$*,$(csvPattern))))
|
59 |
7382
|
aaronmk
|
|
60 |
7383
|
aaronmk
|
$(tableDirs): ../%: _always
|
61 |
7382
|
aaronmk
|
$(call mkdir,$@)
|
62 |
|
|
$(if $(tableCsvs),mv $(tableCsvs) $@)
|
63 |
7636
|
aaronmk
|
|
64 |
|
|
../%: $(refCsvPattern) _always
|
65 |
|
|
$(call mkdir,$@)
|
66 |
|
|
mv $< $@
|