summaryrefslogtreecommitdiff
path: root/.local/bin/development/nx
diff options
context:
space:
mode:
authorVikas Kushwaha <dev@vikas.rocks>2024-11-21 13:30:52 +0530
committerVikas Kushwaha <dev@vikas.rocks>2024-11-21 13:30:52 +0530
commit5c916d69d457101326803eb076a746060e3618cf (patch)
treed6fce3256eede1c1bf78fb6a1be75b9cc4b84cee /.local/bin/development/nx
Moved from github
Diffstat (limited to '.local/bin/development/nx')
-rwxr-xr-x.local/bin/development/nx148
1 files changed, 148 insertions, 0 deletions
diff --git a/.local/bin/development/nx b/.local/bin/development/nx
new file mode 100755
index 0000000..862be99
--- /dev/null
+++ b/.local/bin/development/nx
@@ -0,0 +1,148 @@
+#!/bin/sh
+
+help() {
+ echo "nx - create new script"
+ echo "USAGE: nx <script_name>"
+}
+
+err() { printf '%s: %s\n' "$0" "$@" >&2; exit 1; }
+warn() {
+ printf '%s: %s [Y/n] ' "$0" "$@" >&2; read -r arg
+ case "$arg" in ''|y|Y) ;; *) exit ;; esac
+}
+
+while getopts 'h' o; do case "$o" in
+ h) help >&2; exit ;;
+ *) err "invalid option -- '$OPTARG'" ;;
+esac done
+shift $((OPTIND - 1))
+
+[ "$#" -lt 1 ] && help && exit 1
+[ "$#" -gt 1 ] && err "too many arguments. Only one expected"
+
+
+new_script() {
+ cat << EOF > "$1"
+#!/bin/sh
+
+help() { echo "$1 -
+
+USAGE:
+ $1 [OPTION]...
+
+OPTIONS:
+ -h show this help message"; }
+
+err() { printf '$1: %s\n' "\$@" >&2; exit 1; }
+while getopts 'h' o; do case "\$o" in
+ h) help; exit ;;
+ *) err "invalid option -- '\$OPTARG'" ;;
+esac done
+shift \$((OPTIND - 1))
+
+[ "\$#" -lt 1 ] && help >&2 && exit 1
+
+EOF
+
+ chmod u+x -- "$1" || exit
+}
+
+
+new_c_file() {
+ cat << EOF > "$1"
+#include <stdio.h>
+
+int main()
+{
+ printf("Hello\n");
+
+ return 0;
+}
+EOF
+}
+
+
+new_cpp_file() {
+ cat << EOF > "$1"
+#include <iostream>
+
+using namespace std;
+
+int main()
+{
+ cout << "Hello" << endl;
+
+ cin.get();
+ return 0;
+}
+EOF
+}
+
+
+new_py_file() {
+ cat << EOF > "$1"
+import timeit
+
+print("Finished in %fs" % timeit.timeit())
+EOF
+}
+
+
+new_java_file() {
+ PATTERN="Scanner"
+ VIMCMDS="normal!2n\n noh"
+ cat << EOF > "$1"
+import java.util.Scanner;
+
+class ${1%.java} {
+ public static void main(String args[]) {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Finished!");
+ sc.close
+ }
+}
+EOF
+}
+
+
+file="$1"
+
+new_file() {
+ case "$file" in
+ *.c) new_c_file "$file" ;;
+ *.cpp) new_cpp_file "$file" ;;
+ *.py) new_py_file "$file" ;;
+ *.java) new_java_file "$file" ;;
+ *) new_script "$file" ;;
+ esac
+}
+
+if [ -f "$file" ]; then
+ [ ! -w "$file" ] && chmod u+rw "$file"
+ if [ -s "$file" ]; then
+ warn "'$file' already exists, edit existing file?" || exit
+ else
+ warn "an empty file '$file' already exists, fill and edit?" &&
+ new_file "$file"
+ fi
+elif [ -e "$file" ]; then
+ err "'$file' already exists and is a non-regular file"
+else
+ new_file "$file"
+fi
+
+ls -lF --color -- "$file"
+
+case "$EDITOR" in
+ '') echo "$0: \$EDITOR variable not set" >&2 && exit 1 ;;
+ vi|*vim*)
+ VIMCONF="$(mktemp)"; export VIMCONF
+ [ -n "$VIOPTS" ] && echo "set $VIOPTS" >> "$VIMCONF"
+ [ -n "$PATTERN" ] && echo "/$PATTERN" >> "$VIMCONF"
+ [ -n "$VIMCMDS" ] && echo "$VIMCMDS" >> "$VIMCONF"
+ $EDITOR -S "$VIMCONF" "$file"
+ rm -f "$VIMCONF"
+ ;;
+ *) $EDITOR "$file" ;;
+esac; exit