mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
78 lines
No EOL
5.5 KiB
HTML
78 lines
No EOL
5.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<title>Creating a simple command line to post snippets on Gitlab - Alexis Métaireau</title>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet" href="https://blog.notmyidea.org/theme/css/main.css?v2" type="text/css" />
|
|
<link href="https://blog.notmyidea.org/feeds/all.atom.xml" type="application/atom+xml" rel="alternate"
|
|
title="Alexis Métaireau ATOM Feed" />
|
|
</head>
|
|
|
|
<body>
|
|
<div id="content">
|
|
<section id="links">
|
|
<ul>
|
|
<li><a class="main" href="/">Alexis Métaireau</a></li>
|
|
<li><a class=""
|
|
href="https://blog.notmyidea.org/journal/index.html">Journal</a></li>
|
|
<li><a class="selected"
|
|
href="https://blog.notmyidea.org/code/">Code, etc.</a></li>
|
|
<li><a class=""
|
|
href="https://blog.notmyidea.org/weeknotes/">Notes hebdo</a></li>
|
|
<li><a class=""
|
|
href="https://blog.notmyidea.org/lectures/">Lectures</a></li>
|
|
</ul>
|
|
</section>
|
|
|
|
<header>
|
|
<h1 class="post-title">Creating a simple command line to post snippets on Gitlab</h1>
|
|
<time datetime="2023-09-18T00:00:00+02:00">18 septembre 2023</time>
|
|
|
|
|
|
</header>
|
|
<article>
|
|
|
|
<p>I’m trying to get away from Github, and one thing that I find useful is the <a href="https://gist.github.com">gist</a> utility they’re providing. Seems that gitlab provides a similar tool.</p>
|
|
<p>You can use it using <a href="https://python-gitlab.readthedocs.io/">python-gitlab</a>:</p>
|
|
<div class="highlight"><pre><span></span><code>pipx<span class="w"> </span>install<span class="w"> </span>python-gitlab
|
|
</code></pre></div>
|
|
|
|
<p>And then :</p>
|
|
<div class="highlight"><pre><span></span><code>gitlab<span class="w"> </span>snippet<span class="w"> </span>create<span class="w"> </span>--title<span class="o">=</span><span class="s2">"youpi"</span><span class="w"> </span>--file-name<span class="o">=</span><span class="s2">"snip.py"</span><span class="w"> </span>--content<span class="w"> </span>snip.py<span class="w"> </span>--visibility<span class="o">=</span><span class="s2">"public"</span>
|
|
</code></pre></div>
|
|
|
|
<p>I now wanted a small bash script which will just get the name of the file and infer all the parameters. I asked <span class="caps">GPT</span>-4, and iterated on its answer.</p>
|
|
<p>Here’s the resulting bash script:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
|
|
|
|
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-z<span class="w"> </span><span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span>
|
|
<span class="k">then</span>
|
|
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Please provide a filename"</span>
|
|
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
|
|
<span class="k">fi</span>
|
|
|
|
<span class="nv">file</span><span class="o">=</span><span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span>
|
|
<span class="nv">base</span><span class="o">=</span><span class="k">$(</span>basename<span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="k">)</span>
|
|
<span class="nv">title</span><span class="o">=</span><span class="s2">"</span><span class="nv">$base</span><span class="s2">"</span>
|
|
<span class="nv">visibility</span><span class="o">=</span><span class="s2">"public"</span>
|
|
|
|
<span class="c1"># Use `cat` to fetch the content of the file</span>
|
|
<span class="nv">content</span><span class="o">=</span><span class="k">$(</span>cat<span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="k">)</span>
|
|
|
|
<span class="nv">result</span><span class="o">=</span><span class="k">$(</span>gitlab<span class="w"> </span>snippet<span class="w"> </span>create<span class="w"> </span>--title<span class="o">=</span><span class="s2">"</span><span class="nv">$title</span><span class="s2">"</span><span class="w"> </span>--file-name<span class="o">=</span><span class="s2">"</span><span class="nv">$title</span><span class="s2">"</span><span class="w"> </span>--content<span class="o">=</span><span class="s2">"</span><span class="nv">$content</span><span class="s2">"</span><span class="w"> </span>--visibility<span class="o">=</span><span class="s2">"</span><span class="nv">$visibility</span><span class="s2">"</span><span class="k">)</span>
|
|
|
|
<span class="nv">id</span><span class="o">=</span><span class="k">$(</span><span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$result</span><span class="s2">"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>awk<span class="w"> </span><span class="s1">'/id: / { print $2 }'</span><span class="k">)</span>
|
|
<span class="nb">echo</span><span class="w"> </span><span class="s2">"https://gitlab.com/-/snippets/</span><span class="nv">$id</span><span class="s2">"</span>
|
|
</code></pre></div>
|
|
|
|
<p>I can now do <code>snip README.md</code> and that will create the snippet for me :-)</p>
|
|
</article>
|
|
<footer>
|
|
<a id="feed" href="/feeds/all.atom.xml"><img src="/theme/rss.svg" /></a>
|
|
</footer>
|
|
</div>
|
|
</body>
|
|
|
|
</html> |