pub
Decider
Our great sponsors
pub | Decider | |
---|---|---|
21 | 2 | |
1,028 | 144 | |
1.4% | - | |
9.2 | 0.0 | |
3 days ago | 2 months ago | |
Dart | C# | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pub
-
Writing a Package Manager
Agreed. Version resolution is the interesting problem.
Most package managers use a SAT solver to resolve dependencies. The Dart team has a detailed write up on their SAT-based approach which is worth a read [1]. For contrast, Russ Cox presents an algorithm that doesn't use a SAT solver (intended for Go) [2].
[1] https://github.com/dart-lang/pub/blob/master/doc/solver.md
[2] https://research.swtch.com/vgo-mvs
- Modern SAT solvers: fast, neat and underused (2018)
-
Private pub.dev - is it possible?
Official documentation.
-
Self hosting package repository
As I understand Custom package repositories it's possible to host one's own package repository. The Repository Specification is public, but dart.dev only references cloud based paid services like Cloudsmith and OnePub.
- PubGrub: A next-generation version solving algorithm
-
I am building a pub server. When does the client send the name and version of the package and how can I access it?
As u/Which-Adeptness6908 already pointed out, the repository specification is small, and that's all you need to implement a server: https://github.com/dart-lang/pub/blob/master/doc/repository-spec-v2.md
- So you want to write a package manager
-
Tencent WeChat is now a GitHub secret scanning partner
https://docs.github.com/en/code-security/secret-scanning/sec...
A bit sad, they don't publish the list of regexes, etc.
--------------
I added a similar thing to the package manager for Dart / Flutter, because we saw users accidentally publishing secrets. That code is public, it relies on regexes and entropy estimation:
https://github.com/dart-lang/pub/blob/eb8ee21a089ebe0f2c2dd8...
It was heavily inspired by the researchers in:
-
Another choice of Flutter Version Manager: fvm in shell
Heres are some issues I've faced when trying with the dart-version cli: - The installation - dart pub global activate needs to have flutter/dart global installed already. - Global activated fvm cli got invalid after flutter upgrade, see issue - The cli does not work with customized fork of flutter. - You should run fvm flutter , not flutter , this changes CI/CD workflow
-
Dart on CLI: Foundations
This will add the args dependency in your pubspec file. We used the Darts package manager pub to add this dependency.
Decider
-
Modern SAT solvers: fast, neat and underused (2018)
Plug for my Constraint Solver if anyone wants a simple example https://github.com/lifebeyondfife/Decider
-
Automated scheduling for a uni project
There are different tools and libraries out there for this. For example here is a .NET library for it. Google Cloud also apparently has an API you can use. There are also other hosted solutions out there.
What are some alternatives?
unpub - Self-hosted private Dart Pub server for Enterprise
or-tools - Google's Operations Research tools:
pub-dev - The pub.dev website
OptaPlanner - Java Constraint Solver to solve vehicle routing, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
shhgit - Ah shhgit! Find secrets in your code. Secrets detection for your GitHub, GitLab and Bitbucket repositories.
Choco - An open-source Java library for Constraint Programming
fvm - Flutter Version Manager - POSIX-compliant bash script to manage multiple active flutter versions
gecode - Generic Constraint Development Environment
courier - Private dart package manager
VsVIM - Vim Emulator Plugin for Visual Studio 2015+
fvm - Flutter Version Management: A simple CLI to manage Flutter SDK versions.
clingo - 🤔 A grounder and solver for logic programs.