Bladeren bron

Add a theme creation checklist

Ben Dwyer 4 jaren geleden
bovenliggende
commit
f8fc406616
1 gewijzigde bestanden met toevoegingen van 92 en 0 verwijderingen
  1. 92 0
      create-a-theme-checklist.js

+ 92 - 0
create-a-theme-checklist.js

@@ -0,0 +1,92 @@
+const theme = process.argv[ 2 ];
+
+if ( ! theme ) {
+	console.error( '\x1b[41m', 'You must specify a theme!' );
+	return;
+}
+
+const { Octokit } = require( 'octokit' );
+const octokit = new Octokit( { auth: `PUT YOUR TOKEN HERE` } );
+
+async function createLabel() {
+	try {
+		return await octokit.request( 'POST /repos/Automattic/themes/labels', {
+			name: '[Theme] ' + theme,
+			color: 'c1f4a1',
+			description: 'Automatically generated label for ' + theme + '.',
+		} );
+	} catch ( error ) {
+		console.log( error );
+	}
+}
+
+async function createMilestone() {
+	try {
+		return await octokit.request(
+			'POST /repos/Automattic/themes/milestones',
+			{
+				title: theme,
+				description:
+					'Automatically generated milestone for ' + theme + '.',
+			}
+		);
+	} catch ( error ) {
+		console.error( '\x1b[41m', 'Milestone already created.' );
+	}
+}
+
+async function createIssues( milestoneNumber ) {
+	const issues = [
+		'Create base theme from boilerplate',
+		/*'Create a demo site on dotcom',
+		'theme.json: Typography settings',
+		'theme.json: Color palette',
+		'theme.json: Alternative color palettes',
+		'theme.json: Margin/spacing settings',
+		'Templates:Page templates (one task per template, search, 404 etc.)',
+		'Templates:Header template part (including mobile)',
+		'Templates:Footer template part (including mobile)',
+		'Block patterns (if needed)',
+		'Block styles (if needed)',
+		'Comment form styles (dotcom and dotorg) (if needed)',
+		'Navigation (if needed)',
+		'Core block settings (if needed)',
+		'Third party block settings (Jetpack, Woo, etc.) (if needed)',*/
+	];
+	issues.forEach( async ( issue ) => {
+		try {
+			return await octokit
+				.request( 'POST /repos/Automattic/themes/issues', {
+					title: theme + ': ' + issue,
+					labels: [ '[Theme] ' + theme ],
+					milestone: milestoneNumber,
+				} )
+				.then( ( issueData ) => {
+					const issueUrl = issueData.data.html_url;
+					addIssueToProject( issueUrl );
+				} );
+		} catch ( error ) {
+			console.log( error );
+		}
+	} );
+}
+
+async function addIssueToProject( issueUrl ) {
+	try {
+		return await octokit.request( 'POST /projects/columns/11021541/cards', {
+			note: issueUrl,
+			mediaType: {
+				previews: [ 'inertia' ],
+			},
+		} );
+	} catch ( error ) {
+		console.log( error );
+	}
+}
+
+createLabel().then( () => {
+	createMilestone().then( ( milestoneData ) => {
+		const milestoneNumber = milestoneData.data.number;
+		createIssues( milestoneNumber );
+	} );
+} );