Index: tools/publish_pkg.py |
=================================================================== |
--- tools/publish_pkg.py (revision 0) |
+++ tools/publish_pkg.py (revision 0) |
@@ -0,0 +1,88 @@ |
+#!/usr/bin/env python |
+# |
+# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+# for details. All rights reserved. Use of this source code is governed by a |
+# BSD-style license that can be found in the LICENSE file. |
+# |
+# Script to push a package to pub. |
+# |
+# Usage: publish_pkg.py pkg_dir |
+ |
+ |
+import os |
+import os.path |
+import re |
+import shutil |
+import sys |
+import subprocess |
+import tempfile |
+ |
+def ReplaceInFiles(paths, subs): |
+ '''Reads a series of files, applies a series of substitutions to each, and |
+ saves them back out. subs should be a list of (pattern, replace) tuples.''' |
+ for path in paths: |
+ contents = open(path).read() |
+ for pattern, replace in subs: |
+ contents = re.sub(pattern, replace, contents) |
+ |
+ dest = open(path, 'w') |
+ dest.write(contents) |
+ dest.close() |
+ |
+ |
+def ReadVersion(file, field): |
+ for line in open(file).read().split('\n'): |
+ [k, v] = re.split('\s+', line) |
+ if field == k: |
+ return int(v) |
+ |
+def Main(argv): |
+ HOME = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) |
+ |
+ versionFile = os.path.join(HOME, 'tools', 'VERSION') |
+ major = ReadVersion(versionFile, 'MAJOR') |
+ minor = ReadVersion(versionFile, 'MINOR') |
+ build = ReadVersion(versionFile, 'BUILD') |
+ patch = ReadVersion(versionFile, 'PATCH') |
+ |
+ if major == 0 and minor <= 1: |
+ print 'Error: Do not run this script from a bleeding_edge checkout.' |
+ return -1 |
+ |
+ version = '%d.%d.%d+%d' % (major, minor, build, patch) |
+ |
+ tmpDir = tempfile.mkdtemp() |
+ pkgName = argv[1].split('/').pop() |
+ shutil.copytree(os.path.join(HOME, argv[1]), |
+ os.path.join(tmpDir, pkgName)) |
+ |
+ # Add version to pubspec file. |
+ pubspec = os.path.join(tmpDir, pkgName, 'pubspec.yaml') |
+ pubspecFile = open(pubspec) |
+ lines = pubspecFile.readlines() |
+ pubspecFile.close() |
+ pubspecFile = open(pubspec, 'w') |
+ foundVersion = False |
+ for line in lines: |
+ if line.startswith('version:'): |
+ foundVersion = True |
+ if line.startswith('description:') and not foundVersion: |
+ pubspecFile.write('version: ' + version + '\n') |
+ if not line.startswith(' sdk:'): |
+ pubspecFile.write(line) |
+ pubspecFile.close() |
+ |
+ # Replace '../*/pkg' imports and parts. |
+ for root, dirs, files in os.walk(os.path.join(tmpDir, pkgName)): |
+ for name in files: |
+ if name.endswith('.dart'): |
+ ReplaceInFiles([os.path.join(root, name)], |
+ [(r'(import|part)(\s+)(\'|")(\.\./)+pkg/', r'\1\2\3package:')]) |
+ |
+ print 'publishing version ' + version + ' of ' + argv[1] + ' to pub\n' |
+ print tmpDir |
+ subprocess.call(['pub', 'publish'], cwd=os.path.join(tmpDir, pkgName)) |
+ shutil.rmtree(tmpDir) |
+ |
+if __name__ == '__main__': |
+ sys.exit(Main(sys.argv)) |
Property changes on: tools/publish_pkg.py |
___________________________________________________________________ |
Added: svn:executable |
+ * |