Skip to content

Commit

Permalink
refactor: disable cliui spinner when running in verbose mode
Browse files Browse the repository at this point in the history
  • Loading branch information
thetutlage committed Dec 26, 2023
1 parent 46bf844 commit ee482c4
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 8 deletions.
26 changes: 18 additions & 8 deletions modules/ace/codemods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,22 +258,30 @@ export class Codemods extends EventEmitter {
const transformer = new this.#codeTransformer.CodeTransformer(this.#app.appRoot)
const packageManager = await transformer.detectPackageManager(appPath)

let spinner = this.#cliLogger
.await(`installing dependencies using ${packageManager || 'npm'} `)
.start()
const spinner = this.#cliLogger.await(
`installing dependencies using ${packageManager || 'npm'} `
)

const silentLogs = !this.verboseInstallOutput
if (silentLogs) {
spinner.start()
}

try {
await transformer.installPackage(dependencies, {
cwd: appPath,
silent: !this.verboseInstallOutput,
silent: silentLogs,
})
await transformer.installPackage(devDependencies, {
dev: true,
cwd: appPath,
silent: !this.verboseInstallOutput,
silent: silentLogs,
})

spinner.stop()
if (silentLogs) {
spinner.stop()
}

this.#cliLogger.success('Packages installed')
this.#cliLogger.log(
devDependencies.map((dependency) => ` ${colors.dim('dev')} ${dependency} `).join('\n')
Expand All @@ -282,8 +290,10 @@ export class Codemods extends EventEmitter {
dependencies.map((dependency) => ` ${colors.dim('prod')} ${dependency} `).join('\n')
)
} catch (error) {
spinner.update('unable to install dependencies')
spinner.stop()
if (silentLogs) {
spinner.update('unable to install dependencies')
spinner.stop()
}
this.#cliLogger.fatal(error)
this.emit('error', error)
}
Expand Down
37 changes: 37 additions & 0 deletions tests/ace/codemods.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,3 +177,40 @@ test.group('Codemods | registerPolicies', (group) => {
await assert.fileContains('app/policies/main.ts', '#policies/post_policy')
})
})

test.group('Codemods | install packages', (group) => {
group.tap((t) => t.timeout(60 * 1000))

test('install packages', async ({ assert, fs }) => {
const ace = await new AceFactory().make(fs.baseUrl, {
importer: (filePath) => import(filePath),
})
await ace.app.init()

await fs.createJson('tsconfig.json', {})
await fs.createJson('package.json', {})
await fs.create('app/policies/main.ts', 'export const policies = {}')

const codemods = new Codemods(ace.app, ace.ui.logger)
await codemods.installPackages([{ name: '@adonisjs/assembler@next', isDevDependency: true }])

await assert.dirExists('node_modules/@adonisjs/assembler')
})

test('install packages in verbose mode', async ({ assert, fs }) => {
const ace = await new AceFactory().make(fs.baseUrl, {
importer: (filePath) => import(filePath),
})
await ace.app.init()

await fs.createJson('tsconfig.json', {})
await fs.createJson('package.json', {})
await fs.create('app/policies/main.ts', 'export const policies = {}')

const codemods = new Codemods(ace.app, ace.ui.logger)
codemods.verboseInstallOutput = true
await codemods.installPackages([{ name: '@adonisjs/assembler@next', isDevDependency: true }])

await assert.dirExists('node_modules/@adonisjs/assembler')
})
})

0 comments on commit ee482c4

Please sign in to comment.