chrisbarrett / skeletor.el

Powerful project skeletons for Emacs
GNU General Public License v3.0
126 stars 17 forks source link

Dart project set up problems #50

Closed ram535 closed 3 years ago

ram535 commented 3 years ago

Thanks for this package.

For dart projects I use this path ~/Projects/dart/.

For dart projects the program stagehand is used to create the project templates.

To create a Project with stagehand the directory must be create first.

Example:

mkdir foo
cd foo
stagehand console-simple

This is my config:

  (skeletor-define-constructor "dart console-simple"
    :no-license? t
    :initialise
    (lambda (spec)
      (let-alist spec
        (shell-command
         (format "mkdir -p %s/dart/%s" .project-dir .project-name))
        (skeletor-shell-command
         (format "stagehand console-simple")
         (format "%s/dart/%s" .project-dir  .project-name)))))

The problem with this is that these variables are not set correct when doing M-x skeletor-create-project Project name: foo.

(project-name . "foo")
 (project-dir . "/home/last/Projects")
 (dest . "/home/last/Projects/foo")

The correct values should be:

(project-name . "foo")
 (project-dir . "/home/last/Projects/dart")
 (dest . "/home/last/Projects/dart/foo")

The files are created fine but the git init is done in the wrong directory:

Project created at /home/last/Projects/moo
Initialising git...
apply: Setting current directory: No such file or directory, /home/last/Projects/moo

If I use skeletor-create-project-at this variable is set wrong (dest . "/home/last/Projects/dart/foo/foo") instead of (dest . "/home/last/Projects/dart/foo")

Thanks.

ram535 commented 3 years ago

I made it work.

  (skeletor-define-constructor "dart console-simple"
    :no-license? t
    :no-git? t
    :initialise
    (lambda (spec)
      (let-alist spec
        (shell-command
         (format "mkdir -p %s/%s" .project-dir .project-name))
        (skeletor-shell-command
         (format "stagehand console-simple")
         (format "%s/%s" .project-dir  .project-name))))
    :after-creation
    (lambda (dir)
      (skeletor-async-shell-command "pub get")))

And with M-x skeletor-create-project-at, select directory ~/Projects/dart.