roomkey / lein-v Goto Github PK
View Code? Open in Web Editor NEWDrive leiningen project version from git instead of the other way around
Drive leiningen project version from git instead of the other way around
It seems plugin does not work on Windows, because of dependency on bash
:
java.io.IOException: Cannot run program "/bin/bash": CreateProcess error=2, ═х єфрхЄё эрщЄш єърчрээ√щ Їрщы
at java.lang.ProcessBuilder.start (:-1)
java.lang.Runtime.exec (:-1)
clojure.java.shell$sh.invokeStatic (shell.clj:113)
clojure.java.shell$sh.doInvoke (shell.clj:79)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:646)
clojure.core$apply.invoke (core.clj:641)
leiningen.v.git$eval655$git_command__656.invoke (git.clj:15)
leiningen.v.git$git_describe.invokeStatic (git.clj:28)
leiningen.v.git$git_describe.invoke (git.clj:27)
leiningen.v.git$version.invokeStatic (git.clj:44)
leiningen.v.git$version.doInvoke (git.clj:37)
...
Why can't we run git directly, like it does similar project sbt-git
for Scala language?
I noticed that this is something lein-v has available. Is there a particular reason why this isn't advertised as a feature? (In the README and under lein v help)
I went to try out lein-v (it looks super handy) and added it to my plugin dependencies only to find the following error:
$ lein install
Could not find artifact com.roomkey:lein-v:jar:6.1.0 in central (https://repo1.maven.org/maven2/)
Could not find artifact com.roomkey:lein-v:jar:6.1.0 in clojars (https://clojars.org/repo/)
I know I can just clone and install it but I was wondering if there was any reason why there is no public publishing of the build for it? I would think that having such a thing would help with adoption.
Cheers,
code-ape
I have error
error: gpg failed to sign the data
error: unable to sign the tag
I want to use something like this ["vcs" "tag" "--no-sign"]
When trying to install lein-v from an archive I think the script is trying to access git data which results in the following error java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.CharSequence
To recreate run
git clone [email protected]:g1nn13/lein-v.git
cd lein-v
git archive master | tar -x -C /tmp/lein
cd /tmp/lein
lein install
Resulting Error:
java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.CharSequence
at clojure.core$re_matcher.invoke(core.clj:4386)
at clojure.core$re_find.invoke(core.clj:4438)
at leiningen.pom$snapshot_QMARK_.invoke(pom.clj:348)
at leiningen.pom$check_for_snapshot_deps.invoke(pom.clj:351)
at leiningen.pom$make_pom.invoke(pom.clj:362)
at leiningen.pom$make_pom.invoke(pom.clj:359)
at leiningen.jar$filespecs.invoke(jar.clj:156)
at leiningen.jar$jar.invoke(jar.clj:291)
at leiningen.jar$jar.invoke(jar.clj:295)
at leiningen.install$install.invoke(install.clj:19)
at clojure.lang.Var.invoke(Var.java:415)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:619)
at leiningen.core.main$resolve_task$fn__3029.doInvoke(main.clj:189)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at leiningen.core.main$apply_task.invoke(main.clj:230)
at leiningen.core.main$resolve_and_apply.invoke(main.clj:234)
at leiningen.core.main$_main$fn__3092.invoke(main.clj:303)
at leiningen.core.main$_main.doInvoke(main.clj:290)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:415)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:617)
at clojure.main$main_opt.invoke(main.clj:335)
at clojure.main$main.doInvoke(main.clj:440)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at clojure.lang.Var.invoke(Var.java:423)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
For folks who want to migrate over, this is a bit of a stumbling block if their app is already versioned, because lein update
will think you're still on version v0.0.0
I had to seed the initial state by manually creating a tag for the first version.
git tag --annotate --message "Automated lein-v release" v1.3.12
Thanks for a great plugin.
It works for me with
:prep-tasks [["v" "cache" "src" "edn"]]
but only from the command line lein repl
.
When I run a plain repl in Cursive ("Run nREPL with Leiningen"), the IDE gives "src/version.edn (No such file or directory)". This happens even if I touch
that file beforehand. The IDE is otherwise working normally.
I have no idea where to start looking to help fix this. Help!
lambda-cat.local ➜ shiva-master git:(f_perftest) ✗ lein uberjar
Warning: The Main-Class specified does not exist within the jar. It may not be executable as expected. A gen-class directive may be missing in the namespace which contains the main method, or the namespace has not been AOT-compiled.
Created /Users/LambdaCat/code/yz/shiva-console/shiva-master/target/uberjar/shiva-master-3.0.0.jar
Created /Users/LambdaCat/code/yz/shiva-console/shiva-master/target/uberjar/shiva-master-3.0.0-standalone.jar
if do not use lein-v, the warning not exist ...
the jar produced not contains whole master package...
it must have some bug int your plugin
Wondering if you'd be interested in a PR to support spitting out the version to a plain textfile. My use-case is for making it easy to shell-script against.
The idea would be to spit out two files LEIN_V_VERSION
and LEIN_V_DESCRIBE
which contains the two values respectively.
Leiningen has now a strict policy on using unsecure maven repository (not using https) and fails with
Tried to use insecure HTTP repository without TLS.
This is almost certainly a mistake; however in rare cases where it's
intentional please see `lein help faq` for details.
The repo "http://rk-maven-public.s3-website-us-east-1.amazonaws.com/releases/" don't have an https version, could you please see if adding a certificate is possible? and update the project.clj accordingly?
This is a minor quirk that makes monitoring deploy automation tricky. I noticed that when the anchoring message shows up, it doesn't return a non-zero exit code -- so for example, doing a release in jenkins may fail silently.
I think this would be related to this line?
https://github.com/roomkey/lein-v/blob/master/src/leiningen/v.clj#L75-L80
First of all, thanks for this plugin, the premise of which I completely agree with. However I'm a little confused by the way SNAPSHOT builds are apparently supposed to happen. As I understand it, to get a SNAPSHOT build (as per the maven convention), I'd have to explicitly make a git version tag with the word -SNAPSHOT
in it. However that's logically a contradiction to me. A snapshot by definition is simply the tip of whatever is currently in development. That's why we want to have the shorthash in the version string after all, and thank god lein-v
understands this.
So what (I think) I'd like to have is the ability to have lein-v
simply insert -SNAPSHOT
in the version string if-and-only-if a shorthash is in the version string (seems to me these two cases are exactly equivalent).
The behavior I want to get in the end is for lein deploy
to always use the correct repository, and as I understand it, the (hardcoded) convention there is the :snapshots
repo if -SNAPSHOT
is in the version string, and the :releases
repo otherwise. This is documented slightly confusingly here: https://github.com/technomancy/leiningen/blob/stable/doc/DEPLOY.md#deploying-to-maven-central
Apologies if this is already possible somehow and I overlooked it ;-)
This plugin looks great, but I've got a feature request. I have a few different internal libraries that I'd like to use the version.clj
functionality for, let's say alpha
and beta
, which are packaged up as jars and then used by my main application, app
. If all of them declare a top-level version
namespace, I won't have any way to specifically get alpha.version
or app.version
.
With the EDN files I can work around this since from beta
I can generate the file in resources/beta/version.edn
, and then from app I can slurp in beta/version.edn
to get that specific version.
Anyways, what I'd like to be able to do is something like lein v cache src/beta clj beta.version
and then wind up with a file src/beta/version.clj
which starts with (ns beta.version)
.
I can probably cook up a pull request for this if it seems like a good idea, but I thought I'd raise the issue first.
Hi, it's me again! ;)
I'm experimenting with the prefix
stuff - my use case is I have a legacy
branch that I'd like to manage with a series of legacy-0.3.2
tags while mainline continues along with the usual v1.2.3
tags. It seems like putting :v {:prefix "legacy-"}
in my project.clj should work for this, but it doesn't have any effect when I run lein v
.
I started a PR for this, thinking it would be an easy fix, but then I realized I still have no idea how midje is supposed to work and all the tests failed. Anyways, the root of the fix is this small diff:
I can keep hacking on the tests, just thought I would run it by you first.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.