[Git][clojure-team/clj-yaml-clojure][master] 11 commits: d/watch: fix tag pattern
Jérôme Charaoui (@lavamind)
gitlab at salsa.debian.org
Sun Feb 5 22:09:00 GMT 2023
Jérôme Charaoui pushed to branch master at Debian Clojure Maintainers / clj-yaml-clojure
Commits:
5adebbd9 by Jérôme Charaoui at 2023-02-05T16:31:16-05:00
d/watch: fix tag pattern
- - - - -
29400c2f by Jérôme Charaoui at 2023-02-05T16:31:35-05:00
New upstream version 0.7.2
- - - - -
40282846 by Jérôme Charaoui at 2023-02-05T16:31:36-05:00
Update upstream source from tag 'upstream/0.7.2'
Update to upstream version '0.7.2'
with Debian dir 46db6783a7f048f913a054625c3578ce0bd551d0
- - - - -
46c8068b by Jérôme Charaoui at 2023-02-05T16:38:35-05:00
Update changelog for 0.7.2-1 release
- - - - -
a63bfe47 by Jérôme Charaoui at 2023-02-05T16:38:42-05:00
fixup d/changelog
Gbo-Dch: ignore
- - - - -
2e39e13b by Jérôme Charaoui at 2023-02-05T16:50:07-05:00
switch to leiningen build system
- - - - -
4a1c2317 by Jérôme Charaoui at 2023-02-05T16:51:34-05:00
d/tests: switch to builtitude for upstream tests
- - - - -
17002c27 by Jérôme Charaoui at 2023-02-05T16:52:13-05:00
d/control: bump Standards-Version, no changes needed
- - - - -
e3aa3fa0 by Jérôme Charaoui at 2023-02-05T16:53:08-05:00
d/control: remove redundant binary depends
Already added by jh_classpath via ${java:Depends}
- - - - -
793bfbee by Jérôme Charaoui at 2023-02-05T16:57:33-05:00
keep org.yaml version string unmodified in poms
don't change it to "debian"
- - - - -
612da0fb by Jérôme Charaoui at 2023-02-05T17:03:13-05:00
Update changelog for 0.7.2-1 release
- - - - -
19 changed files:
- README.md
- debian/changelog
- debian/control
- debian/libclj-yaml-clojure.classpath
- debian/libclj-yaml-clojure.docs
- − debian/libclj-yaml-clojure.jlibs
- debian/libclj-yaml-clojure.poms
- + debian/maven.rules
- + debian/patches/0001-Lein-Local.patch
- + debian/patches/series
- − debian/pom.xml
- debian/rules
- debian/tests/build
- debian/tests/control
- + debian/tests/upstream
- debian/watch
- project.clj
- src/clojure/clj_yaml/core.clj
- test/clj_yaml/core_test.clj
Changes:
=====================================
README.md
=====================================
@@ -14,27 +14,38 @@ decoding for Clojure via the [snakeyaml][] Java library.
## Usage
- (require '[clj-yaml.core :as yaml])
-
- (yaml/generate-string
- [{:name "John Smith", :age 33}
- {:name "Mary Smith", :age 27}])
- "- {name: John Smith, age: 33}\n- {name: Mary Smith, age: 27}\n"
-
- (yaml/parse-string "
- - {name: John Smith, age: 33}
- - name: Mary Smith
- age: 27
- ")
- => ({:name "John Smith", :age 33}
- {:name "Mary Smith", :age 27})
+```clojure
+(require '[clj-yaml.core :as yaml])
+
+(yaml/generate-string
+ [{:name "John Smith", :age 33}
+ {:name "Mary Smith", :age 27}])
+"- {name: John Smith, age: 33}\n- {name: Mary Smith, age: 27}\n"
+
+(yaml/parse-string "
+- {name: John Smith, age: 33}
+- name: Mary Smith
+ age: 27
+")
+=> ({:name "John Smith", :age 33}
+ {:name "Mary Smith", :age 27})
+```
By default, keys are converted to clojure keywords. To prevent this,
add `:keywords false` parameters to the `parse-string` function:
- (yaml/parse-string "
- - {name: John Smith}
- " :keywords false)
+```clojure
+(yaml/parse-string "
+- {name: John Smith}
+" :keywords false)
+```
+
+Different flow styles (`:auto`, `:block`, `:flow`) allow customization of how YAML is rendered:
+
+
+```clojure
+(yaml/generate-string some-data :dumper-options {:flow-style :block})
+```
## Installation
@@ -43,13 +54,13 @@ add `:keywords false` parameters to the `parse-string` function:
### Leiningen/Boot
```clojure
-[clj-commons/clj-yaml "0.6.0"]
+[clj-commons/clj-yaml "0.7.0"]
```
### Clojure CLI/`deps.edn`
```clojure
-clj-commons/clj-yaml {:mvn/version "0.6.0"}
+clj-commons/clj-yaml {:mvn/version "0.7.0"}
```
## Development
=====================================
debian/changelog
=====================================
@@ -1,3 +1,16 @@
+clj-yaml-clojure (0.7.2-1) unstable; urgency=medium
+
+ * Team upload.
+ * New upstream version 0.7.2
+ * switch to leiningen build system
+ * d/control: bump Standards-Version, no changes needed
+ * d/control: remove redundant binary depends
+ * d/tests: switch to builtitude for upstream tests
+ * d/watch: fix tag pattern
+ * keep org.yaml version string unmodified in poms
+
+ -- Jérôme Charaoui <jerome at riseup.net> Sun, 05 Feb 2023 17:02:46 -0500
+
clj-yaml-clojure (0.7.0-1) unstable; urgency=medium
* New maintainer: pollo is taking over this package.
@@ -12,11 +25,8 @@ clj-yaml-clojure (0.7.0-1) unstable; urgency=medium
* d/control: update VCS fields and upstream homepage.
* d/control: move the package from the Java Team to the Clojure Team.
* d/tests: add autopkgtests.
- [ Louis-Philippe Véronneau ]
* d/control: New email for the Clojure Team.
-
-
-- Louis-Philippe Véronneau <pollo at debian.org> Fri, 28 Aug 2020 18:31:50 -0400
clj-yaml-clojure (0.4.0-1) unstable; urgency=medium
=====================================
debian/control
=====================================
@@ -5,13 +5,13 @@ Maintainer: Debian Clojure Maintainers <team+clojure at tracker.debian.org>
Uploaders: Louis-Philippe Véronneau <pollo at debian.org>
Build-Depends:
debhelper-compat (= 13),
+ default-jdk-headless,
javahelper,
+ leiningen,
maven-repo-helper,
- clojure,
- default-jdk,
- libyaml-snake-java <!nocheck>,
libordered-clojure <!nocheck>,
-Standards-Version: 4.5.0.0
+ libyaml-snake-java <!nocheck>,
+Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/clojure-team/cli-yaml-clojure
Vcs-Git: https://salsa.debian.org/clojure-team/cli-yaml-clojure.git
Homepage: https://github.com/clj-commons/clj-yaml
@@ -22,8 +22,6 @@ Architecture: all
Depends:
${java:Depends},
${misc:Depends},
- libyaml-snake-java,
- libordered-clojure,
Recommends: ${java:Recommends}
Description: YAML encoding and decoding for Clojure
clj-yaml provides YAML encoding and decoding for Clojure via the SnakeYAML
=====================================
debian/libclj-yaml-clojure.classpath
=====================================
@@ -1 +1 @@
-/usr/share/java/clj-yaml.jar /usr/share/java/clojure.jar
+/usr/share/java/clj-yaml.jar /usr/share/java/clojure.jar /usr/share/java/snakeyaml.jar /usr/share/java/ordered.jar
=====================================
debian/libclj-yaml-clojure.docs
=====================================
@@ -1 +1 @@
-*.md
+README.md
=====================================
debian/libclj-yaml-clojure.jlibs deleted
=====================================
@@ -1 +0,0 @@
-clj-yaml.jar
=====================================
debian/libclj-yaml-clojure.poms
=====================================
@@ -1 +1 @@
-debian/pom.xml --usj-name=clj-yaml
+debian/pom.xml --java-lib --artifact=target/clj-yaml.jar --usj-name=clj-yaml --has-package-version
=====================================
debian/maven.rules
=====================================
@@ -0,0 +1,4 @@
+# with patched project.clj
+# don't convert the dependency version
+# to "debian" for these libraries
+org.yaml * * * * *
=====================================
debian/patches/0001-Lein-Local.patch
=====================================
@@ -0,0 +1,26 @@
+From: =?utf-8?b?SsOpcsO0bWUgQ2hhcmFvdWk=?= <jerome at riseup.net>
+Date: Sun, 5 Feb 2023 16:41:00 -0500
+Subject: Lein Local
+
+Patch project.clj to build using local lein.
+
+Forwarded: not-needed
+---
+ project.clj | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/project.clj b/project.clj
+index 1b166c3..25377b5 100644
+--- a/project.clj
++++ b/project.clj
+@@ -11,6 +11,7 @@
+ :java-source-paths ["src/java"]
+ :javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
+ :dependencies
+- [[org.yaml/snakeyaml "1.26"]
+- [org.flatland/ordered "1.5.9"]]
+- :profiles {:provided {:dependencies [[org.clojure/clojure "1.10.1"]]}})
++ [[org.yaml/snakeyaml "1.x"]
++ [org.flatland/ordered "debian"]]
++ :profiles {:provided {:dependencies [[org.clojure/clojure "1.x"]]}}
++ :local-repo "debian/maven-repo")
=====================================
debian/patches/series
=====================================
@@ -0,0 +1 @@
+0001-Lein-Local.patch
=====================================
debian/pom.xml deleted
=====================================
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>clj-commons</groupId>
- <artifactId>clj-yaml</artifactId>
- <packaging>jar</packaging>
- <version>0.7.0</version>
- <name>clj-yaml</name>
- <description>YAML encoding and decoding for Clojure using SnakeYAML</description>
- <url>https://github.com/clj-commons/clj-yaml</url>
- <licenses>
- <license>
- <name>Eclipse Public License - v 1.0</name>
- <url>http://www.eclipse.org/legal/epl-v10.html</url>
- <distribution>repo</distribution>
- <comments>same as Clojure</comments>
- </license>
- </licenses>
- <scm>
- <tag>d57bcb223c94aec59cf81ad0bb673d86b5694ca6</tag>
- </scm>
- <build>
- <sourceDirectory>src/clojure</sourceDirectory>
- <testSourceDirectory>test</testSourceDirectory>
- <resources>
- <resource>
- <directory>resources</directory>
- </resource>
- </resources>
- <testResources>
- <testResource>
- <directory>resources</directory>
- </testResource>
- </testResources>
- <directory>target</directory>
- <outputDirectory>target/classes</outputDirectory>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>src/java</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <repositories>
- <repository>
- <id>central</id>
- <url>https://repo1.maven.org/maven2/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- <repository>
- <id>clojars</id>
- <url>https://repo.clojars.org/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- </repositories>
- <dependencyManagement>
- <dependencies/>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.clojure</groupId>
- <artifactId>clojure</artifactId>
- <version>1.7.0</version>
- </dependency>
- <dependency>
- <groupId>org.yaml</groupId>
- <artifactId>snakeyaml</artifactId>
- <version>1.24</version>
- </dependency>
- <dependency>
- <groupId>org.flatland</groupId>
- <artifactId>ordered</artifactId>
- <version>1.5.7</version>
- </dependency>
- </dependencies>
-</project>
-
-<!-- This file was autogenerated by Leiningen.
- Please do not edit it directly; instead edit project.clj and regenerate it.
- It should not be considered canonical data. For more information see
- https://github.com/technomancy/leiningen -->
=====================================
debian/rules
=====================================
@@ -1,25 +1,30 @@
#!/usr/bin/make -f
+include /usr/share/dpkg/pkg-info.mk
include /usr/share/javahelper/java-vars.mk
-PRODUCED_JAR=clj-yaml.jar
-export CLASSPATH=/usr/share/java/clojure.jar:/usr/share/java/snakeyaml.jar:/usr/share/java/ordered.jar
+export LEIN_HOME=$(CURDIR)/.lein
+export LEIN_OFFLINE=true
+NAME=clj-yaml
%:
- dh $@ --with javahelper --with jh_maven_repo_helper
+ dh $@ --with javahelper --with maven_repo_helper
-override_jh_build:
- jh_build --no-javadoc $(PRODUCED_JAR) src/java
- jar uf $(PRODUCED_JAR) -C src/clojure .
+override_dh_auto_configure:
+ cd debian && ln -sf /usr/share/maven-repo .
-override_jh_classpath:
- jh_classpath $(PRODUCED_JAR)
-
-override_jh_clean:
- jh_clean
- rm -f $(CURDIR)/$(PRODUCED_JAR)
+override_dh_auto_build:
+ lein pom debian/pom.xml
+ lein jar
+ # symlinks so we don't need a version in debian/*.poms
+ cd target && ln -sf $(NAME)-$(DEB_VERSION_UPSTREAM).jar $(NAME).jar
override_dh_auto_test:
- dh_auto_test
- (cd test && find . -name "*.clj" | \
- xargs clojure -cp $(CURDIR)/$(PRODUCED_JAR):$(CLASSPATH))
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+ lein test
+endif
+
+execute_before_dh_clean:
+ rm -f debian/maven-repo
+ rm -f debian/pom.xml
+ rm -Rf target
=====================================
debian/tests/build
=====================================
@@ -1,5 +1,5 @@
#!/bin/sh
-CLASSPATH=/usr/share/java/clojure.jar:/usr/share/java/snakeyaml.jar:/usr/share/java/ordered.jar:/usr/share/java/clj-yaml.jar
+CLASSPATH=/usr/share/java/clj-yaml.jar
clojure -cp $CLASSPATH -e '(use '"'"'clj-yaml.core)'
=====================================
debian/tests/control
=====================================
@@ -1,6 +1,11 @@
Tests: build
-Depends: @, clojure
+Depends:
+ clojure,
+ @,
Restrictions: superficial
-Tests: unittests
-Depends: @, clojure
+Tests: upstream
+Depends:
+ clojure,
+ libbultitude-clojure,
+ @,
=====================================
debian/tests/upstream
=====================================
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -efu
+
+CLASSPATH=/usr/share/java/clojure.jar:/usr/share/java/bultitude.jar:/usr/share/java/clj-yaml.jar:test
+
+cp -a test "$AUTOPKGTEST_TMP"
+cd "$AUTOPKGTEST_TMP"
+
+clojure \
+ -cp $CLASSPATH \
+ -e "(require '[clojure.test])" \
+ -e "(require '[bultitude.core :as b])" \
+ -e '(def all-tests (b/namespaces-on-classpath :classpath "test"))' \
+ -e "(map #(require %) all-tests)" \
+ -e '(System/exit (if (clojure.test/successful? (clojure.test/run-all-tests #"clj-yaml.\S+-test")) 0 1))'
=====================================
debian/watch
=====================================
@@ -1,4 +1,4 @@
version=4
-opts="mode=git, uversionmangle=s/Release-\.//" \
+opts="mode=git" \
https://github.com/clj-commons/clj-yaml \
-refs/tags/(Release-)?([\d\.]+)
+refs/tags/(?i:Release-|v)?@ANY_VERSION@
=====================================
project.clj
=====================================
@@ -1,16 +1,16 @@
-(defproject clj-commons/clj-yaml "0.7.0"
+(defproject clj-commons/clj-yaml "0.7.2"
:description "YAML encoding and decoding for Clojure using SnakeYAML"
:url "https://github.com/clj-commons/clj-yaml"
:license {:name "Eclipse Public License - v 1.0"
:url "http://www.eclipse.org/legal/epl-v10.html"
:distribution :repo
- :comments "same as Clojure"}
+ :comments "Same as Clojure"}
;; Emit warnings on all reflection calls.
:global-vars {*warn-on-reflection* true}
:source-paths ["src/clojure"]
:java-source-paths ["src/java"]
- :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
+ :javac-options ["-target" "1.7" "-source" "1.7" "-Xlint:-options"]
:dependencies
- [[org.clojure/clojure "1.7.0"]
- [org.yaml/snakeyaml "1.24"]
- [org.flatland/ordered "1.5.7"]])
+ [[org.yaml/snakeyaml "1.26"]
+ [org.flatland/ordered "1.5.9"]]
+ :profiles {:provided {:dependencies [[org.clojure/clojure "1.10.1"]]}})
=====================================
src/clojure/clj_yaml/core.clj
=====================================
@@ -1,7 +1,7 @@
(ns clj-yaml.core
(:require [flatland.ordered.map :refer (ordered-map)]
[flatland.ordered.set :refer (ordered-set)])
- (:import (org.yaml.snakeyaml Yaml DumperOptions DumperOptions$FlowStyle)
+ (:import (org.yaml.snakeyaml Yaml DumperOptions DumperOptions$FlowStyle LoaderOptions)
(org.yaml.snakeyaml.constructor Constructor SafeConstructor BaseConstructor)
(org.yaml.snakeyaml.representer Representer)
(org.yaml.snakeyaml.error Mark)
@@ -27,17 +27,40 @@
(doto (default-dumper-options)
(.setDefaultFlowStyle (flow-styles flow-style))))
+(defn ^LoaderOptions default-loader-options
+ []
+ (LoaderOptions.))
+
+(defn ^LoaderOptions make-loader-options
+ [& {:keys [max-aliases-for-collections allow-recursive-keys allow-duplicate-keys]}]
+ (let [loader (default-loader-options)]
+ (when max-aliases-for-collections
+ (.setMaxAliasesForCollections loader max-aliases-for-collections))
+ (when allow-recursive-keys
+ (.setAllowRecursiveKeys loader allow-recursive-keys))
+ (when (instance? Boolean allow-duplicate-keys)
+ (.setAllowDuplicateKeys loader allow-duplicate-keys))
+ loader))
+
(defn ^Yaml make-yaml
"Make a yaml encoder/decoder with some given options."
- [& {:keys [dumper-options unsafe mark]}]
- (let [^BaseConstructor constructor
- (if unsafe (Constructor.)
- (if mark (MarkedConstructor.) (SafeConstructor.)))
+ [& {:keys [dumper-options unsafe mark max-aliases-for-collections allow-recursive-keys allow-duplicate-keys]}]
+ (let [loader (make-loader-options :max-aliases-for-collections max-aliases-for-collections
+ :allow-recursive-keys allow-recursive-keys
+ :allow-duplicate-keys allow-duplicate-keys)
+ ^BaseConstructor constructor
+ (if unsafe (Constructor. loader)
+ (if mark
+ ;; construct2ndStep isn't implemented by MarkedConstructor,
+ ;; causing an exception to be thrown before loader options are
+ ;; used
+ (MarkedConstructor.)
+ (SafeConstructor. loader)))
;; TODO: unsafe marked constructor
dumper (if dumper-options
(make-dumper-options :flow-style (:flow-style dumper-options))
(default-dumper-options))]
- (Yaml. constructor (Representer.) dumper)))
+ (Yaml. constructor (Representer.) dumper loader)))
(defrecord Marked
[start end unmark])
@@ -126,5 +149,10 @@
(encode data)))
(defn parse-string
- [^String string & {:keys [unsafe mark keywords] :or {keywords true}}]
- (decode (.load (make-yaml :unsafe unsafe :mark mark) string) keywords))
+ [^String string & {:keys [unsafe mark keywords max-aliases-for-collections allow-recursive-keys allow-duplicate-keys] :or {keywords true}}]
+ (decode (.load (make-yaml :unsafe unsafe
+ :mark mark
+ :max-aliases-for-collections max-aliases-for-collections
+ :allow-recursive-keys allow-recursive-keys
+ :allow-duplicate-keys allow-duplicate-keys)
+ string) keywords))
=====================================
test/clj_yaml/core_test.clj
=====================================
@@ -1,8 +1,10 @@
(ns clj-yaml.core-test
(:require [clojure.test :refer (deftest testing is)]
[clojure.string :as string]
- [clj-yaml.core :refer :all])
- (:import [java.util Date]))
+ [clj-yaml.core :refer [parse-string unmark generate-string]])
+ (:import [java.util Date]
+ (org.yaml.snakeyaml.error YAMLException)
+ (org.yaml.snakeyaml.constructor DuplicateKeyException)))
(def nested-hash-yaml
"root:\n childa: a\n childb: \n grandchild: \n greatgrandchild: bar\n")
@@ -178,9 +180,9 @@ the-bin: !!binary 0101")
(deftest maps-are-ordered
(let [parsed (parse-string hashes-lists-yaml)
- [first second] (parsed :items)]
- (= (keys first) '("part_no" "descrip" "price" "quantity"))
- (= (keys second)'("part_no" "descrip" "price" "quantity" "owners"))))
+ [first second] (:items parsed)]
+ (is (= (keys first) '(:part_no :descrip :price :quantity)))
+ (is (= (keys second)'(:part_no :descrip :price :quantity :owners)))))
(deftest nulls-are-fine
@@ -199,3 +201,32 @@ the-bin: !!binary 0101")
(testing "emoji in comments are OK too"
(let [yaml "# 💣 emoji in a comment\n42"]
(is (= 42 (parse-string yaml))))))
+
+(def too-many-aliases
+ (->> (range 51)
+ (map #(str "b" % ": *a"))
+ (cons "a: &a [\"a\",\"a\"]")
+ (string/join "\n")))
+
+(deftest max-aliases-for-collections-works
+ (is (thrown-with-msg? YAMLException #"Number of aliases" (parse-string too-many-aliases)))
+ (is (parse-string too-many-aliases :max-aliases-for-collections 51)))
+
+(def recursive-yaml "
+---
+&A
+- *A: *A
+")
+
+(deftest allow-recursive-works
+ (is (thrown-with-msg? YAMLException #"Recursive" (parse-string recursive-yaml)))
+ (is (parse-string recursive-yaml :allow-recursive-keys true)))
+
+(def duplicate-keys-yaml "
+a: 1
+a: 1
+")
+
+(deftest allow-recursive-works
+ (is (parse-string duplicate-keys-yaml))
+ (is (thrown-with-msg? DuplicateKeyException #"found duplicate key" (parse-string duplicate-keys-yaml :allow-duplicate-keys false))))
View it on GitLab: https://salsa.debian.org/clojure-team/clj-yaml-clojure/-/compare/77668a1c4d374e02c6ce06a8bda05410a895217b...612da0fb6a2ce1e00eec3846e7ce9f5c57288ec7
--
View it on GitLab: https://salsa.debian.org/clojure-team/clj-yaml-clojure/-/compare/77668a1c4d374e02c6ce06a8bda05410a895217b...612da0fb6a2ce1e00eec3846e7ce9f5c57288ec7
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20230205/50cc7d46/attachment.htm>
More information about the pkg-java-commits
mailing list