Kamaji CLI
What? ๐ ๏ธ
- Kamaji is the boilerman! He generates boilerplate code! In other words, Kamaji is a CLI program for quickly initiating new programming projects
Why? ๐ค
- Productivity! Get started quickly and never write the same code twice
- Kamaji was initially developed as a way to learn the Crystal programming language
How? โ
- Its easy! You can output Kamaji's help menu for usage reminders by running
kamaji -h,kamaji --help, or simplykamaji - Initiating a new project is as easy as knowing what you would like to name your project and what language you would like to work with; use the
buildcommand to create a new project:kamaji build LANG TYPE (NAME) - Ex.
kamaji build elixir app my_elixir_app - Usage conituned below
Table of Contents
Install
Install from source
git clone https://gitlab.com/taylorosbourne/kamaji.git
cd kamaji
crystal build src/kamaji.cr -o kamaji -p --release --no-debug
chmod +x ./kamaji # make executbale
mv ./kamaji ~/.crystal/bin/kamaji # move executable
export PATH=\"$HOME/.crystal/bin:$PATH\" # update path
Usage
Usage: kamaji build LANG TYPE NAME
Initializes a project folder as a git repository and
default folder structure for programming projects.
-h, --help show this help
LANG Options
- bash
- crystal
- deno
- elixir
- fish
- go
- node
- ruby
- rust
- scala
TYPE Options
- app
- cli
- lib
- script
- wasm
Note:
Not all TYPE options are valid with all LANG options.
Read the about valid options here https://gitlab.com/taylorosbourne/kamaji
Ex. kamaji build elixir app my_elixir_app
Supported Languages/Runtimes
AssemblyScript ๐ Docs | Source
AssemblyScript compiles a strict variant of TypeScript(a typed superset of JavaScript) to WebAssembly using Binaryen. Its architecture differs from a JavaScript VM in that it compiles a program ahead of time, quite similar to your typical C compiler. One can think of it as TypeScript syntax on top of WebAssembly instructions, statically compiled, to produce lean and mean WebAssembly binaries.
Command example:
kamaji build assemblyscript app my_assemblyscript_app
Built project:
my_assemblyscript_app
โโโ assembly
โ โโโ index.ts
โ โโโ tsconfig.json
โโโ build
โ โโโ .gitignore
โโโ tests
โ โโโ index.js
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ asconfig.json
โโโ index.js
โโโ package.json
โโโ LICENSE
โโโ README.md
Bash ๐ฒ Docs | Source
Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. First released in 1989, it has been used as the default login shell for most Linux distributions.
Command example:
kamaji build bash script my_bash_script
Built project:
my_bash_script
โโโ bin
โ โโโ my_bash_script.sh
โโโ .editorconfig
โโโ .gitlab-ci.yml
โโโ LICENSE
โโโ README.md
Crystal ๐ฎ Docs | Source
Crystal is a statically type-checked programming language with syntax similar to Ruby. Kamaji is written in Crystal, and makes heavy use of code in crystal's init command for codegen. Initializing a Crystal project from Kamaji will essentially produce the same files as crystal init app with the addition of Dockerfile, .gitlab-ci.yml, and more.
Command example:
kamaji build crystal app my_crystal_app
Built project:
my_crystal_app
โโโ spec
โ โโโ my_crystal_app_spec.cr
โ โโโ spec_helper.cr
โโโ src
โ โโโ my_crystal_app.cr
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ Dockerfile
โโโ LICENSE
โโโ README.md
โโโ shard.yml
Deno ๐ฆ Docs | Source
Deno is a secure runtime for JavaScript and TypeScript. Deno is written in Rust and actively maintained/developed by Ryan Dahl, creator of Nodejs. Although both Node, and Deno are JS runtimes, they vary greatly. Check the Deno documentation/style guide for information on how/why Deno programs do not follow the same conventions as Node programs.
Command example:
kamaji build deno app my_deno_app
Built project:
my_deno_app
โโโ .editorconfig
โโโ LICENSE
โโโ mod.ts
โโโ README.md
โโโ types.d.ts
Elixir ๐งช Docs | Source
Elixir is a dynamic, functional programming language. Elixir leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems. Elixir is successfully used in web development, embedded software, data ingestion, and multimedia processing, across a wide range of industries.
Command example:
kamaji build elixir app my_elixir_app
Built project:
my_elixir_app
โโโ lib
โ โโโ my_elixir_app.ex
โโโ test
โ โโโ my_elixir_app_test.exs
โ โโโ test_helpers.exs
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ formatter.exs
โโโ LICENSE
โโโ mix.exs
โโโ README.md
Fish ๐ Docs | Source
Fish (or Friendly Interactive Shell) is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family. Fish suggests commands as you type based on history and completions, just like a web browser. Watch out, Netscape Navigator 4.0!
Command example:
kamaji build fish script my_fish_script
Built project:
my_fish_script
โโโ bin
โ โโโ my_fish_script.fish
โโโ .editorconfig
โโโ .gitlab-ci.yml
โโโ LICENSE
โโโ README.md
Go ๐น Docs | Source
Go is an open source, compiled programming language developed by a team at Google and many contributors from the open source community. Go powers industry-changing technologies like Docker and Kubernetes. Go is distributed under a BSD-style license.
Command example:
kamaji build go app my_go_app
Built project:
my_go_app
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ Dockerfile
โโโ go.mod
โโโ LICENSE
โโโ main.go
โโโ README.md
Node ๐ Docs | Source
Node is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node has an enormous community that is, in many ways, shaping the way modern web applications are built. Due to JavaScript's outrageous popularity, many dependable libraries are built for use with Node.
Command example:
kamaji build node app my_node_app
Built project:
my_node_app
โโโ src
โ โโโ index.ts
โ โโโ types.d.ts
โโโ .editorconfig
โโโ .eslintrc
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ .prettierignore
โโโ .prettierrc
โโโ LICENSE
โโโ package.json
โโโ README.md
โโโ tsconfig.json
Ruby ๐ Docs | Source
Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. Ruby creates a developer experience unlike any other (except maybe Crystal...), a language truly worthy of it's tagline: A PROGRAMMER'S BEST FRIEND.
Command example:
kamaji build ruby app my_ruby_app
Built project:
my_ruby_app
โโโ spec
โ โโโ spec_helper.rb
โโโ src
โ โโโ main.rb
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ .rubocop_airbnb.yml
โโโ .rubocop.yml
โโโ Dockerfile
โโโ Gemfile
โโโ LICENSE
โโโ README.md
Rust ๐ฆ Docs | Source
Rust is fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages. Rustโs type system and ownership model guarantee memory-safety and thread-safety โ enabling you to eliminate many classes of bugs at compile-time. Rust placed at the top of StackOverflow's most loved programming language of 2020. In fact, for five years running, Rust has taken the top spot as the most loved programming language.
Command example:
kamaji build rust app my_rust_app
Built project:
my_rust_app
โโโ src
โ โโโ main.rs
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ Cargo.toml
โโโ LICENSE
โโโ README.md
Scala โจ๏ธ Docs | Source
Scala combines object-oriented and functional programming in one high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.
Command example:
kamaji build scala app my_scala_app
Built project:
my_scala_app
โโโ project
โ โโโ build.properties
โ โโโ plugins.sbt
โโโ src
โ โโโ main
โ โโโ scala
โ โโโ MyApp.scala
โโโ .editorconfig
โโโ .gitignore
โโโ .gitlab-ci.yml
โโโ LICENSE
โโโ README.md