5 #ifndef CVMFS_SWISSKNIFE_INGESTSQL_H_
6 #define CVMFS_SWISSKNIFE_INGESTSQL_H_
16 namespace swissknife {
20 virtual string GetName()
const {
return "ingestsql"; }
22 return "Graft the contents of a SQLite DB to the repository";
32 't',
"temporary directory (will try TMPDIR if not set)"));
41 'a',
"Allow additions (default true, false if -d specified)"));
44 r.push_back(
Parameter::Switch(
'c',
"Enable corefile generation (requires ulimit -c >0)"));
47 r.push_back(
Parameter::Optional(
'B',
"mount point to block on pending visibility of update"));
69 name(name), mtime(mtime), mode(mode), owner(owner), grp(grp), nested(nested)
81 name(std::move(
name)),
target(std::move(
target)), mtime(mtime), owner(owner), grp(grp), skip_if_file_or_dir(skip_if_file_or_dir)
97 name(std::move(
name)), mtime(mtime), size(size), owner(owner), grp(grp), mode(mode),
internal(
internal), compressed(compressed)
101 typedef std::map<std::string, Directory>
DirMap;
102 typedef std::map<std::string, std::vector<File>>
FileMap;
103 typedef std::map<std::string, std::vector<Symlink>>
SymlinkMap;
108 bool allow_additions,
bool allow_deletions,
const std::string &lease_path,
const std::string &additional_prefix);
116 void load_dirs(sqlite3 *db,
const std::string &lease_path,
const std::string &additional_prefix, std::map<std::string, Directory> &all_dirs);
117 void load_files(sqlite3 *db,
const std::string &lease_path,
const std::string &additional_prefix, std::map<std::string, std::vector<File>> &all_files);
118 void load_symlinks(sqlite3 *db,
const std::string &lease_path,
const std::string &additional_prefix, std::map<std::string, std::vector<Symlink>> &all_symlinks);
122 #endif // CVMFS_SWISSKNIFE_INGEST_H_
static Parameter Optional(const char key, const std::string &desc)
void load_symlinks(sqlite3 *db, const std::string &lease_path, const std::string &additional_prefix, std::map< std::string, std::vector< Symlink >> &all_symlinks)
std::map< std::string, std::vector< File > > FileMap
static Parameter Switch(const char key, const std::string &desc)
std::map< std::string, std::vector< Symlink > > SymlinkMap
void process_sqlite(const std::vector< sqlite3 * > &dbs, catalog::WritableCatalogManager &catalog_manager, bool allow_additions, bool allow_deletions, const std::string &lease_path, const std::string &additional_prefix)
std::vector< Parameter > ParameterList
void load_files(sqlite3 *db, const std::string &lease_path, const std::string &additional_prefix, std::map< std::string, std::vector< File >> &all_files)
virtual string GetDescription() const
Symlink(std::string &&name, std::string &&target, time_t mtime, uid_t owner, gid_t grp, int skip_if_file_or_dir)
std::map< std::string, Directory > DirMap
void load_dirs(sqlite3 *db, const std::string &lease_path, const std::string &additional_prefix, std::map< std::string, Directory > &all_dirs)
virtual string GetName() const
File(std::string &&name, time_t mtime, size_t size, uid_t owner, gid_t grp, mode_t mode, int internal, int compressed)
Directory(const std::string &name, time_t mtime, mode_t mode, uid_t owner, gid_t grp, int nested)
static Parameter Mandatory(const char key, const std::string &desc)
int add_symlinks(catalog::WritableCatalogManager &catalog_manager, const std::vector< Symlink > &symlinks)
int Main(const ArgumentList &args)
int add_files(catalog::WritableCatalogManager &catalog_manager, const std::vector< File > &files)
virtual ParameterList GetParams() const
int do_additions(const DirMap &all_dirs, const FileMap &all_files, const SymlinkMap &all_symlinks, const std::string &lease_path, catalog::WritableCatalogManager &catalog_manager)
int do_deletions(sqlite3 *db, catalog::WritableCatalogManager &catalog_manager, const std::string &lease_path, const std::string &additional_prefix)
std::map< char, SharedPtr< std::string > > ArgumentList