Skip to content

Commit

Permalink
Refactor, add some more checks
Browse files Browse the repository at this point in the history
  • Loading branch information
joe-yeager committed Sep 11, 2024
1 parent 795ec89 commit ac142c0
Show file tree
Hide file tree
Showing 3 changed files with 260 additions and 152 deletions.
117 changes: 17 additions & 100 deletions packages/cli/commands/doctor.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,125 +8,38 @@ const path = require('path');
const { logger } = require('@hubspot/local-dev-lib/logger');
const SpinniesManager = require('../lib/ui/SpinniesManager');

Check failure on line 9 in packages/cli/commands/doctor.js

View workflow job for this annotation

GitHub Actions / build

'SpinniesManager' is assigned a value but never used
const fs = require('fs');
const DoctorManager = require('../lib/DoctorManager');
const Doctor = require('../lib/doctor');
const { EXIT_CODES } = require('../lib/enums/exitCodes');

// const i18nKey = 'commands.doctor';
exports.command = 'doctor';
exports.describe = 'The doctor is in';

exports.handler = async ({ file }) => {
const doctorManager = new DoctorManager();
try {
trackCommandUsage('doctor', null, doctorManager.accountId);
} catch (e) {
logger.debug(e);
}

SpinniesManager.init();
SpinniesManager.add('loadingProjectDetails', {
text: 'Loading project details',
});
exports.handler = async ({ file, verbose }) => {
const doctor = new Doctor();

let projectConfig;
let projectDetails;
try {
projectConfig = await getProjectConfig();
projectDetails = await doctorManager.fetchProjectDetails(
doctorManager.accountId,
projectConfig
);
trackCommandUsage('doctor', null, doctor.accountId);
} catch (e) {
logger.debug(e);
}

SpinniesManager.succeed('loadingProjectDetails', {
text: 'Project details loaded',
});

const { env, authType, personalAccessKey, accountType } = getAccountConfig(
doctorManager.accountId
);
const diagnosis = await doctor.diagnose();

let accessToken = {};
try {
accessToken = await getAccessToken(
personalAccessKey,
env,
doctorManager.accountId
);
} catch (e) {
logger.debug(e);
}
const stringifiedOutput = JSON.stringify(diagnosis, null, 4);

let files = [];
try {
files = (await walk(projectConfig.projectDir))
.filter(doctorManager.shouldIncludeFile)
.map(filename => path.relative(projectConfig.projectDir, filename));
} catch (e) {
logger.debug(e);
if (verbose) {
console.log(stringifiedOutput);
}

const {
platform,
arch,
versions: { node },
mainModule: { path: modulePath },
} = process;

const output = {
platform,
arch,
path: modulePath,
versions: {
'@hubspot/cli': pkg.version,
node,
npm: doctorManager.getNpmVersion(),
},
account: {
accountId: doctorManager.accountId,
accountType,
authType,
name: accessToken.hubName,
scopeGroups: accessToken?.scopeGroups,
enabledFeatures: accessToken?.enabledFeatures,
},
project: {
config:
projectConfig && projectConfig.projectConfig
? projectConfig
: undefined,
details: projectDetails,
},
packageFiles: files.filter(file => {
return path.parse(file).base === 'package.json';
}),
packageLockFiles: files.filter(file => {
return path.parse(file).base === 'package-lock.json';
}),
envFiles: files.filter(file => file.endsWith('.env')),
jsonFiles: files.filter(file => path.extname(file) === '.json'),
files,
};

const stringifiedOutput = JSON.stringify(output, null, 4);

if (file) {
try {
SpinniesManager.add('writingToFile', {
text: `Writing output to ${file}`,
});
fs.writeFileSync(file, JSON.stringify(output, null, 4));
SpinniesManager.succeed('writingToFile', {
text: `Output written to ${file}`,
});
fs.writeFileSync(file, stringifiedOutput);
logger.success(`Output written to ${file}`);
} catch (e) {
SpinniesManager.fail('writingToFile', {
text: 'Unable to write to file',
});
logger.error(`Unable to write output to ${file}, ${e.message}`);
process.exit(EXIT_CODES.ERROR);
}
} else {
console.log(stringifiedOutput);
}
};

Expand All @@ -136,4 +49,8 @@ exports.builder = yargs =>
describe: 'Where to write the output',
type: 'string',
},
verbose: {
describe: 'Chatty?',
type: 'boolean',
},
});
52 changes: 0 additions & 52 deletions packages/cli/lib/DoctorManager.js

This file was deleted.

Loading

0 comments on commit ac142c0

Please sign in to comment.