lib/renuo/cli.rb in renuo-cli-4.5.0 vs lib/renuo/cli.rb in renuo-cli-4.5.1
- old
+ new
@@ -1,122 +1,122 @@
# frozen_string_literal: true
-require 'renuo/cli/version'
-require 'rubygems'
-require 'gems'
-require 'colorize'
-require 'tmpdir'
-require 'net/http'
-require 'renuo/cli/app/services/renuo_cli_config'
-require 'renuo/cli/app/name_display'
-require 'renuo/cli/app/local_storage'
-require 'renuo/cli/app/list_large_git_files'
-require 'renuo/cli/app/generate_password'
-require 'renuo/cli/app/upgrade_laptop'
-require 'renuo/cli/app/create_aws_project'
-require 'renuo/cli/app/create_heroku_app'
-require 'renuo/cli/app/configure_sentry'
-require 'renuo/cli/app/create_new_logins'
-require 'renuo/cli/app/work'
-require 'renuo/cli/app/release_project'
-require 'renuo/cli/app/fetch_emails'
-require 'renuo/cli/app/heroku_users'
-require 'renuo/cli/app/setup_uptimerobot'
-require 'renuo/cli/app/release_xing'
-require 'renuo/cli/app/configure_semaphore'
-require 'renuo/cli/app/toggl_redmine_comparator'
-require 'renuo/cli/app/renuo_version'
-require 'renuo/cli/app/create_slidev_presentation'
-require 'renuo/cli/app/commit_leaderboard'
-require 'renuo/cli/app/commit_leaderboard_sync'
-require 'renuo/cli/app/secrets_fetcher'
-require 'highline'
+require "renuo/cli/version"
+require "rubygems"
+require "gems"
+require "colorize"
+require "tmpdir"
+require "net/http"
+require "renuo/cli/app/services/renuo_cli_config"
+require "renuo/cli/app/name_display"
+require "renuo/cli/app/local_storage"
+require "renuo/cli/app/list_large_git_files"
+require "renuo/cli/app/generate_password"
+require "renuo/cli/app/upgrade_laptop"
+require "renuo/cli/app/create_aws_project"
+require "renuo/cli/app/create_heroku_app"
+require "renuo/cli/app/configure_sentry"
+require "renuo/cli/app/create_new_logins"
+require "renuo/cli/app/work"
+require "renuo/cli/app/release_project"
+require "renuo/cli/app/fetch_emails"
+require "renuo/cli/app/heroku_users"
+require "renuo/cli/app/setup_uptimerobot"
+require "renuo/cli/app/release_xing"
+require "renuo/cli/app/configure_semaphore"
+require "renuo/cli/app/toggl_redmine_comparator"
+require "renuo/cli/app/renuo_version"
+require "renuo/cli/app/create_slidev_presentation"
+require "renuo/cli/app/commit_leaderboard_stage"
+require "renuo/cli/app/commit_leaderboard_sync"
+require "renuo/cli/app/secrets_fetcher"
+require "highline"
def agree(question)
- question += ' [y/n]' if question
+ question += " [y/n]" if question
super
end
# rubocop:disable Metrics/AbcSize, Metrics/ClassLength, Metrics/MethodLength
module Renuo
class CLI
def start
- require 'commander/import'
+ require "commander/import"
program :version, Renuo::Cli::VERSION
- program :description, 'Renuo CLI'
+ program :description, "Renuo CLI"
info = Gems.info Renuo::Cli::NAME
- if Gem::Version.new(Renuo::Cli::VERSION) < Gem::Version.new(info['version'])
- say "You are running the version #{Renuo::Cli::VERSION} but the brand new #{info['version']} is available. 🎉"
+ if Gem::Version.new(Renuo::Cli::VERSION) < Gem::Version.new(info["version"])
+ say "You are running the version #{Renuo::Cli::VERSION} but the brand new #{info["version"]} is available. 🎉"
if agree("Why don't you update with `gem update renuo-cli`? I can run it for you. 💪")
system("gem update #{Renuo::Cli::NAME}")
- abort 'Nice! I updated myself. 🤩 Now you can run the command again.'
+ abort "Nice! I updated myself. 🤩 Now you can run the command again."
end
- abort('Good. Just do it yourself then...😒')
+ abort("Good. Just do it yourself then...😒")
end
- command :'display-name' do |c|
- c.syntax = 'renuo display-name [options]'
- c.summary = 'Sets the name of a customer on the Renuo dashboard'
- c.description = 'Sets the name of a customer on the Renuo dashboard'
+ command :"display-name" do |c|
+ c.syntax = "renuo display-name [options]"
+ c.summary = "Sets the name of a customer on the Renuo dashboard"
+ c.description = "Sets the name of a customer on the Renuo dashboard"
c.example 'Display "Peter Muster" on the dashboard', 'renuo display-name "Peter Muster"'
- c.example 'Remove the current name from the dashboard', 'renuo display-name --delete'
- c.example 'Override the current message on the dashboard', 'renuo display-name Happy friday 🍻 --override'
- c.option '--delete', 'Deletes the current name'
- c.option '--override', 'Overrides the entire message'
- c.option '--monitor', 'Open the Google slides'
+ c.example "Remove the current name from the dashboard", "renuo display-name --delete"
+ c.example "Override the current message on the dashboard", "renuo display-name Happy friday 🍻 --override"
+ c.option "--delete", "Deletes the current name"
+ c.option "--override", "Overrides the entire message"
+ c.option "--monitor", "Open the Google slides"
c.action do |args, options|
NameDisplay.new.run(args, options)
end
end
- command 'list-large-git-files' do |c|
- c.syntax = 'renuo list-large-git-files'
- c.summary = 'Lists the 5 largest files in a git repository. Warning: must be a bare checkout of the repo!'
+ command "list-large-git-files" do |c|
+ c.syntax = "renuo list-large-git-files"
+ c.summary = "Lists the 5 largest files in a git repository. Warning: must be a bare checkout of the repo!"
c.description = "Lists the 5 largest files in a git repository.\nWarning: must be a bare checkout of the repo!"
- c.example 'list the 5 largest git files of github.com/renuo/renuo-cli',
- 'git clone --bare git@github.com:renuo/renuo-cli.git && ' \
- 'cd renuo-cli.git && renuo list-large-git-files'
+ c.example "list the 5 largest git files of github.com/renuo/renuo-cli",
+ "git clone --bare git@github.com:renuo/renuo-cli.git && " \
+ "cd renuo-cli.git && renuo list-large-git-files"
c.action do
ListLargeGitFiles.new.run
end
end
- command 'generate-password' do |c|
- c.syntax = 'renuo generate-password'
- c.summary = 'Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password.'
- c.description = 'Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password.'
- c.example 'renuo generate-password', 'generates a random password'
+ command "generate-password" do |c|
+ c.syntax = "renuo generate-password"
+ c.summary = "Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password."
+ c.description = "Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password."
+ c.example "renuo generate-password", "generates a random password"
c.action do
GeneratePassword.new.run
end
end
- command 'upgrade-laptop' do |c|
- c.syntax = 'renuo upgrade-laptop'
- c.summary = 'Upgrades the installed apps from the app store, macOS and homebrew'
- c.description = 'Upgrades the installed apps from the app store, macOS and homebrew'
- c.example 'renuo upgrade-laptop', 'upgrades your laptop'
+ command "upgrade-laptop" do |c|
+ c.syntax = "renuo upgrade-laptop"
+ c.summary = "Upgrades the installed apps from the app store, macOS and homebrew"
+ c.description = "Upgrades the installed apps from the app store, macOS and homebrew"
+ c.example "renuo upgrade-laptop", "upgrades your laptop"
c.action do
UpgradeLaptop.new.run
end
end
- command 'create-new-logins' do |c|
- c.syntax = 'renuo create-new-logins'
- c.summary = 'Guides you through the sign up pages for Sentry, NewRelic and Gemnasium'
- c.description = 'Guides you through the sign up pages for Sentry, NewRelic and Gemnasium'
- c.example 'renuo create-new-logins', 'creates new logins'
+ command "create-new-logins" do |c|
+ c.syntax = "renuo create-new-logins"
+ c.summary = "Guides you through the sign up pages for Sentry, NewRelic and Gemnasium"
+ c.description = "Guides you through the sign up pages for Sentry, NewRelic and Gemnasium"
+ c.example "renuo create-new-logins", "creates new logins"
c.action do
CreateNewLogins.new.run
end
end
- command 'create-aws-project' do |c|
- c.syntax = 'renuo create-aws-project'
- c.summary = 'Generates necessary commands for our project setup on AWS incl. necessary installations.'
+ command "create-aws-project" do |c|
+ c.syntax = "renuo create-aws-project"
+ c.summary = "Generates necessary commands for our project setup on AWS incl. necessary installations."
c.description = <<~DESCRIPTION
This creates commands for creating AWS users, buckets an versioning policies and CloudFront.
It also guides you to set up the necessary environment.
You will be asked for:
@@ -131,169 +131,171 @@
- create S3 buckets for each user who owns it
- tag the buckets
- enable versioning for main buckets
(- set up a CloudFront distribution for each environment with the default config or plus alias if configured)
DESCRIPTION
- c.example 'Setup a project (you will be asked for details)', 'renuo create-aws-project'
+ c.example "Setup a project (you will be asked for details)", "renuo create-aws-project"
c.action do |_args, _options|
CreateAwsProject.new.run
end
end
- command 'work' do |c|
- c.syntax = 'renuo work'
- c.summary = 'A utility command to start working on a ticket.'
- c.description = 'When you start working on a feature, it will jump to the project folder, ' \
- 'start a new feature with the ticket number,' \
+ command "work" do |c|
+ c.syntax = "renuo work"
+ c.summary = "A utility command to start working on a ticket."
+ c.description = "When you start working on a feature, it will jump to the project folder, " \
+ "start a new feature with the ticket number," \
'move the ticket in "In progress" state on Redmine and start Toggl with the ' \
- 'ticket number or add the ticket number to the running one if there was none.'
- c.example 'renuo work start kinova 1234', 'start working on ticket 1234 on kinova project'
+ "ticket number or add the ticket number to the running one if there was none."
+ c.example "renuo work start kinova 1234", "start working on ticket 1234 on kinova project"
c.action do |args|
Work.new.run(args)
end
end
- command 'release' do |c|
- c.syntax = 'renuo release'
- c.summary = 'Release a projects state of develop (on github) to main in one command.'
- c.description = 'Creates a new release version of a project on main as either a Major, Minor, ' \
- 'Patch or Custom release based on the current state of develop on Github'
- c.example 'renuo release my-project minor', 'release a minor release of my-project'
- c.example 'renuo release my-project custom 2.5.0', 'release my-project as release 2.5.0'
+ command "release" do |c|
+ c.syntax = "renuo release"
+ c.summary = "Release a projects state of develop (on github) to main in one command."
+ c.description = "Creates a new release version of a project on main as either a Major, Minor, " \
+ "Patch or Custom release based on the current state of develop on Github"
+ c.example "renuo release my-project minor", "release a minor release of my-project"
+ c.example "renuo release my-project custom 2.5.0", "release my-project as release 2.5.0"
c.action do |args|
ReleaseProject.new.run(args)
end
end
- command 'create-heroku-app' do |c|
- c.syntax = 'renuo create-heroku-app'
- c.summary = 'Generates the script necessary to setup an application on Heroku.'
- c.description = 'Generates the script necessary to setup an application on Heroku.'
- c.example 'renuo create-heroku-app hello', 'generates the command to create hello on Heroku'
+ command "create-heroku-app" do |c|
+ c.syntax = "renuo create-heroku-app"
+ c.summary = "Generates the script necessary to setup an application on Heroku."
+ c.description = "Generates the script necessary to setup an application on Heroku."
+ c.example "renuo create-heroku-app hello", "generates the command to create hello on Heroku"
c.action do |args|
CreateHerokuApp.new.run(args)
end
end
- command 'configure-sentry' do |c|
- c.syntax = 'renuo configure-sentry [project-name] [SENTRY_DSN]'
- c.summary = 'Generates the script necessary to setup sentry on Heroku.'
+ command "configure-sentry" do |c|
+ c.syntax = "renuo configure-sentry [project-name] [SENTRY_DSN]"
+ c.summary = "Generates the script necessary to setup sentry on Heroku."
c.description = c.summary
- c.example 'renuo configure-sentry myproject https://randomkey@sentry.io/11223344',
- 'generates the command to configure sentry for myproject on Heroku'
+ c.example "renuo configure-sentry myproject https://randomkey@sentry.io/11223344",
+ "generates the command to configure sentry for myproject on Heroku"
c.action do |args|
ConfigureSentry.new.run(args)
end
end
- command 'fetch-emails' do |c|
- c.syntax = 'renuo fetch-emails'
- c.summary = 'Retrieves all renuo employees email addresses'
- c.description = 'Retrieves all renuo employees email addresses. One per line.'
+ command "fetch-emails" do |c|
+ c.syntax = "renuo fetch-emails"
+ c.summary = "Retrieves all renuo employees email addresses"
+ c.description = "Retrieves all renuo employees email addresses. One per line."
c.action do |args|
FetchEmails.new.run(args)
end
end
- command 'heroku-users' do |c|
- c.syntax = 'renuo heroku-users add/remove emailaddress'
- c.summary = 'Prints a list of commands to add or remove an email address from all Heroku projects'
- c.description = 'Useful when a new person is hired or a person quits.'
- c.example 'renuo heroku-users add alessandro.rodi@renuo.ch',
- 'Adds the user alessandro.rodi@renuo.ch to all the Heroku projects'
- c.example 'renuo heroku-users remove alessandro.rodi@renuo.ch',
- 'Removes the user alessandro.rodi@renuo.ch from all the Heroku projects'
+ command "heroku-users" do |c|
+ c.syntax = "renuo heroku-users add/remove emailaddress"
+ c.summary = "Prints a list of commands to add or remove an email address from all Heroku projects"
+ c.description = "Useful when a new person is hired or a person quits."
+ c.example "renuo heroku-users add alessandro.rodi@renuo.ch",
+ "Adds the user alessandro.rodi@renuo.ch to all the Heroku projects"
+ c.example "renuo heroku-users remove alessandro.rodi@renuo.ch",
+ "Removes the user alessandro.rodi@renuo.ch from all the Heroku projects"
c.action do |args|
HerokuUsers.new.run(args)
end
end
- command 'setup-uptimerobot' do |c|
- c.syntax = 'renuo setup-uptimerobot'
- c.summary = 'Sets up uptimerobot for the given project'
- c.description = 'The uptimerobot configuration is mandatory for most projects. ' \
- 'This command sets everything up and pauses the monitoring directly. Once the app is ready, ' \
- 'the monitoring should get started.'
- c.example 'renuo setup-uptimerobot https://redmine.ch', 'Configures redmine monitoring on uptimerobot'
+ command "setup-uptimerobot" do |c|
+ c.syntax = "renuo setup-uptimerobot"
+ c.summary = "Sets up uptimerobot for the given project"
+ c.description = "The uptimerobot configuration is mandatory for most projects. " \
+ "This command sets everything up and pauses the monitoring directly. Once the app is ready, " \
+ "the monitoring should get started."
+ c.example "renuo setup-uptimerobot https://redmine.ch", "Configures redmine monitoring on uptimerobot"
c.action do |args|
SetupUptimerobot.new(args).run
end
end
- command 'release-xing' do |c|
- c.syntax = 'renuo release-xing'
- c.summary = 'Release Xing to preview.'
- c.description = 'Xing needs to be released manually. ' \
- 'You need a VPN connection open before runnign this command.'
+ command "release-xing" do |c|
+ c.syntax = "renuo release-xing"
+ c.summary = "Release Xing to preview."
+ c.description = "Xing needs to be released manually. " \
+ "You need a VPN connection open before runnign this command."
c.action do |_args|
ReleaseXing.new.run
end
end
- command 'configure-semaphore' do |c|
- c.syntax = 'renuo configure-semaphore'
- c.summary = 'Adds standard semaphore configuration files to a project and creates the notifications'
- c.description = 'Run this command with a project, to add the semaphore configuration files ' \
- 'and create notifications.'
+ command "configure-semaphore" do |c|
+ c.syntax = "renuo configure-semaphore"
+ c.summary = "Adds standard semaphore configuration files to a project and creates the notifications"
+ c.description = "Run this command with a project, to add the semaphore configuration files " \
+ "and create notifications."
c.action do |_args|
ConfigureSemaphore.new.call
end
end
- command 'toggl-redmine' do |c|
- c.syntax = 'renuo toggl-redmine'
- c.summary = 'Compares your time entries between Toggl and Redmine'
- c.description = 'This command extracts your time entries in Toggl and in Redmine and checks if they are ' \
- 'consistant. It can help you in your time booking to find if you booked something wrong'
+ command "toggl-redmine" do |c|
+ c.syntax = "renuo toggl-redmine"
+ c.summary = "Compares your time entries between Toggl and Redmine"
+ c.description = "This command extracts your time entries in Toggl and in Redmine and checks if they are " \
+ "consistant. It can help you in your time booking to find if you booked something wrong"
c.action do |_args|
TogglRedmineComparator.call
end
end
- command 'create-slidev-presentation' do |c|
- c.syntax = 'renuo create-slidev-presentation [presentation-name]'
- c.summary = 'Creates a new Slidev presentation with the Renuo theme'
- c.description = 'Creates a new Slidev presentation with the Renuo theme'
+ command "create-slidev-presentation" do |c|
+ c.syntax = "renuo create-slidev-presentation [presentation-name]"
+ c.summary = "Creates a new Slidev presentation with the Renuo theme"
+ c.description = "Creates a new Slidev presentation with the Renuo theme"
c.action do |args|
CreateSlidevPresentation.new.run(args)
end
end
- command 'commit-leaderboard-stage' do |c|
- c.syntax = 'renuo commit-leaderboard-stage [username] [avatar-url] [queue-path]'
- c.summary = 'Adds local commits to a local queue for the commit leaderboard'
+ command "commit-leaderboard-stage" do |c|
+ c.syntax = "renuo commit-leaderboard-stage [username] [avatar-url] [queue-path]"
+ c.summary = "Adds local commits to a local queue for the commit leaderboard"
+ c.option "--verbose", "Prints the latest commit"
c.description = <<~DESCRIPTION
Add post-commit hook to `git config core.hookspath` with the following contents:
#!/usr/bin/env sh
renuo commit-leaderboard-stage CuddlyBunion341 "https://avatars.githubusercontent.com/u/53896675?v=4" ~/.renuo-commit-leaderboard.json
# You can get the GitHub avatar url using `gh api user | jq .avatar_url`
DESCRIPTION
- c.action do |args|
- CommitLeaderboard.new.run(args)
+ c.action do |args, options|
+ CommitLeaderboardStage.new.run(args, options)
end
end
- command 'commit-leaderboard-sync' do |c|
- c.syntax = 'renuo commit-leaderboard-sync [api-secret] [queue-path] [api-url]'
- c.summary = 'Sends commits from the queue to the commit leaderboard'
+ command "commit-leaderboard-sync" do |c|
+ c.syntax = "renuo commit-leaderboard-sync [api-secret] [queue-path] [api-url]"
+ c.summary = "Sends commits from the queue to the commit leaderboard"
c.description = <<~DESCRIPTION
Sends commits from the queue to the commit leaderboard
Add pre-push hook to `git config core.hookspath` with the following contents:
#/usr/bin/env sh
renuo commit-leaderboard-sync {SECRET} ~/.renuo-commit-leaderboard.json https://dashboard.renuo.ch/api/v1/commit_leaderboard
DESCRIPTION
- c.action do |args|
- CommitLeaderboardSync.new.run(args)
+ c.option "--verbose", "Prints the configuration, request body and response"
+ c.action do |args, options|
+ CommitLeaderboardSync.new.run(args, options)
end
end
- command 'fetch-secrets' do |c|
- c.syntax = 'renuo fetch-secrets'
- c.summary = 'Fetches the needed secrets in a project from the renuo secrets store'
+ command "fetch-secrets" do |c|
+ c.syntax = "renuo fetch-secrets"
+ c.summary = "Fetches the needed secrets in a project from the renuo secrets store"
c.description = <<~DESCRIPTION
Run the command within a project folder to fetch the secrets from the renuo secrets store.
The bin/setup of the project might run this command for you.
DESCRIPTION
c.action do