diff options
Diffstat (limited to 'lisp/emacs-lisp')
| -rw-r--r-- | lisp/emacs-lisp/package-x.el | 27 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 10 | 
2 files changed, 22 insertions, 15 deletions
| diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el index 21bd7960d89..2a5d84f339b 100644 --- a/lisp/emacs-lisp/package-x.el +++ b/lisp/emacs-lisp/package-x.el @@ -56,12 +56,12 @@      (setq string (replace-match """ t nil string)))    string) -(defun package--make-rss-entry (title text) +(defun package--make-rss-entry (title text archive-url)    (let ((date-string (format-time-string "%a, %d %B %Y %T %z")))      (concat "<item>\n"  	    "<title>" (package--encode title) "</title>\n"  	    ;; FIXME: should have a link in the web page. -	    "<link>" package-archive-base "news.html</link>\n" +	    "<link>" archive-url "news.html</link>\n"  	    "<description>" (package--encode text) "</description>\n"  	    "<pubDate>" date-string "</pubDate>\n"  	    "</item>\n"))) @@ -85,7 +85,7 @@  	(unless old-buffer  	  (kill-buffer (current-buffer))))))) -(defun package-maint-add-news-item (title description) +(defun package-maint-add-news-item (title description archive-url)    "Add a news item to the ELPA web pages.  TITLE is the title of the news item.  DESCRIPTION is the text of the news item. @@ -93,21 +93,28 @@ You need administrative access to ELPA to use this."    (interactive "sTitle: \nsText: ")    (package--update-file (concat package-archive-upload-base "elpa.rss")  			"<description>" -			(package--make-rss-entry title description)) +			(package--make-rss-entry title description archive-url))    (package--update-file (concat package-archive-upload-base "news.html")  			"New entries go here"  			(package--make-html-entry title description))) -(defun package--update-news (package version description) +(defun package--update-news (package version description archive-url)    "Update the ELPA web pages when a package is uploaded."    (package-maint-add-news-item (concat package " version " version) -			       description)) +			       description +			       archive-url)) -(defun package-upload-buffer-internal (pkg-info extension) +(defun package-upload-buffer-internal (pkg-info extension &optional archive-url)    "Upload a package whose contents are in the current buffer.  PKG-INFO is the package info, see `package-buffer-info'.  EXTENSION is the file extension, a string.  It can be either -\"el\" or \"tar\"." +\"el\" or \"tar\". + +Optional arg ARCHIVE-URL is the URL of the destination archive. +If nil, the \"gnu\" archive is used." +  (unless archive-url +    (or (setq archive-url (cdr (assoc "gnu" package-archives))) +	(error "No destination URL")))    (save-excursion      (save-restriction        (let* ((file-type (cond @@ -127,7 +134,7 @@ EXTENSION is the file extension, a string.  It can be either  	     ;; Download latest archive-contents.  	     (buffer (url-retrieve-synchronously -		      (concat package-archive-base "archive-contents")))) +		      (concat archive-url "archive-contents"))))  	;; Parse archive-contents.  	(set-buffer buffer) @@ -178,7 +185,7 @@ EXTENSION is the file extension, a string.  It can be either  	  ;; Write a news entry.  	  (package--update-news (concat file-name "." extension) -				pkg-version desc) +				pkg-version desc archive-url)  	  ;; special-case "package": write a second copy so that the  	  ;; installer can easily find the latest version. diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 6470d345dff..73434a1717b 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -685,7 +685,7 @@ It will move point to somewhere in the headers."  (defun package-download-single (name version desc requires)    "Download and install a single-file package."    (let ((buffer (url-retrieve-synchronously -		 (concat (package-archive-id name) +		 (concat (package-archive-url name)  			 (symbol-name name) "-" version ".el"))))      (with-current-buffer buffer        (package-handle-response) @@ -698,7 +698,7 @@ It will move point to somewhere in the headers."  (defun package-download-tar (name version)    "Download and install a tar package."    (let ((tar-buffer (url-retrieve-synchronously -		     (concat (package-archive-id name) +		     (concat (package-archive-url name)  			     (symbol-name name) "-" version ".tar"))))      (with-current-buffer tar-buffer        (package-handle-response) @@ -856,7 +856,7 @@ Also, add the originating archive to the end of the package vector."  (defun package-install (name)    "Install the package named NAME.  Interactively, prompt for the package name. -The package is found on one of the archives in `package-archive-base'." +The package is found on one of the archives in `package-archives'."    (interactive     (list (intern (completing-read "Install package: "  				  (mapcar (lambda (elt) @@ -1030,7 +1030,7 @@ The file can either be a tar file or an Emacs Lisp file."  		     ;; FIXME: query user?  		     'always)) -(defun package-archive-id (name) +(defun package-archive-url (name)    "Return the archive containing the package NAME."    (let ((desc (cdr (assq (intern-soft name) package-archive-contents))))      (cdr (assoc (aref desc (- (length desc) 1)) package-archives)))) @@ -1350,7 +1350,7 @@ For larger packages, shows the README file."    (interactive)    (let* ((pkg-name (package-menu-get-package))  	 (buffer (url-retrieve-synchronously -		  (concat (package-archive-id pkg-name) +		  (concat (package-archive-url pkg-name)  			  pkg-name  			  "-readme.txt")))  	 start-point ok) | 
