[wingide-users] New project synchronization scripts

Russell E. Owen rowen at cesmail.net
Wed May 25 14:58:18 EDT 2005


Ken Kinder's projectupkeep script is really handy
and prompted me to write two adaptations.

My goal was to add:
- The ability to remove files from my project that had been 
   deleted from disk.
- The ability to scan the whole project with one click
   (and not worry about what folder or file was selected).
- Simpler configuration for what to files and folders to ignore.
- Speed.

Feel free to try these out. I recommend synchfiles
if your projects are laid out according to its requirements,
else use addremovefiles.

- synchfiles: add and remove files with one go.
Warning: this script requires a very particular layout
of files for your project:
1) Your project file (<whatever>.wpu) must be in the
   root directory of your project.
2) Your project must consist of all "valid" files and subdirs
    in that root directory.

- addremovefiles. more basic than synchfiles
  with minimal assumptions about project layout
  and separate "add" and "remove" commands.
  Adding works just like Ken Kinder's projectupkeep:
  it recursively scans for new files in the selected dir
  (or parent dir of the selected file).
  Removal always scans the entire project.

For now, you can find them here:
<ftp://ftp.astro.washington.edu/pub/users/rowen/wingide/>
Please ignore the files whose names start with a ".".

I hope WingWare will add these to their "contributions" page.
If/when that happens I will probably stop serving them myself.

-- Russell

P.S. a few interesting points came to light:
- For projects that consist of all files in a directory
  (which I assume is most projects but not all)
  it would be nice to be able to ask WingIDE
  what that directory is. Then I could make
  synchfiles much more robust -- e.g.
  have it only available for the "right kind" of projects.

- A minor esthetic thing: I wish that the callable item
that is the script could be a class instance instead of
having to be a function. This leads to minor ugliness:

class MyScript:
  """the actual script"""

myScriptInstance = MyScript()

# the hack:
def my_script():
  MyScriptClass().start()
my_script.contexts = ...



More information about the wingide-users mailing list