SLING-7587 - Create a CLI-only tool to sync content

More resilience against ignored and non-existing resources.
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java b/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
index f82504b..fb4374d 100644
--- a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
+++ b/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
@@ -209,6 +209,15 @@
    
    public ResourceAndInfo buildResourceAndInfo(WorkspaceResource resource, Repository repository) throws IOException {
 
+       if ( !resource.exists() ) {
+           return null;
+       }
+
+       if ( resource.isIgnored()) {
+           logger.trace("Skipping team-private resource {0}", resource);
+           return null;
+       }
+
        Long modificationTimestamp = (Long) resource.getTransientProperty(PN_IMPORT_MODIFICATION_TIMESTAMP);
 
        if (modificationTimestamp != null && modificationTimestamp >= resource.getLastModified()) {
@@ -217,11 +226,6 @@
            return null;
        }
 
-       if (resource.isIgnored()) {
-           logger.trace("Skipping team-private resource {0}", resource);
-           return null;
-       }
-
        FileInfo info = createFileInfo(resource);
        logger.trace("For {0} built fileInfo {1}", resource, info);