<?xml version="1.0" encoding="UTF-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"><id>https://blog.pgxn.org/tags/create-extension/</id><title>Create Extension</title><updated>2011-06-24T23:53:00Z</updated><link rel="self" type="application/atom+xml" href="https://blog.pgxn.org/tags/create-extension/feed.xml"/><link rel="alternate" type="text/html" href="https://blog.pgxn.org/tags/create-extension/"/><author><name>The PGXN Maintainers</name></author><generator uri="https://gohugo.io/" version="0.167.0">Hugo</generator><entry><id>https://blog.pgxn.org/post/6883009649</id><title type="html">PGXN Utils 0.1.2 Released!</title><link rel="alternate" type="text/html" href="https://blog.pgxn.org/2011/pgxn-utils-012-released/"/><updated>2026-10-07T16:13:48Z</updated><published>2011-06-24T23:53:00Z</published><author><name>Dickson S. Guedes</name></author><category scheme="https://blog.pgxn.org/tags" term="build" label="Build"/><category scheme="https://blog.pgxn.org/tags" term="create-extension" label="Create Extension"/><category scheme="https://blog.pgxn.org/tags" term="utils" label="Utils"/><category scheme="https://blog.pgxn.org/tags" term="meta" label="Meta"/><category scheme="https://blog.pgxn.org/tags" term="release" label="Release"/><category scheme="https://blog.pgxn.org/tags" term="bundle" label="Bundle"/><summary type="html"><![CDATA[<p>Hello everyone!</p>
<p>I&rsquo;m proud to tell you that a new version of <a href="https://github.com/guedes/pgxn-utils">pgxn_utils</a> was released!</p>
<p>Now you can release a distribution to <a href="https://pgxn.org">PGXN</a> in <strong>five steps</strong>!</p>
<p><strong>First</strong>, install it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install pgxn_utils
</span></span></code></pre></div><p><strong>Second</strong>, create your extension, optionally overwrite some defaults:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">mkdir <span class="nv">$HOME</span>/extensions
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="nv">$HOME</span>/extensions
</span></span><span class="line"><span class="cl">pgxn_utils skeleton my_extension --maintainer <span class="s2">&#34;Dickson S. Guedes&#34;</span>
</span></span></code></pre></div><p><strong>Third</strong>, code!</p>
<p><strong>Fourth</strong>, bundle it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="go">pgxn_utils bundle my_extension
</span></span></span><span class="line"><span class="cl"><span class="go">Extension generated at: /home/guedes/extensions/my_extension-0.0.1.zip
</span></span></span></code></pre></div><p><strong>Fifth</strong>, release it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="go">pgxn_utils release my_extension-0.0.1.zip
</span></span></span><span class="line"><span class="cl"><span class="go">Enter your PGXN username: guedes
</span></span></span><span class="line"><span class="cl"><span class="go">Enter your PGXN password: ******
</span></span></span><span class="line"><span class="cl"><span class="go">Trying to release my_cool_extension-0.0.1.zip ... released successfully!
</span></span></span><span class="line"><span class="cl"><span class="go">Visit: https://manager.pgxn.org/distributions/my_cool_extension/0.0.1
</span></span></span></code></pre></div><p>Ah, you can export <code>PGXN_USER</code> and <code>PGXN_PASSWORD</code> if you are tired to type
your username and password every time.</p>]]></summary><content type="html" xml:base="https://blog.pgxn.org/" xml:space="preserve"><![CDATA[<p>Hello everyone!</p>
<p>I&rsquo;m proud to tell you that a new version of <a href="https://github.com/guedes/pgxn-utils">pgxn_utils</a> was released!</p>
<p>Now you can release a distribution to <a href="https://pgxn.org">PGXN</a> in <strong>five steps</strong>!</p>
<p><strong>First</strong>, install it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install pgxn_utils
</span></span></code></pre></div><p><strong>Second</strong>, create your extension, optionally overwrite some defaults:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">mkdir <span class="nv">$HOME</span>/extensions
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="nv">$HOME</span>/extensions
</span></span><span class="line"><span class="cl">pgxn_utils skeleton my_extension --maintainer <span class="s2">&#34;Dickson S. Guedes&#34;</span>
</span></span></code></pre></div><p><strong>Third</strong>, code!</p>
<p><strong>Fourth</strong>, bundle it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="go">pgxn_utils bundle my_extension
</span></span></span><span class="line"><span class="cl"><span class="go">Extension generated at: /home/guedes/extensions/my_extension-0.0.1.zip
</span></span></span></code></pre></div><p><strong>Fifth</strong>, release it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="go">pgxn_utils release my_extension-0.0.1.zip
</span></span></span><span class="line"><span class="cl"><span class="go">Enter your PGXN username: guedes
</span></span></span><span class="line"><span class="cl"><span class="go">Enter your PGXN password: ******
</span></span></span><span class="line"><span class="cl"><span class="go">Trying to release my_cool_extension-0.0.1.zip ... released successfully!
</span></span></span><span class="line"><span class="cl"><span class="go">Visit: https://manager.pgxn.org/distributions/my_cool_extension/0.0.1
</span></span></span></code></pre></div><p>Ah, you can export <code>PGXN_USER</code> and <code>PGXN_PASSWORD</code> if you are tired to type
your username and password every time.</p>
<p><a href="https://github.com/guedes/pgxn-utils">Check this out!</a>.</p>
]]></content></entry><entry><id>https://blog.pgxn.org/post/5758832725</id><title type="html">PGXN Utils 0.1.1 Released!</title><link rel="alternate" type="text/html" href="https://blog.pgxn.org/2011/pgxn-utils-011-released/"/><updated>2026-10-07T16:13:48Z</updated><published>2011-05-23T04:53:30Z</published><author><name>Dickson S. Guedes</name></author><category scheme="https://blog.pgxn.org/tags" term="build" label="Build"/><category scheme="https://blog.pgxn.org/tags" term="create-extension" label="Create Extension"/><category scheme="https://blog.pgxn.org/tags" term="utils" label="Utils"/><category scheme="https://blog.pgxn.org/tags" term="bundle-extension" label="Bundle Extension"/><category scheme="https://blog.pgxn.org/tags" term="meta" label="Meta"/><category scheme="https://blog.pgxn.org/tags" term="readme" label="README"/><category scheme="https://blog.pgxn.org/tags" term="skeleton" label="Skeleton"/><summary type="html"><![CDATA[<p>Hello everyone!</p>
<p>This was a productive weekend that allowed me to work on some new features in
<a href="https://github.com/guedes/pgxn-utils">pgxn_utils</a> and I&rsquo;m proud to tell you that a new version was released!</p>
<p>Trying to simplify your extension-development life I&rsquo;ve added two tasks to
<code>pgxn_utils</code>: <code>change</code> and <code>bundle</code>. The first one is just a convenient way to
change META information about extension, incrementally, the second one is an
easy way to archive your extension in a zip file well named.</p>]]></summary><content type="html" xml:base="https://blog.pgxn.org/" xml:space="preserve"><![CDATA[<p>Hello everyone!</p>
<p>This was a productive weekend that allowed me to work on some new features in
<a href="https://github.com/guedes/pgxn-utils">pgxn_utils</a> and I&rsquo;m proud to tell you that a new version was released!</p>
<p>Trying to simplify your extension-development life I&rsquo;ve added two tasks to
<code>pgxn_utils</code>: <code>change</code> and <code>bundle</code>. The first one is just a convenient way to
change META information about extension, incrementally, the second one is an
easy way to archive your extension in a zip file well named.</p>
<p>To install it just type:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install pgxn_utils
</span></span></code></pre></div><p>Or, if you don&rsquo;t want to install it yet, see it in action on this <a href="https://blip.tv/pgcasts/pgxn_utils-0-1-1-released-5194610">screencast</a>
3:05.</p>
<p><strong>Work in progress&hellip;</strong></p>
<p>I&rsquo;m working now to simplify the release, creating a task to send bundled file
to <a href="https://pgxn.org">PGXN</a>.</p>
<p>There are a lot of work to do yet so, please, <a href="https://github.com/guedes/pgxn-utils/issues">tell me</a> if you found a bug or
have suggestions.</p>
<p>Have a nice code! &ldquo;:)</p>
]]></content></entry><entry><id>https://blog.pgxn.org/post/5465631144</id><title type="html">PGXN Utils</title><link rel="alternate" type="text/html" href="https://blog.pgxn.org/2011/pgxn-utils/"/><updated>2026-10-07T16:13:48Z</updated><published>2011-05-14T01:05:00Z</published><author><name>Dickson S. Guedes</name></author><category scheme="https://blog.pgxn.org/tags" term="build" label="Build"/><category scheme="https://blog.pgxn.org/tags" term="makefile" label="Makefile"/><category scheme="https://blog.pgxn.org/tags" term="control-file" label="Control File"/><category scheme="https://blog.pgxn.org/tags" term="readme" label="README"/><category scheme="https://blog.pgxn.org/tags" term="meta" label="Meta"/><category scheme="https://blog.pgxn.org/tags" term="create-extension" label="Create Extension"/><category scheme="https://blog.pgxn.org/tags" term="skeleton" label="Skeleton"/><category scheme="https://blog.pgxn.org/tags" term="generator" label="Generator"/><summary type="html"><![CDATA[<p>Do you ever have problems with copy and paste? I often did, and that is why I
create custom templates for often used files that match certain patterns.</p>
<p>With files from the structure of PostgreSQL&rsquo;s extensions was the same thing.</p>
<p>I was tired of creating the files and edit the META, controlfile, READMEs,
etc. every time I start a new extension and felt that I need something that
made me more productive, so I decided to create an automatic generator and
share it with the world.</p>]]></summary><content type="html" xml:base="https://blog.pgxn.org/" xml:space="preserve"><![CDATA[<p>Do you ever have problems with copy and paste? I often did, and that is why I
create custom templates for often used files that match certain patterns.</p>
<p>With files from the structure of PostgreSQL&rsquo;s extensions was the same thing.</p>
<p>I was tired of creating the files and edit the META, controlfile, READMEs,
etc. every time I start a new extension and felt that I need something that
made me more productive, so I decided to create an automatic generator and
share it with the world.</p>
<p>I called it <a href="https://github.com/guedes/pgxn-utils/">pgxn-utils</a>, and you should give it a try: it is easy to install,
easy to use and will help you to start hacking quickly!</p>
<p><strong>How?</strong></p>
<ol>
<li>
<p>First install it:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install pgxn_utils
</span></span></code></pre></div></li>
<li>
<p>Then start a new extension:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">pgxn_utils skeleton my_cool_extension
</span></span></code></pre></div></li>
</ol>
<p>Thats all! It will create the initial skeleton for you and you can start
coding! But, if you don&rsquo;t want to install it, <a href="https://pgcasts.com/media/pgxn_utils-usage-example.mpeg">see it in action</a></p>
<p>Good hack!</p>
]]></content></entry></feed>