DEV Community

Cover image for How to ultra-over-engineer a useless piece of software (or why human interaction is important)
stagefright5
stagefright5

Posted on • Edited on

2 2

How to ultra-over-engineer a useless piece of software (or why human interaction is important)

(cover image: from here)

This is the story of the of the most useless (may be) npm package. I am warning you that this will be a waste of time.

Why?

Whenever I wanted to setup a new project, I used to always run these commands:

npm init -y
Enter fullscreen mode Exit fullscreen mode

And,

git init .
git add .
git commit -m "Initial commit"
Enter fullscreen mode Exit fullscreen mode

So, I thought of automating it.

I thought of writing a tool (FML 🤦‍♂️!) that could execute a series of commands.

ENTER THE Uninit

How does it work?

This will basically read a json file that has a schema object. This schema object should have key-value pairs of schemas.

User can select a schema by passing a cli argument (-l) that points to the json file containing schemas as key-value pairs:

Select Schema

--skip-confirm=true option is passed. Otherwise, user has to confirm the execution of each task.

This is a sample schema object. Here, there are tasks that will run sequentially, when the schema is run:

Sample Schema Object

This is how the tasks are run sequentially:

Tasks Execution

Observe the last task (no. 4). This task's command has placeholders

  • ${commit_head} and
  • ${commit_body}

Tasks Execution

So, the tool will

  • Parse the command
  • Take the values for each of the placeholder from the user (you can see something like, "Value for placeholder_0" in the image)
  • Replace the placeholders with these values
  • Execute the replaced command (Here, git commit -m "This is commit header" -m "This is detailed commit descriptions")

Structure Of Schema (You can skip and go to PS)

Each schema has the folowing structure:

  • description(string): Describes the schema
  • tasks(Array<{name: string, command: string}>): name property is a unique id for this object task object. command is the command to execute. command can take user inputs. If there is any placeholder in the string(in this form: ${user_input_1}), then the tool will parse it and asks the user for input for each of the placeholder.

PS

You might be thinking,

"Why The F, would I ever use this instead of a simple shell script! This is a completely useless piece Of Sh*t!"

And, you would be ABSOLUTELY right.

This whole exercise made me realize why you should say your "awesome" ideas out loud, preferably, to other human beings.

Anyway,

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay