diff --git a/SparkleShare/Linux/Nautilus/sparkleshare-nautilus-extension.py b/SparkleShare/Linux/Nautilus/sparkleshare-nautilus-extension.py deleted file mode 100644 index ec474f49..00000000 --- a/SparkleShare/Linux/Nautilus/sparkleshare-nautilus-extension.py +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/python -# SparkleShare, an instant update workflow to Git. -# Copyright (C) 2010 Hylke Bons -# -# 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 . - -import os -import shutil -import time - -import gio -import nautilus - -import pygtk -pygtk.require('2.0') -import gtk - -SPARKLESHARE_PATH = os.path.join (os.path.expanduser ('~'), "SparkleShare") - -import gettext -gettext.bindtextdomain('sparkleshare', '/usr/share/locale') -gettext.textdomain('sparkleshare') -_ = gettext.gettext - -class SparkleShareExtension (nautilus.MenuProvider): - - - def __init__ (self): - - debug = "Loaded Nautilus SparkleShare Extension." - - - def checkout_version (self, menu, file_reference, commit_hash, username, timestamp): - - file_name = file_reference.get_basename ().replace (" ", "\ ").replace ("(", "\(").replace (")", "\)") - file_path = file_reference.get_path ().replace (" ", "\ ").replace ("(", "\(").replace (")", "\)") - tmp_file_path = os.path.join (SPARKLESHARE_PATH, ".tmp", file_reference.get_basename ()) - - # Move the current version to a temporary path - shutil.move (file_reference.get_path (), tmp_file_path) - - # Check out the earlier version - os.chdir (file_reference.get_parent ().get_path ()) - os.popen ("git checkout " + commit_hash + " " + file_name - .replace (" ", "\ ").replace ("(", "\(").replace (")", "\)")) - - new_tmp_file_name = file_name + " (" + username + ", " - new_tmp_file_name += time.strftime ("%H:%M %d %b %Y", timestamp).replace (" 0", " ") + ") " - - # Rename the checked out file - shutil.move (file_name, new_tmp_file_name) - - # Move the original file back - shutil.move (tmp_file_path, file_path) - - return True - - - def copy_web_link (self, menu, file_reference): - - path = file_reference.get_path () - - # Get the remote url used for the repo - url_command = os.popen ("git config --get remote.origin.url") - url = url_command.readline ().strip () - - # Strip the unneeded parts - url = url.lstrip ("ssh://git") - url = url.lstrip ("@") - url = url.rstrip (".git") - - # Format the right web url depending on the service - relative_path = path.lstrip (SPARKLESHARE_PATH) - repo_name = relative_path [:relative_path.find ("/")] - relative_path = relative_path.lstrip (repo_name) - - if "gitorious.org" in url: - url = "http://" + url + "/blobs/master" + relative_path - if "github.com" in url: - url = "http://" + url + "/raw/master" + relative_path - - url = url.replace (" ", "%20"); - - clipboard = gtk.clipboard_get () - clipboard.set_text (url) - clipboard.store () - - return - - - def get_file_items (self, window, files): - - # Only work if one file is selected - if len (files) != 1: - return - - file_reference = gio.File (files [0].get_uri ()) - - # Only work if we're in a SparkleShare repository folder - if not (file_reference.get_path ().startswith (SPARKLESHARE_PATH)): - return - - web_link_menu_item = nautilus.MenuItem ("Nautilus::CopyWebLink", _("Copy Web Link"), - _("Copy the web address of this file to the clipboard")) - - web_link_menu_item.connect ("activate", self.copy_web_link, file_reference) - - - epochs = ["", "", "", "", "", "", "", "", "", ""] - commit_hashes = ["", "", "", "", "", "", "", "", "", ""] - - os.chdir (file_reference.get_parent ().get_path ()) - - time_command = os.popen ("git log -10 --format='%at' " + file_reference.get_basename () - .replace (" ", "\ ").replace ("(", "\(").replace (")", "\)")) - - author_command = os.popen ("git log -10 --format='%an' " + file_reference.get_basename () - .replace (" ", "\ ").replace ("(", "\(").replace (")", "\)")) - - hash_command = os.popen ("git log -10 --format='%H' " + file_reference.get_basename () - .replace (" ", "\ ").replace ("(", "\(").replace (")", "\)")) - - i = 0 - for line in time_command.readlines (): - epochs [i] = line.strip ("\n") - i += 1 - - # Only work if there is history - if i < 2: - return web_link_menu_item, - - i = 0 - for line in hash_command.readlines (): - commit_hashes [i] = line.strip ("\n") - i += 1 - - earlier_version_menu_item = nautilus.MenuItem ("Nautilus::OpenOlderVersion", _("Get Earlier Version"), - _("Make a copy of an earlier version in this folder")) - submenu = nautilus.Menu () - - i = 0 - for line in author_command.readlines (): - - if i > 0: - - timestamp = time.strftime ("%d %b\t%H:%M", time.localtime (float (epochs [i]))) - username = line.strip ("\n") - - menu_item = nautilus.MenuItem ("Nautilus::Version" + epochs [i], - timestamp + "\t" + username, - _("Select to get a copy of this version")) - - menu_item.connect ("activate", self.checkout_version, file_reference, commit_hashes [i], - username, time.localtime (float (epochs [i]))) - submenu.append_item (menu_item) - - i += 1 - - earlier_version_menu_item.set_submenu (submenu) - - - return earlier_version_menu_item, web_link_menu_item diff --git a/SparkleShare/Linux/Nautilus/sparkleshare-nautilus3-extension.py b/SparkleShare/Linux/Nautilus/sparkleshare-nautilus3-extension.py deleted file mode 100644 index 9f21c8eb..00000000 --- a/SparkleShare/Linux/Nautilus/sparkleshare-nautilus3-extension.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/python -# SparkleShare, an instant update workflow to Git. -# Copyright (C) 2010 Hylke Bons -# -# 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 . - -import os -import shutil -import time -import urllib - -# http://projects.gnome.org/nautilus-python/documentation/html/ -from gi.repository import Nautilus, GObject, Gtk, Gdk - -SPARKLESHARE_PATH = os.path.join (os.path.expanduser ('~'), "SparkleShare") - -import gettext -gettext.bindtextdomain('sparkleshare', '/usr/share/locale') -gettext.textdomain('sparkleshare') -_ = gettext.gettext - -class SparkleShareExtension (GObject.GObject, Nautilus.MenuProvider): - - - def __init__ (self): - pass - - def checkout_version (self, menu, file_path, commit_hash, username, timestamp): - - file_name = os.path.basename (file_path) - tmp_file_path = os.path.join (SPARKLESHARE_PATH, ".tmp", file_name) - - # Move the current version to a temporary path - shutil.move (file_path, tmp_file_path) - - # Check out the earlier version - os.chdir (os.path.dirname (file_path)) - os.popen ("git checkout " + commit_hash + " '" + file_name + "'") - - new_tmp_file_name = file_name + " (" + username + ", " - new_tmp_file_name += time.strftime ("%H:%M %d %b %Y", timestamp).replace (" 0", " ") + ") " - - # Rename the checked out file - shutil.move (file_name, new_tmp_file_name) - - # Move the original file back - shutil.move (tmp_file_path, file_path) - - return True - - def format_web_link (self, path): - # Get the remote url used for the repo - self.chdir_to_repo_base(path) - url_command = os.popen ("git config --get remote.origin.url") - origin_url = url_command.readline ().strip () - if not origin_url: - return - - # Get components - # TODO use regex here or something not so ugly - protocol, remaining = origin_url.split ("://", 1) - host, origin_path = remaining.split("@")[1].split("/", 1); - # Format the right web url depending on the service - repo_base = self.get_repo_base_path(path) - relative_path = path.split(repo_base, 1)[1].lstrip("/") - - #url = url.rstrip (".git") - if "gitorious.org" in host: - # ssh://git@gitorious.org/gnome-design/gnome-design.git - # http://gitorious.org/gnome-design/gnome-design/blobs/raw/master/COPYING - url = "http://" + host + "/" + urllib.quote(origin_path.rstrip(".git")) + "/blobs/master/" + urllib.quote(relative_path) - elif "github.com" in host: - # ssh://git@github.com/hbons/SparkleShare.git - # https://raw.github.com/hbons/SparkleShare/master/README - url = "http://raw.github.com/" + urllib.quote(origin_path.rstrip(".git")) + "/raw/master/" + urllib.quote(relative_path) - else: - # https://git.one-gear.com/?p=thansen/Public.git;a=blob;f=SparkleShare.txt;hb=HEAD - url = "http://" + host + "/?p=" + urllib.quote(origin_path) +";a=blob;f=" + urllib.quote(relative_path) + ";hb=HEAD" - - return url - - def copy_web_link (self, menu, path): - url = self.format_web_link(path) - clipboard = Gtk.Clipboard.get (Gdk.Atom.intern ("CLIPBOARD", False)) - clipboard.set_text (url, -1) - clipboard.store () - - return - - def chdir_to_repo_base(self, file_path): - base_path = self.get_repo_base_path(file_path) - os.chdir(base_path) - - def get_repo_base_path(self, path): - path = os.path.abspath(path) - parts = path.split(SPARKLESHARE_PATH, 1)[1].split("/") - if len(parts) > 1: - sub_folder = parts[1] - else: - sub_folder = parts[0] - return SPARKLESHARE_PATH + "/" + sub_folder - - def get_file_items (self, window, files): - - # Only work if one file is selected - if len (files) != 1: - return - - file_reference = files [0] - - # Only work if we're in a SparkleShare repository folder - if file_reference.is_directory (): - return - if not (file_reference.get_parent_uri ().startswith ('file://' + SPARKLESHARE_PATH)): - return - if file_reference.get_parent_uri () == 'file://' + SPARKLESHARE_PATH: - return - - file_path = urllib.unquote ('/' + file_reference.get_uri ().lstrip('file:/')) - url = self.format_web_link (file_path) - parent_path = os.path.dirname (os.path.abspath (file_path)) - - top_menuitem = Nautilus.MenuItem (name="Nautilus::SparkleShare", - label="SparkleShare") - - top_submenu = Nautilus.Menu () - top_menuitem.set_submenu (top_submenu) - - web_link_menu_item_copy = Nautilus.MenuItem (name="Nautilus::CopyWebLink", - label=_("Copy Web Link"), - tip=_("Copy the web address of this file to the clipboard")) - - web_link_menu_item_copy.connect ("activate", self.copy_web_link, file_path) - - - epochs = ["", "", "", "", "", "", "", "", "", ""] - commit_hashes = ["", "", "", "", "", "", "", "", "", ""] - - - time_command = os.popen ("git log -10 --format='%at' '" + file_path + "'") - - author_command = os.popen ("git log -10 --format='%an' '" + file_path + "'") - - hash_command = os.popen ("git log -10 --format='%H' '" + file_path + "'") - - i = 0 - for line in time_command.readlines (): - epochs [i] = line.strip ("\n") - i += 1 - - - # Only work if there is history - if i < 2: - top_submenu.append_item (web_link_menu_item_copy) - return [top_menuitem] - - i = 0 - for line in hash_command.readlines (): - commit_hashes [i] = line.strip ("\n") - i += 1 - - earlier_version_menu_item = Nautilus.MenuItem (name="Nautilus::OpenOlderVersion", - label=_("Get Earlier Version"), - tip=_("Make a copy of an earlier version in this folder")) - version_submenu = Nautilus.Menu () - - i = 0 - for line in author_command.readlines (): - - if i > 0: - - timestamp = time.strftime ("%d %b\t%H:%M", time.localtime (float (epochs [i]))) - username = line.strip ("\n") - - menu_item = Nautilus.MenuItem (name="Nautilus::Version" + epochs [i], - label=timestamp + "\t" + username, - tip=_("Select to get a copy of this version")) - - menu_item.connect ("activate", self.checkout_version, file_path, commit_hashes [i], - username, time.localtime (float (epochs [i]))) - version_submenu.append_item (menu_item) - - i += 1 - - earlier_version_menu_item.set_submenu (version_submenu) - top_submenu.append_item (earlier_version_menu_item) - top_submenu.append_item (web_link_menu_item_copy) - - return [top_menuitem] diff --git a/SparkleShare/Linux/sparkleshare b/SparkleShare/Linux/sparkleshare deleted file mode 100644 index c1d78082..00000000 --- a/SparkleShare/Linux/sparkleshare +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env bash - -if [[ $UID -eq 0 ]]; then - echo "Cannot run as root. Things would go utterly wrong." - exit 1 -fi - -if [ "$XDG_RUNTIME_DIR" ]; then - pidfile=${XDG_RUNTIME_DIR}/sparkleshare.pid -else - pidfile=/tmp/sparkleshare-${USER}.pid -fi - -start() { - if [ -e "${pidfile}" ]; then - sparklepid=`cat ${pidfile}` - if [ -n "`ps -p ${sparklepid} | grep ${sparklepid}`" ]; then - echo "SparkleShare is already running." - exit 0 - else - echo "SparkleShare stale pid file found, starting a new instance." - rm -f $pidfile - fi - fi - - echo -n "Starting SparkleShare... " - if [ -n "${SSH_AGENT_PID}" -o -n "${SSH_AUTH_SOCK}" ] ; then - mono "/usr/lib/sparkleshare/SparkleShare.exe" $2 & - else - ssh-agent mono "/usr/lib/sparkleshare/SparkleShare.exe" $2 & - fi - ( umask 066; echo $! > ${pidfile} ) - echo "Done." -} - -stop() { - if [ -e "${pidfile}" ]; then - sparklepid=`cat ${pidfile}` - if [ -n "`ps -p ${sparklepid} | grep ${sparklepid}`" ]; then - echo -n "Stopping SparkleShare... " - kill ${sparklepid} - rm -f ${pidfile} - echo "Done." - else - echo "SparkleShare is not running, removing stale pid file..." - rm -f ${pidfile} - fi - else - echo "SparkleShare is not running." - fi -} - -case $1 in - start|--start) - start - ;; - stop|--stop) - stop - ;; - restart|--restart) - stop - start - ;; - open|--open) - invite=`date -u +%N` - curl -o ~/SparkleShare/$invite.xml `echo $2 | sed s/sparkleshare:/https:/` - ;; - help|--help|-h) - mono "/usr/lib/sparkleshare/SparkleShare.exe" --help - ;; - version|--version|-v) - mono "/usr/lib/sparkleshare/SparkleShare.exe" --version - ;; - *) - echo "Usage: sparkleshare {start|stop|restart|help|version}" - ;; -esac