gboolean anjuta_pm_project_remove (AnjutaPmProject *project, AnjutaProjectNode *node, GError **error) { ianjuta_project_remove_node (project->project, node, NULL); return TRUE; }
int main(int argc, char *argv[]) { IAnjutaProject *project = NULL; AnjutaProjectNode *node; AnjutaProjectNode *child; AnjutaProjectNode *sibling; AnjutaProjectNode *root = NULL; char **command; GOptionContext *context; GError *error = NULL; /* Initialize program */ g_type_init (); /* Parse options */ context = g_option_context_new ("list [args]"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_set_summary (context, "test new autotools project manger"); if (!g_option_context_parse (context, &argc, &argv, &error)) { exit (1); } if (argc < 2) { printf ("PROJECT: %s", g_option_context_get_help (context, TRUE, NULL)); exit (1); } open_output (); /* Execute commands */ for (command = &argv[1]; *command != NULL; command++) { if (g_ascii_strcasecmp (*command, "load") == 0) { GFile *file = g_file_new_for_commandline_arg (*(++command)); if (project == NULL) { gint best = 0; gint probe; GType type; GTypeModule *module; /* Register project types */ module = g_object_new (dummy_type_module_get_type (), NULL); amp_project_register (module); /* Check for project type */ probe = amp_project_probe (file, NULL); if (probe > best) { best = probe; type = AMP_TYPE_PROJECT; } if (best == 0) { print_error ("Error: No backend for loading project in %s", *command); break; } else { project = IANJUTA_PROJECT (amp_project_new (file, NULL, NULL)); } } root = ianjuta_project_get_root (project, &error); ianjuta_project_load_node (project, root, &error); g_object_unref (file); } else if (g_ascii_strcasecmp (*command, "list") == 0) { list_root (project, root); } else if (g_ascii_strcasecmp (*command, "move") == 0) { if (AMP_IS_PROJECT (project)) { amp_project_move (AMP_PROJECT (project), *(++command)); } } else if (g_ascii_strcasecmp (*command, "save") == 0) { ianjuta_project_save_node (project, root, NULL); } else if (g_ascii_strcasecmp (*command, "remove") == 0) { node = get_node (project, root, *(++command)); ianjuta_project_remove_node (project, node, NULL); } else if (g_ascii_strcasecmp (*command, "dump") == 0) { if (g_ascii_strcasecmp (command[1], "makefile") == 0) { node = get_node (project, root, command[2]); amp_project_dump (AMP_PROJECT (project), node, DUMP_MAKEFILE); command +=2; } else if (g_ascii_strcasecmp (command[1], "configure") == 0) { amp_project_dump (AMP_PROJECT (project), root, DUMP_CONFIGURE); command +=1; } else { print_error ("Error: unknown command %s %s", *command, command[1]); break; } } else if (g_ascii_strcasecmp (command[0], "add") == 0) { node = get_node (project, root, command[2]); if (g_ascii_strcasecmp (command[1], "group") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); } } else if (g_ascii_strcasecmp (command[1], "target") == 0) { if ((command[5] != NULL) && (g_ascii_strcasecmp (command[5], "before") == 0)) { sibling = get_node (project, root, command[6]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); command += 2; } else if ((command[5] != NULL) && (g_ascii_strcasecmp (command[5], "after") == 0)) { sibling = get_node (project, root, command[6]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); } command++; } else if (g_ascii_strcasecmp (command[1], "source") == 0) { GFile *file = get_file (node, command[3]); if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_SOURCE, file, NULL, &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_SOURCE, file, NULL, &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_SOURCE, file, NULL, &error); } g_object_unref (file); } else if (g_ascii_strcasecmp (command[1], "module") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); } } else if (g_ascii_strcasecmp (command[1], "package") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); } } else { print_error ("Error: unknown command %s", *command); break; } command += 3; } else if (g_ascii_strcasecmp (command[0], "set") == 0) { if (AMP_IS_PROJECT (project)) { AnjutaProjectPropertyInfo *info; node = get_node (project, root, command[1]); info = get_project_property (project, node, command[2]); if (info != NULL) { gchar *value = g_shell_unquote (command[3], NULL); ianjuta_project_set_property (project, node, info->id, NULL, value, NULL); g_free (value); } } command += 3; } else if (g_ascii_strcasecmp (command[0], "clear") == 0) { if (AMP_IS_PROJECT (project)) { AnjutaProjectPropertyInfo *info; node = get_node (project, root, command[1]); info = get_project_property (project, node, command[2]); if (info != NULL) { ianjuta_project_remove_property (project, node, info->id, NULL, NULL); } } command += 2; } else { print_error ("Error: unknown command %s", *command); break; } amp_project_wait_ready (project); if (error != NULL) { print_error ("Error: %s", error->message == NULL ? "unknown error" : error->message); g_error_free (error); error = NULL; } } /* Free objects */ if (project) g_object_unref (project); close_output (); return (0); }