Welcome back to another post about my Git Graveyard. Today I want to look at a CLI(Command-line Interface) utility I worked on.

Let’s Code - CLI Utility for Opening Up Project Specific Programs - 2014

Let’s Code was intended to be a CLI that would open up specific programs that you need to get working on your project.

You would use it like letscode myproject. Let’s Code would then open your editor with your project, Trello/Jira, and can be configured to open up another other programs you need, like Slack.

Motivation

I was motivated to make getting into work easier. I was constantly switching between projects and various programs in order to do my work. I wanted to help my context switching out while trying to remain in the terminal as best I could.

The usage was pretty straightforward:

require 'thor'

module Letscode
    class CLI < Thor
        include Thor::Actions
        include Letscode

        #main method
        desc "start [PROJECT]", "To start a project, type 'letscode start [PROJECT]'"
        def start(project)
          get_project(project)
          process_keys
        end

        desc "config", "To config a project, please type 'letscode config'"
        def config
            config = get_config
            write_file config
        end

        desc "list", "Shows all projects in the config file."
        def list
           puts  "#{list_projects.to_yaml}"
        end

        desc "delete [PROJECT]", " To delete a file type 'letscode delete [PROJECT].'"
        def delete(project)
            config = read_file
            config.delete project
            write_file config
        end
    end
end

The various methods went out and did what you expect. Just follow up with a letscode myproject and you were ready to roll!

Reason for Abandoning

I abandoned this project as I switched jobs and had less context switching over all. As I reread the code I wrote and the direction it was going, I feel this project would have been a fun little utility.

Tech Stack

  • Ruby - I was getting more into rails at the time and wanted something familiar to work in.

  • Thor - toolkit for building powerful command-line interfaces in Ruby

  • Watir - A gem typically used for browser automation(mostly for testing)

  • ChromeDriver - chromium’s webdriver implementation for browser automation

Conclusion

All in all, I may want to revisit this utility. I have quite a bit of use for it as of late. The project I am working on has different repos for it’s umbrella apps and I have to switch between projects fairly regularly. As far as looking at my code, I am pleasantly surpised with past me. I managed to keep things coherent and readible.

I may end up porting this over to Elixir, it’s one of my favorite languages and has strong built in CLI Utilities with OptionParser

Back