Skip to content

Commit 9e876c1

Browse files
Merge pull request #32 from CodeshiftCommunity/31-cleanup-packages
Refactor repo scripts
2 parents b3bd2cd + fafb6b3 commit 9e876c1

File tree

13 files changed

+122
-56
lines changed

13 files changed

+122
-56
lines changed

.changeset/three-cougars-yawn.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@codeshift/cli': patch
3+
'@codeshift/initializer': patch
4+
'@codeshift/publisher': patch
5+
'@codeshift/validator': patch
6+
---
7+
8+
Update package configuration and refactors repo scripts

package.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222
"types:check": "tsc --noEmit --skipLibCheck",
2323
"monorepo:check": "manypkg check",
2424
"monorepo:fix": "manypkg fix && preconstruct fix",
25-
"init:codemods": "ts-node scripts/initialize.ts",
2625
"start:codemods": "node packages/cli/bin/codeshift-cli.js",
26+
"init:codemods": "ts-node scripts/initialize.ts",
2727
"validate:codemods": "ts-node scripts/validate.ts ./community",
28-
"release:codemods": "ts-node packages/publisher/src/index.ts ./community ./.tmp",
28+
"release:codemods": "ts-node scripts/publish.ts ./community ./.tmp",
29+
"release-all:codemods": "ts-node scripts/publish-all.ts ./community ./.tmp",
30+
"release-all-dry:codemods": "ts-node scripts/publish-all-dry.ts ./community ./.tmp",
2931
"prerelease": "yarn validate && yarn test",
3032
"release": "yarn changeset publish"
3133
},

packages/cli/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"codemod-cli": "./bin/codeshift-cli.js"
1111
},
1212
"scripts": {
13-
"start": "ts-node src/index.ts"
13+
"start": "./bin/codeshift-cli.js",
14+
"start:dev": "ts-node src/index.ts"
1415
},
1516
"dependencies": {
1617
"@codeshift/initializer": "0.1.0",

packages/cli/src/main.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ jest.mock('live-plugin-manager', () => ({
77
install: () => Promise.resolve(undefined),
88
getInfo: (name: string) =>
99
Promise.resolve({ location: `node_modules/${name}` }),
10+
uninstallAll: () => Promise.resolve(),
1011
}),
1112
}));
1213

packages/cli/src/main.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,5 @@ export default async function main(paths: string[], flags: Flags) {
9999
});
100100
}
101101

102-
/**
103-
* TODO: uncomment the below when jscodeshift can be used as an async function
104-
*/
105-
// await packageManager.uninstallAll();
102+
await packageManager.uninstallAll();
106103
}

packages/initializer/package.json

-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
"types": "dist/codeshift-initializer.cjs.d.ts",
66
"license": "MIT",
77
"repository": "https://github.com/CodeshiftCommunity/CodeshiftCommunity/tree/master/packages/initializer",
8-
"scripts": {
9-
"start": "ts-node src/index.ts"
10-
},
118
"dependencies": {
129
"fs-extra": "^9.1.0",
1310
"recast": "^0.20.4",

packages/publisher/package.json

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
{
22
"name": "@codeshift/publisher",
3-
"private": true,
43
"version": "0.1.0",
54
"main": "dist/codeshift-publisher.cjs.js",
65
"types": "dist/codeshift-publisher.cjs.d.ts",
76
"license": "MIT",
87
"repository": "https://github.com/CodeshiftCommunity/CodeshiftCommunity/tree/master/packages/publisher",
9-
"scripts": {
10-
"start": "ts-node src/index.ts"
11-
},
128
"dependencies": {
9+
"@preconstruct/cli": "^2.0.0",
1310
"fs-extra": "^9.1.0",
1411
"npm-registry-client": "^8.6.0",
1512
"semver": "^7.3.5",

packages/publisher/src/changed.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import simpleGit from 'simple-git/promise';
22
import fs from 'fs-extra';
33

4-
export default async function getChangedPackages() {
5-
const git = simpleGit();
4+
export function getAllPackages(path: string) {
5+
return fs
6+
.readdirSync(path, { withFileTypes: true })
7+
.filter(dir => dir.isDirectory())
8+
.map(dir => dir.name);
9+
}
610

7-
const eventMeta = JSON.parse(
8-
fs.readFileSync(process.env.GITHUB_EVENT_PATH!, 'utf8'),
9-
);
11+
export async function getChangedPackages(sinceRef: string) {
12+
const git = simpleGit();
13+
const eventMeta = JSON.parse(fs.readFileSync(sinceRef!, 'utf8'));
1014

1115
try {
1216
await git.revparse(['--verify', eventMeta.before]);

packages/publisher/src/index.ts

+4-34
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,4 @@
1-
import generatePackages, { cleanTargetDir } from './generate';
2-
import getChangedPackages from './changed';
3-
import buildPackages from './build';
4-
import publishPackages from './publish';
5-
6-
async function main(sourcePath: string, targetPath: string) {
7-
cleanTargetDir(targetPath);
8-
9-
console.log('Calculating changed packages');
10-
const changedPackages = await getChangedPackages();
11-
12-
if (changedPackages.length === 0) {
13-
console.log('No packages changed, exiting...');
14-
process.exit(0);
15-
}
16-
17-
console.log('Changed packages', changedPackages);
18-
19-
console.log('Generating temporary directory');
20-
await generatePackages(sourcePath, targetPath, changedPackages);
21-
22-
console.log('Building changed packages');
23-
await buildPackages();
24-
25-
console.log('Publishing changed packages');
26-
await publishPackages(targetPath, process.env.NPM_TOKEN!);
27-
28-
console.log('Cleaning up temporary directory');
29-
cleanTargetDir(targetPath);
30-
}
31-
32-
main(process.argv[2], process.argv[3]).catch(error => {
33-
console.error('Publishing error:', error.message);
34-
});
1+
export { default as generatePackages, cleanTargetDir } from './generate';
2+
export { getChangedPackages, getAllPackages } from './changed';
3+
export { default as buildPackages } from './build';
4+
export { default as publishPackages } from './publish';

packages/validator/package.json

-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
"types": "dist/codeshift-validator.cjs.d.ts",
66
"license": "MIT",
77
"repository": "https://github.com/CodeshiftCommunity/CodeshiftCommunity/tree/master/packages/validator",
8-
"scripts": {
9-
"start": "ts-node src/index.ts"
10-
},
118
"dependencies": {
129
"fs-extra": "^9.1.0",
1310
"recast": "^0.20.4",

scripts/publish-all-dry.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {
2+
getAllPackages,
3+
buildPackages,
4+
generatePackages,
5+
cleanTargetDir,
6+
} from '@codeshift/publisher';
7+
8+
async function main(sourcePath: string, targetPath: string) {
9+
cleanTargetDir(targetPath);
10+
11+
const packages = getAllPackages(sourcePath);
12+
console.log(packages);
13+
14+
console.log('Generating temporary directory');
15+
await generatePackages(sourcePath, targetPath, packages);
16+
17+
console.log('Building all packages');
18+
await buildPackages();
19+
}
20+
21+
main(process.argv[2], process.argv[3]).catch(error => {
22+
console.error('Publishing error:', error.message);
23+
});

scripts/publish-all.ts

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import {
2+
getAllPackages,
3+
buildPackages,
4+
generatePackages,
5+
cleanTargetDir,
6+
publishPackages,
7+
} from '@codeshift/publisher';
8+
9+
async function main(sourcePath: string, targetPath: string) {
10+
cleanTargetDir(targetPath);
11+
12+
const packages = getAllPackages(sourcePath);
13+
console.log(packages);
14+
15+
console.log('Generating temporary directory');
16+
await generatePackages(sourcePath, targetPath, packages);
17+
18+
console.log('Building all packages');
19+
await buildPackages();
20+
21+
console.log('Publishing all packages');
22+
await publishPackages(targetPath, process.env.NPM_TOKEN!);
23+
24+
console.log('Cleaning up temporary directory');
25+
cleanTargetDir(targetPath);
26+
}
27+
28+
main(process.argv[2], process.argv[3]).catch(error => {
29+
console.error('Publishing error:', error.message);
30+
});

scripts/publish.ts

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import {
2+
getChangedPackages,
3+
buildPackages,
4+
generatePackages,
5+
cleanTargetDir,
6+
publishPackages,
7+
} from '@codeshift/publisher';
8+
9+
async function main(sourcePath: string, targetPath: string) {
10+
cleanTargetDir(targetPath);
11+
12+
console.log('Calculating changed packages');
13+
const changedPackages = await getChangedPackages(
14+
process.env.GITHUB_EVENT_PATH!,
15+
);
16+
17+
if (changedPackages.length === 0) {
18+
console.log('No packages changed, exiting...');
19+
process.exit(0);
20+
}
21+
22+
console.log('Changed packages', changedPackages);
23+
24+
console.log('Generating temporary directory');
25+
await generatePackages(sourcePath, targetPath, changedPackages);
26+
27+
console.log('Building changed packages');
28+
await buildPackages();
29+
30+
console.log('Publishing changed packages');
31+
await publishPackages(targetPath, process.env.NPM_TOKEN!);
32+
33+
console.log('Cleaning up temporary directory');
34+
cleanTargetDir(targetPath);
35+
}
36+
37+
main(process.argv[2], process.argv[3]).catch(error => {
38+
console.error('Publishing error:', error.message);
39+
});

0 commit comments

Comments
 (0)