<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>clever tools Archives | Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/blog/tag/clever-tools/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.clever.cloud/blog/tag/clever-tools/</link>
	<description>From Code to Product</description>
	<lastBuildDate>Thu, 23 Oct 2025 13:58:37 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>clever tools Archives | Clever Cloud</title>
	<link>https://www.clever.cloud/blog/tag/clever-tools/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Clever Tools: a year of enhancements for your deployments, on the road to v4</title>
		<link>https://www.clever.cloud/blog/features/2024/12/20/clever-tools-v3/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 09:00:54 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[clever tools]]></category>
		<category><![CDATA[CLI]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=15390</guid>

					<description><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2024 12 17 clever cloud banniere blog clever tools fr 2" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2.png 800w, https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>Our main goal is to offer our users a tool that's easy to handle, makes their lives easier, and can be used in scripts as a complement to <a href="https://www.clever.cloud/developers/api/">our API</a> and <a href="https://console.clever-cloud.com">Console</a>. In 2023, we decided to rework <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">this open source project</a> to give it a new impulse. Here's a report on our first year's work.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">v3: the foundations for renewal</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We started out from an observation: our CLI had not evolved much for two years. Of course, we had released a few updates and beta versions, but nothing more. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yet a tool like Clever Tools is used on a daily basis by our customers, and is vital in the progress of our offering. Based on our public API, it enables us to deliver new services easily and quickly, so that our customers can use them in a wide range of situations.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As we prepared to make major changes to Clever Cloud, Clever Tools had to reflect this evolution. Capitalizing on our teams' growth, Hubert Sablonnière, in charge of the “Front” and lead developer of the project at the time, launched an initiative to integrate new contributors and organize regular exchanges on its progress.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Release of Clever Tools 3.0 at the end of 2023 was an initial turning point. More than just a technical upgrade to Node.js 18, this version paved the way for a more powerful, easy-to-use CLI. Its distribution mode has been entirely reworked to facilitate releases, but also to avoid alpha/beta channels: each PR leads to the creation of test binaries.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our new log stack appeared first in Clever Tools, with text and date/duration search capabilities, improved formatting and more. Above all, this release set the scene for all the enhancements we were planning for 2024.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Streamlined management</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In 2024, we introduced some long-awaited features to simplify your day-to-day operations. In small ways, such as updating zones in auto-completion, no longer having to provide a name when creating an application, <a href="https://www.clever.cloud/developers/doc/develop/tasks/">Clever Tasks</a> creation, displaying useful information at various places. But we've also adopted new paradigms.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The best example is probably the introduction and generalization of the <code>--app</code> option to commands linked to applications in our “Big Summer Update”. Until last July, you had to “link” a Clever Cloud application to a local folder to control it. Since release 3.8.0, this is no longer necessary. You can, for example, <code>clever ssh</code> or <code>clever restart</code> any application simply by specifying its name or ID. It was also at this time that we introduced a command to list all the applications an account has access to, by organization (<code>clever applications list</code>).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We've done the same with the <code>--format</code>/<code>-F</code> option, generalized to as many commands as possible, to provide classic output by default but to be able to request a JSON formatted result, which can be handy in scripts/CI or for passing to tools such as <a href="https://github.com/jqlang/jq" target="_blank" rel="noreferrer noopener">jq</a>/<a href="https://github.com/PaulJuliusMartinez/jless" target="_blank" rel="noreferrer noopener">jless</a>. Sometimes we've also introduced specific formats, such as <code>json-stream</code> for (access) logs, or <code>shell</code> for some commands linked to environment variables.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">An open project that evolves to fit your needs</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Providing greater flexibility of use was another of our concerns this year. Here, one of the best examples is probably the official integration of the clever curl command, which lets you make requests to our API in the context of the current user. This has been accompanied by enhanced context-sensitive help. At the same time, we revamped the <a href="https://github.com/CleverCloud/clever-tools/tree/master/docs#readme">Clever Tools documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It is also through our CLI that we have introduced features enabling us to respond to customer needs, such as the ability <a href="https://www.clever.cloud/developers/changelog/2024-11-27-clever-tools-3.10/">to add plugins</a> as soon as an Elasticsearch add-on is created. With <a href="https://www.clever.cloud/developers/changelog/2024-12-18-clever-tools-3.11/">release 3.11 which went live yesterday</a>, we've introduced a feature flags system that takes over from the old alpha/beta channels. This gives us greater flexibility in the deployment of new features, allowing us to test and refine them according to your feedback. So don't hesitate to share your needs, ideas and comments with us, through<a href="https://github.com/CleverCloud/clever-tools/issues" target="_blank" rel="noreferrer noopener"> issues on the project</a> or even <a href="https://github.com/CleverCloud/clever-tools/pulls" target="_blank" rel="noreferrer noopener">by contributing to it</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># We create a Materia KV add-on
clever addon create kv myMateriaKV

# Then we use it instantly with the experimental clever kv command
clever features enable kv
clever kv myMateriaKV PING

# We write data, instantly replicated over 3 data centers in Paris
clever kv myMateriaKV SET myKey myValue
clever kv myMateriaKV GET myKey</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">The beginning of a technical overhaul, a more didactic approach</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Tools follow our evolution, with the introduction of token expiration dates ( displayed in <code>clever profile</code>), and support for the many add-ons launched this year: <a href="https://www.clever.cloud/developers/doc/addons/keycloak/">Keycloak</a>, <a href="https://www.clever.cloud/developers/doc/addons/materia-kv/">Materia KV</a>, <a href="https://www.clever.cloud/developers/doc/addons/metabase/">Metabase</a>, <a href="https://www.clever.cloud/developers/doc/addons/otoroshi/">Otoroshi with LLM</a>, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The latter were also an opportunity for us to pursue the didactic approach introduced around <code>clever curl</code>, adding instructions following the creation of an add-on. Our aim here is to support our customers in the use of new services and tools, with increasing references to useful information and cross-references to our documentation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But also diagnostic commands such as <code>clever domain diag</code>, which lets you check whether application's DNS are correctly configured. Its addition was accompanied by the <code>clever domain overview</code> command, which lists all the domains and paths linked to your various applications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On the road to v4, a continuous improvement</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We spent part of the summer cleaning up the code under the hood. We migrated to <a href="https://nodejs.org/api/esm.html#modules-ecmascript-modules" target="_blank" rel="noreferrer noopener">EcmaScript Modules</a> (ESM) with the introduction of a bundling step. All this has given us a more modern and maintainable code base, paving the way for future developments in Clever Tools architecture.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>2025 promises to be just as rich in new features, with the imminent arrival of release 4.0. It will mark the transition to Node 22, introduce a new self-packaging build system and continue to improve the user experience. We will also soon add access to Network Groups with the experimental <code>clever ng</code> command.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The focus will be on improved ergonomics, new functionalities and, above all, a complete overhaul of commands naming and organization, which will be introduced progressively. Documentation generation will be automated and releases scheduled on a regular basis. All this will be made possible by a major upgrade of the Clever Tools technical stack.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This new phase reflects our ongoing commitment to provide you with a reliable, efficient tool tailored to your needs. Beyond the technical features, it's the collaboration with our community that guides the evolution of Clever Tools. The changes made since 2023 are just the beginning of a new era for your deployment CLI.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Check back in a few weeks to start discovering all the possibilities version 4 has to offer. Don't forget to follow <a href="https://www.clever.cloud/developers/changelog/">our changelog </a>to be informed of the latest developments.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2024 12 17 clever cloud banniere blog clever tools fr 2" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2.png 800w, https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2024/12/2024-12-17-clever-cloud-banniere-blog-clever-tools-fr-2-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>Our main goal is to offer our users a tool that's easy to handle, makes their lives easier, and can be used in scripts as a complement to <a href="https://www.clever.cloud/developers/api/">our API</a> and <a href="https://console.clever-cloud.com">Console</a>. In 2023, we decided to rework <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">this open source project</a> to give it a new impulse. Here's a report on our first year's work.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">v3: the foundations for renewal</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We started out from an observation: our CLI had not evolved much for two years. Of course, we had released a few updates and beta versions, but nothing more. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yet a tool like Clever Tools is used on a daily basis by our customers, and is vital in the progress of our offering. Based on our public API, it enables us to deliver new services easily and quickly, so that our customers can use them in a wide range of situations.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As we prepared to make major changes to Clever Cloud, Clever Tools had to reflect this evolution. Capitalizing on our teams' growth, Hubert Sablonnière, in charge of the “Front” and lead developer of the project at the time, launched an initiative to integrate new contributors and organize regular exchanges on its progress.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Release of Clever Tools 3.0 at the end of 2023 was an initial turning point. More than just a technical upgrade to Node.js 18, this version paved the way for a more powerful, easy-to-use CLI. Its distribution mode has been entirely reworked to facilitate releases, but also to avoid alpha/beta channels: each PR leads to the creation of test binaries.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our new log stack appeared first in Clever Tools, with text and date/duration search capabilities, improved formatting and more. Above all, this release set the scene for all the enhancements we were planning for 2024.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Streamlined management</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In 2024, we introduced some long-awaited features to simplify your day-to-day operations. In small ways, such as updating zones in auto-completion, no longer having to provide a name when creating an application, <a href="https://www.clever.cloud/developers/doc/develop/tasks/">Clever Tasks</a> creation, displaying useful information at various places. But we've also adopted new paradigms.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The best example is probably the introduction and generalization of the <code>--app</code> option to commands linked to applications in our “Big Summer Update”. Until last July, you had to “link” a Clever Cloud application to a local folder to control it. Since release 3.8.0, this is no longer necessary. You can, for example, <code>clever ssh</code> or <code>clever restart</code> any application simply by specifying its name or ID. It was also at this time that we introduced a command to list all the applications an account has access to, by organization (<code>clever applications list</code>).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We've done the same with the <code>--format</code>/<code>-F</code> option, generalized to as many commands as possible, to provide classic output by default but to be able to request a JSON formatted result, which can be handy in scripts/CI or for passing to tools such as <a href="https://github.com/jqlang/jq" target="_blank" rel="noreferrer noopener">jq</a>/<a href="https://github.com/PaulJuliusMartinez/jless" target="_blank" rel="noreferrer noopener">jless</a>. Sometimes we've also introduced specific formats, such as <code>json-stream</code> for (access) logs, or <code>shell</code> for some commands linked to environment variables.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">An open project that evolves to fit your needs</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Providing greater flexibility of use was another of our concerns this year. Here, one of the best examples is probably the official integration of the clever curl command, which lets you make requests to our API in the context of the current user. This has been accompanied by enhanced context-sensitive help. At the same time, we revamped the <a href="https://github.com/CleverCloud/clever-tools/tree/master/docs#readme">Clever Tools documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It is also through our CLI that we have introduced features enabling us to respond to customer needs, such as the ability <a href="https://www.clever.cloud/developers/changelog/2024-11-27-clever-tools-3.10/">to add plugins</a> as soon as an Elasticsearch add-on is created. With <a href="https://www.clever.cloud/developers/changelog/2024-12-18-clever-tools-3.11/">release 3.11 which went live yesterday</a>, we've introduced a feature flags system that takes over from the old alpha/beta channels. This gives us greater flexibility in the deployment of new features, allowing us to test and refine them according to your feedback. So don't hesitate to share your needs, ideas and comments with us, through<a href="https://github.com/CleverCloud/clever-tools/issues" target="_blank" rel="noreferrer noopener"> issues on the project</a> or even <a href="https://github.com/CleverCloud/clever-tools/pulls" target="_blank" rel="noreferrer noopener">by contributing to it</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># We create a Materia KV add-on
clever addon create kv myMateriaKV

# Then we use it instantly with the experimental clever kv command
clever features enable kv
clever kv myMateriaKV PING

# We write data, instantly replicated over 3 data centers in Paris
clever kv myMateriaKV SET myKey myValue
clever kv myMateriaKV GET myKey</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">The beginning of a technical overhaul, a more didactic approach</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Tools follow our evolution, with the introduction of token expiration dates ( displayed in <code>clever profile</code>), and support for the many add-ons launched this year: <a href="https://www.clever.cloud/developers/doc/addons/keycloak/">Keycloak</a>, <a href="https://www.clever.cloud/developers/doc/addons/materia-kv/">Materia KV</a>, <a href="https://www.clever.cloud/developers/doc/addons/metabase/">Metabase</a>, <a href="https://www.clever.cloud/developers/doc/addons/otoroshi/">Otoroshi with LLM</a>, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The latter were also an opportunity for us to pursue the didactic approach introduced around <code>clever curl</code>, adding instructions following the creation of an add-on. Our aim here is to support our customers in the use of new services and tools, with increasing references to useful information and cross-references to our documentation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But also diagnostic commands such as <code>clever domain diag</code>, which lets you check whether application's DNS are correctly configured. Its addition was accompanied by the <code>clever domain overview</code> command, which lists all the domains and paths linked to your various applications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On the road to v4, a continuous improvement</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We spent part of the summer cleaning up the code under the hood. We migrated to <a href="https://nodejs.org/api/esm.html#modules-ecmascript-modules" target="_blank" rel="noreferrer noopener">EcmaScript Modules</a> (ESM) with the introduction of a bundling step. All this has given us a more modern and maintainable code base, paving the way for future developments in Clever Tools architecture.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>2025 promises to be just as rich in new features, with the imminent arrival of release 4.0. It will mark the transition to Node 22, introduce a new self-packaging build system and continue to improve the user experience. We will also soon add access to Network Groups with the experimental <code>clever ng</code> command.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The focus will be on improved ergonomics, new functionalities and, above all, a complete overhaul of commands naming and organization, which will be introduced progressively. Documentation generation will be automated and releases scheduled on a regular basis. All this will be made possible by a major upgrade of the Clever Tools technical stack.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This new phase reflects our ongoing commitment to provide you with a reliable, efficient tool tailored to your needs. Beyond the technical features, it's the collaboration with our community that guides the evolution of Clever Tools. The changes made since 2023 are just the beginning of a new era for your deployment CLI.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Check back in a few weeks to start discovering all the possibilities version 4 has to offer. Don't forget to follow <a href="https://www.clever.cloud/developers/changelog/">our changelog </a>to be informed of the latest developments.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The story of clever-tools 1.0.0</title>
		<link>https://www.clever.cloud/blog/features/2018/10/15/the-story-of-clever-tools-1-0-0/</link>
		
		<dc:creator><![CDATA[Hubert Sablonnière]]></dc:creator>
		<pubDate>Mon, 15 Oct 2018 16:00:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[clever tools]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[jenkins]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2018/10/15/the-story-of-clever-tools-1-0-0/</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="clever tools 1 0 0 story 1" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-1368x528.png 1368w" sizes="(max-width: 1400px) 100vw, 1400px" /></p><p>We have some news about our dear clever-tools, the Clever Cloud CLI for humans, robots and others.</p>
<p>Back in January, we released version 0.10.1 which contained <a href="https://github.com/CleverCloud/clever-tools/blob/master/CHANGELOG.md#0101-2018-01-16">some new commands and a few bug fixes</a>. Today we&#39;re releasing version 1.0.0!</p>
<p>You can find all the details about the user oriented changes in the <a href="https://github.com/CleverCloud/clever-tools/blob/master/CHANGELOG.md#100-2018-10-15">CHANGELOG</a>. In this article, we&#39;ll cover the structural changes related to the project:</p>
<ul>
<li>Improved error handling = better usage in CI/CD pipelines</li>
<li>ES2015 refactor + ESLint = better contributing experience</li>
<li>Goodbye nodegit, hello isomorphic-git!</li>
<li>Improved Jenkins build = more release methods and beta channel (npm, deb, rpm, arch, homebrew and chocolatey)</li>
</ul>
<p>Now let me tell you the story of this release...</p>
<span id="more-2945"></span>

<h2 id="improved-error-handling--better-usage-in-cicd-pipelines">Improved error handling = better usage in CI/CD pipelines</h2>
<p>It all started with <a href="https://github.com/CleverCloud/clever-tools/issues/195">issue 195</a>. With the previous version, when a user tried to <code>clever deploy</code> a non existing branch, the error message was <a href="https://github.com/CleverCloud/clever-tools/issues/195#issuecomment-371101087">a bit too raw</a>. Our colleague <a href="https://twitter.com/k33g_org">Philippe</a> wanted emojis, but we had to decline 😭.</p>
<p>While investigating this error message and how to improve it, we realized that the command was not returning a proper error exit status. This is a very important rule to follow when you&#39;re writing a terminal command/script:</p>
<ul>
<li>If everything went well: return exit status <code>0</code></li>
<li>If something went wrong: return exit status <code>1</code> (or <a href="http://www.tldp.org/LDP/abs/html/exitcodes.html">another one more specific</a>)</li>
</ul>
<p>Our CLI is built for humans AND robots. We want to empower our terminal addicted users. Moreover, we want to empower our users to automate anything related to Clever Cloud in their CI/CD pipeline. In such cases, returning a proper error exit status is crucial to mark a CI/CD job as successful or failed.</p>
<p>We took a quick look at the rest of the codebase and noticed that other commands were concerned by this problem. We reworked the code of <code>clever deploy</code> and decided to apply the same error handling to all the other commands:</p>
<ul>
<li>For humans: Always have an <code>[ERROR]</code> prefix (colored in red) when we display an error message.</li>
<li>For robots: Always log error messages to <code>stderr</code>.</li>
<li>For robots: Always return <code>1</code> as exit status when something goes wrong.</li>
</ul>
<p>This obviously required some significant work. We had to go through all the 28 commands. Nevertheless, we&#39;re sure this will help you to build more robust and automated jobs, interacting with the Clever Cloud platform.</p>
<h2 id="es2015-refactor--eslint--better-contributing-experience">ES2015 refactor + ESLint = better contributing experience</h2>
<p>While we went through the codebase, we took the opportunity to do a bit of refactoring.</p>
<p>First, we decided to update all our code to ES2015+ syntax. We tried to use most of the modern good practices of the JavaScript ecosystem when it made sense (destructuring, rest parameters, fat arrows...). We also decided to setup an <a href="https://github.com/CleverCloud/clever-tools/blob/master/.eslintrc.js">ESLint config file</a> (based on <a href="https://github.com/standard/standard">StandardJS</a>) to enforce our codestyle for the next iterations. This lint check is now part of our automated test suite on <a href="https://travis-ci.org/CleverCloud/clever-tools">Travis CI</a> which is triggered on each pull-request.</p>
<p>This big refactoring took some time but it allowed us to reduce the number of lines of code while improving the overall consistency and readability. We hope this will drive more users to customize the clever-tools and propose pull-requests for bug fixes and feature requests.</p>
<p>Looking at how easily the new <code>clever console</code> was added by <a href="https://github.com/CleverCloud/clever-tools/pull/248">an outside contributor</a>, it seems like we&#39;re on the right path.</p>
<h2 id="goodbye-nodegit">Goodbye nodegit</h2>
<p>During this refactoring, we updated most of our dependencies but one of them required special attention: <a href="https://github.com/nodegit/nodegit">NodeGit</a>.</p>
<p>NodeGit is a node.js module which provides bindings over <a href="https://libgit2.org/">libgit2</a>, a portable and pure C implementation of the git core methods. This is commonly referred to as a &quot;native module&quot; in the node.js ecosystem. Each time you install NodeGit, npm will try to build libgit2 from source (in some situations, it will try to download pre-builds). Because we want our users to have a straightforward installation experience, this native module thing had many drawbacks:</p>
<ul>
<li>In our Travis CI config, we had to <a href="https://github.com/CleverCloud/clever-tools/blob/0.10.0/.travis.yml#L5-L10">install some native dependencies</a> so npm could build libgit2 from source.</li>
<li>Some of our users tried to install the clever-tools via npm and had difficulties because of this.</li>
<li>Our users don&#39;t all use the same version of node.js, this also multiplied the number of weird cases we had to support.</li>
<li>Each time we wanted to update NodeGit, it was a puzzle to resolve.</li>
</ul>
<p>All those problems pushed us to stop releasing the clever-tools via npm. ⚠️ SPOILER ALERT: it&#39;s back for version 1.0.0.</p>
<p>The second problem is that we use <a href="https://github.com/zeit/pkg/">pkg</a>. This tool is great. It lets you compile a node.js project to different portable binaries for MacOS, Windows and GNU/Linux. We&#39;ve been using it for a while to provide various installation methods. When we dropped installation via npm for 0.10.1, the binaries built with pkg where the only official way to use the clever-tools.</p>
<p>This mix of NodeGit + pkg complicated the situation even more:</p>
<ul>
<li>The binaries built with pkg did not include native dependencies. We had to distribute the right <code>nodegit.node</code> file along with our main binary file and users had to have it in their <code>PATH</code>.</li>
<li>On some GNU/Linux distributions, we <a href="https://github.com/nodegit/nodegit/search?q=libcurl-gnutls&amp;type=Issues">had problems with native dependencies</a> like <code>libcurl-gnutls</code>, <code>libnghttp2-git</code> or <code>libssh2</code></li>
</ul>
<p>We already looked for a replacement solution but a fairly new one came up <a href="https://twitter.com/mojavelinux/status/968432035680284673">to our attention in February</a>...</p>
<h2 id="hello-isomorphic-git">Hello isomorphic-git</h2>
<p><a href="https://github.com/isomorphic-git/isomorphic-git">isomorphic-git</a> is a &quot;pure JavaScript implementation of git that works in node and browser environments&quot;. The project was created by <a href="https://twitter.com/wmhilton">William Hilton</a>. This guy is awesome!</p>
<p>As I said, we heard about it in February but we only tried to use it for our use-case in July. It does not support all the git feature set (yet) but it has strong foundations and we only need a few things for the clever-tools:</p>
<ul>
<li>list and resolve branches</li>
<li>list and resolve commits</li>
<li>add/rm remotes</li>
<li>push to repos (via HTTPS)</li>
</ul>
<p>We were missing a few features so we reached out to William to see if we could help and/or contribute. In the end, <a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=hsablonniere">we contributed a few features</a> in the codebase and <a href="https://isomorphic-git.org/blog/2018/07/23/isomorphic-git-dot-org-corporate-sponsors-and-a-new-CORS-proxy">we sponsored the hosting of the CORS-proxy</a> which is used to demo the project in browsers.</p>
<p>By replacing NodeGit with isomorphic-git, we can say goodbye to most of the problems we described earlier:</p>
<ul>
<li>no need to worry about different node.js versions</li>
<li>no need to have native dependencies on our CI server to build/test the project</li>
<li>no need to distribute <code>nodegit.node</code> with the pkg binary</li>
<li>no need for a user to have the right native dependencies on his/her system to use it</li>
<li>npm releases are back</li>
</ul>
<h2 id="improved-jenkins-build--more-release-methods-and-beta-channel">Improved Jenkins build = more release methods and beta channel</h2>
<p>Because we decided to ditch NodeGit, we were able to simplify the packaging (no more <code>nodegit.node</code> and no native dependencies). This required some rework on our Jenkins builds but it was a good occasion to migrate 5 different jobs to one multibranch pipeline project.</p>
<p>We&#39;ll discuss the details of this new build system and how we set it up in another article. For now though, here&#39;s what changed:</p>
<ul>
<li>All platforms:<ul>
<li>Added: installation via npm is back</li>
</ul>
</li>
<li>GNU/Linux:<ul>
<li>Added: rpm packages (stable &amp; beta) with a <a href="https://bintray.com/clevercloud/rpm/clever-tools">yum repo on Bintray</a></li>
<li>Added: deb packages (stable &amp; beta) with an <a href="https://bintray.com/clevercloud/deb/clever-tools">apt repo on Bintray</a></li>
<li>Added: Exherbo exheres <a href="https://github.com/CleverCloud/CleverCloud-exheres/tree/master/packages/dev-util/clever-tools-bin">clever-tools-bin</a></li>
<li>Changed: <a href="https://aur.archlinux.org/packages/clever-tools-bin">dedicated AUR package</a> for beta versions</li>
</ul>
</li>
<li>MacOS:<ul>
<li>Changed: <a href="https://github.com/CleverCloud/homebrew-tap">dedicated homebrew tap</a> for beta versions</li>
</ul>
</li>
<li>Windows:<ul>
<li>Changed: chocolatey packages are now automatically published (no more manual upload, no more manual review from chocolatey&#39;s team)</li>
<li>Changed: chocolatey packages are no longer published on chocolatey.org</li>
<li>Changed: chocolatey packages are published (beta &amp; stable) on <a href="https://bintray.com/clevercloud/nupkg/clever-tools">Bintray</a> but you can still use the <code>choco</code> CLI to install them (see <a href="https://github.com/CleverCloud/clever-tools/#using-chocolatey">chocolatey installation docs</a> for the specifics).</li>
</ul>
</li>
</ul>
<p>The structural changes of this release will help us to be more reactive on the project. We&#39;ll be able to publish new features and bug fixes more easily and more often. Hopefully, this will improve the quality of the clever-tools and push more customers who only use the Web console to try the CLI way of life.</p>
<p>We&#39;re looking forward to read your feedbacks on this release through are usual channels: support chat, email, Twitter, GitHub issues…</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="clever tools 1 0 0 story 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1.png 1400w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/clever-tools-1-0-0-story-1-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><p>We have some news about our dear clever-tools, the Clever Cloud CLI for humans, robots and others.</p>
<p>Back in January, we released version 0.10.1 which contained <a href="https://github.com/CleverCloud/clever-tools/blob/master/CHANGELOG.md#0101-2018-01-16">some new commands and a few bug fixes</a>. Today we&#39;re releasing version 1.0.0!</p>
<p>You can find all the details about the user oriented changes in the <a href="https://github.com/CleverCloud/clever-tools/blob/master/CHANGELOG.md#100-2018-10-15">CHANGELOG</a>. In this article, we&#39;ll cover the structural changes related to the project:</p>
<ul>
<li>Improved error handling = better usage in CI/CD pipelines</li>
<li>ES2015 refactor + ESLint = better contributing experience</li>
<li>Goodbye nodegit, hello isomorphic-git!</li>
<li>Improved Jenkins build = more release methods and beta channel (npm, deb, rpm, arch, homebrew and chocolatey)</li>
</ul>
<p>Now let me tell you the story of this release...</p>
<span id="more-2945"></span>

<h2 id="improved-error-handling--better-usage-in-cicd-pipelines">Improved error handling = better usage in CI/CD pipelines</h2>
<p>It all started with <a href="https://github.com/CleverCloud/clever-tools/issues/195">issue 195</a>. With the previous version, when a user tried to <code>clever deploy</code> a non existing branch, the error message was <a href="https://github.com/CleverCloud/clever-tools/issues/195#issuecomment-371101087">a bit too raw</a>. Our colleague <a href="https://twitter.com/k33g_org">Philippe</a> wanted emojis, but we had to decline 😭.</p>
<p>While investigating this error message and how to improve it, we realized that the command was not returning a proper error exit status. This is a very important rule to follow when you&#39;re writing a terminal command/script:</p>
<ul>
<li>If everything went well: return exit status <code>0</code></li>
<li>If something went wrong: return exit status <code>1</code> (or <a href="http://www.tldp.org/LDP/abs/html/exitcodes.html">another one more specific</a>)</li>
</ul>
<p>Our CLI is built for humans AND robots. We want to empower our terminal addicted users. Moreover, we want to empower our users to automate anything related to Clever Cloud in their CI/CD pipeline. In such cases, returning a proper error exit status is crucial to mark a CI/CD job as successful or failed.</p>
<p>We took a quick look at the rest of the codebase and noticed that other commands were concerned by this problem. We reworked the code of <code>clever deploy</code> and decided to apply the same error handling to all the other commands:</p>
<ul>
<li>For humans: Always have an <code>[ERROR]</code> prefix (colored in red) when we display an error message.</li>
<li>For robots: Always log error messages to <code>stderr</code>.</li>
<li>For robots: Always return <code>1</code> as exit status when something goes wrong.</li>
</ul>
<p>This obviously required some significant work. We had to go through all the 28 commands. Nevertheless, we&#39;re sure this will help you to build more robust and automated jobs, interacting with the Clever Cloud platform.</p>
<h2 id="es2015-refactor--eslint--better-contributing-experience">ES2015 refactor + ESLint = better contributing experience</h2>
<p>While we went through the codebase, we took the opportunity to do a bit of refactoring.</p>
<p>First, we decided to update all our code to ES2015+ syntax. We tried to use most of the modern good practices of the JavaScript ecosystem when it made sense (destructuring, rest parameters, fat arrows...). We also decided to setup an <a href="https://github.com/CleverCloud/clever-tools/blob/master/.eslintrc.js">ESLint config file</a> (based on <a href="https://github.com/standard/standard">StandardJS</a>) to enforce our codestyle for the next iterations. This lint check is now part of our automated test suite on <a href="https://travis-ci.org/CleverCloud/clever-tools">Travis CI</a> which is triggered on each pull-request.</p>
<p>This big refactoring took some time but it allowed us to reduce the number of lines of code while improving the overall consistency and readability. We hope this will drive more users to customize the clever-tools and propose pull-requests for bug fixes and feature requests.</p>
<p>Looking at how easily the new <code>clever console</code> was added by <a href="https://github.com/CleverCloud/clever-tools/pull/248">an outside contributor</a>, it seems like we&#39;re on the right path.</p>
<h2 id="goodbye-nodegit">Goodbye nodegit</h2>
<p>During this refactoring, we updated most of our dependencies but one of them required special attention: <a href="https://github.com/nodegit/nodegit">NodeGit</a>.</p>
<p>NodeGit is a node.js module which provides bindings over <a href="https://libgit2.org/">libgit2</a>, a portable and pure C implementation of the git core methods. This is commonly referred to as a &quot;native module&quot; in the node.js ecosystem. Each time you install NodeGit, npm will try to build libgit2 from source (in some situations, it will try to download pre-builds). Because we want our users to have a straightforward installation experience, this native module thing had many drawbacks:</p>
<ul>
<li>In our Travis CI config, we had to <a href="https://github.com/CleverCloud/clever-tools/blob/0.10.0/.travis.yml#L5-L10">install some native dependencies</a> so npm could build libgit2 from source.</li>
<li>Some of our users tried to install the clever-tools via npm and had difficulties because of this.</li>
<li>Our users don&#39;t all use the same version of node.js, this also multiplied the number of weird cases we had to support.</li>
<li>Each time we wanted to update NodeGit, it was a puzzle to resolve.</li>
</ul>
<p>All those problems pushed us to stop releasing the clever-tools via npm. ⚠️ SPOILER ALERT: it&#39;s back for version 1.0.0.</p>
<p>The second problem is that we use <a href="https://github.com/zeit/pkg/">pkg</a>. This tool is great. It lets you compile a node.js project to different portable binaries for MacOS, Windows and GNU/Linux. We&#39;ve been using it for a while to provide various installation methods. When we dropped installation via npm for 0.10.1, the binaries built with pkg where the only official way to use the clever-tools.</p>
<p>This mix of NodeGit + pkg complicated the situation even more:</p>
<ul>
<li>The binaries built with pkg did not include native dependencies. We had to distribute the right <code>nodegit.node</code> file along with our main binary file and users had to have it in their <code>PATH</code>.</li>
<li>On some GNU/Linux distributions, we <a href="https://github.com/nodegit/nodegit/search?q=libcurl-gnutls&amp;type=Issues">had problems with native dependencies</a> like <code>libcurl-gnutls</code>, <code>libnghttp2-git</code> or <code>libssh2</code></li>
</ul>
<p>We already looked for a replacement solution but a fairly new one came up <a href="https://twitter.com/mojavelinux/status/968432035680284673">to our attention in February</a>...</p>
<h2 id="hello-isomorphic-git">Hello isomorphic-git</h2>
<p><a href="https://github.com/isomorphic-git/isomorphic-git">isomorphic-git</a> is a &quot;pure JavaScript implementation of git that works in node and browser environments&quot;. The project was created by <a href="https://twitter.com/wmhilton">William Hilton</a>. This guy is awesome!</p>
<p>As I said, we heard about it in February but we only tried to use it for our use-case in July. It does not support all the git feature set (yet) but it has strong foundations and we only need a few things for the clever-tools:</p>
<ul>
<li>list and resolve branches</li>
<li>list and resolve commits</li>
<li>add/rm remotes</li>
<li>push to repos (via HTTPS)</li>
</ul>
<p>We were missing a few features so we reached out to William to see if we could help and/or contribute. In the end, <a href="https://github.com/isomorphic-git/isomorphic-git/commits?author=hsablonniere">we contributed a few features</a> in the codebase and <a href="https://isomorphic-git.org/blog/2018/07/23/isomorphic-git-dot-org-corporate-sponsors-and-a-new-CORS-proxy">we sponsored the hosting of the CORS-proxy</a> which is used to demo the project in browsers.</p>
<p>By replacing NodeGit with isomorphic-git, we can say goodbye to most of the problems we described earlier:</p>
<ul>
<li>no need to worry about different node.js versions</li>
<li>no need to have native dependencies on our CI server to build/test the project</li>
<li>no need to distribute <code>nodegit.node</code> with the pkg binary</li>
<li>no need for a user to have the right native dependencies on his/her system to use it</li>
<li>npm releases are back</li>
</ul>
<h2 id="improved-jenkins-build--more-release-methods-and-beta-channel">Improved Jenkins build = more release methods and beta channel</h2>
<p>Because we decided to ditch NodeGit, we were able to simplify the packaging (no more <code>nodegit.node</code> and no native dependencies). This required some rework on our Jenkins builds but it was a good occasion to migrate 5 different jobs to one multibranch pipeline project.</p>
<p>We&#39;ll discuss the details of this new build system and how we set it up in another article. For now though, here&#39;s what changed:</p>
<ul>
<li>All platforms:<ul>
<li>Added: installation via npm is back</li>
</ul>
</li>
<li>GNU/Linux:<ul>
<li>Added: rpm packages (stable &amp; beta) with a <a href="https://bintray.com/clevercloud/rpm/clever-tools">yum repo on Bintray</a></li>
<li>Added: deb packages (stable &amp; beta) with an <a href="https://bintray.com/clevercloud/deb/clever-tools">apt repo on Bintray</a></li>
<li>Added: Exherbo exheres <a href="https://github.com/CleverCloud/CleverCloud-exheres/tree/master/packages/dev-util/clever-tools-bin">clever-tools-bin</a></li>
<li>Changed: <a href="https://aur.archlinux.org/packages/clever-tools-bin">dedicated AUR package</a> for beta versions</li>
</ul>
</li>
<li>MacOS:<ul>
<li>Changed: <a href="https://github.com/CleverCloud/homebrew-tap">dedicated homebrew tap</a> for beta versions</li>
</ul>
</li>
<li>Windows:<ul>
<li>Changed: chocolatey packages are now automatically published (no more manual upload, no more manual review from chocolatey&#39;s team)</li>
<li>Changed: chocolatey packages are no longer published on chocolatey.org</li>
<li>Changed: chocolatey packages are published (beta &amp; stable) on <a href="https://bintray.com/clevercloud/nupkg/clever-tools">Bintray</a> but you can still use the <code>choco</code> CLI to install them (see <a href="https://github.com/CleverCloud/clever-tools/#using-chocolatey">chocolatey installation docs</a> for the specifics).</li>
</ul>
</li>
</ul>
<p>The structural changes of this release will help us to be more reactive on the project. We&#39;ll be able to publish new features and bug fixes more easily and more often. Hopefully, this will improve the quality of the clever-tools and push more customers who only use the Web console to try the CLI way of life.</p>
<p>We&#39;re looking forward to read your feedbacks on this release through are usual channels: support chat, email, Twitter, GitHub issues…</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Clever Tools Packaged!</title>
		<link>https://www.clever.cloud/blog/features/2017/09/06/clever-tools-packaged-windows-macos-gnu-linux/</link>
		
		<dc:creator><![CDATA[Clément Nivolle]]></dc:creator>
		<pubDate>Wed, 06 Sep 2017 11:47:00 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[clever tools]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[command line tool]]></category>
		<guid isPermaLink="false">https://www2.cleverapps.io/wp/blog/technology/2017/09/06/clever-tools-packaged-windows-macos-gnu-linux/</guid>

					<description><![CDATA[<p><img width="1440" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="clever cli packaged 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1.png 1440w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-300x113.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-1024x384.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-768x288.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-1368x513.png 1368w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>We have packaged the Clever Tools CLI for Windows, MacOs &amp; GNU/Linux. This makes it way easier to setup. Discover how to do it for these platforms.

<span id="more-2901"></span>
<h2 id="clever-tools-should-better-be-called-clever-cool">Clever Tools should better be called Clever Cool</h2>
First of all, what is Clever Tools? Ok, basically it's all what you can do in the <a href="https://api.clever-cloud.com/v2/sessions/login/">console.clever-cloud.com</a> web UI but through a command line tool.

How is that awesome?

Well, it is. For most of our users, going back and forth in the web console is slowing their development workflow. Even if the web console is indispensable for people more comfortable with it, we wanted our users to be able to exactly to do the same in both. By the way, did you know you can also use the API to do everything?

Anyway, the cool part with Clever Tools is that you stay in the comfy shell. You can use Clever Tools along with vim, git and even grep. That's pretty handy to manage logs for instance.

Earlier this year, we released <a href="https://www.clever.cloud/blog/features/2017/02/09/clever-tools-release/">new features in the CLI 0.7.0</a> such as fine-grained access to logs, ssh into a running instance for debugging purposes (eg. list files, view logs locally,...)

So here is a short review of whay you can do:
<pre><code class="language-bash"># Deploying on the production server
$ clever deploy --alias prod
# Displaying the (live-updated) status of an app
$ clever activity --follow --alias preprod
# Show the logs
$ clever logs
# Create a free plan PG addon named my-addon in the Montreal zone
$ clever addon create postgresql-addon my-addon-pg --plan dev --region mtl
# Create a node.js app named my-app-dev in the Paris zone
$ clever create my-app-dev --type node --alias dev --region par
</code></pre>
But you can also set notifications, start and stop your apps... well, as we said: everything!

If you want to dig it a bit more, you will find<a href="https://www.clever.cloud/developers/doc/quickstart"> everything you can do within the CLI.</a>

Ok, but I already knew all that!

Ok, now what's new is that we packaged Clever Tools for Windows, GNU/Linux and MacOS.

But why is that a big deal?

Before that, you had to download and install node and npm to install <code>clever tools</code>. Now it's over, it's all packaged in a binary and very easy to setup.
<h2 id="how-to-install-on-macos">How to install on MacOS?</h2>
Clever Tools is packaged using <a href="https://brew.sh/">Homebrew</a>:
<pre><code class="language-bash">brew install CleverCloud/tap/clever-tools
</code></pre>
If you don't want to use <code>brew</code>, a pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_macos.tar.gz">clever-tools-0.9.0_macos.tar.gz</a>. You need to put both files (<code>clever</code> and <code>nodegit.node</code>) in your <code>PATH</code> to use the application.
<h3 id="autocompletion">Autocompletion</h3>
Clever Tools comes with a comprehensive auto-completion system. The brew package installs it automatically (for <code>bash</code> and <code>zsh</code>). Make sure <code>bash-completions</code> or <code>zsh-completions</code> are properly set up.
<pre><code class="language-bash"># In ~/.bash_profile
./usr/local/etc/bash_completion

# In ~/.zshrc
fpath=(/usr/local/share/zsh-completions $fpath)
</code></pre>
<a href="https://www.clever.cloud/developers/clever-tools/getting_started/#macos">Documentation</a>.
<h2 id="how-to-install-on-windows">How to install on Windows?</h2>
Clever Tools is packaged using <a href="https://chocolatey.org/">Chocolatey</a>:
<pre><code class="language-bash">choco install clever-tools
</code></pre>
If you don't want to use <code>chocolatey</code>, a pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_windows.zip">clever-tools-0.9.0_windows.zip</a>. You need to add both files (<code>clever.exe</code> and <code>nodegit.node</code>) to your <code>PATH</code> to use the application.

<a href="https://www.clever.cloud/developers/clever-tools/getting_started/#windows">Documentation</a>.
<h2 id="for-gnulinux">For GNU/Linux</h2>
Now what, we are still hesitating on the distributions to package it for. We would like to have your feedback on that. Feel free to give your point of view in the comments below are by email @ <a href="mailto:support@clever-cloud.com">support@clever-cloud.com</a>. Also, if someone wants to manage a PPA, that would be great.

A pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_linux.tar.gz">clever-tools-0.9.0_linux.tar.gz</a>. You need to add both files (clever and nodegit.node) to your <code>PATH</code> to use the application.
<h3 id="autocompletion-1">Autocompletion</h3>
Clever Tools comes with a comprehensive auto-completion system, this is one way to install it:
<pre><code class="language-bash"># for bash
clever --bash-autocomplete-script $(which clever) | sudo tee /usr/share/bash-completion/completions/clever

# for zsh
clever --zsh-autocomplete-script $(which clever) | sudo tee /usr/share/zsh/site-functions
</code></pre>
<h3 id="in-case-of-libcurl-version-mismatch">In case of libcurl version mismatch</h3>
On some distributions (eg. archlinux), a <code>libcurl</code> version mismatch between the system default and the expected version can happen. If you see <code>Error: /usr/lib/libcurl.so.4: version 'CURL_OPENSSL_3' not found (required by /usr/bin/nodegit.node)</code> in the logs, you can fix the issue by using a compatible libcurl version:
<pre><code class="language-bash"># install libcurl-compat
pacman -S libcurl-compat # on archlinux

# add an alias to start clever tools with a compatible libcurl version
alias clever='LD_PRELOAD=libcurl.so.3 clever'
</code></pre>
<h3 id="manual-installation-advanced">Manual installation (advanced)</h3>
Even though we provide packaged versions, you can still install Clever Tools with npm: <code>npm install -g clever-tools</code>.

You can also install it from <a href="https://github.com/CleverCloud/clever-tools">source</a>.
<h2 id="thats-all-folks">That's all folks!</h2>
We hope you will enjoy these improvements and use more Clever Tools.

As always, feel free to contact us for any feedback. Have a look at the <a href="https://github.com/CleverCloud/clever-tools/issues">open issues</a>.]]></description>
										<content:encoded><![CDATA[<p><img width="1440" height="540" src="https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="clever cli packaged 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1.png 1440w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-300x113.png 300w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-1024x384.png 1024w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-768x288.png 768w, https://cdn.clever-cloud.com/uploads/2021/08/clever-cli-packaged-1-1368x513.png 1368w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></p>We have packaged the Clever Tools CLI for Windows, MacOs &amp; GNU/Linux. This makes it way easier to setup. Discover how to do it for these platforms.

<span id="more-2901"></span>
<h2 id="clever-tools-should-better-be-called-clever-cool">Clever Tools should better be called Clever Cool</h2>
First of all, what is Clever Tools? Ok, basically it's all what you can do in the <a href="https://api.clever-cloud.com/v2/sessions/login/">console.clever-cloud.com</a> web UI but through a command line tool.

How is that awesome?

Well, it is. For most of our users, going back and forth in the web console is slowing their development workflow. Even if the web console is indispensable for people more comfortable with it, we wanted our users to be able to exactly to do the same in both. By the way, did you know you can also use the API to do everything?

Anyway, the cool part with Clever Tools is that you stay in the comfy shell. You can use Clever Tools along with vim, git and even grep. That's pretty handy to manage logs for instance.

Earlier this year, we released <a href="https://www.clever.cloud/blog/features/2017/02/09/clever-tools-release/">new features in the CLI 0.7.0</a> such as fine-grained access to logs, ssh into a running instance for debugging purposes (eg. list files, view logs locally,...)

So here is a short review of whay you can do:
<pre><code class="language-bash"># Deploying on the production server
$ clever deploy --alias prod
# Displaying the (live-updated) status of an app
$ clever activity --follow --alias preprod
# Show the logs
$ clever logs
# Create a free plan PG addon named my-addon in the Montreal zone
$ clever addon create postgresql-addon my-addon-pg --plan dev --region mtl
# Create a node.js app named my-app-dev in the Paris zone
$ clever create my-app-dev --type node --alias dev --region par
</code></pre>
But you can also set notifications, start and stop your apps... well, as we said: everything!

If you want to dig it a bit more, you will find<a href="https://www.clever.cloud/developers/doc/quickstart"> everything you can do within the CLI.</a>

Ok, but I already knew all that!

Ok, now what's new is that we packaged Clever Tools for Windows, GNU/Linux and MacOS.

But why is that a big deal?

Before that, you had to download and install node and npm to install <code>clever tools</code>. Now it's over, it's all packaged in a binary and very easy to setup.
<h2 id="how-to-install-on-macos">How to install on MacOS?</h2>
Clever Tools is packaged using <a href="https://brew.sh/">Homebrew</a>:
<pre><code class="language-bash">brew install CleverCloud/tap/clever-tools
</code></pre>
If you don't want to use <code>brew</code>, a pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_macos.tar.gz">clever-tools-0.9.0_macos.tar.gz</a>. You need to put both files (<code>clever</code> and <code>nodegit.node</code>) in your <code>PATH</code> to use the application.
<h3 id="autocompletion">Autocompletion</h3>
Clever Tools comes with a comprehensive auto-completion system. The brew package installs it automatically (for <code>bash</code> and <code>zsh</code>). Make sure <code>bash-completions</code> or <code>zsh-completions</code> are properly set up.
<pre><code class="language-bash"># In ~/.bash_profile
./usr/local/etc/bash_completion

# In ~/.zshrc
fpath=(/usr/local/share/zsh-completions $fpath)
</code></pre>
<a href="https://www.clever.cloud/developers/clever-tools/getting_started/#macos">Documentation</a>.
<h2 id="how-to-install-on-windows">How to install on Windows?</h2>
Clever Tools is packaged using <a href="https://chocolatey.org/">Chocolatey</a>:
<pre><code class="language-bash">choco install clever-tools
</code></pre>
If you don't want to use <code>chocolatey</code>, a pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_windows.zip">clever-tools-0.9.0_windows.zip</a>. You need to add both files (<code>clever.exe</code> and <code>nodegit.node</code>) to your <code>PATH</code> to use the application.

<a href="https://www.clever.cloud/developers/clever-tools/getting_started/#windows">Documentation</a>.
<h2 id="for-gnulinux">For GNU/Linux</h2>
Now what, we are still hesitating on the distributions to package it for. We would like to have your feedback on that. Feel free to give your point of view in the comments below are by email @ <a href="mailto:support@clever-cloud.com">support@clever-cloud.com</a>. Also, if someone wants to manage a PPA, that would be great.

A pre-compiled version is available: <a href="https://clever-tools.cellar.services.clever-cloud.com/releases/0.9.0/clever-tools-0.9.0_linux.tar.gz">clever-tools-0.9.0_linux.tar.gz</a>. You need to add both files (clever and nodegit.node) to your <code>PATH</code> to use the application.
<h3 id="autocompletion-1">Autocompletion</h3>
Clever Tools comes with a comprehensive auto-completion system, this is one way to install it:
<pre><code class="language-bash"># for bash
clever --bash-autocomplete-script $(which clever) | sudo tee /usr/share/bash-completion/completions/clever

# for zsh
clever --zsh-autocomplete-script $(which clever) | sudo tee /usr/share/zsh/site-functions
</code></pre>
<h3 id="in-case-of-libcurl-version-mismatch">In case of libcurl version mismatch</h3>
On some distributions (eg. archlinux), a <code>libcurl</code> version mismatch between the system default and the expected version can happen. If you see <code>Error: /usr/lib/libcurl.so.4: version 'CURL_OPENSSL_3' not found (required by /usr/bin/nodegit.node)</code> in the logs, you can fix the issue by using a compatible libcurl version:
<pre><code class="language-bash"># install libcurl-compat
pacman -S libcurl-compat # on archlinux

# add an alias to start clever tools with a compatible libcurl version
alias clever='LD_PRELOAD=libcurl.so.3 clever'
</code></pre>
<h3 id="manual-installation-advanced">Manual installation (advanced)</h3>
Even though we provide packaged versions, you can still install Clever Tools with npm: <code>npm install -g clever-tools</code>.

You can also install it from <a href="https://github.com/CleverCloud/clever-tools">source</a>.
<h2 id="thats-all-folks">That's all folks!</h2>
We hope you will enjoy these improvements and use more Clever Tools.

As always, feel free to contact us for any feedback. Have a look at the <a href="https://github.com/CleverCloud/clever-tools/issues">open issues</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
