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' )
6
2
const { compressPngImage } = require ( '../../utils' )
7
3
8
4
module . exports = {
9
5
run : async ( outputPath ) => {
10
6
console . log ( '> Recording dock icon size with param set to 36' )
11
7
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 ) {
19
19
logRollbackInfo ( )
20
- throw new Error ( setEnvError )
20
+ throw new Error ( runnerError )
21
21
}
22
22
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
-
34
23
try {
35
- await compressPngImage ( screenshot , outputPath , '36' )
24
+ await compressPngImage ( ` ${ outputPath } /36-tmp.png` , outputPath , '36' )
36
25
} catch ( compressPngImageError ) {
37
26
logRollbackInfo ( )
38
27
throw new Error ( compressPngImageError )
39
28
}
40
29
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
-
52
30
return { filepath : `${ outputPath } /36` }
53
31
} ,
54
32
}
@@ -57,7 +35,5 @@ function logRollbackInfo() {
57
35
console . info (
58
36
'Please manually run this command to make sure everything is properly reset:'
59
37
)
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' )
63
39
}
0 commit comments