GithubHelp home page GithubHelp logo

ls's Introduction

Hello ๐Ÿฆ

I'm on a curiosity voyage and these keys are my paddles ๐Ÿ‘จโ€๐Ÿ’ป


Rules of the road

  • What you learn while building is always more important than what you build
  • Be humble
  • Don't give up the ship
  • Learn with others when you can
  • You are not the code you write
  • Joy is experiencing life with others, spark it
  • Code is not an asset, it's a liability
  • It's okay to color out side the lines
  • It's okay to come a purler
  • Don't let perfect be the enemy of good
  • It probably needs more tests...

ls's People

Contributors

jrudolph avatar regadas avatar softprops avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ls's Issues

ls-lint

since the :version.json file can be hand authored, provide an ls-lint task that validates its structural correctness. This can double as staging validation before publishing.

Optionally supress listing certain modules

It's common to have a parent module like "unfiltered-all" whose main purpose is to aggregate build tasks for other modules. If there is any artifact published for this module it is not of general interest and should not be listed on ls.

We need an easy way to defer listing for certain modules that do have lsSettings mixed in (since they aggregate the task).

Alert outdated dependencies

I don't know if this would belong here, or another project.

As an example, check out the "Build Status: Passing" and "Dependency Status: up-to-date" buttons at the top of the description on: https://github.com/intridea/oauth2

When maintaining a lot of projects, it would be nice to know which ones have more recent versions of things they depend on.

And for consumers of those projects, it could be a measure of how well maintained the library is when evaluating it. More useful if you're worried about importing multiple things that themselves might transitively depend on multiple versions of the same library.

ls-write-version doesn't write licenses

steps

> show licenses
[info] List((MIT License,https://xxx/LICENSE))
> ls-write-version

problem

the generated file doesn't contain the licenses.

 "licenses": [],

expectation

 "licenses": [{
   "name": "MIT License",
   "url":"https://xxx/LICENSE"
  }],

site should re orient layout based on width

when I resize the width of the browser it would be nice to get a nice compact listing instead of the fixed 940px width. It should be doable to get from 3-2 columns down to 1

conflict prevention

prevent the user from installing different versions of a library in the same project

"error 400: unparsable"

Hello,

When trying to "lsync" this project, I get

> lsync
[info] lsyncing project osinka/[email protected]...
[warn] Error synchronizing project libraries Unexpected response code: 400
[warn] Unparsable
[success] Total time: 2 s, completed 22.01.2012 0:23:43

Can you please take a look?

Regards,
Alexander

jerkson will not resolve without custom repo

If ls plugin depends on jerkson then the instructions for installing it need to tell you to add a resolver for it as well:

resolvers += "coda" at "http://repo.codahale.com"

Otherwise, people who do not already have the artifact in their ivy cache will get an error when trying to use the plugin. (Repos are not transitive.)

"More than one libraries were resolved" for unfiltered

I've latest sbt (0.11.2), latest conscript, fresh sbt app with lsinit:

> ls unfiltered
[info] Fetching library info matching unfiltered
[info] - unfiltered-agents (0.5.3, 0.5.2, 0.5.1)           # User-Agent request matchers
[info] - unfiltered-filter-async (0.5.3, 0.5.2, 0.5.1)     # Server binding for Java Servlet 3.0 async filters
[info] - unfiltered-filter (0.5.3, 0.5.2, 0.5.1)           # Server binding for Java Servlet filters
[info] - unfiltered-jetty-ajp (0.5.3, 0.5.2, 0.5.1)        # Jetty AJP server embedding module
[info] - unfiltered-jetty (0.5.3, 0.5.2, 0.5.1)            # Jetty server embedding module
[info] - unfiltered-json (0.5.3, 0.5.2, 0.5.1)             # Json requset matchers and response functions
[info] - unfiltered (0.5.3, 0.5.2, 0.5.1)                  # Core library for describing requests and responses
[info] - unfiltered-netty-server (0.5.3, 0.5.2, 0.5.1)     # Netty server embedding module
[info] - unfiltered-netty-websockets (0.5.3, 0.5.2, 0.5.1) # WebSockets plan support using Netty
[info] - unfiltered-netty (0.5.3, 0.5.2, 0.5.1)            # Netty server binding module
[info] - unfiltered-oauth (0.5.3, 0.5.2, 0.5.1)            # OAuth plans for servlet filters
[info] - unfiltered-scalatest (0.5.3, 0.5.2, 0.5.1)        # Facilitates testing Unfiltered servers with ScalaTest
[info] - unfiltered-spec (0.5.3, 0.5.2, 0.5.1)             # Facilitates testing Unfiltered servers with Specs
[info] - unfiltered-uploads (0.5.3, 0.5.2, 0.5.1)          # Support for multi-part uploads for servlet filters
[info] - unfiltered-util (0.5.3, 0.5.2, 0.5.1)             # unfiltered-util
[success] Total time: 1 s, completed Jan 22, 2012 11:07:02 PM
> ls-install unfiltered      
[error] More than one libraries were resolved.
[error]  Try prefixing the library name with :user/:repo/:library-name to disambiguate.
[error] Use 'last' for the full log.
> ls-install [email protected]
[error] More than one libraries were resolved.
[error]  Try prefixing the library name with :user/:repo/:library-name to disambiguate.
[error] Use 'last' for the full log.
> 

Please let me know what extra useful information I can provide.

Thanks,
Juan

add an optional ghBranch setting

Don't assume everyone is working on a master branch. Leave this as a default that an be customizable for resolving ls metadata on github.

be more green

Performance seems okay now, but thinking toward the future...

  • trim json responses where it makes sense, no need to serialize whole objects just to show name (version,...) description
  • I'm probably using mongo naively, consider other text indexing
  • measure before pleasure, confirm things are performing sub-optimally before adding more do-dads
  • there's gots to be a way to cut down on slug size, think about splitting repo into repos: server, client

an `lsinit` conscript

Simple conscript to be used within a project that does not yet have the ls plugin installed.

  1. Discovers the latest release version of ls by hitting the ls api
  2. Appends to or creates the necessary plugin dependency and config for ls

ls as a conscript

Just an idea, but g8 + conscript + ls would make a pretty potent weapon for awesome.

consider a `usage` task

Explaining somethings about how ls works wasn't as easy as I imagined. It may be helpful to provide a usage task similar to the one in np. In general a usage task with a common type signature may be a decent proposal for the "community keys" the sbt list proposed. It's easy enough to scope a usage key to a task. usage(for lsync) also reads ok.

ghuser/repo defaults should not break plugin

reported on sbt list. don't assume git is on the users path.

[info] Loading global plugins from /Users/hhrutz/.sbt/plugins
[info] Loading project definition from /Users/hhrutz/Documents/devel/ScalaOSC/project
[error] java.io.IOException: Cannot run program "git": error=2, No such file or directory
[error] Use 'last' for the full log.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? last
[info] Loading global plugins from /Users/hhrutz/.sbt/plugins
[debug]
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set()
[debug] modified: Set()
[debug] Removed products: Set()
[debug] Modified external sources: Set()
[debug] Modified binary dependencies: Set()
[debug] Initial directly invalidated sources: Set()
[debug]
[debug] Sources indirectly invalidated by:
[debug] product: Set()
[debug] binary dep: Set()
[debug] external source: Set()
[debug] Initially invalidated: Set()
[debug] Copy resource mappings:
[debug]
[debug] Other repositories:
[debug] Default repositories:
[debug] URLRepository(typesafe-ivy-releases,sbt.Patterns@92eb86)
[debug] Raw(ProjectResolver(inter-project, mapped: ))
[debug] FileRepository(local,FileConfiguration(true,None),sbt.Patterns@e0bfc9)
[debug] sbt-idea-repo: http://mpeltonen.github.com/maven/
[debug] public: http://repo1.maven.org/maven2/
[debug] Scala-Tools Maven2 Repository: http://scala-tools.org/repo-releases
[debug] Using inline dependencies specified in Scala.
[debug] post 1.3 ivy file: using exact as default matcher
[info] Loading project definition from /Users/hhrutz/Documents/devel/ScalaOSC/project
[debug]
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set()
[debug] modified: Set()
[debug] Removed products: Set()
[debug] Modified external sources: Set()
[debug] Modified binary dependencies: Set()
[debug] Initial directly invalidated sources: Set()
[debug]
[debug] Sources indirectly invalidated by:
[debug] product: Set()
[debug] binary dep: Set()
[debug] external source: Set()
[debug] Initially invalidated: Set()
[debug] Copy resource mappings:
[debug]
java.io.IOException: Cannot run program "git": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at sbt.SimpleProcessBuilder.run(ProcessImpl.scala:380)
at sbt.AbstractProcessBuilder.lines(ProcessImpl.scala:155)
at sbt.AbstractProcessBuilder.lines_$bang(ProcessImpl.scala:150)
at ls.Plugin$.maybeRepo(ls.scala:455)
at ls.Plugin$$anonfun$lsPublishSettings$14.apply(ls.scala:405)
at ls.Plugin$$anonfun$lsPublishSettings$14.apply(ls.scala:405)
at sbt.Init$Value$$anonfun$apply$5.apply(Settings.scala:309)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$constant$1.apply(INode.scala:151)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$constant$1.apply(INode.scala:151)
at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:170)
at sbt.EvaluateSettings$INode.evaluate(INode.scala:126)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:61)
at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:70)
at sbt.EvaluateSettings$$anon$3.run(INode.scala:66)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:91)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
at sbt.SimpleProcessBuilder.run(ProcessImpl.scala:380)
at sbt.AbstractProcessBuilder.lines(ProcessImpl.scala:155)
at sbt.AbstractProcessBuilder.lines_$bang(ProcessImpl.scala:150)
at ls.Plugin$.maybeRepo(ls.scala:455)
at ls.Plugin$$anonfun$lsPublishSettings$14.apply(ls.scala:405)
at ls.Plugin$$anonfun$lsPublishSettings$14.apply(ls.scala:405)
at sbt.Init$Value$$anonfun$apply$5.apply(Settings.scala:309)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$constant$1.apply(INode.scala:151)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$constant$1.apply(INode.scala:151)
at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:170)
at sbt.EvaluateSettings$INode.evaluate(INode.scala:126)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:61)
at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:70)
at sbt.EvaluateSettings$$anon$3.run(INode.scala:66)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)

this is a real show stopper for me, since all my projects rely on using the sbt integration of IDEA. if i run sbt from a terminal, there seems to be no problem with git lookup.

my settings are in this case:

seq( lsSettings :_* )

(LsKeys.tags in LsKeys.lsync) := Seq( "osc", "open-sound-control", "sound", "network" )

(description in LsKeys.lsync) := "A library for OpenSoundControl (OSC), a message protocol used in multi-media applications."

// (LsKeys.ghUser in LsKeys.lsync) := Some( "Sciss" )

// (LsKeys.ghRepo in LsKeys.lsync) := Some( "ScalaOSC" )

(i commented out the github stuff, since i wasn't sure it was involved in ls trying to run 'git').

404 on lsync post

Just tried to lsync via ls 1.1.
The sbt console yields this error:

[warn] Error synchronizing project libraries Unexpected response code: 404

This is the HTTP conversation happening:

POST /api/1/libraries HTTP/1.1
Content-Length: 54
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: ls.implicit.ly
Connection: Keep-Alive

user=spray&repo=spray-json&branch=master&version=1.1.0

HTTP/1.1 404 Not Found
Server: Scala Netty Unfiltered Server
Content-Length: 0
Connection: keep-alive

Is the API down?

seq(lsSettings:_*) doesn't work with Windows

I get this error when I reload my project definition:

java.io.IOException: Cannot run program "git": CreateProcess error=2, The system cannot find the file specified

However when I type "git" on the command line in a DOS console, I have no errors.

....

After digging into something similar, I found that the workaround works ok: "remove git.cmd" from the PATH.

I just leave this issue open so that others can troubleshoot their issues, while maybe you add a note for Windows users in the doc?

ls reverse dependencies

via @LeifW

"Would it be at all feasible to also list some projects that the given project is a dependency of, in addition to which projects the given project depends on?

This would be useful for package authors, e.g. when refactoring APIs, to know how much will break downstream."

consider merging query tasks

ls-find and ls-search may not have an obvious differentiation in usage semantics. Users should not have to think about/remember what the difference is. Think about coming up with a new argument scheme that may merge the two leaving less to think about.

Can't find a way to specify a http proxy

For those of us behind firewalls, it would be very useful to be able to specify a proxy / user name / password to access the ls commands.

I've added those in the -Dhttp.proxyHost, , -Dhttp.proxyPort,-Dhttp.proxyUser, -Dhttp.proxyPassword properties of by sbt launcher script but they don't seem to be used.

minimize slug size

Investigate the possibility of minimizing the heroku slug size for faster deploys. The docs say if you reach 40M, http://devcenter.heroku.com/articles/slug-size, you may want to send your code to the gym. The idea is 10M and max is 100M. Keep it small, possibly add the plugin and app modules to the .slugignore since the server doesn't need them to compile. Also keep dependencies in check where possible

project page has no prominent link back to home/search

http://ls.implicit.ly/unfiltered/unfiltered

I generally expect a top left link to go back to the home page, but here it says "unfiltered" and indeed it just goes to the page I'm already on.

An easy solution would be to have it read "ls> unfiltered"

and at least the first three characters could link back to the home page. (They could also be magenta/salmon/whatever-that-is!) I'm not sure if any link to "unfiltered" is helpful since we are already there, but I could be missing something.

Related, If there were a search box at the top of every page I would not care about going home so much, although I still think it's probably a good idea to have a link.

dry up file generation

It probably makes sense to serialize info that doesn't often change in a file separate from :version.json files, Something akin to about.markdown but for metadata in json format.

lsync notifications

Possibly push the the https://twitter.com/#!/implicit_ly twitter feed when a new version of a library is lysnc'd. Something even more useful would be a web hook registry for push notifications when a library gets lsync'd. (Think triggered builds)

NoClassDefFoundError error when testing plugin through publish-local

[email protected] > ls-find unf 
[error] {file:/home/nathan/Programming/ls/}ls/*:ls-find: java.lang.NoClassDefFoundError: ls/LibraryVersions
[error] Total time: 0 s, completed Nov 3, 2011 9:08:56 AM

This happens whether the plugin is added globally or to a single project. Confirmed on two separate Ubuntu 11.10 installations, cleaned out the ivy cache and various other things many times only to reach the same error.

However, when I configured as ProjectRef dependency to a local directory, it worked immediately. I wonder if this is the only way ls has been tested, so far? If you are unable to replicate, perhaps you can tell me which sbt command will print out the classpath that sbt is using when failing to find the the ls.LibraryVersions class. Then I can see what ls jar it's looking at, and peek inside to see if the class is there or not.

In any case, this makes me wonder if a git dependency is actually more stable than using a maven dependency, considering all the problems with resolution and corrupted caches that we are having lately. I tried this initially with posterous-sbt, but went with the binary maven dependencies as those seemed to be recommended. Now I'm inclined to revisit that. The other benefit is tat people can use it for versions of sbt you have not published artifacts for, such as prerelease versions. Of course, they can do that anyway, but it's easier if that is just how it always works.

doc launch

Just an idea (just noting some random thoughts)

If you start playing with a library, the next most logical thing to do is to follow up on its documentation. It would be pretty convenient to be able to launch its docs right from sbt (windowing system permitting)

Could launch the associated docs url for a library version falling back on the homepage is one is defined and finally falling back on the gh repo url.

You could probably take this idea even further in other directions

> ls-open-issue [email protected]

Could potentially open up the gh issue for a given repo and if gh issues uses query string params to fill in fields set a default issue title with the provided version, ect.

Before going to far on a tangent here, this could be fodder for a other plugins using the ls api instead of packing in too much functionality into one.

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.