view cmd/wfs/main.go @ 4878:3fc3f1ed8531

Fix build for restrictive UMASK on host Building a database image failed due to insufficient permissions for the postgres user to read and execute files transfered with COPY from the host if these files did not have the necessary file modes set for all users, because files are owned by root by default.
author Tom Gottfried <tom@intevation.de>
date Mon, 27 Jan 2020 15:49:55 +0100
parents 349e409fbbb1
children
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

// Command wfs is an diagnostic tool for manually downloading WFS data.
package main

import (
	"flag"
	"log"

	"gemma.intevation.de/gemma/pkg/wfs"
)

func check(err error) {
	if err != nil {
		log.Fatalf("error: %v\n", err)
	}
}

func main() {
	var (
		dumpCaps    = flag.Bool("dump-caps", false, "Dump capabilities document")
		featureType = flag.String("features", "", "feature to get")
		sortBy      = flag.String("sortby", "", "Sort features by this property")
		user        = flag.String("user", "", "user name")
		password    = flag.String("password", "", "user password")
	)
	flag.Parse()

	for _, arg := range flag.Args() {
		caps, err := wfs.GetCapabilities(arg)
		check(err)
		if *dumpCaps {
			dump(caps)
		}

		if *featureType == "" {
			continue
		}

		feature := caps.FindFeatureType(*featureType)
		if feature == nil {
			log.Fatalf("Unknown feature type '%s'\n", *featureType)
		}

		dl, err := wfs.GetFeatures(caps, *featureType, *sortBy)
		check(err)

		parseFeatures(*user, *password, dl, feature.DefaultCRS)
	}
}