00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CVSCOPY_H
00016 #define CVSCOPY_H
00017
00018 #include "pandatoolbase.h"
00019
00020 #include "cvsSourceTree.h"
00021
00022 #include "programBase.h"
00023 #include "filename.h"
00024 #include "pvector.h"
00025
00026
00027
00028
00029
00030
00031
00032
00033 class CVSCopy : public ProgramBase {
00034 public:
00035 CVSCopy();
00036
00037 CVSSourceTree::FilePath
00038 import(const Filename &source, void *extra_data,
00039 CVSSourceDirectory *suggested_dir);
00040
00041 bool continue_after_error();
00042
00043 protected:
00044 virtual bool handle_args(Args &args);
00045 virtual bool post_command_line();
00046
00047 virtual bool verify_file(const Filename &source, const Filename &dest,
00048 CVSSourceDirectory *dest_dir,
00049 void *extra_data);
00050 virtual bool copy_file(const Filename &source, const Filename &dest,
00051 CVSSourceDirectory *dest_dir,
00052 void *extra_data, bool new_file)=0;
00053
00054 bool verify_binary_file(Filename source, Filename dest);
00055 bool copy_binary_file(Filename source, Filename dest);
00056
00057 bool cvs_add(const Filename &filename);
00058 static string protect_from_shell(const string &source);
00059
00060 virtual string filter_filename(const string &source);
00061
00062 private:
00063 bool scan_hierarchy();
00064 bool scan_for_root(const string &dirname);
00065 string prompt(const string &message);
00066
00067 protected:
00068 bool _force;
00069 bool _interactive;
00070 bool _got_model_dirname;
00071 Filename _model_dirname;
00072 bool _got_map_dirname;
00073 Filename _map_dirname;
00074 bool _got_root_dirname;
00075 Filename _root_dirname;
00076 Filename _key_filename;
00077 bool _no_cvs;
00078 string _cvs_binary;
00079 bool _user_aborted;
00080
00081 typedef pvector<Filename> SourceFiles;
00082 SourceFiles _source_files;
00083
00084 CVSSourceTree _tree;
00085 CVSSourceDirectory *_model_dir;
00086 CVSSourceDirectory *_map_dir;
00087
00088 typedef pmap<string, CVSSourceTree::FilePath> CopiedFiles;
00089 CopiedFiles _copied_files;
00090 };
00091
00092 #endif