apm_install_package_spec version_idWhat it does:
Writes the XML-formatted specification for a package to disk, marking it in the database as the only installed version of the package. Creates the package directory if it doesn't already exist. Overwrites any existing specification file; or if none exists yet, creates $package_key/$package_key.info and adds this new file to apm_version_files in the database.Defined in: /web/philip/packages/acs-core/apm-procs.tcl
Source code:
set spec [apm_generate_package_spec $version_id]
db_1row "select * from apm_package_version_info where version_id = $version_id"
set root [acs_package_root_dir $package_key]
if { ![file exists $root] } {
file mkdir $root
file attributes $root -permissions [ad_parameter "InfoFilePermissionsMode" "apm" 0755]
}
db_transaction {
# Make sure we have a .info file set up in the data model.
if { [db_0or1row "
select path
from apm_package_files
where version_id = $version_id
and file_type = 'package_spec'
"] } {
# The .info file was already there. The path to is is now in $path.
} else {
# Nothing there! We need to create add a .info file.
set path "$package_key.info"
db_dml "
insert into apm_package_files(file_id, version_id, path, file_type)
values(apm_package_file_id_seq.nextval, $version_id, '$package_key.info', 'package_spec')
"
}
set path "$root/$package_key.info"
set file [open $path "w"]
puts -nonewline $file $spec
close $file
# Mark $version_id as the only installed version of the package.
db_dml "
update apm_package_versions
set installed_p = decode(version_id, $version_id, 't', 'f')
where package_id = $package_id
"
}