diff --git a/lisp/05-custom-functions.el b/lisp/05-custom-functions.el index efdadf3..b95a963 100644 --- a/lisp/05-custom-functions.el +++ b/lisp/05-custom-functions.el @@ -221,7 +221,9 @@ (interactive) (let ((secret (plist-get (nth 0 (auth-source-search :max 1 :user un)) :secret)) (host (plist-get (nth 0 (auth-source-search :max 1 :user un)) :host))) - (browse-url (concat "https://" host "/login.jsp?pw=" (leo/auth-source-unfunc secret) "&un=" (leo/url-encode un))))) + (shell-command (format "sfdx force:org:open -u %s" un)) + ;; (browse-url (concat "https://" host "/login.jsp?pw=" (leo/auth-source-unfunc secret) "&un=" (leo/url-encode un))) + )) (provide '05-custom-functions) ;;; 05-custom-functions.el ends here diff --git a/lisp/08-custom-packages.el b/lisp/08-custom-packages.el index 442eddb..205f53d 100644 --- a/lisp/08-custom-packages.el +++ b/lisp/08-custom-packages.el @@ -283,6 +283,7 @@ :config (setq company-idle-delay 0.1) (setq company-minimum-prefix-length 4) + (setq company-dabbrev-downcase nil) ) ;; https://github.com/pashky/restclient.el diff --git a/lisp/custom/vlocitemacs.el b/lisp/custom/vlocitemacs.el index 7b3f4d2..192c0fa 100644 --- a/lisp/custom/vlocitemacs.el +++ b/lisp/custom/vlocitemacs.el @@ -17,17 +17,17 @@ (defvar vlo/org-usernames '() "Auto-generated list of usernames from SFDX that are both authenticated and connected.") -(defvar vlo/default-environment-template "{ - \"environments\": [ - { - \"env\": \"default\", - \"username\": \"\", - \"job\": \"job.yaml\" - } - ] -}" "Default template for creating the initial .vemacs file.") - -(defvar vlo/project-file-name ".vemacs.json" +;; (defvar vlo/default-environment-template "{ +;; \"environments\": [ +;; { +;; \"env\": \"default\", +;; \"username\": \"\", +;; \"job\": \"job.yaml\" +;; } +;; ] +;; }" "Default template for creating the initial .vemacs file.") + +(defvar vlo/project-file-name ".vemacs.txt" "The name of the VlocitEmacs configuration file. This file exists for the purpose of locating the project folder as there is no @@ -41,15 +41,18 @@ list of environments to be used for deployments/exports.") (let* ((dir (read-directory-name "Choose Project Root: ")) (project-file (concat dir vlo/project-file-name)) (gitignore (concat dir ".gitignore"))) - (with-temp-file project-file (insert vlo/default-environment-template)) - (when (file-exists-p gitignore) - (append-to-file vlo/project-file-name nil gitignore)))) + (with-temp-file project-file (insert "")) + (let ((current-user (vlo/prompt-org-list))) + (with-temp-file project-file (insert current-user)) + (when (file-exists-p gitignore) + (append-to-file vlo/project-file-name nil gitignore))))) -(defun vlo/get-org-list () - "Get a list of authenticated orgs via SFDX cli and populate the `vlo/org-usernames' variable." +(defun vlo/prompt-org-list () + "Get a list of authenticated orgs via SFDX cli and store the selected user in the project file." (interactive) - (let* ((temp-json-file + (let* ((project-file (concat (vlo/project-path) vlo/project-file-name)) + (temp-json-file (make-temp-file "sfdx-org-list" nil ".json" (shell-command-to-string "sfdx force:org:list --json"))) (json-object-type 'hash-table) @@ -59,36 +62,30 @@ list of environments to be used for deployments/exports.") (result (gethash "result" json)) (orgs (gethash "nonScratchOrgs" result)) ) - ;; (message "%s" orgs) (setq vlo/org-usernames '()) (dolist (org orgs) (add-to-list 'vlo/org-usernames (gethash "username" org))) - ) - ) + (let ((current-user (completing-read "SFDX user: " vlo/org-usernames))) + (with-temp-file project-file current-user) + current-user))) -;; (defun vlo/get-environment-list (&optional key) -;; "Get the list of org environment vars from within vlo/project-file-name JSON file with optional KEY to get a list of keys." -;; (let* ()) -;; ) - - -(defun vlo/getuser () - "Prompt for sfdx username or use stored." +(defun vlo/get-project-user () + "Return the user stored in the project file." (interactive) - (let ((username (completing-read "SFDX User: " vlo/org-usernames nil t nil nil))) - (if (yes-or-no-p (format "Set \"%s\" as default for this project?" username)) - ;;insert username into project file - (progn - (with-temp-file (concat (vlo/project-path) vlo/project-file-name) (insert username)) - (message "Default set to: %s" username) - ) - (message "No default set")))) - + (if (vlo/in-project) + (let* ((project-dir (concat (vlo/project-path) vlo/project-file-name))) + (with-temp-buffer (insert-file-contents project-dir) + (buffer-string))) + (prog1 + nil + (message "Must be in vlocity project for that command")))) +(defun vlo/get-jobfile-name () + "The name of the job.yaml file." + "job.yaml") (defun vlo/get-deployment-key () "Return the \"key\" used by vlocity to specify what to deploy/export." - (vlo/ensure-init-file) (let ((path-list (delete "" (split-string (file-name-directory (buffer-file-name)) "/")))) (format "%s/%s" (nth (- (length path-list) 2) path-list) @@ -105,50 +102,68 @@ nil." dir)) (defun vlo/in-project () - "Asserts that you're currently inside a vlocity project." - (let ((dir (locate-dominating-file default-directory vlo/project-file-name))) - (if dir - t - nil))) + "Check if you are currently inside a vlocity project." + (if (locate-dominating-file default-directory vlo/project-file-name) + t + nil)) -(defun leo/exec-process (cmd &optional comint) - "Execute a process running CMD and optionally pass COMINT as t to put buffer in `comint-mode'." +(defun leo/exec-process (cmd name &optional comint) + "Execute a process running CMD and use NAME to generate a unique buffer name and optionally pass COMINT as t to put buffer in `comint-mode'." (let ((compilation-buffer-name-function (lambda (mode) - (format "*exec-process*")))) + (format "*%s*" name)))) (message (concat "Running " cmd)) (compile cmd comint))) - - (defun vlo/packExport () "Run the packExport command." (interactive) (if (and (vlo/in-project) - (file-exists-p (vlo/get-propertyfile-name)) - (file-exists-p (vlo/get-jobfile-name))) + (file-exists-p (concat (vlo/project-path) (vlo/get-jobfile-name)))) (leo/exec-process (format "cd %s; vlocity packExport -sfdx.username %s -job %s -key %s" (vlo/project-path) - (vlo/get-user) + (vlo/get-project-user) (vlo/get-jobfile-name) - (vlo/get-deployment-key))) - (error (format "Error: cannot find either %s or %s" (vlo/get-propertyfile-name) (vlo/get-jobfile-name))))) + (vlo/get-deployment-key)) "vlocity:retrieve" t) + (message "ERROR Exporting:: project: %s, user: %s, job: %s, key: %s" + (vlo/project-path) + (vlo/get-project-user) + (vlo/get-jobfile-name) + (vlo/get-deployment-key)))) (defun vlo/packDeploy () "Run the packDeploy command." (interactive) (if (and (vlo/in-project) - (file-exists-p (vlo/get-propertyfile-name)) - (file-exists-p (vlo/get-jobfile-name))) + (file-exists-p (concat (vlo/project-path) (vlo/get-jobfile-name)))) (leo/exec-process (format "cd %s; vlocity packDeploy -sfdx.username %s -job %s -key %s" (vlo/project-path) - (vlo/get-user) + (vlo/get-project-user) (vlo/get-jobfile-name) - (vlo/get-deployment-key))) - (error (format "Error: cannot find either %s or %s" (vlo/get-propertyfile-name) (vlo/get-jobfile-name))))) + (vlo/get-deployment-key)) "vlocity:deploy" t) + (message "ERROR Deploying:: project: %s, user: %s, job: %s, key: %s" + (vlo/project-path) + (vlo/get-project-user) + (vlo/get-jobfile-name) + (vlo/get-deployment-key)))) + +(defun vlo/packList () + "Run the packGetAllAvailableExports command." + (interactive) + (if (and (vlo/in-project) + (file-exists-p (concat (vlo/project-path) (vlo/get-jobfile-name)))) + (leo/exec-process + (format "cd %s; vlocity packGetAllAvailableExports -sfdx.username %s -job %s -type VlocityUITemplate" + (vlo/project-path) + (vlo/get-project-user) + (vlo/get-jobfile-name)) "vlocity:exports" t) + (message "ERROR Retrieving List:: project: %s, user: %s, job: %s" + (vlo/project-path) + (vlo/get-project-user) + (vlo/get-jobfile-name)))) (defun vlo/transient-action () "Dynamically choose which transient to show based on if currently in a project." @@ -160,20 +175,19 @@ nil." (define-transient-command vlo/transient-init-action () "Vlocity Build Tool CLI Actions" ["Initialize" - ("i" "Create .vemacs in project root" vlo/generate-project-file)] - ) + ("c" "Create project file" vlo/generate-project-file)]) (define-transient-command vlo/transient-project-action () "Vlocity Build Tool CLI Actions" - ["Environments" - ("a" "Add new org environment" vlo/transient-action)] + ;; ["Environments" + ;; ("a" "Add new org environment" vlo/transient-action)] + ["List" + ("l" "get available list" vlo/packList)] ["Actions" - ("e" "export" vlo/packExport) + ("r" "retrieve" vlo/packExport) ("d" "deploy" vlo/packDeploy)]) - - (provide 'vlocitemacs) ;;; vlocitemacs.el ends here