diff mbox series

[kteam-tools] gen-sru-announce: Add HTML output mode

Message ID 1535053487-31424-1-git-send-email-stefan.bader@canonical.com
State New
Headers show
Series [kteam-tools] gen-sru-announce: Add HTML output mode | expand

Commit Message

Stefan Bader Aug. 23, 2018, 7:44 p.m. UTC
Add an optional --html argument which switches output to an HTML
table which contains the dates of the current and next SRU cycle.
Information about kernel versions is suppressed in that mode.

Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
---
 stable/gen-sru-announce | 60 ++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 47 insertions(+), 13 deletions(-)

Comments

Stefan Bader Aug. 30, 2018, 8:35 a.m. UTC | #1
On 23.08.2018 21:44, Stefan Bader wrote:
> Add an optional --html argument which switches output to an HTML
> table which contains the dates of the current and next SRU cycle.
> Information about kernel versions is suppressed in that mode.
> 
> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>

Anyone with any opinion (iow: ping)?

-Stefan
> ---
>  stable/gen-sru-announce | 60 ++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 47 insertions(+), 13 deletions(-)
> 
> diff --git a/stable/gen-sru-announce b/stable/gen-sru-announce
> index 5fd9143..8bb69c9 100755
> --- a/stable/gen-sru-announce
> +++ b/stable/gen-sru-announce
> @@ -56,17 +56,26 @@ class TheApp(object):
>          print('         %s   Release to -updates.' % ((sd + timedelta(days=24)).strftime('%d-%b')))
>          print('')
>  
> -    # main
> +    # Print the cycle dates as HTML table
>      #
> -    def main(s, args):
> -        retval = 0
> -
> -        sd = s.sd(args.date)
> -        print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> -        print('Subject: A new SRU cycle started...')
> -        s.print_cycle(sd)
> +    def print_cycle_html(s, sd):
> +        sd = sd - timedelta(days=3)
> +        pd = sd - timedelta(days=2)
> +        ed = sd + timedelta(days=22)
>  
> -        print('')
> +        print('        <td width="50%">')
> +        print('            <table width="100%"> <!-- -->')
> +        print('                <tr> <td colspan="4"><h2>%s through %s<h2></td></tr>' % (sd.strftime('%d-%b'), ed.strftime('%d-%b')))
> +        print('                <tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Last day for kernel commits for this cycle</h3></td> </tr>' % (pd.strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Kernel prep week</h3></td>                           </tr>' % ((sd + timedelta(days=3)).strftime('%d-%b'), (sd + timedelta(days=8)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Bug verification & Regression testing</h3></td>      </tr>' % ((sd + timedelta(days=9)).strftime('%d-%b'), (sd + timedelta(days=21)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Release to -updates</h3></td>                        </tr>' % ((sd + timedelta(days=24)).strftime('%d-%b')))
> +        print('            </table>')
> +        print('        </td>')
> +
> +    # Print kernel versions
> +    #
> +    def print_kernel_versions(s):
>          cmd = "%s --no-devel --no-esm" % path.join(path.dirname(__file__), 'sru-cycle-kernel-versions')
>          try:
>              for line in Popen(cmd, shell=True, stdout=PIPE).stdout.readlines():
> @@ -74,8 +83,29 @@ class TheApp(object):
>          except:
>              raise ErrorExit('Failed calling %s for kernel versions.' % (cmd))
>  
> -        print('')
> -        s.print_cycle(sd + timedelta(days=21))
> +    # main
> +    #
> +    def main(s, args):
> +        retval = 0
> +
> +        sd = s.sd(args.date)
> +
> +        if args.html:
> +            print('<table border="0" width="100%"> <!-- -->')
> +            print('    <tr>')
> +            s.print_cycle_html(sd)
> +            s.print_cycle_html(sd + timedelta(days=21))
> +            print('    </tr>')
> +            print('</table>')
> +        else:
> +            print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, '
> +                  'Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> +            print('Subject: A new SRU cycle started...')
> +            s.print_cycle(sd)
> +            print('')
> +            s.print_kernel_versions()
> +            print('')
> +            s.print_cycle(sd + timedelta(days=21))
>  
>          return retval
>  
> @@ -85,12 +115,16 @@ if __name__ == '__main__':
>      # Command line argument setup and initial processing
>      #
>      app_description = '''
> -    Generate the text for the email announcing the new SRU cycle dates amd kernel
> -    versions. The date which has to be given is the Monday which start the new cycle.
> +    Generates the text for the email announcing the new SRU cycle dates and kernel
> +    versions. Using the alternate HTML mode will produce an HTML table which only
> +    contains the cycle dates in the format used on kernel.ubuntu.com
> +
> +    The date which has to be given is the Monday which starts the new cycle.
>      '''
>      app_epilog = '''
>      '''
>      parser = ArgumentParser(description=app_description, epilog=app_epilog, formatter_class=RawDescriptionHelpFormatter)
> +    parser.add_argument('--html', action='store_true', default=False, help='Generate output suitable to be embedded into a web page (table)')
>      parser.add_argument('date', metavar='<SRU cycle start date>', type=str, help='Date format: YYYY.MM.DD)')
>      args = parser.parse_args()
>  
>
Kleber Sacilotto de Souza Aug. 30, 2018, 12:38 p.m. UTC | #2
On 08/23/18 21:44, Stefan Bader wrote:
> Add an optional --html argument which switches output to an HTML
> table which contains the dates of the current and next SRU cycle.
> Information about kernel versions is suppressed in that mode.
> 
> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>

Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>

> ---
>  stable/gen-sru-announce | 60 ++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 47 insertions(+), 13 deletions(-)
> 
> diff --git a/stable/gen-sru-announce b/stable/gen-sru-announce
> index 5fd9143..8bb69c9 100755
> --- a/stable/gen-sru-announce
> +++ b/stable/gen-sru-announce
> @@ -56,17 +56,26 @@ class TheApp(object):
>          print('         %s   Release to -updates.' % ((sd + timedelta(days=24)).strftime('%d-%b')))
>          print('')
>  
> -    # main
> +    # Print the cycle dates as HTML table
>      #
> -    def main(s, args):
> -        retval = 0
> -
> -        sd = s.sd(args.date)
> -        print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> -        print('Subject: A new SRU cycle started...')
> -        s.print_cycle(sd)
> +    def print_cycle_html(s, sd):
> +        sd = sd - timedelta(days=3)
> +        pd = sd - timedelta(days=2)
> +        ed = sd + timedelta(days=22)
>  
> -        print('')
> +        print('        <td width="50%">')
> +        print('            <table width="100%"> <!-- -->')
> +        print('                <tr> <td colspan="4"><h2>%s through %s<h2></td></tr>' % (sd.strftime('%d-%b'), ed.strftime('%d-%b')))
> +        print('                <tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Last day for kernel commits for this cycle</h3></td> </tr>' % (pd.strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Kernel prep week</h3></td>                           </tr>' % ((sd + timedelta(days=3)).strftime('%d-%b'), (sd + timedelta(days=8)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Bug verification & Regression testing</h3></td>      </tr>' % ((sd + timedelta(days=9)).strftime('%d-%b'), (sd + timedelta(days=21)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Release to -updates</h3></td>                        </tr>' % ((sd + timedelta(days=24)).strftime('%d-%b')))
> +        print('            </table>')
> +        print('        </td>')
> +
> +    # Print kernel versions
> +    #
> +    def print_kernel_versions(s):
>          cmd = "%s --no-devel --no-esm" % path.join(path.dirname(__file__), 'sru-cycle-kernel-versions')
>          try:
>              for line in Popen(cmd, shell=True, stdout=PIPE).stdout.readlines():
> @@ -74,8 +83,29 @@ class TheApp(object):
>          except:
>              raise ErrorExit('Failed calling %s for kernel versions.' % (cmd))
>  
> -        print('')
> -        s.print_cycle(sd + timedelta(days=21))
> +    # main
> +    #
> +    def main(s, args):
> +        retval = 0
> +
> +        sd = s.sd(args.date)
> +
> +        if args.html:
> +            print('<table border="0" width="100%"> <!-- -->')
> +            print('    <tr>')
> +            s.print_cycle_html(sd)
> +            s.print_cycle_html(sd + timedelta(days=21))
> +            print('    </tr>')
> +            print('</table>')
> +        else:
> +            print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, '
> +                  'Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> +            print('Subject: A new SRU cycle started...')
> +            s.print_cycle(sd)
> +            print('')
> +            s.print_kernel_versions()
> +            print('')
> +            s.print_cycle(sd + timedelta(days=21))
>  
>          return retval
>  
> @@ -85,12 +115,16 @@ if __name__ == '__main__':
>      # Command line argument setup and initial processing
>      #
>      app_description = '''
> -    Generate the text for the email announcing the new SRU cycle dates amd kernel
> -    versions. The date which has to be given is the Monday which start the new cycle.
> +    Generates the text for the email announcing the new SRU cycle dates and kernel
> +    versions. Using the alternate HTML mode will produce an HTML table which only
> +    contains the cycle dates in the format used on kernel.ubuntu.com
> +
> +    The date which has to be given is the Monday which starts the new cycle.
>      '''
>      app_epilog = '''
>      '''
>      parser = ArgumentParser(description=app_description, epilog=app_epilog, formatter_class=RawDescriptionHelpFormatter)
> +    parser.add_argument('--html', action='store_true', default=False, help='Generate output suitable to be embedded into a web page (table)')
>      parser.add_argument('date', metavar='<SRU cycle start date>', type=str, help='Date format: YYYY.MM.DD)')
>      args = parser.parse_args()
>  
>
Stefan Bader Sept. 4, 2018, 8:03 a.m. UTC | #3
On 23.08.2018 21:44, Stefan Bader wrote:
> Add an optional --html argument which switches output to an HTML
> table which contains the dates of the current and next SRU cycle.
> Information about kernel versions is suppressed in that mode.
> 
> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>

I think it sat there unopposed (but also uncared about) long enough...

-Stefan

> ---
>  stable/gen-sru-announce | 60 ++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 47 insertions(+), 13 deletions(-)
> 
> diff --git a/stable/gen-sru-announce b/stable/gen-sru-announce
> index 5fd9143..8bb69c9 100755
> --- a/stable/gen-sru-announce
> +++ b/stable/gen-sru-announce
> @@ -56,17 +56,26 @@ class TheApp(object):
>          print('         %s   Release to -updates.' % ((sd + timedelta(days=24)).strftime('%d-%b')))
>          print('')
>  
> -    # main
> +    # Print the cycle dates as HTML table
>      #
> -    def main(s, args):
> -        retval = 0
> -
> -        sd = s.sd(args.date)
> -        print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> -        print('Subject: A new SRU cycle started...')
> -        s.print_cycle(sd)
> +    def print_cycle_html(s, sd):
> +        sd = sd - timedelta(days=3)
> +        pd = sd - timedelta(days=2)
> +        ed = sd + timedelta(days=22)
>  
> -        print('')
> +        print('        <td width="50%">')
> +        print('            <table width="100%"> <!-- -->')
> +        print('                <tr> <td colspan="4"><h2>%s through %s<h2></td></tr>' % (sd.strftime('%d-%b'), ed.strftime('%d-%b')))
> +        print('                <tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Last day for kernel commits for this cycle</h3></td> </tr>' % (pd.strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Kernel prep week</h3></td>                           </tr>' % ((sd + timedelta(days=3)).strftime('%d-%b'), (sd + timedelta(days=8)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Bug verification & Regression testing</h3></td>      </tr>' % ((sd + timedelta(days=9)).strftime('%d-%b'), (sd + timedelta(days=21)).strftime('%d-%b')))
> +        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Release to -updates</h3></td>                        </tr>' % ((sd + timedelta(days=24)).strftime('%d-%b')))
> +        print('            </table>')
> +        print('        </td>')
> +
> +    # Print kernel versions
> +    #
> +    def print_kernel_versions(s):
>          cmd = "%s --no-devel --no-esm" % path.join(path.dirname(__file__), 'sru-cycle-kernel-versions')
>          try:
>              for line in Popen(cmd, shell=True, stdout=PIPE).stdout.readlines():
> @@ -74,8 +83,29 @@ class TheApp(object):
>          except:
>              raise ErrorExit('Failed calling %s for kernel versions.' % (cmd))
>  
> -        print('')
> -        s.print_cycle(sd + timedelta(days=21))
> +    # main
> +    #
> +    def main(s, args):
> +        retval = 0
> +
> +        sd = s.sd(args.date)
> +
> +        if args.html:
> +            print('<table border="0" width="100%"> <!-- -->')
> +            print('    <tr>')
> +            s.print_cycle_html(sd)
> +            s.print_cycle_html(sd + timedelta(days=21))
> +            print('    </tr>')
> +            print('</table>')
> +        else:
> +            print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, '
> +                  'Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
> +            print('Subject: A new SRU cycle started...')
> +            s.print_cycle(sd)
> +            print('')
> +            s.print_kernel_versions()
> +            print('')
> +            s.print_cycle(sd + timedelta(days=21))
>  
>          return retval
>  
> @@ -85,12 +115,16 @@ if __name__ == '__main__':
>      # Command line argument setup and initial processing
>      #
>      app_description = '''
> -    Generate the text for the email announcing the new SRU cycle dates amd kernel
> -    versions. The date which has to be given is the Monday which start the new cycle.
> +    Generates the text for the email announcing the new SRU cycle dates and kernel
> +    versions. Using the alternate HTML mode will produce an HTML table which only
> +    contains the cycle dates in the format used on kernel.ubuntu.com
> +
> +    The date which has to be given is the Monday which starts the new cycle.
>      '''
>      app_epilog = '''
>      '''
>      parser = ArgumentParser(description=app_description, epilog=app_epilog, formatter_class=RawDescriptionHelpFormatter)
> +    parser.add_argument('--html', action='store_true', default=False, help='Generate output suitable to be embedded into a web page (table)')
>      parser.add_argument('date', metavar='<SRU cycle start date>', type=str, help='Date format: YYYY.MM.DD)')
>      args = parser.parse_args()
>  
>
diff mbox series

Patch

diff --git a/stable/gen-sru-announce b/stable/gen-sru-announce
index 5fd9143..8bb69c9 100755
--- a/stable/gen-sru-announce
+++ b/stable/gen-sru-announce
@@ -56,17 +56,26 @@  class TheApp(object):
         print('         %s   Release to -updates.' % ((sd + timedelta(days=24)).strftime('%d-%b')))
         print('')
 
-    # main
+    # Print the cycle dates as HTML table
     #
-    def main(s, args):
-        retval = 0
-
-        sd = s.sd(args.date)
-        print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
-        print('Subject: A new SRU cycle started...')
-        s.print_cycle(sd)
+    def print_cycle_html(s, sd):
+        sd = sd - timedelta(days=3)
+        pd = sd - timedelta(days=2)
+        ed = sd + timedelta(days=22)
 
-        print('')
+        print('        <td width="50%">')
+        print('            <table width="100%"> <!-- -->')
+        print('                <tr> <td colspan="4"><h2>%s through %s<h2></td></tr>' % (sd.strftime('%d-%b'), ed.strftime('%d-%b')))
+        print('                <tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Last day for kernel commits for this cycle</h3></td> </tr>' % (pd.strftime('%d-%b')))
+        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Kernel prep week</h3></td>                           </tr>' % ((sd + timedelta(days=3)).strftime('%d-%b'), (sd + timedelta(days=8)).strftime('%d-%b')))
+        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>%s</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Bug verification & Regression testing</h3></td>      </tr>' % ((sd + timedelta(days=9)).strftime('%d-%b'), (sd + timedelta(days=21)).strftime('%d-%b')))
+        print('<tr> <td width="10%%">&nbsp;</td>   <td width="10%%"><h3>&nbsp;</h3></td>   <td width="10%%"><h3>%s</h3></td>   <td><h3>Release to -updates</h3></td>                        </tr>' % ((sd + timedelta(days=24)).strftime('%d-%b')))
+        print('            </table>')
+        print('        </td>')
+
+    # Print kernel versions
+    #
+    def print_kernel_versions(s):
         cmd = "%s --no-devel --no-esm" % path.join(path.dirname(__file__), 'sru-cycle-kernel-versions')
         try:
             for line in Popen(cmd, shell=True, stdout=PIPE).stdout.readlines():
@@ -74,8 +83,29 @@  class TheApp(object):
         except:
             raise ErrorExit('Failed calling %s for kernel versions.' % (cmd))
 
-        print('')
-        s.print_cycle(sd + timedelta(days=21))
+    # main
+    #
+    def main(s, args):
+        retval = 0
+
+        sd = s.sd(args.date)
+
+        if args.html:
+            print('<table border="0" width="100%"> <!-- -->')
+            print('    <tr>')
+            s.print_cycle_html(sd)
+            s.print_cycle_html(sd + timedelta(days=21))
+            print('    </tr>')
+            print('</table>')
+        else:
+            print('To: Kernel SRU Announcements <kernel-sru-announce@lists.canonical.com>, '
+                  'Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>')
+            print('Subject: A new SRU cycle started...')
+            s.print_cycle(sd)
+            print('')
+            s.print_kernel_versions()
+            print('')
+            s.print_cycle(sd + timedelta(days=21))
 
         return retval
 
@@ -85,12 +115,16 @@  if __name__ == '__main__':
     # Command line argument setup and initial processing
     #
     app_description = '''
-    Generate the text for the email announcing the new SRU cycle dates amd kernel
-    versions. The date which has to be given is the Monday which start the new cycle.
+    Generates the text for the email announcing the new SRU cycle dates and kernel
+    versions. Using the alternate HTML mode will produce an HTML table which only
+    contains the cycle dates in the format used on kernel.ubuntu.com
+
+    The date which has to be given is the Monday which starts the new cycle.
     '''
     app_epilog = '''
     '''
     parser = ArgumentParser(description=app_description, epilog=app_epilog, formatter_class=RawDescriptionHelpFormatter)
+    parser.add_argument('--html', action='store_true', default=False, help='Generate output suitable to be embedded into a web page (table)')
     parser.add_argument('date', metavar='<SRU cycle start date>', type=str, help='Date format: YYYY.MM.DD)')
     args = parser.parse_args()