forked from TrueCloudLab/frostfs-locode-db
George Bartolomey
3feec01b21
A small parser of unece.org "Trade code download page" added to Makefile to fetch last database's URL to download. Also, the forgejo action added. Action runs every month to update databases and send PR to Forgejo. Signed-off-by: George Bartolomey <george@bh4.ru>
120 lines
3.6 KiB
Makefile
120 lines
3.6 KiB
Makefile
#!/usr/bin/make -f
|
|
|
|
VERSION ?= "$(shell git describe --tags --match "v*" --dirty --always --abbrev=8 2>/dev/null || cat VERSION 2>/dev/null || echo "develop")"
|
|
FROST ?= frostfs-cli
|
|
|
|
.PHONY: all clean version help update debpackage
|
|
|
|
DIRS = in tmp
|
|
|
|
# IGNORE
|
|
space := $(subst ,, )
|
|
|
|
# .deb package versioning
|
|
OS_RELEASE = $(shell lsb_release -cs)
|
|
PKG_VERSION ?= $(shell echo $(VERSION) | sed "s/^v//" | \
|
|
sed -E "s/(.*)-(g[a-fA-F0-9]{6,8})(.*)/\1\3~\2/" | \
|
|
sed "s/-/~/")-${OS_RELEASE}
|
|
|
|
# Generate locode_db BoltDB file
|
|
all: $(DIRS) locode_db
|
|
|
|
$(DIRS):
|
|
@echo "⇒ Ensure dir: $@"
|
|
@mkdir -p $@
|
|
|
|
in/airports.dat: $(DIRS)
|
|
zcat data/airports.dat.gz > in/airports.dat
|
|
|
|
in/countries.dat: $(DIRS)
|
|
zcat data/countries.dat.gz > in/countries.dat
|
|
|
|
in/continents.geojson: $(DIRS)
|
|
zcat data/continents.geojson.gz > in/continents.geojson
|
|
|
|
in/unlocode-SubdivisionCodes.csv: $(DIRS)
|
|
zcat data/unlocode-SubdivisionCodes.csv.gz > in/unlocode-SubdivisionCodes.csv
|
|
|
|
in/unlocode-CodeList.csv: $(DIRS)
|
|
zcat data/unlocode-CodeList.csv.gz > in/unlocode-CodeList.csv
|
|
|
|
# Generate locode_db BoltDB file
|
|
locode_db: in/unlocode-CodeList.csv in/unlocode-SubdivisionCodes.csv in/continents.geojson in/airports.dat in/countries.dat
|
|
$(FROST) util locode generate \
|
|
--airports in/airports.dat \
|
|
--continents in/continents.geojson \
|
|
--countries in/countries.dat \
|
|
--in in/unlocode-CodeList.csv \
|
|
--subdiv in/unlocode-SubdivisionCodes.csv \
|
|
--out locode_db
|
|
chmod 644 locode_db
|
|
|
|
# IGNORE
|
|
# Openflights doesn't have tags or releases, so update would always take latest master version.
|
|
# See https://github.com/jpatokal/openflights
|
|
data/airports.dat.gz: $(DIRS)
|
|
wget -c https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat -O tmp/airports.dat && \
|
|
gzip -c tmp/airports.dat > data/airports.dat.gz
|
|
|
|
data/countries.dat.gz: $(DIRS)
|
|
wget -c https://raw.githubusercontent.com/jpatokal/openflights/master/data/countries.dat -O tmp/countries.dat && \
|
|
gzip -c tmp/countries.dat > data/countries.dat.gz
|
|
|
|
# IGNORE
|
|
# See https://unece.org/trade/cefact/UNLOCODE-Download
|
|
tmp/locode.csv.zip :$(DIRS)
|
|
DOWNLOADURL=$$(wget -O - https://unece.org/trade/cefact/UNLOCODE-Download \
|
|
| grep -oP '(?<=href=")\S+loc\d+csv\.zip'); \
|
|
echo "$$DOWNLOADURL" | grep -oP '(?<=loc)\d+' > tmp/locode-version.txt; \
|
|
wget -c "$$DOWNLOADURL" -O tmp/locode.csv.zip
|
|
|
|
data/unlocode-SubdivisionCodes.csv.gz: tmp/locode.csv.zip
|
|
unzip -p tmp/locode.csv.zip "*SubdivisionCodes.csv" | gzip > data/unlocode-SubdivisionCodes.csv.gz
|
|
|
|
data/unlocode-CodeList.csv.gz: tmp/locode.csv.zip
|
|
unzip -p tmp/locode.csv.zip "*CodeListPart*" | gzip > data/unlocode-CodeList.csv.gz
|
|
|
|
# Download and repack external data-sources
|
|
update: data/unlocode-CodeList.csv.gz data/unlocode-SubdivisionCodes.csv.gz data/countries.dat.gz data/airports.dat.gz
|
|
|
|
# Print version
|
|
version:
|
|
@echo $(VERSION)
|
|
|
|
# Show this help prompt
|
|
help:
|
|
@echo ' Usage:'
|
|
@echo ''
|
|
@echo ' make <target>'
|
|
@echo ''
|
|
@echo ' Targets:'
|
|
@echo ''
|
|
@awk '/^#/{ comment = substr($$0,3) } comment && /^[a-zA-Z][a-zA-Z0-9_-]+ ?:/{ print " ", $$1, comment }' $(MAKEFILE_LIST) | column -t -s ':' | grep -v 'IGNORE' | sort -u
|
|
|
|
|
|
# Clean data directory before update
|
|
clean_data:
|
|
rm -f data/unlocode-CodeList.csv.gz
|
|
rm -f data/unlocode-SubdivisionCodes.csv.gz
|
|
rm -f data/countries.dat.gz
|
|
rm -f data/airports.dat.gz
|
|
|
|
# Clean up
|
|
clean:
|
|
rm -f in/*
|
|
rm -f tmp/*
|
|
rm -f locode_db
|
|
|
|
# Package for Debian
|
|
debpackage:
|
|
dch --package frostfs-locode-db \
|
|
--controlmaint \
|
|
--newversion $(PKG_VERSION) \
|
|
--force-bad-version \
|
|
--distribution $(OS_RELEASE) \
|
|
"Please see CHANGELOG.md for code changes for $(VERSION)"
|
|
dpkg-buildpackage --no-sign -b
|
|
|
|
# Clean up debian packaging leftovers
|
|
debclean:
|
|
dh clean
|