• Stars
    star
    260
  • Rank 157,189 (Top 4 %)
  • Language
    Clojure
  • License
    The Unlicense
  • Created over 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Find newer versions of your dependencies in your deps.edn file

Depot Clojars Project

Warning: I'm not actively maintaining this project, I'm finally releasing v2+ since it's been sitting around for far too long. It contains a bunch of breaking changes that are mentioned in CHANGES.md.

You may have better luck with liquidz/antq or slipset/deps-ancient. If you'd like to see this project developed and maintained further I'm open to inviting other maintainers or promoting forks. I'm reluctant to transfer ownership and publishing rights to the artifact since that's been used for malicious purposes in recent times.

If this version isn't to your liking you can still rely on v1.8.4 (or earlier) and the legacy documentation in README-v1.md.

Find newer versions of your dependencies in your deps.edn file using the Clojure CLI. This works for maven and git dependencies.

Usage

You can try it out easily with this one liner:

$ clojure -Sdeps '{:deps {olical/depot {:mvn/version "RELEASE"}}}' -M -m depot.outdated.main
Checking for old versions in: deps.edn
  org.clojure/clojure {:mvn/version "1.9.0"} -> {:mvn/version "1.10.1"}

I'd recommend adding depot as an alias in your own deps.edn file, this will allow it to check itself for updates:

{:deps {}
 :aliases {:outdated {:replace-deps {olical/depot {:mvn/version "2.3.0"}}
                      :main-opts ["-m" "depot.outdated.main"]}}}
$ clojure -Aoutdated --aliases outdated
Checking for old versions in: deps.edn
  olical/depot {:mvn/version "..."} -> {:mvn/version "..."}

Controlling which files are checked

By default Depot looks for deps.edn in the current working directory. You can instead pass one or more filenames in explicitly.

$ clojure -Aoutdated ../my-project/deps.edn

Controlling which part of the file are checked

By default, only dependencies under the top-level :deps are considered.

To also consider :default-deps, :extra-deps and :override-deps under aliases, use the --aliases alias1,alias2 to specify alias, or the --every flag to consider all aliases.

To prevent Depot from touching certain parts of your deps.edn, mark them with the ^:depot/ignore metadata.

{:deps {...}

 :aliases
 {;; used for testing against older versions of Clojure
  :clojure-1.8 ^:depot/ignore {:extra-deps
                               {org.clojure/clojure {:mvn/version "1.8.0"}}}
  :clojure-1.9 ^:depot/ignore {:extra-deps
                               {org.clojure/clojure {:mvn/version "1.9.0"}}}}}

The metadata can be placed on the artifact name, the coord map or on any map containing the dependency in question.

Updating deps.edn

By default, depot only prints the new versions. To update the file in place, include the --write flag. This will leave any formatting, whitespace, and comments intact.

$ clojure -Aoutdated --write
Updating old versions in: deps.edn
  rewrite-clj {:mvn/version "0.6.0"} -> {:mvn/version "0.6.1"}
  cider/cider-nrepl {:mvn/version "0.17.0"} -> {:mvn/version "0.18.0"}
  clj-time {:mvn/version "0.14.4"} -> {:mvn/version "0.15.1"}
  olical/cljs-test-runner {:sha "5a18d41648d5c3a64632b5fec07734d32cca7671"} -> {:sha "da9710b389782d4637ef114176f6e741225e16f0"}

Freezing snapshots

Maven has a concept called "virtual" versions, these are similar to Git branches, they are pointers to another version, and the version they point to can change over time. The best known example are snapshot releases. When your deps.edn refers to a version 0.4.1-SNAPSHOT, the version that actually gets installed will look like 0.4.1-20190222.154954-1.

A maintainer can publish as many snapshots as they like, all with the same version string. This means that re-running the same code twice might yield different results, if in the meanwhile a new snapshot was released. So installing 0.4.1-SNAPSHOT again later on may install a completely different version.

For the sake of stability and reproducibility it may be desirable to "lock" this version. This is what the --resolve-virtual flag is for. The --resolve-virtual flag will resolve the virtual version to the current timestamped version that the SNAPSHOT is an alias of, so that your code is once again deterministic.

Besides SNAPSHOT versions --resolve-virtual will also handle the special version strings "RELEASE" and "LATEST"

% clojure -Aoutdated --resolve-virtual
Checking virtual versions in: deps.edn
   cider/piggieback {:mvn/version "0.4.1-SNAPSHOT"} -> {:mvn/version "0.4.1-20190222.154954-1"}

Existing work

This project is inspired by lein-ancient, it relies on version-clj (by the same author, xsc) for parsing and comparison of version numbers.

Contributors

  • @Olical - Initial work and general maintenance.
  • @daaku - Ensuring :override-deps is adhered to in the non-mutating mode.
  • @kennyjwilli - Git dependency support and table improvements.
  • @lverns - Reducing the runtime significantly by making multiple requests in parallel.
  • @plexus - Both the --update and --resolve-virtual systems, so many improvements!
  • @robert-stuttaford - Presenting results in a neat table.
  • @seancorfield - Support for :override-deps.
  • @dharrigan - Bump dependencies, fixing warnings.
  • @dotemacs - Updating dependencies, supporting newer tools.deps.alpha versions.
  • @timothypratley - Adding :default-deps support.

Unlicenced

Find the full unlicense in the UNLICENSE file, but here's a snippet.

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

Do what you want. Learn as much as you can. Unlicense more software.

More Repositories

1

EventEmitter

Evented JavaScript for the browser
JavaScript
3,127
star
2

conjure

Interactive evaluation for Neovim (Clojure, Fennel, Janet, Racket, Hy, MIT Scheme, Guile, Python and more!)
Fennel
1,774
star
3

react-faux-dom

DOM like structure that renders to React (unmaintained, archived)
JavaScript
1,206
star
4

aniseed

Neovim configuration and plugins in Fennel (Lisp compiled to Lua)
Fennel
609
star
5

dotfiles

Configuration for Linux, i3, Kitty, Fish, Neovim and more
Fennel
509
star
6

nfnl

Enhance your Neovim with Fennel
Fennel
229
star
7

vim-enmasse

Edit every line in a quickfix list at the same time
Vim Script
208
star
8

magic-kit

A starter kit for Conjure, Aniseed and Neovim
Fennel
104
star
9

cljs-test-runner

Discover and run your ClojureScript tests
Clojure
86
star
10

Heir

Helper functions for prototypical inheritance in JavaScript
JavaScript
60
star
11

lazy-array

JavaScript lazy arrays, sort of like Clojure's seqs
JavaScript
56
star
12

nvim-local-fennel

Execute local Fennel Lisp files in Neovim upon startup
Lua
54
star
13

clojure-dap

DAP server for debugging Clojure over nREPL with CIDER's debugger
Clojure
54
star
14

tuple

A tiny JavaScript tuple implementation
JavaScript
49
star
15

propel

Propel helps you start Clojure(Script) REPLs with a prepl
Clojure
48
star
16

snowball

Voice activated Discord bot running on GCP
Clojure
41
star
17

vim-expand

Expand things like {foo,bar}, {1..10} and $HOME inline with a single command
Vim Script
30
star
18

nand2tetris

My workings for book / project. Don't copy them for the Coursera course!
Assembly
29
star
19

vim-scheme

Interact with MIT Scheme from Neovim (deprecated, use Conjure instead!)
Vim Script
29
star
20

gh-pages-theme

A clean concise theme for your GitHub projects
JavaScript
28
star
21

color

Color conversion functions for JavaScript
JavaScript
25
star
22

binary-search

Binary search implementation in JavaScript born from a couple of my blog posts
JavaScript
24
star
23

conjure-sourcery

Experimental rewrite of Conjure in Lua via Fennel - success, this is for historical purposes
Common Lisp
20
star
24

clojure-giants-shoulders

Tools and scripts I reach for every time I start a new Clojure project
Clojure
19
star
25

exemplary

Turns your examples into documentation and runnable tests.
Clojure
19
star
26

spacy-neovim

A base Neovim configuration template inspired by Spacemacs
Vim Script
17
star
27

StateMachine

JavaScript state machine
JavaScript
16
star
28

blog

My personal blog
CSS
15
star
29

github.js

Frontend JavaScript library for interacting with the GitHub API v3
JavaScript
14
star
30

vim-syntax-expand

Expand characters to code if not in a comment or string
Vim Script
13
star
31

bonsai

[WIP] Declarative DOM rendering with integrated state management for ClojureScript
Clojure
12
star
32

Spark

A lightweight yet powerful JavaScript library
JavaScript
12
star
33

d3-react

Render React elements with D3
JavaScript
12
star
34

lein-transcriptor

Execute all of your project's .repl files with transcriptor.
Clojure
11
star
35

Mappa

Map functions under your own names to create your own set of tools.
JavaScript
9
star
36

neofib

An example Neovim plugin written in Rust using neovim-lib
Rust
7
star
37

lab

A place for experiments
CSS
7
star
38

kkslider

A super simple Neovim slide show plugin
Lua
7
star
39

bastion

[DEPRECATED] Combines a modern JavaScript toolchain into a single program so you can stop worrying about configuration and just get to work on your application
JavaScript
7
star
40

more

A framework for LESS, including mixins and a grid system
6
star
41

jsFiddle-extension

A Google chrome extension for browsing and creating fiddles.
JavaScript
6
star
42

clojure-hey-example

A demo repo for my blog post on deps.edn based projects
Clojure
5
star
43

brainfucks

Brainfuck VM implementations in various languages
Rust
5
star
44

conjure-deps

Runtime dependencies for Conjure
Clojure
5
star
45

nfnl-plugin-example

An example Neovim plugin witten in Fennel using nfnl
Fennel
4
star
46

tm-challenge

Room manifest manger built with React / Reflux
JavaScript
4
star
47

prepl-compliance-test

Checks a Clojure prepl server against a bunch of tests
Clojure
4
star
48

clj-dice-roller

Clojure ns that rolls dice, just a transcriptor example
Clojure
3
star
49

impl

[WIP] Homoiconic language with minimal syntax compiling to JavaScript
JavaScript
3
star
50

advent-of-code

My attempts at the Advent of Code
Clojure
3
star
51

sicp

Studying SICP
Scheme
3
star
52

clojure-wake-word-detection

Code for my blog post
Clojure
3
star
53

Package.js

Add package support to the browser
JavaScript
3
star
54

cljs-todo

Simple ClojureScript to do list example using Reagent and Bonsai
Clojure
2
star
55

vim-netrw-signs

Like vim-signify, but for netrw
Vim Script
2
star
56

astronvim-config

My personal AstroNvim user extensions. This is now migrated into my dotfiles repo.
Lua
2
star
57

wlhn-a-star

A* algorithm implementation in Clojure
Clojure
2
star
58

collatz

Collatz conjecture computation with snazzy rendering.
Clojure
2
star
59

crawlers

Clojure(Script) library to identify crawler and bot user agent strings
Clojure
2
star
60

oli.me.uk

[SUPER DEPRECATED] Only keeping for historical reasons.
Ruby
2
star
61

cljs-react-example

A simple example of loading React into ClojureScript from node_modules (yarn)
Clojure
2
star
62

conjure-shadow-cljs-example

How to hook Conjure up to shadow-cljs
Clojure
2
star
63

algos

My coursera algos code
Java
2
star
64

Clarity

A clean and responsive WordPress theme.
PHP
2
star
65

venturi

Hierarchical JavaScript dependency injection
JavaScript
1
star
66

sparkjs.co.uk

Website for the Spark JavaScript library
1
star
67

Physics

A particle physics engine built in JavaScript using MooTools
JavaScript
1
star
68

web-asset-compiler

Combines and minifies your CSS, LESS and JavaScript into one JavaScript file
JavaScript
1
star
69

euler

Solutions for my Project Euler account
Clojure
1
star
70

hello-godot

Experimenting with the Godot game engine
C
1
star
71

tarmac

Tiny and unopinionated AMD MVC JavaScript framework
JavaScript
1
star
72

HashStorage

Watches the URLs hash for changes and merges those changes with an existing object, allowing storage of complex data in a sharable URL
JavaScript
1
star
73

wlhn-elfs-dilemma

Prisoners dilemma client for the West London Hack Night 2017 Christmas special
Clojure
1
star
74

langs

My work for the "7 languages in 7 weeks" book
Io
1
star
75

cljit

Git implemented in Clojure from following along with Building Git
1
star
76

fenneldoc

Turn Fennel docstrings into rich markdown documentation (mirror)
Fennel
1
star
77

project-wide-operations

Project-wide operations in Vim, a talk for Vim London
1
star
78

conjure-loves-fennel

Doesn't work, just sharing so others can take it and run with it!
Lua
1
star
79

sentinel

[DEPRECATED] Watch source files for changes and processes them accordingly
JavaScript
1
star
80

vim-scotch

A few extra mappings for vim-fireplace
Vim Script
1
star
81

how-to-be-a-repl-sorcerer

Clojure
1
star
82

hack-the-tower-clojure-web

A small web project in Clojure from Hack the Tower
Clojure
1
star
83

aniseed-config-from-scratch

A demo repo from my YouTube video showing setting up an Aniseed based Neovim configuration
Vim Script
1
star
84

outline

A web based CSS grid generator.
JavaScript
1
star
85

simple-crypt-cljs

Simple encryption example in the browser with ClojureScript
Clojure
1
star
86

dwarf-fortress-nix

Dwarf Fortress on Nix
Nix
1
star
87

fizzbugged

A broken Clojure Fizz Buzz that I fix with Conjure in a blog post
Clojure
1
star
88

olical.github.io

DEPRECATED, see Olical/blog for new source code
HTML
1
star
89

forc

Clone of Clojure list comprehension in JavaScript
JavaScript
1
star
90

SparkAn

Animate CSS properties of the specified element - For the Spark JavaScript library
JavaScript
1
star
91

vimconf-2020

Lua
1
star
92

ChromePlate

A base layout for your Chrome apps and extensions
JavaScript
1
star
93

matchmaker

Constructs (fairly) balanced teams from the TAW attendance list
Clojure
1
star
94

life

Game of life implementations in different languages
Clojure
1
star
95

clojs

Repository for my post: A JavaScript / Clojure mashup
JavaScript
1
star
96

rust-book

Notes and exercises from working through the Rust book
Rust
1
star