Cleanup dirmods, outmod, and pathmod

- Use argparse for parsing
- Correct copy/pasted documentation
- Misc small tweaks

Bug: 340648588
Test: manually
Change-Id: I11373bd25712b6880517efbb7aefabf70d29a771
diff --git a/bin/dirmods b/bin/dirmods
index d43506a..52d935a 100755
--- a/bin/dirmods
+++ b/bin/dirmods
@@ -14,25 +14,27 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+'''
+Lists all modules in the given directory or its decendant directories, as cached
+in module-info.json. If any build change is made, and it should be reflected in
+the output, you should run 'refreshmod' first.
+'''
+
 import sys
 sys.dont_write_bytecode = True
 
-import modinfo
-
+import argparse
 import os
 
-# Get the path of a specific module in the android tree, as cached in module-info.json.
-# If any build change is made, and it should be reflected in the output, you should run
-# 'refreshmod' first.  Note: This is the inverse of pathmod.
+import modinfo
 
-def main(argv):
-    if len(argv) != 2:
-        sys.stderr.write("usage: usage: dirmods <path>\n")
-        sys.exit(1)
 
-    d = argv[1]
-    while d.endswith('/'):
-        d = d[:-1]
+def main():
+    parser = argparse.ArgumentParser(description=__doc__)
+    parser.add_argument('path')
+    args = parser.parse_args()
+
+    d = os.path.normpath(args.path)
     prefix = d + '/'
 
     module_info = modinfo.ReadModuleInfo()
@@ -49,4 +51,4 @@
         print(name)
 
 if __name__ == "__main__":
-    main(sys.argv)
+    main()
diff --git a/bin/outmod b/bin/outmod
index 681b405..022ff36 100755
--- a/bin/outmod
+++ b/bin/outmod
@@ -14,26 +14,29 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Get the path of a specific module in the android tree, as cached in module-info.json.
-# If any build change is made, and it should be reflected in the output, you should run
-# 'refreshmod' first.  Note: This is the inverse of dirmods.
+'''
+Lists the output files of a specific module in the android tree, as cached in
+module-info.json. If any build change is made, and it should be reflected in the
+output, you should run 'refreshmod' first.
+'''
 
 import sys
 sys.dont_write_bytecode = True
 
-import modinfo
-
+import argparse
 import os
 
+import modinfo
 
-def main(argv):
-    if len(argv) != 2:
-        sys.stderr.write("usage: outmod <module>\n")
-        sys.exit(1)
 
-    for output in modinfo.GetModule(modinfo.ReadModuleInfo(), argv[1])['installed']:
-        print(os.path.join(os.getenv("ANDROID_BUILD_TOP"), output))
+def main():
+    parser = argparse.ArgumentParser(description=__doc__)
+    parser.add_argument('module')
+    args = parser.parse_args()
+
+    for output in modinfo.GetModule(modinfo.ReadModuleInfo(), args.module)['installed']:
+        print(os.path.join(os.getenv("ANDROID_BUILD_TOP", ""), output))
 
 if __name__ == "__main__":
-    main(sys.argv)
+    main()
 
diff --git a/bin/pathmod b/bin/pathmod
index f5560ba..70cf958 100755
--- a/bin/pathmod
+++ b/bin/pathmod
@@ -14,25 +14,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Get the path of a specific module in the android tree, as cached in module-info.json.
-# If any build change is made, and it should be reflected in the output, you should run
-# 'refreshmod' first.  Note: This is the inverse of dirmods.
+'''
+Get the path of a specific module in the android tree, as cached in module-info.json.
+If any build change is made, and it should be reflected in the output, you should run
+'refreshmod' first.  Note: This is the inverse of dirmods.
+'''
 
 import sys
 sys.dont_write_bytecode = True
 
-import modinfo
-
+import argparse
 import os
 
+import modinfo
 
-def main(argv):
-    if len(argv) != 2:
-        sys.stderr.write("usage: pathmod <module>\n")
-        sys.exit(1)
 
-    path = modinfo.GetModule(modinfo.ReadModuleInfo(), argv[1])['path'][0]
+def main():
+    parser = argparse.ArgumentParser(description=__doc__)
+    parser.add_argument('module')
+    args = parser.parse_args()
+
+    path = modinfo.GetModule(modinfo.ReadModuleInfo(), args.module)['path'][0]
     print(os.path.join(os.getenv("ANDROID_BUILD_TOP", ""), path))
 
 if __name__ == "__main__":
-    main(sys.argv)
+    main()