import: minetest: Strip "v" prefixes from the version number.
This fixes one of the issues noted at <https://issues.guix.gnu.org/50425#4>. * guix/import/minetest.scm (release-version): New procedure. (%minetest->guix-package): Call new procedure instead of release-title. * tests/minetest.scm (make-package-sexp): Allow overriding the version number. (make-releases-json): Allow overriding the release title. ("conventional version number") ("v-prefixed version number") ("dates as version number"): New tests. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
		
							parent
							
								
									8480a2a5bb
								
							
						
					
					
						commit
						808f9ffbd3
					
				
					 2 changed files with 27 additions and 6 deletions
				
			
		| 
						 | 
					@ -337,6 +337,14 @@ official Minetest forum and the Git repository (if any)."
 | 
				
			||||||
      (and=> (package-forums package) topic->url-sexp)
 | 
					      (and=> (package-forums package) topic->url-sexp)
 | 
				
			||||||
      (package-repository package)))
 | 
					      (package-repository package)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define (release-version release)
 | 
				
			||||||
 | 
					  "Guess the version of RELEASE from the release title."
 | 
				
			||||||
 | 
					  (define title (release-title release))
 | 
				
			||||||
 | 
					  (if (string-prefix? "v" title)
 | 
				
			||||||
 | 
					      ;; Remove "v" prefix from release titles like ‘v1.0.1’.
 | 
				
			||||||
 | 
					      (substring title 1)
 | 
				
			||||||
 | 
					      title))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; If the default sort key is changed, make sure to modify 'show-help'
 | 
					;; If the default sort key is changed, make sure to modify 'show-help'
 | 
				
			||||||
;; in (guix scripts import minetest) appropriately as well.
 | 
					;; in (guix scripts import minetest) appropriately as well.
 | 
				
			||||||
(define %default-sort-key "score")
 | 
					(define %default-sort-key "score")
 | 
				
			||||||
| 
						 | 
					@ -436,7 +444,7 @@ list of AUTHOR/NAME strings."
 | 
				
			||||||
  (define important-upstream-dependencies
 | 
					  (define important-upstream-dependencies
 | 
				
			||||||
    (important-dependencies dependencies author/name #:sort sort))
 | 
					    (important-dependencies dependencies author/name #:sort sort))
 | 
				
			||||||
  (values (make-minetest-sexp author/name
 | 
					  (values (make-minetest-sexp author/name
 | 
				
			||||||
                              (release-title release) ; version
 | 
					                              (release-version release)
 | 
				
			||||||
                              (package-repository package)
 | 
					                              (package-repository package)
 | 
				
			||||||
                              (release-commit release)
 | 
					                              (release-commit release)
 | 
				
			||||||
                              important-upstream-dependencies
 | 
					                              important-upstream-dependencies
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (make-package-sexp #:key
 | 
					(define* (make-package-sexp #:key
 | 
				
			||||||
                            (guix-name "minetest-foo")
 | 
					                            (guix-name "minetest-foo")
 | 
				
			||||||
 | 
					                            ;; This is not a proper version number but
 | 
				
			||||||
 | 
					                            ;; ContentDB often does not include version
 | 
				
			||||||
 | 
					                            ;; numbers.
 | 
				
			||||||
 | 
					                            (version "2021-07-25")
 | 
				
			||||||
                            (home-page "https://example.org/foo")
 | 
					                            (home-page "https://example.org/foo")
 | 
				
			||||||
                            (repo "https://example.org/foo.git")
 | 
					                            (repo "https://example.org/foo.git")
 | 
				
			||||||
                            (synopsis "synopsis")
 | 
					                            (synopsis "synopsis")
 | 
				
			||||||
| 
						 | 
					@ -44,9 +48,7 @@
 | 
				
			||||||
                            #:allow-other-keys)
 | 
					                            #:allow-other-keys)
 | 
				
			||||||
  `(package
 | 
					  `(package
 | 
				
			||||||
     (name ,guix-name)
 | 
					     (name ,guix-name)
 | 
				
			||||||
     ;; This is not a proper version number but ContentDB does not include
 | 
					     (version ,version)
 | 
				
			||||||
     ;; version numbers.
 | 
					 | 
				
			||||||
     (version "2021-07-25")
 | 
					 | 
				
			||||||
     (source
 | 
					     (source
 | 
				
			||||||
      (origin
 | 
					      (origin
 | 
				
			||||||
        (method git-fetch)
 | 
					        (method git-fetch)
 | 
				
			||||||
| 
						 | 
					@ -106,14 +108,14 @@
 | 
				
			||||||
                             author "/" name "/download/"))
 | 
					                             author "/" name "/download/"))
 | 
				
			||||||
    ("website" . ,website)))
 | 
					    ("website" . ,website)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (make-releases-json #:key (commit #f) (title "") #:allow-other-keys)
 | 
					(define* (make-releases-json #:key (commit #f) (title "2021-07-25") #:allow-other-keys)
 | 
				
			||||||
  `#((("commit" . ,commit)
 | 
					  `#((("commit" . ,commit)
 | 
				
			||||||
      ("downloads" . 469)
 | 
					      ("downloads" . 469)
 | 
				
			||||||
      ("id" . 8614)
 | 
					      ("id" . 8614)
 | 
				
			||||||
      ("max_minetest_version" . null)
 | 
					      ("max_minetest_version" . null)
 | 
				
			||||||
      ("min_minetest_version" . null)
 | 
					      ("min_minetest_version" . null)
 | 
				
			||||||
      ("release_date" . "2021-07-25T01:10:23.207584")
 | 
					      ("release_date" . "2021-07-25T01:10:23.207584")
 | 
				
			||||||
      ("title" . "2021-07-25"))))
 | 
					      ("title" . ,title))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (make-dependencies-json #:key (author "Author")
 | 
					(define* (make-dependencies-json #:key (author "Author")
 | 
				
			||||||
                                 (name "foo")
 | 
					                                 (name "foo")
 | 
				
			||||||
| 
						 | 
					@ -292,6 +294,17 @@ during a dynamic extent where that package is available on ContentDB."
 | 
				
			||||||
              #:website 'null
 | 
					              #:website 'null
 | 
				
			||||||
              #:repo 'null)
 | 
					              #:repo 'null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Determining the version number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(test-package "conventional version number" #:version "1.2.3" #:title "1.2.3")
 | 
				
			||||||
 | 
					;; See e.g. orwell/basic_trains
 | 
				
			||||||
 | 
					(test-package "v-prefixed version number" #:version "1.2.3" #:title "v1.2.3")
 | 
				
			||||||
 | 
					;; Many mods on ContentDB use dates as release titles.  In that case, the date
 | 
				
			||||||
 | 
					;; will have to do.
 | 
				
			||||||
 | 
					(test-package "dates as version number"
 | 
				
			||||||
 | 
					              #:version "2021-01-01" #:title "2021-01-01")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Dependencies
 | 
					;; Dependencies
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue