Show
Ignore:
Timestamp:
08/11/08 01:17:14 (5 months ago)
Author:
shogo4405
Message:

hhcタスクの微調整

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/java/utiljs/trunk/src/org/coderepos/utiljs/taskdefs/JSDoc.java

    r17011 r17340  
    33// import 
    44import java.io.*; 
     5import java.util.*; 
    56 
    67import org.coderepos.utiljs.*; 
    78import org.apache.tools.ant.*; 
     9import org.apache.tools.ant.types.*; 
    810import org.apache.tools.ant.taskdefs.*; 
    9 import org.apache.tools.ant.types.Commandline; 
    1011 
    1112/** 
     
    1516final public class JSDoc extends Task 
    1617{ 
    17         final public String JARNAME = "jsrun.jar"; 
    18         final public String JSDOCNAME = "app/run.js"; 
     18        final public String MAINJAR = "jsrun.jar"; 
     19        final public String MAINDOC = "app/run.js"; 
     20        final public String MAINTPL = "templates/jsdoc"; 
    1921 
    2022        /** 全関数の出力オプション **/ 
     
    3739        private boolean supress = false; 
    3840        /** 必須:出力テンプレート **/ 
    39         private File template = null; 
     41        private String template = null; 
    4042        /** JSDocToolkitのパス **/ 
    4143        private File path = null; 
     
    4345        private boolean test = false; 
    4446        /** 処理している内容の表示 **/ 
     47        private boolean verbose = true; 
     48 
    4549        private String ext = null; 
    4650        /** ヘルプ表示オプション **/ 
    4751        private boolean help = false; 
     52 
     53        /** jsrun.jarのパス **/ 
     54        private File jar = null; 
     55        /** app/run.jsのパス **/ 
     56        private File runjs = null; 
     57 
     58        // ファイルセットリスト 
     59        LinkedList<FileSet> fileSetList = new LinkedList<FileSet>(); 
    4860 
    4961        /** 
     
    5264        public void execute() throws BuildException 
    5365        { 
     66                // 引数の組立 
    5467                Arguments args = new Arguments(); 
    55  
    56                 args.add(getPath().getAbsolutePath() + JSDOCNAME); 
     68                // spp/run.jsのパス(必須) 
     69                args.add(getRunjs().getAbsolutePath()); 
     70                // 必須 :: jarに渡すソースファイルパスの設定 
     71                Iterator<FileSet> it = fileSetList.iterator(); 
     72                while(it.hasNext()) 
     73                { 
     74                        FileSet fileSet = it.next(); 
     75                        File baseDir = fileSet.getDir(); 
     76 
     77                        if(fileSet.hasPatterns()) 
     78                        { 
     79                                // JavaScriptファイルの指定 
     80                                FileScanner fileScanner = fileSet.getDirectoryScanner(this.getProject()); 
     81                                String[] srcFiles = fileScanner.getIncludedFiles(); 
     82                                for(int n=0;n<srcFiles.length;n++){ 
     83                                        args.add(baseDir.getAbsolutePath() + System.getProperty("file.separator") + srcFiles[n]); 
     84                                }; 
     85                        } 
     86                        else 
     87                        { 
     88                                // ディレクトリの指定 
     89                                args.add(baseDir.getAbsolutePath()); 
     90                        }; 
     91                }; 
    5792                args.addIf(0 < recurse, "--recurse=" + new Integer(recurse).toString()); 
    5893                args.addIf(help, "--help"); 
     
    6297                args.addIf(supress, "--supress"); 
    6398                args.addIf(ext != null, ext); 
    64  
    65                 Java task = (Java)getProject().createTask("Java"); 
    66  
    67                 Commandline.Argument arg = task.createArg(); 
    68                 arg.setValue(args.toString()); 
    69  
    70                 task.setJar(new File(getPath().getAbsolutePath() + JSDOCNAME)); 
     99                args.addIf(verbose, "--verbose"); 
     100                args.addIf(destDir != null, "--directory=" + getDestDir()); 
     101                args.add("--template=" + getTemplate()); 
     102 
     103                Java task = (Java)getProject().createTask("java"); 
    71104                task.setFork(true); 
     105                task.setJar(getJar().getAbsoluteFile()); 
     106                // jarに渡すオプション引数の組み立て 
     107                for(int i=0;i<args.size();i++){ 
     108                        task.createArg().setValue(args.get(i)); 
     109                }; 
     110                // タスク名を”jsdoc”に 
     111                task.setTaskName("jsdoc"); 
    72112                task.execute(); 
     113        }; 
     114 
     115        public FileSet createSrc() 
     116        { 
     117                FileSet fileSet = new FileSet(); 
     118                fileSetList.add(fileSet); 
     119                return fileSet; 
    73120        }; 
    74121 
     
    99146 
    100147        /** setter for template **/ 
    101         public void setTemplate(File f){ template = f; }; 
     148        public void setTemplate(String f){ template = f; }; 
    102149        /** getter for template **/ 
    103         public File getTemplate(){ return template; }; 
     150        public String getTemplate() 
     151        { 
     152                if(template == null) 
     153                { 
     154                        template = 
     155                                getPath().getAbsolutePath() + 
     156                                System.getProperty("file.separator") + 
     157                                MAINTPL; 
     158                }; 
     159                return template; 
     160        }; 
    104161 
    105162        /** setter for log **/ 
     
    132189        /** getter for test **/ 
    133190        public boolean getTest(){ return test; }; 
     191 
     192        /** setter for verbose **/ 
     193        public void setVerbose(boolean b){ verbose = b; }; 
     194        /** getter for verbose **/ 
     195        public boolean getVerbose(){ return verbose; }; 
     196 
     197 
     198        protected File getJar() 
     199        { 
     200                if(jar == null) 
     201                { 
     202                        String path = 
     203                                getPath().getAbsolutePath() + 
     204                                System.getProperty("file.separator") + 
     205                                MAINJAR; 
     206 
     207                        jar = new File(path); 
     208                }; 
     209                return jar; 
     210        }; 
     211 
     212        protected File getRunjs() 
     213        { 
     214                if(runjs == null) 
     215                { 
     216                        String path = 
     217                                getPath().getAbsolutePath() + 
     218                                System.getProperty("file.separator") + 
     219                                MAINDOC; 
     220 
     221                        runjs = new File(path); 
     222                }; 
     223                return runjs; 
     224        }; 
    134225};