#lang scheme/base (current-directory (build-path 'up)) (define app-path (vector-ref (current-command-line-arguments) 0)) (define old-name (vector-ref (current-command-line-arguments) 1)) (define new-name (vector-ref (current-command-line-arguments) 2)) (rename-file-or-directory (build-path app-path "Contents" "MacOS" old-name) (build-path app-path "Contents" "MacOS" "other")) (rename-file-or-directory (build-path app-path "Contents" "MacOS" "other") (build-path app-path "Contents" "MacOS" new-name)) (rename-file-or-directory (build-path app-path "Contents" "Resources" (format "~a.icns" old-name)) (build-path app-path "Contents" "Resources" "other")) (rename-file-or-directory (build-path app-path "Contents" "Resources" "other") (build-path app-path "Contents" "Resources" (format "~a.icns" new-name))) (let ([s (with-input-from-file (build-path app-path "Contents" "Info.plist") (lambda () (read-bytes 10000000)))]) (with-output-to-file (build-path app-path "Contents" "Info.plist") #:exists 'truncate (lambda () (printf "~a\n" (regexp-replace* (format "~a" old-name) s (format "~a" new-name))))))