1" 2" cream-cream-release.vim -- developer release packager 3" 4" Cream -- An easy-to-use configuration of the famous Vim text editor 5" [ http://cream.sourceforge.net ] Copyright (C) 2001-2011 Steve Hall 6" 7" License: 8" This program is free software; you can redistribute it and/or modify 9" it under the terms of the GNU General Public License as published by 10" the Free Software Foundation; either version 2 of the License, or 11" (at your option) any later version. 12" [ http://www.gnu.org/licenses/gpl.html ] 13" 14" This program is distributed in the hope that it will be useful, but 15" WITHOUT ANY WARRANTY; without even the implied warranty of 16" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17" General Public License for more details. 18" 19" You should have received a copy of the GNU General Public License 20" along with this program; if not, write to the Free Software 21" Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 22" 02111-1307, USA. 23" 24 25" register as a Cream add-on 26if exists("$CREAM") 27 " don't list unless developer 28 if !exists("g:cream_dev") 29 finish 30 endif 31 32 call Cream_addon_register( 33 \ 'Release', 34 \ 'Create Cream release package', 35 \ 'Create Cream release package', 36 \ 'Cream Devel.Release', 37 \ 'call Cream_release()', 38 \ '<Nil>' 39 \ ) 40endif 41 42function! Cream_release() 43" create a Cream release package from a checkout of CVS (g:cream_cvs) 44" Note: "mkdir" is multi-platform! 45 46 " verify g:cream_cvs exists 47 if !exists("g:cream_cvs") 48 call confirm( 49 \ "Error: g:cream_cvs not found. Quitting...\n" . 50 \ "\n", "&Ok", 1, "Info") 51 return 52 endif 53 54 " dialog which release to use 55 let n = confirm( 56 \ "Please select which release you wish to make.\n" . 57 \ "\n", "&Unix\n&Windows\n&Both\n&Cancel", 1, "Info") 58 if n == 1 59 let rformat = "unix" 60 elseif n == 2 61 let rformat = "windows" 62 elseif n == 3 63 let rformat = "both" 64 else 65 return 66 endif 67 68 " verify tool sets required to make the platform's release 69 if rformat == "windows" 70 if executable("zip") == 0 71 call confirm( 72 \ "Unable to create final package, utility \"zip\" doesn't exist on the path.\n" . 73 \ "\n", "&Ok", 1, "Info") 74 return 75 endif 76 else 77 " must have both 78 if executable("tar") == 0 79 call confirm( 80 \ "Unable to create final package, utility \"tar\" doesn't exist on the path.\n" . 81 \ "\n", "&Ok", 1, "Info") 82 return 83 endif 84 if executable("gzip") == 0 85 call confirm( 86 \ "Unable to create final package, utility \"gzip\" doesn't exist on the path.\n" . 87 \ "\n", "&Ok", 1, "Info") 88 return 89 endif 90 endif 91 92 " silent actions *related to copying* (optional) 93 " "" -- shows prompts, shells 94 " "silent " -- avoid prompts, shells 95 " "silent! " -- avoid prompts, shells and errors 96 let mysilent = "" 97 98 " platform-specifics vars 99 if Cream_has("ms") 100 let slash = '\' 101 let quote = '"' 102 " very important! 103 let myshellslash = &shellslash 104 set noshellslash 105 let copycmd = 'xcopy' 106 else 107 let slash = '/' 108 let quote = '' 109 let copycmd = 'cp -p' 110 endif 111 112 " use periods, Debian requires it 113 "" don't use periods in version indication for file names (we want 114 "" to match CVS tag) 115 "let ver = substitute(g:cream_version_str, '\.', '-', 'g') 116 let ver = g:cream_version_str 117 118 " fix g:cream_cvs name (Windows only) 119 if Cream_has("ms") 120 let cream_cvs = substitute(g:cream_cvs, '/', '\', 'g') 121 else 122 let cream_cvs = g:cream_cvs 123 endif 124 " strip trailing slash 125 let cream_cvs = substitute(cream_cvs, '[\\/]$', '', 'g') 126 127 " make package directory 128 if rformat == "windows" 129 " .\cream (two above module CVS hole) 130 let releasedir = fnamemodify(cream_cvs, ":h:h") . slash . 'release-windows-' . strftime("%Y%m%dT%H%M%S") 131 elseif rformat == "unix" 132 " ./cream-X.XX (two above module CVS hole) 133 let releasedir = fnamemodify(cream_cvs, ":h:h") . slash . 'release-unix-' . strftime("%Y%m%dT%H%M%S") 134 else 135 " ./cream-X.XX (two above module CVS hole) 136 let releasedir = fnamemodify(cream_cvs, ":h:h") . slash . 'release-both-' . strftime("%Y%m%dT%H%M%S") 137 endif 138 execute ':' . mysilent . '!mkdir ' . quote . releasedir . quote 139 140 " make package version directory 141 if rformat == "windows" 142 let releasedir = releasedir . slash . 'cream' 143 execute ':' . mysilent . '!mkdir ' . quote . releasedir . quote 144 else 145 let releasedir = releasedir . slash . 'cream-' . ver 146 execute ':' . mysilent . '!mkdir ' . quote . releasedir . quote 147 endif 148 149 " make subdirectories 150 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'addons' . quote 151 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'bitmaps' . quote 152 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'docs' . quote 153 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'docs-html' . quote 154 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'filetypes' . quote 155 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'help' . quote 156 execute ':' . mysilent . '!mkdir ' . quote . releasedir . slash . 'lang' . quote 157 158 " copy files (don't just copy the structure, CVS interlaced) 159 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'creamrc' . quote . ' ' . quote . releasedir . quote 160 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . '*.vim' . quote . ' ' . quote . releasedir . quote 161 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream.svg' . quote . ' ' . quote . releasedir . quote 162 if rformat == "windows" || rformat == "both" 163 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream.ico' . quote . ' ' . quote . releasedir . quote 164 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'INSTALL.bat' . quote . ' ' . quote . releasedir . quote 165 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream.bat' . quote . ' ' . quote . releasedir . quote 166 endif 167 if rformat == "unix" || rformat == "both" 168 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream.png' . quote . ' ' . quote . releasedir . quote 169 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'INSTALL.sh' . quote . ' ' . quote . releasedir . quote 170 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream' . quote . ' ' . quote . releasedir . quote 171 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'cream.desktop' . quote . ' ' . quote . releasedir . quote 172 endif 173 174 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'addons' . slash . '*.vim' . quote . ' ' . quote . releasedir . slash . 'addons' . quote 175 if rformat == "windows" 176 let bitmap = '*.bmp' 177 elseif rformat == "unix" 178 let bitmap = '*.xpm' 179 else 180 let bitmap = '*.*' 181 endif 182 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'bitmaps' . slash . bitmap . quote . ' ' . quote . releasedir . slash . 'bitmaps' . quote 183 184 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs' . slash . '*.txt' . quote . ' ' . quote . releasedir . slash . 'docs' . quote 185 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs-html' . slash . '*.html' . quote . ' ' . quote . releasedir . slash . 'docs-html' . quote 186 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs-html' . slash . '*.php' . quote . ' ' . quote . releasedir . slash . 'docs-html' . quote 187 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs-html' . slash . '*.png' . quote . ' ' . quote . releasedir . slash . 'docs-html' . quote 188 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs-html' . slash . '*.gif' . quote . ' ' . quote . releasedir . slash . 'docs-html' . quote 189 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'docs-html' . slash . '*.ico' . quote . ' ' . quote . releasedir . slash . 'docs-html' . quote 190 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'filetypes' . slash . '*.vim' . quote . ' ' . quote . releasedir . slash . 'filetypes' . quote 191 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'help' . slash . '*.txt' . quote . ' ' . quote . releasedir . slash . 'help' . quote 192 execute ':' . mysilent . '!' . copycmd . ' ' . quote . cream_cvs . slash . 'lang' . slash . '*.vim' . quote . ' ' . quote . releasedir . slash . 'lang' . quote 193 " don't copy cream/views 194 195 " create package 196 if rformat == "windows" 197 execute 'cd ' . fnamemodify(releasedir, ":h") 198 execute ':!zip -r -9 ' . quote . fnamemodify(releasedir, ":h") . slash . 'cream-' . ver . '.zip' . quote . ' ' . quote . 'cream' . quote 199 else 200 execute ':!cd ' . fnamemodify(releasedir, ":h") . '; tar -cvf cream-' . ver . '.tar ' . 'cream-' . ver 201 execute ':!gzip ' . fnamemodify(releasedir, ":h") . slash . 'cream-' . ver . '.tar' 202 " Warning 203 call confirm( 204 \ "VERIFY!\n" . 205 \ " o Permissions on package files and directories\n" . 206 \ " o Line endings on files\n" . 207 \ "\n", "&Ok", 1, "Info") 208 endif 209 210 if exists("myshellslash") 211 let &shellslash = myshellslash 212 endif 213 214endfunction 215 216