Git Product home page Git Product logo

s3-mvn-upload's Introduction

s3-mvn-upload

Uploads a jar file to a S3 Maven repo

Usage

Execute

{:s3-deploy {:extra-deps {s3-mvn-upload/s3-mvn-upload {:mvn/version "RELEASE"}}
             :exec-fn    s3-mvn-upload.core/deploy
             :exec-args  {:artifact   "dev-local-0.9.172.jar"
                          :repository "s3://my-bucket/releases"}}}

Main

clojure -Sdeps '{:deps {s3-mvn-upload {:mvn/version "1.0.13"}}}' -M -m s3-mvn-upload.core dev-local-0.9.172.jar s3://my-bucket/releases

Development

  • Jar: clojure -T:build jar
  • Deploy: clojure -T:build deploy

s3-mvn-upload's People

Contributors

kennyjwilli avatar souenzzo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

souenzzo

s3-mvn-upload's Issues

Command line could be simpler

We can go from

clojure -Sdeps '{:deps {s3-mvn-upload {:mvn/version "0.1.1"}}}' -m s3-mvn-upload.core com.datomic/dev-local 0.9.172 dev-local-0.9.172.jar s3://my-bucket/releases

to

clojure -Sdeps '{:deps {s3-mvn-upload {:mvn/version "0.1.1"}}}' -m s3-mvn-upload.core dev-local-0.9.172.jar s3://my-bucket/releases

As :groupId :artifactId :version are presents inside dev-local-0.9.172.jar

We can do this without beak the current signature.

(defn pom-xml-stream
  "Find path of pom file in jar file, or nil if it doesn't exist"
  [^JarFile jar-file]
  (try
    (loop [[^JarEntry entry & entries] (enumeration-seq (.entries jar-file))]
      (when entry
        (let [name (.getName entry)]
          (if (and (str/starts-with? name "META-INF/")
                   (str/ends-with? name "pom.xml"))
            (.getInputStream jar-file entry)
            (recur entries)))))
    (catch IOException _t nil)))(defn coordinates [jar-file]
  (->> (JarFile. (jio/file jar-file))
       (pom-xml-stream)
       (xml/parse)
       :content
       (keep
         (fn [elem]
           (when (some-> elem :tag #{:groupId :artifactId :version})
             [(-> elem :tag)
              (-> elem :content first)])))
       (into {})))

I can make a PR?

Original idea/code from @onetom

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.