package-add-2.tcl
Adds a package to the package manager.
- Location:
- /packages/acs-admin/www/apm/package-add-2.tcl
- Author:
- Bryan Quinn <bquinn@arsdigita.com>
- Created:
- 17 April 2000
- CVS ID:
$Id: package-add-2.tcl,v 1.18.2.2 2023/10/06 12:09:19 gustafn Exp $
Related Files
[ hide source ] | [ make this the default ]
File Contents
ad_page_contract { Adds a package to the package manager. @author Bryan Quinn (bquinn@arsdigita.com) @creation-date 17 April 2000 @cvs-id $Id: package-add-2.tcl,v 1.18.2.2 2023/10/06 12:09:19 gustafn Exp $ } { package_key:token pretty_name pretty_plural { package_type:notnull "apm_application"} { initial_install_p:boolean,notnull "f" } { singleton_p:boolean,notnull "f" } { implements_subsite_p:boolean,notnull f } { inherit_templates_p:boolean,notnull t } { auto_mount "" } package_uri version_name version_uri summary description:html description_format package_id:naturalnum version_id:naturalnum { owner_name:multiple } { owner_uri:multiple} { vendor ""} { vendor_uri ""} { install_p:boolean,notnull 0 } {implements_subsite_p:boolean,notnull "f"} {inherit_templates_p:boolean,notnull "f"} } -validate { package_key_format -requires {package_key} { if { [regexp {[^a-z0-9-]} $package_key] } { ad_complain } } package_key_unique -requires {package_key} { if {[apm_package_registered_p $package_key] } { ad_complain "The package key, <tt>$package_key</tt>, you have requested is already registered to another package." } } pretty_plural_unique -requires {pretty_plural} { if {[db_string apm_pretty_plural_unique_ck { select decode(count(*), 0, 0, 1) from apm_package_types where pretty_plural = :pretty_plural } -default 0]} { ad_complain "A package with the pretty plural of $pretty_plural already exists." } } package_name_unique -requires {pretty_name} { if { [db_string apm_name_unique_ck { select decode(count(*), 0, 0, 1) from apm_package_types where pretty_name = :pretty_name } -default 0] } { ad_complain "A package with the name <strong>$pretty_name</strong> already exists." } } package_uri_unique -requires {package_uri} { if { [db_string apm_uri_unique_ck { select decode(count(*), 0, 0, 1) from apm_package_types where package_uri = :package_uri } -default 0] } { ad_complain "A package with the URL $package_uri already exists." } } version_uri_unique -requires {version_uri} { if { [db_string apm_version_uri_unique_ck { select decode(count(*), 0, 0, 1) from apm_package_versions where version_uri = :version_uri } -default 0] } { ad_complain "A version with the URL $version_uri already exists." } } version_name_ck -requires {version_uri} { if {![regexp {^[0-9]+((\.[0-9]+)+((d|a|b|)[0-9]?)?)$} $version_name match]} { ad_complain } } } -errors { package_key {You must provide a package key to identify your package.} pretty_name {You must provide a name for your package.} package_uri {You must indicate a unique URI for your package.} version_name {You must provide a version number for your package.} version_name_ck {The version name must fit this format: <strong>major number</strong>.<strong>minor number</strong> with an optional suffix of <strong>d</strong> for development, <strong>a</strong> for alpha, or <strong>b</strong> for beta.} version_uri {You must provide a unique URI for this version of your package.} summary {Please summarize your package so that users can determine what it is for.} description {Please provide a description of your package so that users can consider using it.} description_format {Please indicate if your package is HTML or text.} package_key_format {The package key should contain only letters, numbers, and hyphens (dashes) and it must be lowercase.} package_id {You must provide an integer key for your package.} version_id {You must provide an integer key for your package version.} } # XXXJCD: this should be in the UI, along with license etc. set attributes(maturity) 0 db_transaction { # Register the package. apm_package_register $package_key $pretty_name $pretty_plural $package_uri \ $package_type $initial_install_p $singleton_p $implements_subsite_p \ $inherit_templates_p # Insert the version set version_id [apm_package_install_version \ -callback apm_dummy_callback \ -version_id $version_id \ -array attributes \ $package_key $version_name $version_uri $summary $description \ $description_format $vendor $vendor_uri $auto_mount] apm_version_enable -callback apm_dummy_callback $version_id apm_build_one_package_relationships $package_key apm_build_subsite_packages_list apm_package_install_owners -callback apm_dummy_callback \ [apm_package_install_owners_prepare $owner_name $owner_uri] $version_id if { $install_p } { if {[catch { apm_package_install_spec $version_id } errmsg]} { ad_return_error "Filesystem Error" \ "I was unable to create your package for the following reason: <blockquote><pre>[ns_quotehtml $errmsg]</pre></blockquote>" ad_script_abort } } } on_error { if {[db_string apm_package_add_doubleclick { select decode(count(*), 0, 0, 1) from apm_package_versions where version_id = :version_id } -default 0]} { ad_returnredirect "version-view?version_id=$version_id" ad_script_abort } ad_return_error "Database Error" \ "I was unable to create your package for the following reason: <blockquote><pre>[ns_quotehtml $errmsg]</pre></blockquote>" ad_script_abort } ad_returnredirect "version-view?version_id=$version_id" ad_script_abort # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: