author | Padraig O'Briain <padraig.obriain@sun.com> |
Thu, 25 Feb 2010 13:45:12 +0000 | |
changeset 1791 | b2a37ff09e8c |
parent 1765 | 80bb11d0430b |
child 1897 | 5613625da212 |
permissions | -rwxr-xr-x |
1516
8c950a3b4171
10485 move pkg(5) to Python 2.6
Rich Burridge <rich.burridge@sun.com>
parents:
1500
diff
changeset
|
1 |
#!/usr/bin/python2.6 |
12 | 2 |
# |
3 |
# CDDL HEADER START |
|
4 |
# |
|
5 |
# The contents of this file are subject to the terms of the |
|
6 |
# Common Development and Distribution License (the "License"). |
|
7 |
# You may not use this file except in compliance with the License. |
|
8 |
# |
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
|
10 |
# or http://www.opensolaris.org/os/licensing. |
|
11 |
# See the License for the specific language governing permissions |
|
12 |
# and limitations under the License. |
|
13 |
# |
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
|
19 |
# |
|
20 |
# CDDL HEADER END |
|
21 |
# |
|
22 |
||
23 |
# |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
24 |
# Copyright 2010 Sun Microsystems, Inc. All rights reserved. |
12 | 25 |
# Use is subject to license terms. |
26 |
# |
|
27 |
||
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
28 |
# pkgsend - publish package transactions |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
29 |
# |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
30 |
# Typical usage is |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
31 |
# |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
32 |
# pkgsend open |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
33 |
# [pkgsend summary] |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
34 |
# pkgsend close |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
35 |
# |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
36 |
# A failed transaction can be cleared using |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
37 |
# |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
38 |
# pkgsend close -A |
12 | 39 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
40 |
import fnmatch |
12 | 41 |
import getopt |
135
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
42 |
import gettext |
12 | 43 |
import os |
44 |
import sys |
|
58
0343b66379db
support for publication client threading, on a per-package basis
Danek Duvall <danek.duvall@sun.com>
parents:
57
diff
changeset
|
45 |
import traceback |
1715
8f305f0a6864
8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents:
1708
diff
changeset
|
46 |
import warnings |
12 | 47 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
48 |
import pkg.actions |
38
52e6547130fa
add support for bundle publishing
Danek Duvall <danek.duvall@sun.com>
parents:
29
diff
changeset
|
49 |
import pkg.bundle |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
50 |
import pkg.fmri |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
51 |
import pkg.manifest |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
52 |
import pkg.publish.transaction as trans |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
53 |
from pkg.misc import msg, emsg, PipeError |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
54 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
55 |
nopub_actions = [ "unknown" ] |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
56 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
57 |
def error(text, cmd=None): |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
58 |
"""Emit an error message prefixed by the command name """ |
12 | 59 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
60 |
if cmd: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
61 |
text = "%s: %s" % (cmd, text) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
62 |
else: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
63 |
# If we get passed something like an Exception, we can convert |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
64 |
# it down to a string. |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
65 |
text = str(text) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
66 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
67 |
# If the message starts with whitespace, assume that it should come |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
68 |
# *before* the command-name prefix. |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
69 |
text_nows = text.lstrip() |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
70 |
ws = text[:len(text) - len(text_nows)] |
28
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
71 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
72 |
# This has to be a constant value as we can't reliably get our actual |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
73 |
# program name on all platforms. |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
74 |
emsg(ws + "pkgsend: " + text_nows) |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
75 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
76 |
def usage(usage_error=None, cmd=None, retcode=2): |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
77 |
"""Emit a usage message and optionally prefix it with a more specific |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
78 |
error message. Causes program to exit.""" |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
79 |
|
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
80 |
if usage_error: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
81 |
error(usage_error, cmd=cmd) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
82 |
|
135
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
83 |
print _("""\ |
12 | 84 |
Usage: |
85 |
pkgsend [options] command [cmd_options] [operands] |
|
86 |
||
87 |
Packager subcommands: |
|
1431
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
88 |
pkgsend create-repository --set-property <section.property>=<value> |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
89 |
pkgsend open [-en] pkg_fmri |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
90 |
pkgsend add action arguments |
443
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
91 |
pkgsend import [-T file_pattern] bundlefile ... |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
92 |
pkgsend include [-d basedir] .. [manifest] ... |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
93 |
pkgsend close [-A | [--no-index] [--no-catalog]] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
94 |
pkgsend publish [ -d basedir] ... [--no-index] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
95 |
[--fmri-in-manifest | pkg_fmri] [--no-catalog] [manifest] ... |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
96 |
pkgsend generate [-T file_pattern] bundlefile .... |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
97 |
pkgsend refresh-index |
12 | 98 |
|
99 |
Options: |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
100 |
-s repo_uri target repository URI |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
101 |
--help or -? display usage message |
12 | 102 |
|
103 |
Environment: |
|
135
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
104 |
PKG_REPO""") |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
105 |
sys.exit(retcode) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
106 |
|
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
107 |
def trans_create_repository(repo_uri, args): |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
108 |
"""Creates a new repository at the location indicated by repo_uri.""" |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
109 |
|
1431
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
110 |
repo_props = {} |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
111 |
opts, pargs = getopt.getopt(args, "", ["set-property="]) |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
112 |
for opt, arg in opts: |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
113 |
if opt == "--set-property": |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
114 |
try: |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
115 |
prop, p_value = arg.split("=", 1) |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
116 |
p_sec, p_name = prop.split(".", 1) |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
117 |
except ValueError: |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
118 |
usage(_("property arguments must be of " |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
119 |
"the form '<section.property>=" |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
120 |
"<value>'."), cmd="create-repository") |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
121 |
repo_props.setdefault(p_sec, {}) |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
122 |
repo_props[p_sec][p_name] = p_value |
12 | 123 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
124 |
try: |
1431
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
125 |
trans.Transaction(repo_uri, create_repo=True, |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
126 |
repo_props=repo_props) |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
127 |
except trans.TransactionRepositoryConfigError, e: |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
128 |
error(e, cmd="create-repository") |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
129 |
emsg(_("Invalid repository configuration values were " |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
130 |
"specified using --set-property or required values are " |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
131 |
"missing. Please provide the correct and/or required " |
62b6033670e4
10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
1355
diff
changeset
|
132 |
"values using the --set-property option.")) |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
133 |
except trans.TransactionError, e: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
134 |
error(e, cmd="create-repository") |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
135 |
return 1 |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
136 |
return 0 |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
137 |
|
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
138 |
def trans_open(repo_uri, args): |
192
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
139 |
|
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
140 |
opts, pargs = getopt.getopt(args, "en") |
12 | 141 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
142 |
parsed = [] |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
143 |
eval_form = True |
12 | 144 |
for opt, arg in opts: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
145 |
parsed.append(opt) |
12 | 146 |
if opt == "-e": |
147 |
eval_form = True |
|
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
148 |
if opt == "-n": |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
149 |
eval_form = False |
12 | 150 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
151 |
if "-e" in parsed and "-n" in parsed: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
152 |
usage(_("only -e or -n may be specified"), cmd="open") |
12 | 153 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
154 |
if len(pargs) != 1: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
155 |
usage(_("open requires one package name"), cmd="open") |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
156 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
157 |
t = trans.Transaction(repo_uri, pkg_name=pargs[0]) |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
158 |
if eval_form: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
159 |
msg("export PKG_TRANS_ID=%s" % t.open()) |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
160 |
else: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
161 |
msg(t.open()) |
12 | 162 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
163 |
return 0 |
12 | 164 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
165 |
def trans_close(repo_uri, args): |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
166 |
abandon = False |
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
167 |
trans_id = None |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
168 |
refresh_index = True |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
169 |
add_to_catalog = True |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
170 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
171 |
opts, pargs = getopt.getopt(args, "At:", ["no-index", "no-catalog"]) |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
172 |
|
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
173 |
for opt, arg in opts: |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
174 |
if opt == "-A": |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
175 |
abandon = True |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
176 |
elif opt == "-t": |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
177 |
trans_id = arg |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
178 |
elif opt == "--no-index": |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
179 |
refresh_index = False |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
180 |
elif opt == "--no-catalog": |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
181 |
add_to_catalog = False |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
182 |
if trans_id is None: |
28
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
183 |
try: |
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
184 |
trans_id = os.environ["PKG_TRANS_ID"] |
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
185 |
except KeyError: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
186 |
usage(_("No transaction ID specified using -t or in " |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
187 |
"$PKG_TRANS_ID."), cmd="close") |
12 | 188 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
189 |
t = trans.Transaction(repo_uri, trans_id=trans_id, |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
190 |
add_to_catalog=add_to_catalog) |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
191 |
pkg_state, pkg_fmri = t.close(abandon, refresh_index) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
192 |
for val in (pkg_state, pkg_fmri): |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
193 |
if val is not None: |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
194 |
msg(val) |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
195 |
return 0 |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
196 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
197 |
def trans_add(repo_uri, args): |
28
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
198 |
try: |
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
199 |
trans_id = os.environ["PKG_TRANS_ID"] |
69ad5b247616
Move publication transaction processing into its own class.
Danek Duvall <danek.duvall@sun.com>
parents:
25
diff
changeset
|
200 |
except KeyError: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
201 |
usage(_("No transaction ID specified in $PKG_TRANS_ID"), |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
202 |
cmd="add") |
12 | 203 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
204 |
if not args: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
205 |
usage(_("No arguments specified for subcommand."), cmd="add") |
1500
fb15a23b6915
11805 pkgdep generate doesn't respect the payload path for file actions
Brock Pytlik <bpytlik@sun.com>
parents:
1460
diff
changeset
|
206 |
|
fb15a23b6915
11805 pkgdep generate doesn't respect the payload path for file actions
Brock Pytlik <bpytlik@sun.com>
parents:
1460
diff
changeset
|
207 |
action, lp = pkg.actions.internalizelist(args[0], args[1:]) |
111 | 208 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
209 |
if action.name in nopub_actions: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
210 |
error(_("invalid action for publication: %s") % action, cmd="add") |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
211 |
return 1 |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
212 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
213 |
t = trans.Transaction(repo_uri, trans_id=trans_id) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
214 |
t.add(action) |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
215 |
return 0 |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
216 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
217 |
def trans_publish(repo_uri, fargs): |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
218 |
opts, pargs = getopt.getopt(fargs, "d:", ["no-index", |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
219 |
"no-catalog", "fmri-in-manifest"]) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
220 |
basedirs = [] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
221 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
222 |
refresh_index = True |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
223 |
add_to_catalog = True |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
224 |
embedded_fmri = False |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
225 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
226 |
for opt, arg in opts: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
227 |
if opt == "-d": |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
228 |
basedirs.append(arg) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
229 |
elif opt == "--no-index": |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
230 |
refresh_index = False |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
231 |
elif opt == "--no-catalog": |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
232 |
add_to_catalog = False |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
233 |
elif opt == "--fmri-in-manifest": |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
234 |
embedded_fmri = True |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
235 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
236 |
if not pargs and not embedded_fmri: |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
237 |
usage(_("No fmri argument specified for subcommand"), |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
238 |
cmd="publish") |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
239 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
240 |
if not embedded_fmri: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
241 |
pkg_name = pargs[0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
242 |
del pargs[0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
243 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
244 |
if not pargs: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
245 |
filelist = [("<stdin>", sys.stdin)] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
246 |
else: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
247 |
try: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
248 |
filelist = [(f, file(f)) for f in pargs] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
249 |
except IOError, e: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
250 |
error(e, cmd="publish") |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
251 |
return 1 |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
252 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
253 |
lines = "" # giant string of all input files concatenated together |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
254 |
linecnts = [] # tuples of starting line number, ending line number |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
255 |
linecounter = 0 # running total |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
256 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
257 |
for filename, f in filelist: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
258 |
try: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
259 |
data = f.read() |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
260 |
except IOError, e: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
261 |
error(e, cmd="publish") |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
262 |
return 1 |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
263 |
lines += data |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
264 |
linecnt = len(data.splitlines()) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
265 |
linecnts.append((linecounter, linecounter + linecnt)) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
266 |
linecounter += linecnt |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
267 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
268 |
m = pkg.manifest.Manifest() |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
269 |
try: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
270 |
m.set_content(lines) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
271 |
except pkg.actions.ActionError, e: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
272 |
lineno = e.lineno |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
273 |
for i, tup in enumerate(linecnts): |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
274 |
if lineno > tup[0] and lineno <= tup[1]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
275 |
filename = filelist[i][0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
276 |
lineno -= tup[0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
277 |
break; |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
278 |
else: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
279 |
filename = "???" |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
280 |
lineno = "???" |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
281 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
282 |
error(_("File %s line %s: %s") % (filename, lineno, e), |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
283 |
cmd="publish") |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
284 |
return 1 |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
285 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
286 |
if embedded_fmri: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
287 |
if "pkg.fmri" not in m: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
288 |
error(_("Manifest does not set fmri and " + |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
289 |
"--fmri-in-manifest specified")) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
290 |
return 1 |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
291 |
pkg_name = pkg.fmri.PkgFmri(m["pkg.fmri"]).get_short_fmri() |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
292 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
293 |
t = trans.Transaction(repo_uri, pkg_name=pkg_name, refresh_index=refresh_index) |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
294 |
t.open() |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
295 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
296 |
for a in m.gen_actions(): |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
297 |
# don't publish this action |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
298 |
if a.name == "set" and a.attrs["name"] in ["pkg.fmri", "fmri"]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
299 |
continue |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
300 |
elif a.name in ["file", "license"]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
301 |
pkg.actions.set_action_data(a.hash, a, basedirs) |
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
302 |
elif a.name in nopub_actions: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
303 |
error(_("invalid action for publication: %s") % action, |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
304 |
cmd="publish") |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
305 |
t.close(abandon=True) |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
306 |
return 1 |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
307 |
try: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
308 |
t.add(a) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
309 |
except: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
310 |
t.close(abandon=True) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
311 |
raise |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
312 |
|
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
313 |
pkg_state, pkg_fmri = t.close(abandon=False, |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
314 |
refresh_index=refresh_index, add_to_catalog=add_to_catalog) |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
315 |
for val in (pkg_state, pkg_fmri): |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
316 |
if val is not None: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
317 |
msg(val) |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
318 |
return 0 |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
319 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
320 |
def trans_include(repo_uri, fargs, transaction=None): |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
321 |
basedirs = [] |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
322 |
error_occurred = False |
375
fa5286b09191
1773 Want tool to obtain contents of packages
johansen <johansen@sun.com>
parents:
314
diff
changeset
|
323 |
|
fa5286b09191
1773 Want tool to obtain contents of packages
johansen <johansen@sun.com>
parents:
314
diff
changeset
|
324 |
opts, pargs = getopt.getopt(fargs, "d:") |
fa5286b09191
1773 Want tool to obtain contents of packages
johansen <johansen@sun.com>
parents:
314
diff
changeset
|
325 |
for opt, arg in opts: |
fa5286b09191
1773 Want tool to obtain contents of packages
johansen <johansen@sun.com>
parents:
314
diff
changeset
|
326 |
if opt == "-d": |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
327 |
basedirs.append(arg) |
375
fa5286b09191
1773 Want tool to obtain contents of packages
johansen <johansen@sun.com>
parents:
314
diff
changeset
|
328 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
329 |
if transaction == None: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
330 |
try: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
331 |
trans_id = os.environ["PKG_TRANS_ID"] |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
332 |
except KeyError: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
333 |
usage(_("No transaction ID specified in $PKG_TRANS_ID"), |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
334 |
cmd="include") |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
335 |
t = trans.Transaction(repo_uri, trans_id=trans_id) |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
336 |
else: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
337 |
t = transaction |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
338 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
339 |
if not pargs: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
340 |
filelist = [("<stdin>", sys.stdin)] |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
341 |
else: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
342 |
try: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
343 |
filelist = [(f, file(f)) for f in pargs] |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
344 |
except IOError, e: |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
345 |
error(e, cmd="include") |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
346 |
return 1 |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
347 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
348 |
lines = [] # giant string of all input files concatenated together |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
349 |
linecnts = [] # tuples of starting line number, ending line number |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
350 |
linecounter = 0 # running total |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
351 |
|
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
352 |
for filename, f in filelist: |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
353 |
try: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
354 |
data = f.read() |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
355 |
except IOError, e: |
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
356 |
error(e, cmd="include") |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
357 |
return 1 |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
358 |
lines.append(data) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
359 |
linecnt = len(data.splitlines()) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
360 |
linecnts.append((linecounter, linecounter + linecnt)) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
361 |
linecounter += linecnt |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
362 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
363 |
m = pkg.manifest.Manifest() |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
364 |
try: |
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
365 |
m.set_content("\n".join(lines)) |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
366 |
except pkg.actions.ActionError, e: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
367 |
lineno = e.lineno |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
368 |
for i, tup in enumerate(linecnts): |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
369 |
if lineno > tup[0] and lineno <= tup[1]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
370 |
filename = filelist[i][0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
371 |
lineno -= tup[0] |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
372 |
break; |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
373 |
else: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
374 |
filename = "???" |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
375 |
lineno = "???" |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
376 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
377 |
error(_("File %s line %s: %s") % (filename, lineno, e), |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
378 |
cmd="include") |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
379 |
return 1 |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
380 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
381 |
invalid_action = False |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
382 |
|
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
383 |
for a in m.gen_actions(): |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
384 |
# don't publish this action |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
385 |
if a.name == "set" and a.attrs["name"] in ["pkg.fmri", "fmri"]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
386 |
continue |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
387 |
elif a.name in ["file", "license"]: |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
388 |
pkg.actions.set_action_data(a.hash, a, basedirs) |
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
389 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
390 |
if a.name in nopub_actions: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
391 |
error(_("invalid action for publication: %s") % str(a), |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
392 |
cmd="include") |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
393 |
invalid_action = True |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
394 |
else: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
395 |
t.add(a) |
1542
c97893ed7cd4
12891 pkgsend publish should support the --no-index flag
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1516
diff
changeset
|
396 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
397 |
if invalid_action: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
398 |
return 3 |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
399 |
else: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
400 |
return 0 |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
401 |
|
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
402 |
def gen_actions(files, timestamp_files): |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
403 |
for filename in files: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
404 |
bundle = pkg.bundle.make_bundle(filename) |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
405 |
for action in bundle: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
406 |
if action.name == "file": |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
407 |
basename = os.path.basename(action.attrs["path"]) |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
408 |
for pattern in timestamp_files: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
409 |
if fnmatch.fnmatch(basename, pattern): |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
410 |
break |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
411 |
else: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
412 |
try: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
413 |
del action.attrs["timestamp"] |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
414 |
except KeyError: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
415 |
pass |
1765
80bb11d0430b
14339 'pkgsend import' fails on System V packages
Tim Foster <tim.foster@sun.com>
parents:
1715
diff
changeset
|
416 |
yield (action, action.name in nopub_actions) |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
417 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
418 |
def trans_import(repo_uri, args): |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
419 |
try: |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
420 |
trans_id = os.environ["PKG_TRANS_ID"] |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
421 |
except KeyError: |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
422 |
print >> sys.stderr, \ |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
423 |
_("No transaction ID specified in $PKG_TRANS_ID") |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
424 |
sys.exit(1) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
425 |
|
443
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
426 |
opts, pargs = getopt.getopt(args, "T:") |
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
427 |
|
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
428 |
timestamp_files = [] |
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
429 |
|
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
430 |
for opt, arg in opts: |
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
431 |
if opt == "-T": |
5ffa5b7dac9c
2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
409
diff
changeset
|
432 |
timestamp_files.append(arg) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
433 |
|
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
434 |
if not args: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
435 |
usage(_("No arguments specified for subcommand."), |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
436 |
cmd="import") |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
437 |
t = trans.Transaction(repo_uri, trans_id=trans_id) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
438 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
439 |
for action, err in gen_actions(pargs, timestamp_files): |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
440 |
if err: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
441 |
error(_("invalid action for publication: %s") % |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
442 |
action, cmd="import") |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
443 |
t.close(abandon=True) |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
444 |
return 1 |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
445 |
else: |
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
446 |
t.add(action) |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
447 |
return 0 |
22
379f0f6809ff
pkgsend open, pkgsend add file, pkgsend close; Transaction object
"Stephen Hahn <sch@sun.com>"
parents:
21
diff
changeset
|
448 |
|
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
449 |
def trans_generate(args): |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
450 |
opts, pargs = getopt.getopt(args, "T:") |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
451 |
|
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
452 |
timestamp_files = [] |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
453 |
|
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
454 |
for opt, arg in opts: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
455 |
if opt == "-T": |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
456 |
timestamp_files.append(arg) |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
457 |
|
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
458 |
if not args: |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
459 |
usage(_("No arguments specified for subcommand."), |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
460 |
cmd="generate") |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
461 |
|
1708
f4b4fc22bb57
14038 pkgsend can publish 'unknown' actions for pkginfo files
Tim Foster <tim.foster@sun.com>
parents:
1542
diff
changeset
|
462 |
for action, err in gen_actions(pargs, timestamp_files): |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
463 |
if "path" in action.attrs and hasattr(action, "hash") \ |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
464 |
and action.hash == "NOHASH": |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
465 |
action.hash = action.attrs["path"] |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
466 |
print action |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
467 |
|
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
468 |
return 0 |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
469 |
|
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
470 |
def trans_refresh_index(repo_uri, args): |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
471 |
"""Refreshes the indices at the location indicated by repo_uri.""" |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
472 |
|
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
473 |
if args: |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
474 |
usage(_("command does not take operands"), |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
475 |
cmd="refresh-index") |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
476 |
|
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
477 |
try: |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
478 |
t = trans.Transaction(repo_uri).refresh_index() |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
479 |
except trans.TransactionError, e: |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
480 |
error(e, cmd="refresh-index") |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
481 |
return 1 |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
482 |
return 0 |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
483 |
|
192
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
484 |
def main_func(): |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
485 |
|
135
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
486 |
# XXX /usr/lib/locale is OpenSolaris-specific. |
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
487 |
gettext.install("pkgsend", "/usr/lib/locale") |
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
488 |
|
211
f5848e130489
211 Using the PKG_REPO environment variable causes pkgsend to fail
venkytv <venkytv@opensolaris.org>
parents:
209
diff
changeset
|
489 |
try: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
490 |
repo_uri = os.environ["PKG_REPO"] |
211
f5848e130489
211 Using the PKG_REPO environment variable causes pkgsend to fail
venkytv <venkytv@opensolaris.org>
parents:
209
diff
changeset
|
491 |
except KeyError: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
492 |
repo_uri = "http://localhost:10000" |
192
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
493 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
494 |
show_usage = False |
12 | 495 |
try: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
496 |
opts, pargs = getopt.getopt(sys.argv[1:], "s:?", ["help"]) |
135
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
497 |
for opt, arg in opts: |
a1e20e9a9845
add CLI test suite, correct bugs found by test suite, ration out CLI options
Stephen Hahn <sch@Sun.COM>
parents:
131
diff
changeset
|
498 |
if opt == "-s": |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
499 |
repo_uri = arg |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
500 |
elif opt in ("--help", "-?"): |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
501 |
show_usage = True |
52
d7c452ef7ae1
Sanitize getopt exception handling
Danek Duvall <danek.duvall@sun.com>
parents:
49
diff
changeset
|
502 |
except getopt.GetoptError, e: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
503 |
usage(_("pkgsend: illegal global option -- %s") % e.opt) |
12 | 504 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
505 |
subcommand = None |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
506 |
if pargs: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
507 |
subcommand = pargs.pop(0) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
508 |
if subcommand == "help": |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
509 |
show_usage = True |
12 | 510 |
|
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
511 |
if show_usage: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
512 |
usage(retcode=0) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
513 |
elif not subcommand: |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
514 |
usage() |
12 | 515 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
516 |
ret = 0 |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
517 |
try: |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
518 |
if subcommand == "create-repository": |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
519 |
ret = trans_create_repository(repo_uri, pargs) |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
520 |
elif subcommand == "open": |
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
521 |
ret = trans_open(repo_uri, pargs) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
522 |
elif subcommand == "close": |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
523 |
ret = trans_close(repo_uri, pargs) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
524 |
elif subcommand == "add": |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
525 |
ret = trans_add(repo_uri, pargs) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
526 |
elif subcommand == "import": |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
527 |
ret = trans_import(repo_uri, pargs) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
528 |
elif subcommand == "include": |
948
231bb1355d2b
6574 repository creation ability desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
873
diff
changeset
|
529 |
ret = trans_include(repo_uri, pargs) |
1178
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
530 |
elif subcommand == "publish": |
3e4c11dc0133
9509 pkgsend include should be able to look in multiple proto areas
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1038
diff
changeset
|
531 |
ret = trans_publish(repo_uri, pargs) |
1198
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
532 |
elif subcommand == "generate": |
e0ac5c9363b5
9808 subcommand to output manifest useable by include/publish desired
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1178
diff
changeset
|
533 |
ret = trans_generate(pargs) |
1355
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
534 |
elif subcommand == "refresh-index": |
8406eda12b13
6572 ability to trigger repository index refresh desired
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents:
1288
diff
changeset
|
535 |
ret = trans_refresh_index(repo_uri, pargs) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
536 |
else: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
537 |
usage(_("unknown subcommand '%s'") % subcommand) |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
538 |
except getopt.GetoptError, e: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
539 |
usage(_("illegal %s option -- %s") % (subcommand, e.opt)) |
38
52e6547130fa
add support for bundle publishing
Danek Duvall <danek.duvall@sun.com>
parents:
29
diff
changeset
|
540 |
|
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
541 |
return ret |
192
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
542 |
|
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
543 |
# |
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
544 |
# Establish a specific exit status which means: "python barfed an exception" |
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
545 |
# so that we can more easily detect these in testing of the CLI commands. |
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
546 |
# |
0c6f1066777b
58 getopt handling needs cleanup
Dan Price <dp@eng.sun.com>
parents:
165
diff
changeset
|
547 |
if __name__ == "__main__": |
1715
8f305f0a6864
8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents:
1708
diff
changeset
|
548 |
|
8f305f0a6864
8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents:
1708
diff
changeset
|
549 |
# Make all warnings be errors. |
8f305f0a6864
8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents:
1708
diff
changeset
|
550 |
warnings.simplefilter('error') |
8f305f0a6864
8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents:
1708
diff
changeset
|
551 |
|
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
552 |
try: |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
553 |
__ret = main_func() |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
554 |
except (pkg.actions.ActionError, trans.TransactionError, |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
555 |
RuntimeError), _e: |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
556 |
print >> sys.stderr, "pkgsend: %s" % _e |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
557 |
__ret = 1 |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
558 |
except (PipeError, KeyboardInterrupt): |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
559 |
# We don't want to display any messages here to prevent |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
560 |
# possible further broken pipe (EPIPE) errors. |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
561 |
__ret = 1 |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
562 |
except SystemExit, _e: |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
563 |
raise _e |
307
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
564 |
except: |
3a857fd8b787
787 optional dependencies are required
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
289
diff
changeset
|
565 |
traceback.print_exc() |
873
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
566 |
error( |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
567 |
_("\n\nThis is an internal error. Please let the " |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
568 |
"developers know about this\nproblem by filing a bug at " |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
569 |
"http://defect.opensolaris.org and including the\nabove " |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
570 |
"traceback and this message. The version of pkg(5) is " |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
571 |
"'%s'.") % pkg.VERSION) |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
572 |
__ret = 99 |
b95d76c53b5e
2691 ability to publish packages to local disk repository
Shawn Walker <Shawn.Walker@Sun.COM>
parents:
535
diff
changeset
|
573 |
sys.exit(__ret) |