Imported from archive.
[weather.git] / weather
diff --git a/weather b/weather
index 5e620b8..dc0601c 100755 (executable)
--- a/weather
+++ b/weather
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
+# distributions may wish to edit the above to refer to a specific interpreter
+# path, such as #!/usr/bin/python
 
-# weather version 1.4, http://fungi.yuggoth.org/weather/
-# Copyright (c) 2006-2008 Jeremy Stanley <fungi@yuggoth.org>.
-# Permission to use, copy, modify, and distribute this software is
-# granted under terms provided in the LICENSE file distributed with
-# this software.
+# Copyright (c) 2006-2010 Jeremy Stanley <fungi@yuggoth.org>. Permission to
+# use, copy, modify, and distribute this software is granted under terms
+# provided in the LICENSE file distributed with this software.
 
 """Wrapper utility using the weather.py module."""
 
@@ -26,22 +26,52 @@ if get_bool("list"): print weather.list_aliases(selections.config)
 
 # normal operation
 else:
+   output = ""
    for argument in selections.arguments:
-      if get_bool("conditions", argument):
-         print weather.get_metar(
+      if get_bool("conditions", argument) or not (
+         get_bool("alert", argument) or get_bool("forecast", argument)
+      ):
+         partial = weather.get_metar(
             id=get("id", argument),
             verbose=get_bool("verbose", argument),
             quiet=get_bool("quiet", argument),
             headers=get("headers", argument),
-            murl=get("murl", argument)
-            )
-      if not get_bool("conditions", argument) \
-         or get_bool("forecast", argument):
-         print weather.get_forecast(
+            murl=get("murl", argument),
+            imperial=get_bool("imperial", argument),
+            metric=get_bool("metric", argument)
+         )
+         if partial: output += partial + "\n"
+      if get_bool("forecast", argument) or not (
+         get_bool("alert", argument) or get_bool("conditions", argument)
+      ):
+         partial = weather.get_forecast(
             city=get("city", argument),
             st=get("st", argument),
             verbose=get_bool("verbose", argument),
             quiet=get_bool("quiet", argument),
             flines=get("flines", argument),
-            furl=get("furl", argument)
-            )
+            furl=get("furl", argument),
+            imperial=get_bool("imperial", argument),
+            metric=get_bool("metric", argument)
+         )
+         if partial: output += partial + "\n"
+      if get_bool("alert", argument) or not (
+         get_bool("conditions", argument) or get_bool("forecast", argument)
+      ):
+         alert_text = ""
+         for atype in get("atypes", argument).split(","):
+            for zone in get("zones", argument).split(","):
+               partial = weather.get_alert(
+                  zone=zone,
+                  verbose=get_bool("verbose", argument),
+                  quiet=get_bool("quiet", argument),
+                  atype=atype,
+                  aurl=get("aurl", argument),
+                  imperial=get_bool("imperial", argument),
+                  metric=get_bool("metric", argument)
+               )
+               if partial: alert_text += partial + "\n"
+         if not alert_text: alert_text = "(no current alerts for your zones)\n"
+         output += alert_text
+      output = output.strip()
+      if output: print( output )