Add a --platform flag
Projects may optionally specify their platform
(eg, groups="platform-linux" in the manifest).
By default, repo will automatically detect the platform. However,
users may specify --platform=[auto|all|linux|darwin].
Change-Id: Ie678851fb2fec5b0938aede01f16c53138a16537
diff --git a/command.py b/command.py
index 2ee0a43..936ab40 100644
--- a/command.py
+++ b/command.py
@@ -15,6 +15,7 @@
import os
import optparse
+import platform
import re
import sys
@@ -69,7 +70,7 @@
groups = mp.config.GetString('manifest.groups')
if groups is None:
- groups = 'default'
+ groups = 'default,platform-' + platform.system().lower()
groups = [x for x in re.split('[,\s]+', groups) if x]
if not args:
diff --git a/repo b/repo
index 0aabc0d..860a15d 100755
--- a/repo
+++ b/repo
@@ -129,6 +129,11 @@
dest='groups', default='default',
help='restrict manifest projects to ones with a specified group',
metavar='GROUP')
+group.add_option('-p', '--platform',
+ dest='platform', default="auto",
+ help='restrict manifest projects to ones with a specified'
+ 'platform group [auto|all|none|linux|darwin|...]',
+ metavar='PLATFORM')
# Tool
diff --git a/subcmds/init.py b/subcmds/init.py
index d1c497c..2e3215b 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -14,6 +14,7 @@
# limitations under the License.
import os
+import platform
import re
import shutil
import sys
@@ -91,6 +92,11 @@
dest='groups', default='default',
help='restrict manifest projects to ones with a specified group',
metavar='GROUP')
+ g.add_option('-p', '--platform',
+ dest='platform', default='auto',
+ help='restrict manifest projects to ones with a specified'
+ 'platform group [auto|all|none|linux|darwin|...]',
+ metavar='PLATFORM')
# Tool
g = p.add_option_group('repo Version options')
@@ -141,9 +147,24 @@
r.Save()
groups = re.split('[,\s]+', opt.groups)
+ all_platforms = ['linux', 'darwin']
+ platformize = lambda x: 'platform-' + x
+ if opt.platform == 'auto':
+ if (not opt.mirror and
+ not m.config.GetString('repo.mirror') == 'true'):
+ groups.append(platformize(platform.system().lower()))
+ elif opt.platform == 'all':
+ groups.extend(map(platformize, all_platfroms))
+ elif opt.platform in all_platforms:
+ groups.extend(platformize(opt.platform))
+ elif opt.platform != 'none':
+ print >>sys.stderr, 'fatal: invalid platform flag'
+ sys.exit(1)
+
groups = [x for x in groups if x]
groupstr = ','.join(groups)
- if groupstr == 'default':
+ if opt.platform == 'auto' and
+ groupstr == 'default,platform-' + platform.system.lower():
groupstr = None
m.config.SetString('manifest.groups', groupstr)