new type: __apt_ppa
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								c743bd6461
							
						
					
				
			
			
				commit
				
					
						08a53cb130
					
				
			
		
					 7 changed files with 228 additions and 0 deletions
				
			
		
							
								
								
									
										28
									
								
								conf/type/__apt_ppa/explorer/state
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								conf/type/__apt_ppa/explorer/state
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # 2011 Steven Armstrong (steven-cdist at armstrong.cc) | ||||||
|  | # | ||||||
|  | # This file is part of cdist. | ||||||
|  | # | ||||||
|  | # cdist is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # cdist is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with cdist. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # | ||||||
|  | # Get the current state of the ppa. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | name="$__object_id" | ||||||
|  | 
 | ||||||
|  | # FIXME: on first run check-apt-repository may not be installed | ||||||
|  | check-apt-repository "$name" && echo enabled || echo disabled | ||||||
|  | 
 | ||||||
							
								
								
									
										42
									
								
								conf/type/__apt_ppa/files/check-apt-repository
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								conf/type/__apt_ppa/files/check-apt-repository
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,42 @@ | ||||||
|  | #!/usr/bin/env python | ||||||
|  | # | ||||||
|  | # Check if the given apt repository is installed or not. | ||||||
|  | # Exit with: | ||||||
|  | #   0: if it is installed | ||||||
|  | #   1: if not | ||||||
|  | #   2: on error | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | import sys | ||||||
|  | from aptsources import distro, sourceslist | ||||||
|  | from softwareproperties import ppa | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def is_repository_installed(repository): | ||||||
|  |     #print 'repository:', repository | ||||||
|  |     codename = distro.get_distro().codename | ||||||
|  |     #print 'codename:', codename | ||||||
|  |     (line, file) = ppa.expand_ppa_line(repository.strip(), codename) | ||||||
|  |     #print 'line:', line | ||||||
|  |     #print 'file:', file | ||||||
|  |     sources_list = sourceslist.SourcesList() | ||||||
|  |     source_entry = sourceslist.SourceEntry(line, file) | ||||||
|  | 
 | ||||||
|  |     if source_entry in sources_list: | ||||||
|  |         #print 'yes' | ||||||
|  |         return True | ||||||
|  |     else: | ||||||
|  |         #print 'no' | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     if (len(sys.argv) != 2): | ||||||
|  |         print 'Error: need a repository as argument' | ||||||
|  |         sys.exit(2) | ||||||
|  |     #repository = 'ppa:freenx-team' | ||||||
|  |     repository = sys.argv[1] | ||||||
|  |     if is_repository_installed(repository): | ||||||
|  |         sys.exit(0) | ||||||
|  |     else: | ||||||
|  |         sys.exit(1) | ||||||
|  | 
 | ||||||
							
								
								
									
										42
									
								
								conf/type/__apt_ppa/files/remove-apt-repository
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								conf/type/__apt_ppa/files/remove-apt-repository
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,42 @@ | ||||||
|  | #!/usr/bin/env python | ||||||
|  | # | ||||||
|  | # Remove the given apt repository. | ||||||
|  | # | ||||||
|  | # Exit with: | ||||||
|  | #   0: if it worked | ||||||
|  | #   1: if not | ||||||
|  | #   2: on other error | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | import sys | ||||||
|  | from aptsources import distro, sourceslist | ||||||
|  | from softwareproperties import ppa | ||||||
|  | from softwareproperties.SoftwareProperties import SoftwareProperties | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def remove_repository(repository): | ||||||
|  |     #print 'repository:', repository | ||||||
|  |     codename = distro.get_distro().codename | ||||||
|  |     #print 'codename:', codename | ||||||
|  |     (line, file) = ppa.expand_ppa_line(repository.strip(), codename) | ||||||
|  |     #print 'line:', line | ||||||
|  |     #print 'file:', file | ||||||
|  |     source_entry = sourceslist.SourceEntry(line, file) | ||||||
|  | 
 | ||||||
|  |     try: | ||||||
|  |         sp = SoftwareProperties() | ||||||
|  |         sp.remove_source(source_entry) | ||||||
|  |         return True | ||||||
|  |     except ValueError: | ||||||
|  |         print >> sys.stderr, "Error: '%s' doesn't exists in a sourcelist file" % line | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     if (len(sys.argv) != 2): | ||||||
|  |         print >> sys.stderr, 'Error: need a repository as argument' | ||||||
|  |         sys.exit(2) | ||||||
|  |     repository = sys.argv[1] | ||||||
|  |     if remove_repository(repository): | ||||||
|  |         sys.exit(0) | ||||||
|  |     else: | ||||||
|  |         sys.exit(1) | ||||||
							
								
								
									
										35
									
								
								conf/type/__apt_ppa/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								conf/type/__apt_ppa/gencode-remote
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,35 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # 2011 Steven Armstrong (steven-cdist at armstrong.cc) | ||||||
|  | # | ||||||
|  | # This file is part of cdist. | ||||||
|  | # | ||||||
|  | # cdist is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # cdist is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with cdist. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | name="$__object_id" | ||||||
|  | state_should="$(cat "$__object/parameter/state")" | ||||||
|  | state_is="$(cat "$__object/explorer/state")" | ||||||
|  | 
 | ||||||
|  | if [ "$state_should" != "$state_is" ]; then | ||||||
|  |    case "$state_should" in | ||||||
|  |       enabled) | ||||||
|  |          echo add-apt-repository \"$name\" | ||||||
|  |       ;; | ||||||
|  |       disabled) | ||||||
|  |          echo remove-apt-repository \"$name\" | ||||||
|  |       ;; | ||||||
|  |    esac | ||||||
|  | fi | ||||||
|  | 
 | ||||||
							
								
								
									
										47
									
								
								conf/type/__apt_ppa/man.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								conf/type/__apt_ppa/man.text
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | ||||||
|  | cdist-type__apt_ppa(7) | ||||||
|  | ========================== | ||||||
|  | Steven Armstrong <steven-cdist--@--armstrong.cc> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | NAME | ||||||
|  | ---- | ||||||
|  | cdist-type__apt_ppa - Manage ppa repositories | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DESCRIPTION | ||||||
|  | ----------- | ||||||
|  | This cdist type allows manage ubuntu ppa repositories. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | REQUIRED PARAMETERS | ||||||
|  | ------------------- | ||||||
|  | state:: | ||||||
|  |    The state the ppa should be in, either "enabled" or "disabled". | ||||||
|  |     | ||||||
|  | 
 | ||||||
|  | OPTIONAL PARAMETERS | ||||||
|  | ------------------- | ||||||
|  | None. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | EXAMPLES | ||||||
|  | -------- | ||||||
|  | 
 | ||||||
|  | -------------------------------------------------------------------------------- | ||||||
|  | # Enable a ppa repository | ||||||
|  | __apt_ppa ppa:sans-intern/missing-bits --state enabled | ||||||
|  | 
 | ||||||
|  | # Disable a ppa repository | ||||||
|  | __apt_ppa ppa:sans-intern/missing-bits --state disabled | ||||||
|  | -------------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SEE ALSO | ||||||
|  | -------- | ||||||
|  | - cdist-type(7) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | COPYING | ||||||
|  | ------- | ||||||
|  | Copyright \(C) 2011 Steven Armstrong. Free use of this software is | ||||||
|  | granted under the terms of the GNU General Public License version 3 (GPLv3). | ||||||
							
								
								
									
										33
									
								
								conf/type/__apt_ppa/manifest
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								conf/type/__apt_ppa/manifest
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # 2011 Steven Armstrong (steven-cdist at armstrong.cc) | ||||||
|  | # | ||||||
|  | # This file is part of cdist. | ||||||
|  | # | ||||||
|  | # cdist is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # cdist is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with cdist. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | __package python-software-properties --state installed | ||||||
|  | 
 | ||||||
|  | require="__package/python-software-properties" \ | ||||||
|  |    __file /usr/local/bin/check-apt-repository \ | ||||||
|  |    --source "$__type/files/check-apt-repository" \ | ||||||
|  |    --mode 0755 | ||||||
|  | 
 | ||||||
|  | require="__package/python-software-properties" \ | ||||||
|  |    __file /usr/local/bin/remove-apt-repository \ | ||||||
|  |    --source "$__type/files/remove-apt-repository" \ | ||||||
|  |    --mode 0755 | ||||||
|  | 
 | ||||||
							
								
								
									
										1
									
								
								conf/type/__apt_ppa/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								conf/type/__apt_ppa/parameter/required
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | state | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue