#!/usr/bin/env bash # Copyright (C) 2015 Luke Shumaker <lukeshu@sbcglobal.net> # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA requests=$1 printf '//' printf ' %q' "$0" "$@" printf '\n// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n' cat <<EOF | gofmt package nslcd_server import ( "golang.org/x/sys/unix" p "git.lukeshu.com/go/libnslcd/nslcd_proto" ) // The Backend interface allows the backend store to be implemented // separately from the protocol implementation. Each request type // that the nslcd server may reply to is implemented simply as a // method that returns a channel of the resulting values. type Backend interface { $(sed -rn 's/([^_]+)(.*)/\1\2(unix.Ucred, p.Request_\1\2) <-chan p.\1/p' "$requests" | grep -v PAM) $(sed -rn 's/(PAM)(.*)/\1\2(unix.Ucred, p.Request_\1\2) <-chan p.\1\2/p' "$requests") } EOF