def run(self, args):
        """
        Upload contents of folders to a project with project_name on remote store.
        If follow_symlinks we will traverse symlinked directories.
        If content is already on remote site it will not be sent.
        :param args: Namespace arguments parsed from the command line.
        """
        project_name_or_id = self.create_project_name_or_id_from_args(args)
        folders = args.folders                  # list of local files/folders to upload into the project
        follow_symlinks = args.follow_symlinks  # should we follow symlinks when traversing folders
        dry_run = args.dry_run                  # do not upload anything, instead print out what you would upload

        project_upload = ProjectUpload(self.config, project_name_or_id, folders, follow_symlinks=follow_symlinks)
        if dry_run:
            print(project_upload.dry_run_report())
        else:
            print(project_upload.get_differences_summary())
            if project_upload.needs_to_upload():
                project_upload.run()
                print('\n')
                print(project_upload.get_upload_report())
                print('\n')
            print(project_upload.get_url_msg())