mirror of https://github.com/trapexit/mergerfs.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							101 lines
						
					
					
						
							3.4 KiB
						
					
					
				| #!/usr/bin/python | |
| 
 | |
| #    The MIT License (MIT) | |
| 
 | |
| #    Copyright (c) 2014 Antonio SJ Musumeci <trapexit@spawn.link> | |
| 
 | |
| #    Permission is hereby granted, free of charge, to any person obtaining a copy | |
| #    of this software and associated documentation files (the "Software"), to deal | |
| #    in the Software without restriction, including without limitation the rights | |
| #    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| #    copies of the Software, and to permit persons to whom the Software is | |
| #    furnished to do so, subject to the following conditions: | |
| 
 | |
| #    The above copyright notice and this permission notice shall be included in | |
| #    all copies or substantial portions of the Software. | |
| 
 | |
| #    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| #    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| #    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| #    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| #    THE SOFTWARE. | |
| 
 | |
| import sys | |
| import subprocess | |
| import argparse | |
| 
 | |
| def git_tags(): | |
|     args = ["git", "tag", '-l'] | |
|     tags = subprocess.check_output(args) | |
|     tags = tags.split() | |
|     tags.reverse() | |
|     return tags | |
| 
 | |
| def git_log(fromtag,totag): | |
|     args = ['git','log','--no-merges','--oneline',fromtag+'...'+totag] | |
|     return subprocess.check_output(args).strip().split('\n') | |
| 
 | |
| def git_author_and_time(tag): | |
|     args = ['git','log','-1','--format=-- %an <%ae>  %cD',tag] | |
|     return subprocess.check_output(args).strip() | |
| 
 | |
| def git_version(): | |
|     args = ['git','describe','--always','--tags','--dirty'] | |
|     return subprocess.check_output(args).strip() | |
| 
 | |
| def find_distrib_codename(f): | |
|     for line in f: | |
|         (key,value) = line.partition('=')[::2] | |
|         if key == 'DISTRIB_CODENAME': | |
|             return value.strip() | |
| 
 | |
| def guess_distribution(): | |
|     try: | |
|         with open('/etc/upstream-release/lsb-release') as f: | |
|             return find_distrib_codename(f) | |
|     except: | |
|         try: | |
|             with open('/etc/lsb-release') as f: | |
|                 return find_distrib_codename(f) | |
|         except: | |
|             return 'unknown' | |
| 
 | |
| parser = argparse.ArgumentParser(description='Generated debian/changelog from git log') | |
| parser.add_argument('--name',type=str,help='Name of package',required=True) | |
| parser.add_argument('--version',type=str,help='Place in git history to include upto',default='::guess::') | |
| parser.add_argument('--distro',type=str,help='Distribution name',default='::guess::') | |
| parser.add_argument('--urgency',type=str,help='Urgency',default='medium') | |
| 
 | |
| args = parser.parse_args() | |
| 
 | |
| if args.distro == '::guess::': | |
|     args.distro = guess_distribution() | |
| 
 | |
| if args.version == '::guess::': | |
|     args.version = git_version() | |
| 
 | |
| tags = git_tags() | |
| 
 | |
| if args.version in tags: | |
|     idx = tags.index(args.version) | |
|     tags = tags[idx:] | |
|     tags = zip(tags,tags) | |
| else: | |
|     tags = zip(tags,tags) | |
|     tags.insert(0,(args.version,'HEAD')) | |
| 
 | |
| tag = tags[0] | |
| for prev in tags[1:]: | |
|     print('%s (%s) %s; urgency=%s\n' % (args.name,tag[0],args.distro,args.urgency)) | |
| 
 | |
|     lines = git_log(tag[1],prev[1]) | |
|     for line in lines: | |
|         print "  * " + line | |
|     print | |
| 
 | |
|     authorandtime = git_author_and_time(tag[1]) | |
|     print(' %s\n' % authorandtime) | |
| 
 | |
|     tag = prev
 |