@cloud-cli/cli
v2.0.1
Published
CLI for the Cloud CLI project
Downloads
191
Readme
Cloudy CLI
What is cloudy?
Cloudy is a both an HTTP server and a CLI tool, used to run commands on a remote machine using plugins.
So what?
Well, not any commands... You write a script that exports a few functions in an object and Cloudy takes care of exposing it as an API.
Here's an example:
export default {
greeting: {
sayHi() {
return 'Hello!';
}
}
}
And here's what the CLI can do:
cy greeting.sayHi
> Hello!
Concepts
You install the CLI locally, point it to a server and run remote commands.
On the server side, you run the same CLI, but as an HTTP API.
Getting Started
You need a machine with Node.js installed. Then you can install the Cloudy CLI and create a server.
1. Set up the server
Tip: create an alias for Cloudy CLI. Add this to
~/.profile
:alias cy="npx @cloud-cli/cli"
# generate a random key
head -c 5000 /dev/urandom | sha512sum
echo '[paste-the-generated-key-here]' > key
Next, let's create a configuration file called cloudy.conf.mjs
on the server:
// import your plugins
import foo from 'foo-plugin';
import { init } from '@cloud-cli/cli';
function initialize() {
// anything you need to run when the command server starts
}
// export commands from plugins
export default { foo, [init]: initialize };
// optional, change remote port and host
export const apiPort = 1234;
export const apiHost = '0.0.0.0';
And then we start the Cloudy server:
npx @cloud-cli/cli --serve
2. Set up the local CLI
On your local machine, create a configuration file again:
// cloudy.conf.mjs
export default {};
// same port as the config on the server
export const apiPort = 1234;
export const remoteHost = 'your-server.com';
export const key = '[paste-the-generated-key-here]';
And that's it!
Now you can run npx @cloud-cli/cli --help
to get a list of commands available.
How it works
A call to
cy foo.bar --option value
on localhost is converted to a POST request toyour-server.com/foo.bar
with a JSON body{ "option": "value" }
.The server runs your command and sometimes returns an output
The same commands can be executed with
cy
inside the server and in your local machine.And if you need to un the same but from a browser, the entire CLI is also an API