Skip to content

rajasegar/app-to-addon-migrator

This branch is 1 commit ahead of master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0d66a84 · Apr 30, 2021

History

65 Commits
May 24, 2020
May 28, 2020
May 28, 2020
May 28, 2020
May 22, 2020
May 24, 2020
May 22, 2020
May 22, 2020
May 26, 2020
Oct 10, 2020
May 28, 2020
May 24, 2020
Apr 30, 2021

Repository files navigation

app-to-addon-migrator

Build and Deploy Coverage Status semantic-release npm version

An opinionated cli tool to migrate Ember components from app to addons within a Yarn workspace.

NOTE: This cli tool works only with the following conventional folder structure for your Ember app.

|-app
|-packages
| |-addons
| |-engines
| | |-dashboards-engine
| | |-tickets-engine

Assumptions made by this tool

  • Your Ember app lives in the root of your project folder.
  • Engines live under packages/engines folder.
  • Addons live under packages/addons folder.
  • You are using Yarn workspaces.
  • You are using POD structure for your components.

Install

npm i -g app-to-addon-migrator

Usage

1. ateam (wizard UI)

ateam

asciicast

2. atam (classic CLI)

atam [entity] [entity-name] [dest-folder]
atam route default packages/engines/dashboards-engine

After running the above command, the route default from app/routes/default.js will be moved to packages/engines/dashboards-engine/addon/routes/default.js

Dry-run

If you just want to see/verify the movement use the --dry-run or -d option.

atam route default packages/engines/dashboards-engine -d

This will print something like (without actually copying the files):

Moving route.js
---------------
app/routes/helpdesk/default.js
packages/engines/dashboards-engine/addon/routes/default.js


Moving route template.hbs
-------------------------
app/templates/helpdeskdefault.hbs
packages/engines/dashboards-engine/addon/templates/default.hbs

...

Folder namespace

If your source entities are namespaced within a folder you can use the -f option to specify the same before copying. Say for example you want to move a component called widget from app/components/dashboards

atam component widget packages/engines/dashboards-engine -f dashboards

Commands:

  atam adapter [adapter-name]               Copy an adapter from app to addon
  [destination]
  atam component [component-name]           Copy a component from app to addon
  [destination]
  atam constant [constant-name]             Copy a constant from app to addon
  [destination]
  atam helper [helper-name] [destination]   Copy a helper from app to addon
  atam mixin [mixin-name] [destination]     Copy a mixin from app to addon
  atam model [model-name] [destination]     Copy a model from app to addon
  atam route [route-name] [destination]     Copy a route with controller from
                                            app to addon
  atam routex [route-name] [destination]    Copy a route and its dependent
                                            components from app to addon
  atam service [storage-name]               Copy a storage from app to addon
  [destination]
  atam storage [storage-name]               Copy a storage from app to addon
  [destination]
  atam util [util-name] [destination]       Copy a util from app to addon
  atam validator [validator-name]           Copy a validator from app to addon
  [destination]

Options:
  --version      Show version number                                   [boolean]
  --help         Show help                                             [boolean]
  --dry-run, -d  Dry Run: Verify the movement without executing        [boolean]
  --pods, -p     Specify that the source components use PODS structure
                                                       [boolean] [default: true]


References