I see, is there also a description of input and output?

On Nov 22, 6:59 pm, Alex North <[email protected]> wrote:
> Sure. Here's some python code I hacked up to calculate deps. The goal is to
> calculate cross-package java deps and write them to a file which we check
> in. Then changing package deps generates a diff for comment in code review,
> avoiding accidental unwanted deps.
>
> Note that the question is not so much whether it's possible in Java, but
> whether we should suffer using Java for scripting tasks in return for
> avoiding the python dep. I also noticed that in addition to the code review
> script we also have a python script for compiling the HTML docs from RST.
>
> #!/usr/bin/env python
>
> import re
> import os
> import sys
>
> # Matches an import line, separating the package part (lowercase only) from
> # the type name.
> IMPORT_RE = re.compile(r'import ([a-z0-9\.]+)\.([\w\.]+);')
>
> def main():
>   if len(sys.argv) < 2:
>     print "Usage: %s <root>" % sys.argv[0]
>     exit(1)
>   root = sys.argv[1]
>
>   all_deps = {}
>   os.path.walk(root, find_deps, all_deps)
>
>   for (package, deps) in all_deps.iteritems():
>     print "===", package, "==="
>     ordered_deps = []
>     ordered_deps.extend(deps)
>     ordered_deps.sort()
>     for dep in ordered_deps:
>       print dep
>     print
>
> def find_deps(all_deps, dir, names):
>   package = dir.partition('/')[2].replace('/', '.')
>
>   deps = set()
>   for sourcename in names:
>     if sourcename.endswith('.java'):
>       f = open(os.path.join(dir, sourcename))
>       for line in f:
>         match = IMPORT_RE.match(line)
>         if match:
>           dep = match.group(1)
>           deps.add(dep)
>       f.close()
>
>   if deps:
>     all_deps[package] = deps
>
> if __name__ == "__main__":
>   main()
>
> On 22 November 2010 16:22, Vega <[email protected]> wrote:
>
>
>
>
>
>
>
> > If you can specify what exactly you want to accomplish with these
> > scripts - I can try to do it with ant.
>
> > On Nov 22, 12:25 am, Vega <[email protected]> wrote:
> > > Also, windows users don't have python preinstalled, so that would
> > > require additional dependency.
>
> > > On Nov 22, 12:23 am, Vega <[email protected]> wrote:
>
> > > > Umm, I am not sure about what scripts you are talking about, but if
> > > > this can be done with ant - I would prefer it this way. Java
> > > > programmers usually have some knowledge of ant, but python is
> > > > different story.
>
> > > > On Nov 21, 11:49 pm, Tad Glines <[email protected]> wrote:
>
> > > > > Given that the review tool also requires python, I don't see a big
> > problem
> > > > > with additional python dependencies.
>
> > > > > -Tad
>
> > > > > On Sun, Nov 21, 2010 at 1:20 PM, Alex North <[email protected]>
> > wrote:
> > > > > > Hi all,
>
> > > > > > I'm considering introducing a python script to the codebase to help
> > keep
> > > > > > track of cross-module dependencies. We have tools to help this
> > inside
> > > > > > Google, which is why the libraries code, for example, is not a pile
> > of
> > > > > > dependency spaghetti. Unfortunately they're not appropriate to use
> > outside.
> > > > > > We have a couple of options:
>
> > > > > > - Do everything in Java so we can invoke it from ant
> > > > > > - Use python (or some other scripting language) for scripting
>
> > > > > > While possible, I'm not excited about using Java for script-style
> > things.
> > > > > > We should use a platform-independent scripting language, and Python
> > is
> > > > > > widely known and understood. This would eventually be a path to
> > replacing
> > > > > > all the shell scripts and batch files too (though some of the run
> > scripts
> > > > > > can perhaps move into ant).
>
> > > > > > Python would only be required for development, not running the
> > server.
> > > > > > Pre-packaged distros would not require python.
>
> > > > > > Objections? Opinions?
>
> > > > > > Alex
>
> > > > > > --
> > > > > > You received this message because you are subscribed to the Google
> > Groups
> > > > > > "Wave Protocol" group.
> > > > > > To post to this group, send email to
> > [email protected].
> > > > > > To unsubscribe from this group, send email to
> > > > > > [email protected]<wave-protocol%2bunsubscr...@goog
> > > > > >  legroups.com>
> > <wave-protocol%2bunsubscr...@goog legroups.com>
> > > > > > .
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/wave-protocol?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Wave Protocol" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<wave-protocol%2bunsubscr...@goog 
> > legroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/wave-protocol?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Wave 
Protocol" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/wave-protocol?hl=en.

Reply via email to