• Stars
    star
    70
  • Rank 432,809 (Top 9 %)
  • Language
    Julia
  • License
    Other
  • Created over 8 years ago
  • Updated about 2 years ago

Reviews

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

Repository Details

Tools for Julia package developers

PkgDev

Build Status

Overview

PkgDev provides tools for Julia package developers. The package is currently being rewritten for Julia 1.x and only for brave early adopters.

Usage

PkgDev.tag(package_name, version=nothing; registry=nothing, release_notes=nothing)

Tag a new release for package package_name. The package you want to tag must be deved in the current Julia environment. You pass the package name package_name as a String. The git commit that is the HEAD in the package folder will form the basis for the version to be tagged.

If you don't specify a version, then the version field in the Project.toml must have the format x.y.z-DEV, and the command will tag version x.y.z as the next release. Alternatively you can specify one of :major, :minor or :patch for the version parameter. In that case PkgDev.tag will increase that part of the version number by 1 and tag that version. Finally, you can also specify a full VersionNumber as the value for the version parameter, in which case that version will be tagged.

The only situation where you would specify a value for registry is when you want to register a new package for the first time in a registry that is not General. In all other situations, PkgDev.tag will automatically figure out in which registry your package is registered. When you do pass a value for registry, it should simply be the short name of a registry that is one of the registries your local system is connected with.

If you want to add custom release notes for TagBot, do so with the release_notes keyword.

PkgDev.tag runs through the following process when it tags a new version:

  1. Create a new release branch called release-x.y.z.
  2. Change the version field in Project.toml and commit that change on the release branch.
  3. Change the version field in Project.toml to x.y.z+1-DEV and commit that change also to the release branch. 4a. For packages in the General registry: add a comment that triggers Registrator. 4b. For packages in other registries: Open a pull request against the registry that tags the first new commit on the release branch as a new version x.y.z.
  4. Open a pull request against the package repository to merge the release branch into master.

If you have TagBot installed for your package with the branches: true setting, it will automatically merge the release-x.y.z branch into master once the pull request for the registry has been merged. If you use the package butler (desribed below) it auto-configures your repository for this workflow.

PkgDev.enable_pkgbutler(package_name; channel=:auto, template=:auto)

Enables the Julia Package Butler for package package_name. The package must be deved in the current Julia environment. The command will make various modifications to the files in the deved folder of the package. You then then need to commit these changes and push them to GitHub. The command will also add a deploy key to the GitHub repository of the package and show instructions on how to add two GitHub Actions secrets to the repository.

The channel argument can be :auto, :stable or :dev. There are two channels of updates: stable and dev. The dev channel will run the Julia Package Butler workflow every 5 minutes and it will use the master branch of the Julia Packge Butler engine, i.e. it will get new features more quickly. The stable branch runs the Julia Package Butler workflow every hour, and new features in the Julia Package Butler engine are only pushed out to the stable channel once they have been tested for a while on the dev channel. If you specify :auto as the argument, any existing channel choice you have previously made for the package will be retained, otherwise the package will be configure for the stable channel.

The template argument can be :auto, :default or :bach. Different templates will configure different aspects of your package. At this point everyone should use the :default template (or :auto template), everything else is considered experimental.

PkgDev.switch_pkgbutler_channel(package_name, channel)

Switch the Julia Package Butler channel for package package_name. The package you want to tag must be deved in the current Julia environment and the Julia Package Butler must already be enabled for the package. The channel argument can be :auto, :stable or :dev, see the documentation for PkgDev.enable_pkgbutler for an explanation of the different channels.

PkgDev.switch_pkgbutler_template(package_name, template)

Switch the Julia Package Butler template for package package_name. The package you want to tag must be deved in the current Julia environment and the Julia Package Butler must already be enabled for the package. The template argument can be :auto, :default or :bach.

PkgDev.format(package_name)

Format all the Julia source code files for the package with name package_name. The package you want to format must be deved in the current Julia environment. This function uses DocumentFormat.jl.

More Repositories

1

julia

The Julia Programming Language
Julia
44,029
star
2

IJulia.jl

Julia kernel for Jupyter
Julia
2,718
star
3

PackageCompiler.jl

Compile your Julia Package
Julia
1,373
star
4

juliaup

Julia installer and version multiplexer
Rust
887
star
5

Pkg.jl

Pkg - Package manager for the Julia programming language
Julia
587
star
6

www.julialang.org

Julia Project website
Julia
342
star
7

JuliaSyntax.jl

The Julia compiler frontend
Julia
263
star
8

METADATA.jl

Metadata for registered Julia packages up to Julia v0.6. No longer maintained. Please see https://github.com/JuliaRegistries/General instead.
Julia
219
star
9

PrecompileTools.jl

Reduce time-to-first-execution of Julia code
Julia
190
star
10

AllocCheck.jl

AllocCheck
Julia
186
star
11

www_old.julialang.org

Julia Project web site (Old)
Jupyter Notebook
149
star
12

Compat.jl

Compatibility across Julia versions
Julia
137
star
13

Example.jl

Example Julia package repo.
Julia
123
star
14

julia-logo-graphics

official versions of the Julia logo
Julia
108
star
15

Tokenize.jl

Tokenization for Julia source code
Julia
99
star
16

Downloads.jl

Julia
90
star
17

JuliaParser.jl

A rewrite of Julia's parser in Julia
Julia
89
star
18

PackageCompilerX.jl

Julia
85
star
19

Microbenchmarks

Microbenchmarks comparing the Julia Programming language with other languages
Jupyter Notebook
83
star
20

Juleps

Julia Enhancement Proposals
67
star
21

FancyDiagnostics.jl

Better parser errors for Julia
Julia
44
star
22

MbedTLS.jl

Wrapper around mbedtls
Julia
41
star
23

TOML.jl

A fast TOML parser for TOML 1.0 written in Julia
Julia
33
star
24

JuliaDoc

Python
28
star
25

docs.julialang.org

Repository for hosting the manual for the Julia language
Julia
25
star
26

SoftGlobalScope.jl

utilities for "soft" global scope in interactive Julia environments
Julia
24
star
27

LinearAlgebra.jl

Julia
21
star
28

Distributed.jl

Create and control multiple Julia processes remotely for distributed computing. Ships as a Julia stdlib.
Julia
18
star
29

BugReporting.jl

Streamlines bug reporting for julia
Julia
17
star
30

devcontainer-features

Julia Development Container Feature
Shell
16
star
31

NetworkOptions.jl

Julia
12
star
32

libosxunwind

Clone of Apple's libunwind, enhanced for the Julia Profiler
C++
11
star
33

BumpStdlibs.jl

Update the hashes and checksums of all Julia stdlibs in just four clicks.
Julia
11
star
34

JuliaSyntaxHighlighting.jl

Julia
9
star
35

StyledStrings.jl

Julia
8
star
36

mintty-julia

5
star
37

Public.jl

Julia
5
star
38

.github

Repository for default community health files
4
star
39

IJuliaCore.jl

Julia
4
star
40

devcontainer-templates

Julia Development Container Template
Shell
4
star
41

pull-request-state-machine

Python
3
star
42

VersionsJSONUtil.jl

Julia
3
star
43

buildkite-rerun-failed

Julia
2
star
44

Test.jl

Julia
1
star