I’ve just got my first mac today (a new MacBook Pro no less)…
Being a web developer I’ve been busy installing php and mysql etc - all this is working fine.
Then I thought wouldn’t it be nice if I could create a script that changes the document root of apache to the folder that I drop onto it…
I’ve got so damn close it’s killing me! -
From hunting around I’ve got a script that restarts apache. A script that writes to a text file and a script that does something to do with a folder that’s been dropped on it.
I’ve got a small httpd.conf file that gets included in the proper main httpd.conf file - so I can clear it and write to it from my applescript. Then restart apache and it’s working.
Problem is that my script writes to my small httpd.conf file with a space - " " between each character. This only happens when I translate the folder path using the POSIX command AND add it to my string before writing to my conf file. If I don’t do the POSIX command or I don’t add the resulting string to my Virtual host string then there’s no double spacing… Any clues helpful.
here’s my script (no apache restart code in there yet, that’s just one line anyway)
on open input tell application "Finder" to set thePath to POSIX path of (item 1 of input as text) setFolderToBeApacheRoot(thePath) end open on setFolderToBeApacheRoot(filePath) set firstPart to "<VirtualHost localhost:80> ServerAdmin email@example.com DocumentRoot " set lastPart to " ServerName localhost </VirtualHost> " set str to firstPart & filePath & lastPart set this_file to "/path/to/include/httpd.conf" set this_file to POSIX file this_file display dialog this_story my write_to_file(str, this_file, false) end setFolderToBeApacheRoot on write_to_file(this_data, target_file, append_data) try set the target_file to the target_file as text set the open_target_file to ¬ open for access file target_file with write permission if append_data is false then ¬ set eof of the open_target_file to 0 write this_data to the open_target_file starting at eof close access the open_target_file return true on error try close access file target_file end try return false end try end write_to_file