268 lines
13 KiB
HTML
268 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="auto">
|
||
|
||
<head><meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<meta name="robots" content="index, follow">
|
||
<title>My First Merged PR! | Norm-working Packets 💾</title>
|
||
<meta name="keywords" content="git, opensource, diy">
|
||
<meta name="description" content="Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug.">
|
||
<meta name="author" content="Me">
|
||
<link rel="canonical" href="../posts/whiptail-first-merged-pr.html">
|
||
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||
<script defer crossorigin="anonymous" src="../assets/js/highlight.f413e19d0714851f6474e7ee9632408e58ac146fbdbe62747134bea2fa3415e0.js" integrity="sha256-9BPhnQcUhR9kdOfuljJAjlisFG+9vmJ0cTS+ovo0FeA="
|
||
onload="hljs.initHighlightingOnLoad();"></script>
|
||
<link rel="icon" href="../favicon.ico">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
|
||
<link rel="apple-touch-icon" href="../apple-touch-icon.png">
|
||
<link rel="mask-icon" href="../safari-pinned-tab.svg">
|
||
<meta name="theme-color" content="#2e2e33">
|
||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||
<noscript>
|
||
<style>
|
||
#theme-toggle,
|
||
.top-link {
|
||
display: none;
|
||
}
|
||
|
||
</style>
|
||
</noscript>
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||
<script>
|
||
var doNotTrack = false;
|
||
if (!doNotTrack) {
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||
}
|
||
</script>
|
||
<meta property="og:title" content="My First Merged PR!" />
|
||
<meta property="og:description" content="Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug." />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:url" content="/posts/whiptail-first-merged-pr.html" />
|
||
<meta property="og:image" content="/merged-pr-accepted.png" /><meta property="article:section" content="posts" />
|
||
<meta property="article:published_time" content="2022-09-01T13:25:02-04:00" />
|
||
<meta property="article:modified_time" content="2022-09-01T13:25:02-04:00" /><meta property="og:site_name" content="Norm-working Packets" />
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:image" content="/merged-pr-accepted.png" />
|
||
<meta name="twitter:title" content="My First Merged PR!"/>
|
||
<meta name="twitter:description" content="Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug."/>
|
||
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BreadcrumbList",
|
||
"itemListElement": [
|
||
{
|
||
"@type": "ListItem",
|
||
"position": 1 ,
|
||
"name": "My First Merged PR!",
|
||
"item": "/posts/whiptail-first-merged-pr.html"
|
||
}
|
||
]
|
||
}
|
||
</script>
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"headline": "My First Merged PR!",
|
||
"name": "My First Merged PR!",
|
||
"description": "Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug.",
|
||
"keywords": [
|
||
"git", "opensource", "diy"
|
||
],
|
||
"articleBody": "Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, found a bug, created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request. It was a great learning experience with git, github, contributing to projects, and more. My first merged PR!\nThe project and library I was using was called Whiptail which allows you to use the terminal message boxes through a python script. Here are their docs. These message boxes are the same that you might see when you install a linux distro from a USB or first install of a server.\nWhat I was using this for is to develop an visually appealing way to use the Meshtastic CLI. There can be a ton of settings and flags to add to your Meshtastic device and adding the flags one by one - or worse, you have to go back and change a flag and you’re not using zsh-vi-mode - can be time consuming. This project would allow you to choose in a whiptail dialog from a list of flags and pass values to the flags. By having them in a navigable list, you can always retract a flag you no longer need.\nThen, once you’ve added everything you need, you confirm, and the command runs and syncs up your Meshtastic device!\nMaybe I’ll post more about that project if I ever get around to finishing it. But since Meshtastic releases new updates on such a regular basis, I need to ensure the project pulls from Meshtastic commands in a more dynamic way.\nAnyway, in this letter to no one, just thought I’d share my excitement.\n",
|
||
"wordCount" : "328",
|
||
"inLanguage": "en",
|
||
"image":"/merged-pr-accepted.png","datePublished": "2022-09-01T13:25:02-04:00",
|
||
"dateModified": "2022-09-01T13:25:02-04:00",
|
||
"author":{
|
||
"@type": "Person",
|
||
"name": "Me"
|
||
},
|
||
"mainEntityOfPage": {
|
||
"@type": "WebPage",
|
||
"@id": "/posts/whiptail-first-merged-pr.html"
|
||
},
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "Norm-working Packets 💾",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "/favicon.ico"
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
</head>
|
||
|
||
<body class=" dark" id="top">
|
||
<script>
|
||
if (localStorage.getItem("pref-theme") === "light") {
|
||
document.body.classList.remove('dark')
|
||
}
|
||
|
||
</script>
|
||
|
||
<header class="header">
|
||
<nav class="nav">
|
||
<div class="logo">
|
||
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||
<div class="logo-switches">
|
||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
</svg>
|
||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<ul id="menu">
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
<main class="main">
|
||
|
||
<article class="post-single">
|
||
<header class="post-header">
|
||
<div class="breadcrumbs"><a href="../">Home</a></div>
|
||
<h1 class="post-title">
|
||
My First Merged PR!
|
||
</h1>
|
||
<div class="post-description">
|
||
Child like joy of having my first merged PR! I recently was using Whiptail library and fixed a bug.
|
||
</div>
|
||
<div class="post-meta"><span title='2022-09-01 13:25:02 -0400 EDT'>September 1, 2022</span> · 2 min · 328 words · Me
|
||
|
||
</div>
|
||
</header>
|
||
<div class="post-content"><p>Admittedly, I feel a bit like a child sharing something like this, as there are so many devs that pull and merge requests
|
||
from contributors on a regular basis. However, while I’ve contributed to documentation and/or tutorials and other non-coding
|
||
portions of repositories, I feel a tiny bit proud that this was the first instance where I was using a library, <a href="https://github.com/domdfcoding/whiptail/issues/41">found a bug</a>,
|
||
created an issue, cloned the repo to my local machine, found and fixed the code, and opened a pull request. It was a great
|
||
learning experience with git, github, contributing to projects, and more. <a href="https://github.com/domdfcoding/whiptail/pull/42">My first merged PR!</a></p>
|
||
<p>The project and library I was using was called <a href="https://github.com/domdfcoding/whiptail">Whiptail</a> which allows you to use
|
||
the terminal message boxes through a python script. <a href="https://whiptail.readthedocs.io/en/latest/">Here are their docs</a>. These message boxes are the same that you might see when you install a linux distro from a USB or first install of a server.</p>
|
||
<p>What I was using this for is to develop an visually appealing way to use the <a href="https://meshtastic.org/docs/software/python/cli">Meshtastic CLI</a>. There can be a ton of
|
||
settings and flags to add to your <a href="https://meshtastic.org/">Meshtastic</a> device and adding the flags one by one - or worse,
|
||
you have to go back and change a flag and you’re not using <a href="https://github.com/jeffreytse/zsh-vi-mode">zsh-vi-mode</a> - can be
|
||
time consuming. This project would allow you to choose in a whiptail dialog from a list of flags and pass values to the
|
||
flags. By having them in a navigable list, you can always retract a flag you no longer need.</p>
|
||
<p>Then, once you’ve added everything you need, you confirm, and the command runs and syncs up your Meshtastic device!</p>
|
||
<p>Maybe I’ll post more about that project if I ever get around to finishing it. But since Meshtastic releases new updates on
|
||
such a regular basis, I need to ensure the project pulls from Meshtastic commands in a more dynamic way.</p>
|
||
<p>Anyway, in this letter to no one, just thought I’d share my excitement.</p>
|
||
|
||
|
||
</div>
|
||
|
||
<footer class="post-footer">
|
||
<ul class="post-tags">
|
||
<li><a href="../tags/git.html">git</a></li>
|
||
<li><a href="../tags/opensource.html">opensource</a></li>
|
||
<li><a href="../tags/diy.html">diy</a></li>
|
||
</ul>
|
||
<nav class="paginav">
|
||
<a class="prev" href="../posts/npm_to_nginx_tutorial.html">
|
||
<span class="title">« Prev</span>
|
||
<br>
|
||
<span>Tutorial: Move from NginxProxyManager to Nginx</span>
|
||
</a>
|
||
</nav>
|
||
|
||
</footer>
|
||
</article>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<span>© 2023 <a href="../">Norm-working Packets 💾</a></span>
|
||
<span>
|
||
Powered by
|
||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||
</span>
|
||
</footer>
|
||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||
<path d="M12 6H0l6-6z" />
|
||
</svg>
|
||
</a>
|
||
|
||
<script>
|
||
let menu = document.getElementById('menu')
|
||
if (menu) {
|
||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||
menu.onscroll = function () {
|
||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||
}
|
||
}
|
||
|
||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
anchor.addEventListener("click", function (e) {
|
||
e.preventDefault();
|
||
var id = this.getAttribute("href").substr(1);
|
||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||
behavior: "smooth"
|
||
});
|
||
} else {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||
}
|
||
if (id === "top") {
|
||
history.replaceState(null, null, " ");
|
||
} else {
|
||
history.pushState(null, null, `#${id}`);
|
||
}
|
||
});
|
||
});
|
||
|
||
</script>
|
||
<script>
|
||
var mybutton = document.getElementById("top-link");
|
||
window.onscroll = function () {
|
||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||
mybutton.style.visibility = "visible";
|
||
mybutton.style.opacity = "1";
|
||
} else {
|
||
mybutton.style.visibility = "hidden";
|
||
mybutton.style.opacity = "0";
|
||
}
|
||
};
|
||
|
||
</script>
|
||
<script>
|
||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||
if (document.body.className.includes("dark")) {
|
||
document.body.classList.remove('dark');
|
||
localStorage.setItem("pref-theme", 'light');
|
||
} else {
|
||
document.body.classList.add('dark');
|
||
localStorage.setItem("pref-theme", 'dark');
|
||
}
|
||
})
|
||
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|