File: extpkg.cl

package info (click to toggle)
iraf 2.17-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 95,288 kB
  • sloc: ansic: 228,894; fortran: 75,606; lisp: 18,369; xml: 8,401; sh: 6,111; yacc: 5,648; lex: 596; makefile: 575; asm: 153; csh: 95; sed: 4
file content (63 lines) | stat: -rw-r--r-- 2,029 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#  Dynamic Package Loading Script
#
#  This script is "sourced" by the standard hlib$extern.pkg file when the
#  CL is loaded to automatically define any packages installed in the 
#  iraf$extern directory.  Both the package definition and helpdb strings
#  are defined to include the package, negating the previous manual
#  declarations required in hlib$extern.pkg
#
#

string	curdir, extdir, dpkg

extdir = osfn ("iraf$extern")

# Go to the dynamic package directory, but save the current directory so
# we can return when we're done.  At this stage of the login we need to 
# use host commands since the system package isn't available.
printf ("!!/bin/pwd\n") | cl () | scan (curdir)
chdir (extdir)

#  Create a file list to process.
dpkg = mktemp ("tmp$dpkg")
if (access (dpkg) == yes)
  printf ("!!/bin/rm -f %s\n", osfn(dpkg))                             	| cl ()
;
printf ("!!/bin/ls -1ad [a-y]* 2> /dev/null\n") | cl (,> dpkg)

list = dpkg
while (fscan (list, s1) != EOF) {

  # We define an environment variable for installed directories, e.g. a
  # package support directory of data might require it's own definition.
  # This also works to define the variable for actual package code, but 
  # we don't declare the package just yet.
  if (access (s1) == yes && 
       (access (s1//"/.installed") == yes ||
        access (s1//"/"//s1//".cl") == yes)) {
    printf ("reset %s = %s/%s/\nkeep\n", s1, osfn("iraf$extern"), s1)   | cl ()
  }
  ;

  # We assume we can dynamically load a package if there is a "foo.cl"
  # script file in the 'foo' subdirectory.
  if (access (s1//"/"//s1//".cl") == yes) {
    printf ("task  %s.pkg = %s$%s.cl\nkeep\n", s1, s1, s1)              | cl ()

    # Add to the helpdb string.
    printf ("reset helpdb=%s,%s$lib/helpdb.mip\nkeep\n", 
	envget("helpdb"), s1) 						| cl ()
  }
  ;
}

# Clean up and go back to the login directory.
printf  ("!!/bin/rm -f %s\n", osfn(dpkg))                               | cl ()
if (curdir != "") {
    chdir (curdir)
} else {
    back ()
}
;

keep