github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/modules/cmd-new.mx (about) 1 MOD.ERR_ABORT = "New package creation has been aborted." 2 3 trypipe { 4 read \ 5 --prompt "What do you want to call this package? " \ 6 --variable PACKAGE_NAME \ 7 --default my-first-package \ 8 --datatype str 9 10 switch { 11 if { $PACKAGE_NAME =~ '/' } { 12 err "Package names cannot contain '/'" 13 err $MOD.ERR_ABORT 14 return 1 } 15 16 if { $PACKAGE_NAME =~ '[\r\n]' } { 17 err "Package names shouldn't include carriage returns, '\\r', nor new lines, '\\n'" 18 err $MOD.ERR_ABORT 19 return 1 } 20 21 if { $PACKAGE_NAME =~ '^\s+$' } { 22 err "Package names cannot be empty" 23 err $MOD.ERR_ABORT 24 return 1 } 25 26 if { g $MUREX_MODULE_PATH/$PACKAGE_NAME } { 27 err "A package already exists called '$PACKAGE_NAME'" 28 err $MOD.ERR_ABORT 29 return 1 } 30 31 default { 32 out "{GREEN}Package name '{BOLD}$PACKAGE_NAME{RESET}{GREEN}'{RESET}" 33 } 34 } 35 36 read \ 37 --prompt "What do you want to call your first module in package '$PACKAGE_NAME'? " \ 38 --variable MODULE_NAME \ 39 --default my-first-module \ 40 --datatype str 41 42 switch { 43 if { $MODULE_NAME =~ '/' } { 44 err "Module names cannot contain '/'" 45 err $MOD.ERR_ABORT 46 return 1 } 47 48 if { $MODULE_NAME =~ '[\r\n]' } { 49 err "Module names shouldn't include carriage returns, '\\r', nor new lines, '\\n'" 50 err $MOD.ERR_ABORT 51 return 1 } 52 53 if { $MODULE_NAME =~ '^\s+$' } { 54 err "Module names cannot be empty" 55 err $MOD.ERR_ABORT 56 return 1 } 57 58 default { 59 out "{GREEN}Module name '{BOLD}$MODULE_NAME{RESET}{GREEN}'{RESET}" 60 } 61 } 62 63 read \ 64 --prompt "Write a short summary about your package/module: " \ 65 --variable SUMMARY \ 66 --default "This is a placeholder summary for both the package and module" \ 67 --datatype str 68 69 out "{GREEN}Summary: {BOLD}$SUMMARY{RESET}{RESET}" 70 71 mkdir $(MUREX_MODULE_PATH)/$(PACKAGE_NAME) 72 73 %{ 74 Name: $PACKAGE_NAME 75 Version: "1.0" 76 ChangeLog: { 77 "1.0": "New package" 78 } 79 Dependencies: { 80 MurexVersion: ">= ${version --short}" 81 } 82 } -> pretty |> $(MUREX_MODULE_PATH)/$(PACKAGE_NAME)/package.json 83 84 %[ 85 { 86 Name: $MODULE_NAME 87 Summary: $SUMMARY 88 Version: "1.0" 89 Source: "$(MODULE_NAME).mx" 90 Dependencies: { 91 Optional: [] 92 Required: [] 93 Platform: [ any ] 94 MurexVersion: ">= ${version --short}" 95 } 96 } 97 ] -> pretty |> $(MUREX_MODULE_PATH)/$(PACKAGE_NAME)/module.json 98 99 %(function ${esccli $MODULE_NAME} { 100 out "hello world" 101 }) |> $(MUREX_MODULE_PATH)/$(PACKAGE_NAME)/$(MODULE_NAME).mx 102 103 out "{GREEN}" 104 git <!null> init $(MUREX_MODULE_PATH)/$(PACKAGE_NAME) 105 out "{RESET}" 106 107 PACKAGES_JSON = open($(MUREX_MODULE_PATH)/packages.json) 108 PACKAGES_JSON <~ %[{ 109 Protocol: git 110 URI: $(MUREX_MODULE_PATH)/$(PACKAGE_NAME)/.git 111 Package: $(PACKAGE_NAME) 112 }] 113 $PACKAGES_JSON -> pretty |> $(MUREX_MODULE_PATH)/packages.json 114 115 out "A new package has been created at: $(MUREX_MODULE_PATH)/$(PACKAGE_NAME)" 116 return 117 } 118 catch { 119 err $MOD.ERR_ABORT 120 return 1 121 }