// // aegis - project change supervisor // Copyright (C) 2007 Walter Franzini // Copyright (C) 2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or (at // your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program. If not, see . // #include #include #include #include #include #include #include #include #include #include #include #include #include void archive_main() { nstring dest_dir; nstring_list include_change; nstring_list exclude_change; project_identifier_subset_plain project; arglex(); while (arglex_token != arglex_token_eoln) { switch (arglex_token) { default: generic_argument(usage); break; case arglex_token_exclude_version: switch (arglex()) { default: option_needs_string(arglex_token_exclude_version, usage); // NOTREACHED case arglex_token_string: exclude_change.push_back(arglex_value.alv_string); break; } break; case arglex_token_exclude_version_not: switch (arglex()) { default: option_needs_string(arglex_token_exclude_version_not, usage); // NOTREACHED case arglex_token_string: include_change.push_back(arglex_value.alv_string); break; } break; case arglex_token_project: project.command_line_parse(usage); continue; case arglex_token_change_directory: if (!dest_dir.empty()) duplicate_option(usage); switch (arglex()) { default: option_needs_string(arglex_token_change_directory, usage); // NOTREACHED case arglex_token_string: dest_dir = nstring(arglex_value.alv_string); break; } break; } arglex(); } os_chdir(dest_dir); change_functor_archive arc ( false, project.get_pp(), ARCHIVE_SUFFIX, FINGERPRINT_SUFFIX, include_change, exclude_change ); project_inventory_walk(project.get_pp(), arc); }