Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Side by Side Diff: tools/publish_barback.py

Issue 63363002: SDK constraint and README for barback. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/barback/pubspec.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 #
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file.
6 #
7 # Script to push the barback package to pub. Barback is treated specially
8 # because it is tightly coupled to the SDK. Pub includes its own copy of
9 # barback but also includes code that is run against the user's copy of barback.
10 # To ensure that those are in sync, each version of the SDK has a single
11 # version of barback that it works with.
12 #
13 # We enforce this by placing a narrow SDK constraint in each version of barback.
14 # This ensures the only barback that will be selected is the one that works
15 # with the user's SDK. Once barback is more stable, we can loosen this.
16 #
17 # Usage: publish_barback.py
18 #
19 # "pub" must be in PATH.
20
21 import os
22 import os.path
23 import re
24 import shutil
25 import sys
26 import subprocess
27 import tempfile
28
29 def ReadVersion(file, field):
30 for line in open(file).read().split('\n'):
31 [k, v] = re.split('\s+', line)
32 if field == k:
33 return int(v)
34
35 def Main(argv):
36 HOME = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
37 BARBACK = os.path.join(HOME, 'pkg', 'barback')
38
39 versionFile = os.path.join(HOME, 'tools', 'VERSION')
40 major = ReadVersion(versionFile, 'MAJOR')
41 minor = ReadVersion(versionFile, 'MINOR')
42 build = ReadVersion(versionFile, 'BUILD')
43 patch = ReadVersion(versionFile, 'PATCH')
44
45 # bleeding_edge has a fixed version number of 0.1.x.y . Don't allow users
46 # to publish packages from bleeding_edge.
47 if major == 0 and minor <= 1:
48 print 'Error: Do not run this script from a bleeding_edge checkout.'
49 return -1
50
51 # Convert the version to semver syntax.
52 # TODO(rnystrom): Change this when the SDK's version numbering scheme is
53 # decided.
54 if patch != 0:
55 version = '%d.%d.%d+%d' % (major, minor, build, patch)
56 else:
57 version = '%d.%d.%d' % (major, minor, build)
58
59 # Copy the package to a temp directory so we can fill in the versions in its
60 # pubspec.
61 tmpDir = tempfile.mkdtemp()
62 shutil.copytree(os.path.join(HOME, BARBACK), os.path.join(tmpDir, 'barback'))
63
64 pubspecPath = os.path.join(tmpDir, 'barback', 'pubspec.yaml')
65 with open(pubspecPath) as pubspecFile:
66 pubspec = pubspecFile.read()
67
68 # Fill in the SDK version constraint. It pins barback to the current version
69 # of the SDK with a small amount of wiggle room for hotfixes.
70 if major < 1:
71 # No breaking changes until after 1.0.
72 # TODO(rnystrom): Remove this once 1.0 has shipped.
73 constraint = '>=%d.%d.%d <1.1.0' % (major, minor, build)
74 else:
75 constraint = '>=%d.%d.%d <%d.%d.0' % (major, minor, build, major, minor + 1)
76
77 # Fill in the SDK version constraint.
78 pubspec = pubspec.replace('$SDK_CONSTRAINT$', constraint)
79
80 with open(pubspecPath, 'w') as pubspecFile:
81 pubspecFile.write(pubspec)
82
83 print ('Publishing barback %s with SDK constraint "%s".' %
84 (version, constraint))
85 subprocess.call(['pub', 'lish'], cwd=os.path.join(tmpDir, 'barback'))
86 shutil.rmtree(tmpDir)
87
88 if __name__ == '__main__':
89 sys.exit(Main(sys.argv))
OLDNEW
« no previous file with comments | « pkg/barback/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698