Skip to content

Commit

Permalink
chore: Scaffolded the update-classes step
Browse files Browse the repository at this point in the history
  • Loading branch information
ijlee2 committed Apr 23, 2024
1 parent 927ec3a commit 0121e03
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 3 deletions.
3 changes: 2 additions & 1 deletion src/migration/ember-app/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type { CodemodOptions } from '../../types/index.js';
import { createOptions } from '../../utils/steps/create-options.js';
import { updateClasses } from '../../utils/steps/update-classes.js';

export function migrateEmberApp(codemodOptions: CodemodOptions): void {
const options = createOptions(codemodOptions);

console.log(options);
updateClasses(['app/**/*.{js,ts}'], options);
}
6 changes: 5 additions & 1 deletion src/migration/ember-v1-addon/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import type { CodemodOptions } from '../../types/index.js';
import { createOptions } from '../../utils/steps/create-options.js';
import { updateClasses } from '../../utils/steps/update-classes.js';

export function migrateEmberV1Addon(codemodOptions: CodemodOptions): void {
const options = createOptions(codemodOptions);

console.log(options);
updateClasses(
['addon/**/*.{js,ts}', 'tests/dummy/app/**/*.{js,ts}'],
options,
);
}
3 changes: 2 additions & 1 deletion src/migration/ember-v2-addon/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type { CodemodOptions } from '../../types/index.js';
import { createOptions } from '../../utils/steps/create-options.js';
import { updateClasses } from '../../utils/steps/update-classes.js';

export function migrateEmberV2Addon(codemodOptions: CodemodOptions): void {
const options = createOptions(codemodOptions);

console.log(options);
updateClasses(['src/**/*.{js,ts}'], options);
}
38 changes: 38 additions & 0 deletions src/utils/steps/update-classes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { readFileSync, writeFileSync } from 'node:fs';
import { join } from 'node:path';

import { findFiles } from '@codemod-utils/files';

import { Options } from '../../types/index.js';
import { findLocalName } from './update-classes/find-local-name.js';
import { renameImports } from './update-classes/rename-imports.js';

export function updateClasses(src: string[], options: Options): void {
const { projectRoot } = options;

const filePaths = findFiles(src, {
projectRoot,
});

filePaths.forEach((filePath) => {
const oldPath = join(projectRoot, filePath);
const oldFile = readFileSync(oldPath, 'utf8');

const isTypeScript = filePath.endsWith('.ts');

const localName = findLocalName(oldFile, {
isTypeScript,
});

if (localName === undefined) {
return;
}

const newFile = renameImports(oldFile, {
isTypeScript,
localName,
});

writeFileSync(oldPath, newFile, 'utf8');
});
}
17 changes: 17 additions & 0 deletions src/utils/steps/update-classes/find-local-name.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { AST } from '@codemod-utils/ast-javascript';

type Data = {
isTypeScript: boolean;
};

export function findLocalName(file: string, data: Data): string | undefined {
let localName: string | undefined;

const traverse = AST.traverse(data.isTypeScript);

traverse(file, {
// ...
});

return localName;
}
16 changes: 16 additions & 0 deletions src/utils/steps/update-classes/rename-imports.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { AST } from '@codemod-utils/ast-javascript';

type Data = {
isTypeScript: boolean;
localName: string;
};

export function renameImports(file: string, data: Data): string {
const traverse = AST.traverse(data.isTypeScript);

const ast = traverse(file, {
// ...
});

return AST.print(ast);
}

0 comments on commit 0121e03

Please sign in to comment.