1- const delay = require ( 'delay' )
2- const glob = require ( 'glob-promise' )
3- const robot = require ( 'robotjs' )
4- const util = require ( 'util' )
5- const exec = util . promisify ( require ( 'child_process' ) . exec )
1+ const MacRunner = require ( '../../mac-runner' )
62const { compressPngImage } = require ( '../../utils' )
73
84module . exports = {
95 run : async ( outputPath ) => {
106 console . log ( '> Recording dock icon size with param set to 36' )
117
12- const { stderr : setEnvError } = await exec (
13- 'defaults write com.apple.screencapture show-thumbnail -bool false && defaults write com.apple.dock tilesize -int 36 && killall Dock'
14- )
15- if ( setEnvError ) {
16- console . error (
17- 'An error occured while setting up the dock tilesize command'
18- )
8+ try {
9+ const runner = new MacRunner ( )
10+ await runner
11+ . setDefault ( 'com.apple.dock' , 'tilesize' , '-int 36' , '36' )
12+ . killApp ( 'Dock' )
13+ . wait ( 1000 )
14+ . captureScreen ( `${ outputPath } /36-tmp.png` )
15+ . deleteDefault ( 'com.apple.dock' , 'tilesize' )
16+ . killApp ( 'Dock' )
17+ . run ( )
18+ } catch ( runnerError ) {
1919 logRollbackInfo ( )
20- throw new Error ( setEnvError )
20+ throw new Error ( runnerError )
2121 }
2222
23- // Preparation
24- await delay ( 3000 )
25-
26- // Screenshot
27- robot . keyTap ( '3' , [ 'command' , 'shift' ] )
28-
29- await delay ( 1000 )
30- const screenshot = (
31- await glob ( `/Users/${ process . env . USER } /Desktop/*.png` )
32- ) . pop ( )
33-
3423 try {
35- await compressPngImage ( screenshot , outputPath , '36' )
24+ await compressPngImage ( ` ${ outputPath } /36-tmp.png` , outputPath , '36' )
3625 } catch ( compressPngImageError ) {
3726 logRollbackInfo ( )
3827 throw new Error ( compressPngImageError )
3928 }
4029
41- const { stderr : deleteEnvError } = await exec (
42- 'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
43- )
44- if ( deleteEnvError ) {
45- console . error (
46- 'An error occured while cleaning the dock tilesize environment'
47- )
48- logRollbackInfo ( )
49- throw new Error ( deleteEnvError )
50- }
51-
5230 return { filepath : `${ outputPath } /36` }
5331 } ,
5432}
@@ -57,7 +35,5 @@ function logRollbackInfo() {
5735 console . info (
5836 'Please manually run this command to make sure everything is properly reset:'
5937 )
60- console . info (
61- 'defaults delete com.apple.screencapture show-thumbnail && defaults delete com.apple.dock tilesize && killall Dock'
62- )
38+ console . info ( 'defaults delete com.apple.dock tilesize && killall Dock' )
6339}
0 commit comments