first commit
authorDickson S. Guedes <[email protected]>
Thu, 5 May 2011 04:03:18 +0000 (01:03 -0300)
committerDickson S. Guedes <[email protected]>
Thu, 5 May 2011 04:03:18 +0000 (01:03 -0300)
README [new file with mode: 0644]
pgxn_create_extension [new file with mode: 0755]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..b6dff40
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+pgxn utils
+-----------
+
+Some scripts to work with PostgreSQL extensions and pgxn
diff --git a/pgxn_create_extension b/pgxn_create_extension
new file mode 100755 (executable)
index 0000000..1b0fea6
--- /dev/null
@@ -0,0 +1,114 @@
+#!/bin/bash
+##
+# Copyright (c) 2010-2011 Dickson S. Guedes.
+# 
+# This module is free software; you can redistribute it and/or modify it under
+# the [PostgreSQL License](http://www.opensource.org/licenses/postgresql).
+# 
+# Permission to use, copy, modify, and distribute this software and its
+# documentation for any purpose, without fee, and without a written agreement is
+# hereby granted, provided that the above copyright notice and this paragraph
+# and the following two paragraphs appear in all copies.
+# 
+# In no event shall Dickson S. Guedes be liable to any party for direct,
+# indirect, special, incidental, or consequential damages, including lost
+# profits, arising out of the use of this software and its documentation, even
+# if Dickson S. Guedes has been advised of the possibility of such damage.
+# 
+# Dickson S. Guedes specifically disclaims any warranties, including, but not
+# limited to, the implied warranties of merchantability and fitness for a
+# particular purpose. The software provided hereunder is on an "as is" basis,
+# and Dickson S. Guedes has no obligations to provide maintenance, support,
+# updates, enhancements, or modifications.
+##
+[ $# -lt 2 ] && echo "Usage: $0 name short_description" && exit
+
+extension=$1
+shift
+description=$*
+
+userlogin=$USER
+username=`grep $userlogin /etc/passwd | cut -d":" -f5 | cut -d "," -f1`
+
+[ -d $extension ] &&  echo "$extension already exists" && exit
+
+echo -n creating dirs
+mkdir -p $extension/{sql,doc,test/{sql,expected}}
+touch $extension/{sql/{$extension,uninstall_$extension}.sql,doc/$extension.md,test/{sql/base.sql,expected/base.out}}
+echo "results/" > $extension/.gitignore
+echo ... ok
+
+echo -n creating META.json
+cat > $extension/META.json <<EOF 
+{
+   "name": "$extension",
+   "abstract": "$description",
+   "description": "A long description for $extension",
+   "version": "1.0.0",
+   "maintainer": [
+      "$username \<[email protected]\>"
+   ],
+   "license": "postgresql",
+   "provides": {
+      "$extension": {
+         "abstract": "",
+         "file": "sql/$extension.sql",
+         "docfile": "doc/$extension.md",
+         "version": "1.0.0"
+      }
+   },
+   "generated_by": "$username",
+   "meta-spec": {
+      "version": "1.0.0",
+      "url": "http://pgxn.org/meta/spec.txt"
+   },
+   "tags": [
+      "$extension",
+      "some",
+      "tags"
+   ]
+}
+EOF
+echo ... ok
+
+echo -n creating Makefile
+cat > $extension/Makefile <<EOF
+EXTENSION    = $extension
+EXTVERSION   = \$(shell grep default_version \$(EXTENSION).control | \
+               sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
+
+DATA         = \$(filter-out \$(wildcard sql/*--*.sql),\$(wildcard sql/*.sql))
+DOCS         = \$(wildcard doc/*.txt)
+TESTS        = \$(wildcard test/sql/*.sql)
+REGRESS      = \$(patsubst test/sql/%.sql,%,\$(TESTS))
+REGRESS_OPTS = --inputdir=test --load-language=plpgsql
+MODULES      = \$(patsubst %.c,%,\$(wildcard src/*.c))
+PG_CONFIG    = pg_config
+PG91         = \$(shell \$(PG_CONFIG) --version | grep -qE " 8\.| 9\.0" && echo no || echo yes)
+
+ifeq (\$(PG91),yes)
+all: sql/\$(EXTENSION)--\$(EXTVERSION).sql
+
+sql/\$(EXTENSION)--\$(EXTVERSION).sql: sql/\$(EXTENSION).sql
+   cp $< \$@
+
+DATA = \$(wildcard sql/*--*.sql) sql/\$(EXTENSION)--\$(EXTVERSION).sql
+EXTRA_CLEAN = sql/\$(EXTENSION)--\$(EXTVERSION).sql
+endif
+
+PGXS := \$(shell \$(PG_CONFIG) --pgxs)
+include \$(PGXS)
+EOF
+echo  ... ok
+
+echo -n creating $extension.control
+cat > $extension/$extension.control <<EOF
+# $extension extension
+comment = '$description'
+default_version = '1.0.0'
+module_pathname = '$libdir/$extension'
+relocatable = true
+EOF
+echo ... ok
+
+echo all done