♻️ Use MacRunner

This commit is contained in:
Yann Bertrand 2022-08-18 10:59:23 +02:00
parent ef25dba680
commit 8bca39f739
2 changed files with 30 additions and 78 deletions

View file

@ -1,54 +1,32 @@
const delay = require('delay')
const glob = require('glob-promise')
const robot = require('robotjs')
const util = require('util')
const exec = util.promisify(require('child_process').exec)
const MacRunner = require('../../mac-runner')
const { compressPngImage } = require('../../utils')
module.exports = {
run: async (outputPath) => {
console.log('> Recording dock icon size with param set to 36')
const { stderr: setEnvError } = await exec(
'defaults write com.apple.screencapture show-thumbnail -bool false && defaults write com.apple.dock tilesize -int 36 && killall Dock'
)
if (setEnvError) {
console.error(
'An error occured while setting up the dock tilesize command'
)
try {
const runner = new MacRunner()
await runner
.setDefault('com.apple.dock', 'tilesize', '-int 36', '36')
.killApp('Dock')
.wait(1000)
.captureScreen(`${outputPath}/36-tmp.png`)
.deleteDefault('com.apple.dock', 'tilesize')
.killApp('Dock')
.run()
} catch (runnerError) {
logRollbackInfo()
throw new Error(setEnvError)
throw new Error(runnerError)
}
// Preparation
await delay(3000)
// Screenshot
robot.keyTap('3', ['command', 'shift'])
await delay(1000)
const screenshot = (
await glob(`/Users/${process.env.USER}/Desktop/*.png`)
).pop()
try {
await compressPngImage(screenshot, outputPath, '36')
await compressPngImage(`${outputPath}/36-tmp.png`, outputPath, '36')
} catch (compressPngImageError) {
logRollbackInfo()
throw new Error(compressPngImageError)
}
const { stderr: deleteEnvError } = await exec(
'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
)
if (deleteEnvError) {
console.error(
'An error occured while cleaning the dock tilesize environment'
)
logRollbackInfo()
throw new Error(deleteEnvError)
}
return { filepath: `${outputPath}/36` }
},
}
@ -57,7 +35,5 @@ function logRollbackInfo() {
console.info(
'Please manually run this command to make sure everything is properly reset:'
)
console.info(
'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
)
console.info('defaults delete com.apple.dock tilesize && killall Dock')
}

View file

@ -1,54 +1,32 @@
const delay = require('delay')
const glob = require('glob-promise')
const robot = require('robotjs')
const util = require('util')
const exec = util.promisify(require('child_process').exec)
const MacRunner = require('../../mac-runner')
const { compressPngImage } = require('../../utils')
module.exports = {
run: async (outputPath) => {
console.log('> Recording dock icon size with param set to 48')
const { stderr: setEnvError } = await exec(
'defaults write com.apple.screencapture show-thumbnail -bool false && defaults write com.apple.dock tilesize -int 48 && killall Dock'
)
if (setEnvError) {
console.error(
'An error occured while setting up the dock tilesize command'
)
try {
const runner = new MacRunner()
await runner
.setDefault('com.apple.dock', 'tilesize', '-int 48', '48')
.killApp('Dock')
.wait(1000)
.captureScreen(`${outputPath}/48-tmp.png`)
.deleteDefault('com.apple.dock', 'tilesize')
.killApp('Dock')
.run()
} catch (runnerError) {
logRollbackInfo()
throw new Error(setEnvError)
throw new Error(runnerError)
}
// Preparation
await delay(3000)
// Screenshot
robot.keyTap('3', ['command', 'shift'])
await delay(1000)
const screenshot = (
await glob(`/Users/${process.env.USER}/Desktop/*.png`)
).pop()
try {
await compressPngImage(screenshot, outputPath, '48')
await compressPngImage(`${outputPath}/48-tmp.png`, outputPath, '48')
} catch (compressPngImageError) {
logRollbackInfo()
throw new Error(compressPngImageError)
}
const { stderr: deleteEnvError } = await exec(
'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
)
if (deleteEnvError) {
console.error(
'An error occured while cleaning the dock tilesize environment'
)
logRollbackInfo()
throw new Error(deleteEnvError)
}
return { filepath: `${outputPath}/48` }
},
}
@ -57,7 +35,5 @@ function logRollbackInfo() {
console.info(
'Please manually run this command to make sure everything is properly reset:'
)
console.info(
'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
)
console.info('defaults delete com.apple.dock tilesize && killall Dock')
}