Giter VIP home page Giter VIP logo

documentertools.jl's Introduction

DocumenterTools

Documentation Build Status
PkgEval

This package contains utilities for setting up documentation generation with Documenter.jl.

Installation

The package can be added using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run

pkg> add DocumenterTools

documentertools.jl's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

documentertools.jl's Issues

ssh-keygen as a jll

Currently the package assumes access to Sys.which and it implies access to the PATH environmental variable which is not always accessible to the environment (e.g., Visual Studio Code on OSX).
The better way to implement it would be to have ssh-keygen as a jll.

Using development version of Documenter.jl will pull old release of DocumenterTools

It looks like DocumenterTools.jl 0.1.2 did not require Documenter. What this means is that if we attempt to add DocumenterTools alongside a development release of Documenter (which has had its version incremented to 0.28), the newest version of this package is not installed, and instead 0.1.2 is.

This is the case when I try to build the Documenter docs locally.

One possible fix would be to not increment Documenter.jl version numbers until a release is made. I'm not sure about the pros and cons of this, but I believe this is the version incrementing pattern I have come across most frequently in the Julia ecosystem.

I have currently worked around it by using dev to install a local working copy of this repo with 0.28 added to its compat bounds.

Remove `format` in `make.jl`-generator

Does the format still make sense, here?

function make(pkgname; format = :html)
fmtpkg = format === :markdown ? ", DocumenterMarkdown" :
format === :pdf ? ", DocumenterLaTeX" : ""
fmtstr = format === :html ? "Documenter.HTML()" :
format === :markdown ? "Markdown()" :
format === :pdf ? "LaTeX()" : ""
sitename = format !== :markdown ? "\n sitename = \"$(pkgname)\"," : ""

As far as I know, DocumenterMarkdown didn't really make the transition to Documenter 1.0, so should we just remove it here (as well as anything else related to mkdocs)

Even if we wanted to keep mkdocs support: I'm not sure the way format is used here is very useful. E.g., with format=:pdf, it would generate (overwrite!) a make.jl file to only have a LaTeX() configuration. My intuition would be that Documenter pretty much always has an HTML() configuration, and then maybe a LaTeX() configuration in addition. I'd expect anything beyond HTML() a pretty special use case that people should set up "by hand", not something that the generator for a default make.jl would take into account.

So, I would recommend just removing the format option, and always generating a make.jl file with an HTML() configuration.

`DocumenterTools.genkeys()` fails on Windows

The instructions for generating SSH deploy keys work on MacOS and Linux, but running DocumenterTools.genkeys() on Windows (with either Julia 1.7 or 1.8) gives the following error:

julia>  DocumenterTools.genkeys(user="<username>", repo="<package>.jl")
ERROR: failed to generate a SSH key pair.
Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:35
 [2] genkeys(; user::String, repo::String)
   @ DocumenterTools C:\Users\<username>\.julia\packages\DocumenterTools\TP1yT\src\genkeys.jl:61
 [3] top-level scope
   @ REPL[2]:1

Another breakage w.r.t. Documenter v1

After PR #81 my docs correctly install Documenter v1+ (https://github.com/JuliaDynamics/Attractors.jl/actions/runs/6321627234/job/17170682108?pr=94#step:4:331). However there is another breakage I can't seem to figure out:

https://github.com/JuliaDynamics/Attractors.jl/actions/runs/6321627234/job/17170682108?pr=94#step:5:1

To be clear of how we build the docs theme: we do

# Load documenter
using Documenter
using DocumenterTools: Themes
ENV["JULIA_DEBUG"] = "Documenter"
# download the themes
import Downloads
for file in ("juliadynamics-lightdefs.scss", "juliadynamics-darkdefs.scss", "juliadynamics-style.scss")
    Downloads.download("https://raw.githubusercontent.com/JuliaDynamics/doctheme/master/$file", joinpath(@__DIR__, file))
end
# create the themes
for w in ("light", "dark")
    header = read(joinpath(@__DIR__, "juliadynamics-style.scss"), String)
    theme = read(joinpath(@__DIR__, "juliadynamics-$(w)defs.scss"), String)
    write(joinpath(@__DIR__, "juliadynamics-$(w).scss"), header*"\n"*theme)
end
# compile the themes
Themes.compile(joinpath(@__DIR__, "juliadynamics-light.scss"), joinpath(@__DIR__, "src/assets/themes/documenter-light.css"))
Themes.compile(joinpath(@__DIR__, "juliadynamics-dark.scss"), joinpath(@__DIR__, "src/assets/themes/documenter-dark.css"))

ERROR: IOError: could not spawn setenv

DocumenterTools.genkeys(MyPackate) as well as DocumenterTools.genkeys(user=..., repo=...) fails on my system with the following error:

julia> DocumenterTools.genkeys(user="jolin-io", repo="StructEquality.jl")
ERROR: IOError: could not spawn setenv(`/home/ssahm/.julia/artifacts/cf570328554ecb898e625367a9c9fb2c01f55267/bin/ssh-keygen -N '' -C Documenter -m PEM -f documenter-private-key`,["LESSKEYIN_SYSTEM=/nix/store/9xijfbnbfvz9287s459n1p2qi0l3gpdv-lessconfig", "EDITOR=kak", "PATH=/home/ssahm/.julia/artifacts/25fa81dbac6496585a91dbdc258273d39442466f/bin:/home/ssahm/.julia/artifacts/cf570328554ecb898e625367a9c9fb2c01f55267/bin:/home/ssahm/.npm-packages/bin:/home/ssahm/bin:/run/wrappers/bin:/home/ssahm/.nix-profile/bin:/etc/profiles/per-user/ssahm/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin", "ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=fg=8", "LSCOLORS=Gxfxcxdxbxegedabagacad", "ZSH_TMUX_TERM=screen-256color", "KONSOLE_DBUS_SESSION=/Sessions/1", "NO_AT_BRIDGE=1", "LD_LIBRARY_PATH=/nix/store/ki4502bna76hy58m0l0yrbsli5v7s0p9-julia-bin-1.7.2/lib/julia:/home/ssahm/.julia/artifacts/25fa81dbac6496585a91dbdc258273d39442466f/lib:/nix/store/ki4502bna76hy58m0l0yrbsli5v7s0p9-julia-bin-1.7.2/bin/../lib/julia:/nix/store/ki4502bna76hy58m0l0yrbsli5v7s0p9-julia-bin-1.7.2/bin/../lib:/nix/store/gbj6lw21pvk87nvb3gbrqqpv31syky15-sane-config/lib/sane", "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus", "XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0", "TERMINFO_DIRS=/home/ssahm/.nix-profile/share/terminfo:/etc/profiles/per-user/ssahm/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/run/current-system/sw/share/terminfo", "XDG_SESSION_DESKTOP=KDE", "VISUAL=code", "KONSOLE_VERSION=220401", "SYSTEMD_EXEC_PID=1074", "XDG_SESSION_TYPE=x11", "LC_TIME=en_DE.UTF-8", "USER=ssahm","LC_NUMERIC=en_DE.UTF-8", "XDG_CONFIG_DIRS=/nix/store/2ddflpjav2js8vrv3njkfpr5a3s1frqr-kio-5.93.0/etc/xdg:/nix/store/sipkg8h10pg4w60pywa5r2d14d2lbqcv-kservice-5.93.0-bin/etc/xdg:/nix/store/mwb8ljr6syyrfkr9mgl2w5mhw8vvqh25-kxmlgui-5.93.0-bin/etc/xdg:/nix/store/wzkapjrgwys6l1cw7jwx9g8wfx2ybahi-plasma-workspace-5.24.5/etc/xdg:/nix/store/w6kbfhdm9bhrn6il78x7bi5690ii946k-kdelibs4support-5.93.0/etc/xdg:/nix/store/mvq6xysc1d7a7h8kja8jr6dhjx95pplg-baloo-5.93.0/etc/xdg:/home/ssahm/.config/kdedefaults:/etc/xdg:/home/ssahm/.nix-profile/etc/xdg:/etc/profiles/per-user/ssahm/etc/xdg:/nix/var/nix/profiles/default/etc/xdg:/run/current-system/sw/etc/xdg", "PAM_KWALLET5_LOGIN=/run/user/1000/kwallet5.socket", "LC_MEASUREMENT=en_DE.UTF-8", "SSH_ASKPASS=/nix/store/6x1lmszmqa6z5j60p6vnnmcl6mpyrfl0-ksshaskpass-5.24.5/bin/ksshaskpass", "LESS=-R", "NIX_USER_PROFILE_DIR=/nix/var/nix/profiles/per-user/ssahm", "LESSOPEN=|/nix/store/vikaff8688ghqpxa69ir9n3szbyphqy5-lesspipe-1.85/bin/lesspipe.sh %s", "XDG_DATA_DIRS=/nix/store/gpnw7j21zz8q1fvc34fn4ssh7aisazxw-konsole-22.04.1/share:/nix/store/f5g3zzvyj0r0gnrckzcpmwgnyicy855i-knewstuff-5.93.0/share:/nix/store/sb5830c5hpw1dyd0wys6fzxf2ykmny3c-kpackage-5.93.0/share:/nix/store/4mcp370qw26ciwpxc71iipxdyqr4gixm-kpackage-5.93.0-bin/share:/nix/store/db0a0sh3qr5c605rp9qwln2mscakxc6v-kirigami2-5.93.0/share:/nix/store/rkmi3wjmiwknsr9d1nnsq5mzhax2gm2a-kpty-5.93.0/share:/nix/store/9m64jd39w2vjzf354p2xkk85pggy30n8-kparts-5.93.0/share:/nix/store/njn64knilzkgm28pbvilaxzd52s3xdjp-kparts-5.93.0-bin/share:/nix/store/39aiv1xszaqpmv4rdhd5f916v50kgkqj-knotifyconfig-5.93.0/share:/nix/store/8cyril6gs63qsw1pibnh8n9ayyhp97a9-kinit-5.93.0/share:/nix/store/cidx12i3jsxrbxl1xlvs2zyq2aa1ij5f-kwallet-5.93.0/share:/nix/store/zzpsph1rihdmcd8cgiyvixqkxmpiijkb-kwallet-5.93.0-bin/share:/nix/store/rig598hqcsps1lpfvpvpvzw0000cxfx3-knotifications-5.93.0/share:/nix/store/x38d96ziwaw39ljfs6di7p9a51b9sl1j-kded-5.93.0/share:/nix/store/y3lgcm0qmd52r141gjr4jv04a17n3y7r-solid-5.93.0/share:/nix/store/zv167jn1674ywxs34vb8zldii0s7yg4b-kjobwidgets-5.93.0/share:/nix/store/27zgs0dkipm7v31811cq4iw80s0rrxyv-kjobwidgets-5.93.0-bin/share:/nix/store/2ddflpjav2js8vrv3njkfpr5a3s1frqr-kio-5.93.0/share:/nix/store/fdx2chqnl31winnf1k251ds4rcv83spf-knotifications-5.93.0-bin/share:/nix/store/cyh264vam0wgmyrzzar6q2x5nh7g3gav-phonon-4.11.1/share:/nix/store/n3gwzs85wm3ggqqrv097l8bhjknpwjsd-kbookmarks-5.93.0/share:/nix/store/69nwnbf8wj16vxs5g0kkyrwdyr1n2fhx-kxmlgui-5.93.0/share:/nix/store/lf0zf0nzimydx0za99grhmqbxchqdnj5-ktextwidgets-5.93.0/share:/nix/store/x9r11nx0d9i13k3w01wbr3dnxfy78slh-sonnet-5.93.0/share:/nix/store/vwd9dl54ib3xsdshbhdz0nrlmp6x1xk0-kservice-5.93.0/share:/nix/store/sipkg8h10pg4w60pywa5r2d14d2lbqcv-kservice-5.93.0-bin/share:/nix/store/gcxm2idp4y2vs47as1kpdc6y96srsz14-kdbusaddons-5.93.0/share:/nix/store/gp92hbawgnw5xlpw9ishmfv2v7n06k3q-kiconthemes-5.93.0/share:/nix/store/hvgcjab8xw6q5cf8z0gx3acb92i4v7jy-kcoreaddons-5.93.0/share:/nix/store/yy95r0sjfla30ryav77z01cpjjrriw6w-kcoreaddons-5.93.0-bin/share:/nix/store/nyp7dcxg0azkdfvjyp934mfriimzcyka-kconfig-5.93.0/share:/nix/store/09vld2wqc1sci5pg6qya2b423w1a8g1j-kcodecs-5.93.0/share:/nix/store/00y12rlpg37a0shbmwvxhqmwhb8hizgq-kcompletion-5.93.0/share:/nix/store/yl62anjm1a4jznj2x5cxsgc9bnp6m0pa-kglobalaccel-5.93.0/share:/nix/store/7dkxh90za5dqgxqzzry4rm8jyafxfv41-kwindowsystem-5.93.0/share:/nix/store/50q4hasrp2jwy53109fbxgrwfc9gq6gs-kitemviews-5.93.0/share:/nix/store/307skqs6w52k81246vczfqpd3n6h6hkg-kconfigwidgets-5.93.0/share:/nix/store/lb5yrbf97c2sn13rkci5df1bhbpmq2dm-kguiaddons-5.93.0/share:/nix/store/n1gjwipdx39hl602458ni7nlphqyds4v-kauth-5.93.0/share:/nix/store/h92c88k9ha24zdjw4lyl7qb3ip5c9ah4-kwidgetsaddons-5.93.0/share:/nix/store/hs7ln73xbgkvipb0cfprc4zycc32pm5d-flex-2.6.4/share:/nix/store/h3811zhzwfjzl3csh82xhr31hd5awaiz-gnum4-1.4.19/share:/nix/store/qzwlkmzvynh3fd0f0nns68127k440hmj-bison-3.8.2/share:/nix/store/nv9l6iqrrs1l1hr7amc0m30yjdrlbw4z-kdoctools-5.93.0/share:/nix/store/pnvj3jb5x8sjgifdb0185nbv1d6801lv-ki18n-5.93.0/share:/nix/store/8snhmnvryd0872jvlycl9vkg02a52rl0-fontconfig-2.13.94-lib/share:/nix/store/iirqa1lqni18mcaii3g1l5s15jxwz17a-systemd-250.4/share:/nix/store/8qy5hg2kyy6bmjiwkd6c3kd3pa66nkv8-glib-2.72.3/share:/nix/store/k6ymp2is9vps3a8vk4cd43bh80ghr0cj-gettext-0.21/share:/nix/store/cq4y1zpd6c6ckbq0qcs0g0sml6zi82ql-dbus-1.14.0/share:/nix/store/wzkapjrgwys6l1cw7jwx9g8wfx2ybahi-plasma-workspace-5.24.5/share:/nix/store/cma0cs0sn9qqjggksnx21rhlr4bxb851-pipewire-0.3.51-lib/share:/nix/store/629j6n8781lwq94j876badgclykkay5r-appstream-qt-0.15.2/share:/nix/store/0ifb54mdalqcb3x4iwsr75g19s4adfmy-kholidays-5.93.0/share:/nix/store/8kjwc82a8b66rg9d5npp8nvwn5jcj2gr-networkmanager-1.38.2/share:/nix/store/ysdcc39a86k789yclg4vpy4yypych1fa-gnutls-3.7.3/share:/nix/store/mf4h7my9yy633wvly3v670q1g6lh7rd8-libqalculate-4.1.1/share:/nix/store/514pfpfwix8nchcfd8syls9y1ygsw1nd-libksysguard-5.24.5/share:/nix/store/r2gw8alzb25pzffgz4aydbnsmwhcyma6-libksysguard-5.24.5-bin/share:/nix/store/ll4gm7mlppyssic0mhl4qp6v0ydmdk81-libkscreen-5.24.5/share:/nix/store/l59p4kkhxzs2s6w7anqr1xnyfnq9vi1m-kxmlrpcclient-5.93.0/share:/nix/store/bblhf5gxx76wr78xc732xzwwjklwdj5i-kwin-5.24.5/share:/nix/store/q8pzfwn52wir6ap7i3ph15glwvzii61g-breeze-qt5-5.24.5/share:/nix/store/l6l99kd9gxp151mmpglfcpi9yclmz51h-kdecoration-5.24.5/share:/nix/store/jixm93c3r1v4yvrd8qwlfhl7jwsk0i8n-breeze-qt5-5.24.5-bin/share:/nix/store/yhs7xgzaks6vrl8d3nssagzbvblyv1x8-frameworkintegration-5.93.0-bin/share:/nix/store/1xba0hxc6lxq0m8s502pa1rgly9jay50-ktexteditor-5.93.0/share:/nix/store/6fiq3nbapx15fg2w5q0rj0cw2imyqp8l-ktexteditor-5.93.0-bin/share:/nix/store/y9qb1npp4z2bdc0dzgf46dp4i4xpdcxz-syntax-highlighting-5.93.0/share:/nix/store/l636lp1kfzwax6va2b4s5k5k3d3gwcb3-kscreenlocker-5.24.5/share:/nix/store/5jqsc7j6c5p33qb652xlf8lybqchjx9m-krunner-5.93.0-bin/share:/nix/store/14x2rjxix5q5lav5azjpgqm8xyy5syy2-plasma-framework-5.93.0/share:/nix/store/jhi1nm9abmalk9xmnb1x4sc41fj7dv0p-plasma-framework-5.93.0-bin/share:/nix/store/kcqh298f44w8a8bk4mhikhvisp1v03b2-kpeople-5.93.0/share:/nix/store/bwwq59yrg5yh62k7gffh40x6iqalrk3r-kpeople-5.93.0-bin/share:/nix/store/q9cvkzl0cq73jf9nfig2k1anibwjk2q2-kjsembed-5.93.0/share:/nix/store/fvqlm5gicvwicshnpwsrm898vlpmc1gh-kdesu-5.93.0/share:/nix/store/w6kbfhdm9bhrn6il78x7bi5690ii946k-kdelibs4support-5.93.0/share:/nix/store/s4hx0789q7x3mcygjf3jnz4wrwzbzk0d-kunitconversion-5.93.0/share:/nix/store/las5h018wfmf8jkiw236zffpyz5vd9fq-kemoticons-5.93.0-bin/share:/nix/store/y7zdmkzfc2vaj52n4hwahk50lgrjpzm4-kdesignerplugin-5.93.0/share:/nix/store/ws7nkk94c130f5ypply36wrm58jz24lg-kcmutils-5.93.0/share:/nix/store/qgwxr3aqmjbbs9ya9ynnxfsn8ylqw7n7-kcmutils-5.93.0-bin/share:/nix/store/f1f6z020hs9wyjxj2z9bdvfsm5zpgwag-kdeclarative-5.93.0/share:/nix/store/mvq6xysc1d7a7h8kja8jr6dhjx95pplg-baloo-5.93.0/share:/nix/store/d4m3n507f396xzlp9rfmbdjqm8ii6kar-kfilemetadata-5.93.0/share:/nix/store/60dbqikdvf8lq3qdjrib2h4bki7fqrqz-linux-pam-1.5.2/share:/nix/store/cs854kmagk0jf8f2b08zdk8420wpgbnd-iso-codes-4.9.0/share:/nix/store/hbc2jgjgpcjwvylbxy94g1vsxz95f35k-desktops/share:/home/ssahm/.nix-profile/share:/etc/profiles/per-user/ssahm/share:/nix/var/nix/profiles/default/share:/run/current-system/sw/share", "LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive", "QT_PLUGIN_PATH=/nix/store/gpnw7j21zz8q1fvc34fn4ssh7aisazxw-konsole-22.04.1/lib/qt-5.15.3/plugins:/nix/store/2ddflpjav2js8vrv3njkfpr5a3s1frqr-kio-5.93.0/lib/qt-5.15.3/plugins:/nix/store/cyh264vam0wgmyrzzar6q2x5nh7g3gav-phonon-4.11.1/lib/qt-5.15.3/plugins:/nix/store/mwb8ljr6syyrfkr9mgl2w5mhw8vvqh25-kxmlgui-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/q2n76fnk0hjsbnn0f1w2b4bb54iivwpf-ktextwidgets-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/00y12rlpg37a0shbmwvxhqmwhb8hizgq-kcompletion-5.93.0/lib/qt-5.15.3/plugins:/nix/store/mj8hfhrbnpn1k93v5gdjxr367vzs9bqh-sonnet-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/yl62anjm1a4jznj2x5cxsgc9bnp6m0pa-kglobalaccel-5.93.0/lib/qt-5.15.3/plugins:/nix/store/7dkxh90za5dqgxqzzry4rm8jyafxfv41-kwindowsystem-5.93.0/lib/qt-5.15.3/plugins:/nix/store/4rp7vyn0hwx0n8vfhs3dzbcsbjbp1yv7-kiconthemes-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/50q4hasrp2jwy53109fbxgrwfc9gq6gs-kitemviews-5.93.0/lib/qt-5.15.3/plugins:/nix/store/307skqs6w52k81246vczfqpd3n6h6hkg-kconfigwidgets-5.93.0/lib/qt-5.15.3/plugins:/nix/store/lb5yrbf97c2sn13rkci5df1bhbpmq2dm-kguiaddons-5.93.0/lib/qt-5.15.3/plugins:/nix/store/n1gjwipdx39hl602458ni7nlphqyds4v-kauth-5.93.0/lib/qt-5.15.3/plugins:/nix/store/h92c88k9ha24zdjw4lyl7qb3ip5c9ah4-kwidgetsaddons-5.93.0/lib/qt-5.15.3/plugins:/nix/store/6v0qjs16qjcw2xvz81pc8maik15wc14s-ki18n-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/aypkzkv99lad7f58flkzw4fdy1jpdf4s-qttools-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/zrg23k3zsnqk14jmfk7lh7kf697zrsh7-qtwayland-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/8q1lp0vwiv7m7yimf48awai90016py7f-qtdeclarative-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/5g9d73kdbp8ky1mgq8dz3r3xiav6x80z-qtsvg-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/as9hm5s7djl2jrdkzi62li5557fjwddf-qtbase-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/wzkapjrgwys6l1cw7jwx9g8wfx2ybahi-plasma-workspace-5.24.5/lib/qt-5.15.3/plugins:/nix/store/2qh281m4n0cwdxp7vlvg8dg61rxvhqb1-qqc2-desktop-style-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/r2gw8alzb25pzffgz4aydbnsmwhcyma6-libksysguard-5.24.5-bin/lib/qt-5.15.3/plugins:/nix/store/wp9hqah9qbl03nbnswfzkcwrddc2rr65-qtwebengine-5.15.8-bin/lib/qt-5.15.3/plugins:/nix/store/nmz5sqypwfhls6i7w06ddi4a9h5wyiaa-qtlocation-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/ll4gm7mlppyssic0mhl4qp6v0ydmdk81-libkscreen-5.24.5/lib/qt-5.15.3/plugins:/nix/store/bblhf5gxx76wr78xc732xzwwjklwdj5i-kwin-5.24.5/lib/qt-5.15.3/plugins:/nix/store/jixm93c3r1v4yvrd8qwlfhl7jwsk0i8n-breeze-qt5-5.24.5-bin/lib/qt-5.15.3/plugins:/nix/store/yhs7xgzaks6vrl8d3nssagzbvblyv1x8-frameworkintegration-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/cvvdaw29vv8rl884nf8v8x2b1mrhkgnj-qtvirtualkeyboard-5.15.3/lib/qt-5.15.3/plugins:/nix/store/s9vgbj1ap3cbgy603p72wapvnfwl1yfp-qtsensors-5.15.3-bin/lib/qt-5.15.3/plugins:/nix/store/6fiq3nbapx15fg2w5q0rj0cw2imyqp8l-ktexteditor-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/l636lp1kfzwax6va2b4s5k5k3d3gwcb3-kscreenlocker-5.24.5/lib/qt-5.15.3/plugins:/nix/store/cd8j75ijidj8sfqb2qjqzcicq6krgr5p-layer-shell-qt-5.24.5/lib/qt-5.15.3/plugins:/nix/store/jhi1nm9abmalk9xmnb1x4sc41fj7dv0p-plasma-framework-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/w6kbfhdm9bhrn6il78x7bi5690ii946k-kdelibs4support-5.93.0/lib/qt-5.15.3/plugins:/nix/store/las5h018wfmf8jkiw236zffpyz5vd9fq-kemoticons-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/jw9ddga4indr7c04k9b8jpy68i3cfizy-kplotting-5.93.0/lib/qt-5.15.3/plugins:/nix/store/mvq6xysc1d7a7h8kja8jr6dhjx95pplg-baloo-5.93.0/lib/qt-5.15.3/plugins:/nix/store/v4q4nzzyw0blh96cqifrlvc3sfnxxavp-kidletime-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/4ws7l225wscf7y5kp5b1ghnj7436f9cn-kfilemetadata-5.93.0-bin/lib/qt-5.15.3/plugins:/nix/store/amlw5cjnx51miil60mnc4m3b3c59lbc9-qtmultimedia-5.15.3-bin/lib/qt-5.15.3/plugins:/home/ssahm/.nix-profile/lib/qt4/plugins:/home/ssahm/.nix-profile/lib/kde4/plugins:/etc/profiles/per-user/ssahm/lib/qt4/plugins:/etc/profiles/per-user/ssahm/lib/kde4/plugins:/nix/var/nix/profiles/default/lib/qt4/plugins:/nix/var/nix/profiles/default/lib/kde4/plugins:/run/current-system/sw/lib/qt4/plugins:/run/current-system/sw/lib/kde4/plugins", "SHELL=/run/current-system/sw/bin/zsh", "COLORFGBG=15;0", "XDG_SEAT=seat0", "XAUTHORITY=/home/ssahm/.Xauthority", "QML2_IMPORT_PATH=/nix/store/bdazgpfhsyxj42ld2dwl42zpc5qx7bxq-knewstuff-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/db0a0sh3qr5c605rp9qwln2mscakxc6v-kirigami2-5.93.0/lib/qt-5.15.3/qml:/nix/store/0rw6p10yn6brrvshpvcv8krmfnp9xmzx-qtgraphicaleffects-5.15.3/lib/qt-5.15.3/qml:/nix/store/f9csx7lh8q3lnanci4db3904hp8asr2f-qtquickcontrols2-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/fdx2chqnl31winnf1k251ds4rcv83spf-knotifications-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/iwdnni7b2c6mcqnpyrrhrzl8kydpxk7x-solid-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/mj8hfhrbnpn1k93v5gdjxr367vzs9bqh-sonnet-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/6v0qjs16qjcw2xvz81pc8maik15wc14s-ki18n-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/zrg23k3zsnqk14jmfk7lh7kf697zrsh7-qtwayland-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/w0497wjsqfj5s821y8dcxy8ick0jifz1-qtquickcontrols-5.15.3/lib/qt-5.15.3/qml:/nix/store/8q1lp0vwiv7m7yimf48awai90016py7f-qtdeclarative-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/wzkapjrgwys6l1cw7jwx9g8wfx2ybahi-plasma-workspace-5.24.5/lib/qt-5.15.3/qml:/nix/store/2qh281m4n0cwdxp7vlvg8dg61rxvhqb1-qqc2-desktop-style-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/qpdzarjn8zqlksls11sx4nbvy2dpg90l-kquickcharts-5.93.0/lib/qt-5.15.3/qml:/nix/store/0ifb54mdalqcb3x4iwsr75g19s4adfmy-kholidays-5.93.0/lib/qt-5.15.3/qml:/nix/store/jngwa257nnkkgm6f62xjal26zjx34g6r-prison-5.93.0/lib/qt-5.15.3/qml:/nix/store/r2gw8alzb25pzffgz4aydbnsmwhcyma6-libksysguard-5.24.5-bin/lib/qt-5.15.3/qml:/nix/store/wp9hqah9qbl03nbnswfzkcwrddc2rr65-qtwebengine-5.15.8-bin/lib/qt-5.15.3/qml:/nix/store/nclyphyp949wf2mlzni5q73jan52hc1p-qtwebchannel-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/nmz5sqypwfhls6i7w06ddi4a9h5wyiaa-qtlocation-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/bblhf5gxx76wr78xc732xzwwjklwdj5i-kwin-5.24.5/lib/qt-5.15.3/qml:/nix/store/cvvdaw29vv8rl884nf8v8x2b1mrhkgnj-qtvirtualkeyboard-5.15.3/lib/qt-5.15.3/qml:/nix/store/s9vgbj1ap3cbgy603p72wapvnfwl1yfp-qtsensors-5.15.3-bin/lib/qt-5.15.3/qml:/nix/store/p3331ajrjyf2vfb43d1r10849xa6bzj9-syntax-highlighting-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/lwri6aysn9saj0i6k8bxlf79rqyqjhkv-qtxmlpatterns-5.15.3/lib/qt-5.15.3/qml:/nix/store/5jqsc7j6c5p33qb652xlf8lybqchjx9m-krunner-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/jhi1nm9abmalk9xmnb1x4sc41fj7dv0p-plasma-framework-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/bwwq59yrg5yh62k7gffh40x6iqalrk3r-kpeople-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/s6qrk93s3lhn4m6rw9gjzym516683ibj-kitemmodels-5.93.0/lib/qt-5.15.3/qml:/nix/store/p94gzkpg25k0yymi9h78pij5q8msg5m0-kdeclarative-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/lp0b5njr3gzmziq372r482h9wb7inca5-kactivities-5.93.0-bin/lib/qt-5.15.3/qml:/nix/store/mvq6xysc1d7a7h8kja8jr6dhjx95pplg-baloo-5.93.0/lib/qt-5.15.3/qml:/nix/store/amlw5cjnx51miil60mnc4m3b3c59lbc9-qtmultimedia-5.15.3-bin/lib/qt-5.15.3/qml", "SESSION_MANAGER=local/gram17:@/tmp/.ICE-unix/1199,unix/gram17:/tmp/.ICE-unix/1199", "XCURSOR_THEME=breeze_cursors", "__NIXOS_SET_ENVIRONMENT_DONE=1", "HOME=/home/ssahm", "TERM=xterm-256color", "COLORTERM=truecolor", "CUPS_DATADIR=/nix/store/m10kwv893il1c0mrdw9yhclzfzzkdj74-cups-progs/share/cups", "GTK_PATH=/home/ssahm/.nix-profile/lib/gtk-2.0:/home/ssahm/.nix-profile/lib/gtk-3.0:/home/ssahm/.nix-profile/lib/gtk-4.0:/etc/profiles/per-user/ssahm/lib/gtk-2.0:/etc/profiles/per-user/ssahm/lib/gtk-3.0:/etc/profiles/per-user/ssahm/lib/gtk-4.0:/nix/var/nix/profiles/default/lib/gtk-2.0:/nix/var/nix/profiles/default/lib/gtk-3.0:/nix/var/nix/profiles/default/lib/gtk-4.0:/run/current-system/sw/lib/gtk-2.0:/run/current-system/sw/lib/gtk-3.0:/run/current-system/sw/lib/gtk-4.0", "XCURSOR_SIZE=24", "TZDIR=/etc/zoneinfo", "NODE_PATH=/home/ssahm/.npm-packages/lib/node_modules", "_ZSH_TMUX_FIXED_CONFIG=/nix/store/7zsy20j2rpqf0cxrlgr33clqbw7mmnva-oh-my-zsh-2022-04-24/share/oh-my-zsh/plugins/tmux/tmux.only.conf", "KONSOLE_DBUS_WINDOW=/Windows/1", "XDG_CURRENT_DESKTOP=KDE", "LANG=en_US.UTF-8", "SANE_CONFIG_DIR=/nix/store/gbj6lw21pvk87nvb3gbrqqpv31syky15-sane-config/etc/sane.d", "LOGNAME=ssahm", "SHLVL=1", "LC_MONETARY=en_DE.UTF-8", "XDG_RUNTIME_DIR=/run/user/1000", "DESKTOP_SESSION=/nix/store/hbc2jgjgpcjwvylbxy94g1vsxz95f35k-desktops/share/xsessions/plasma", "OLDPWD=/home/ssahm", "SSH_AUTH_SOCK=/run/user/1000/ssh-agent", "GDK_PIXBUF_MODULE_FILE=/nix/store/jr4krl1f2g8ckcn5xmfsssg3k4k1mx6y-gdk-pixbuf-loaders.cache", "INFOPATH=/home/ssahm/.nix-profile/info:/home/ssahm/.nix-profile/share/info:/etc/profiles/per-user/ssahm/info:/etc/profiles/per-user/ssahm/share/info:/nix/var/nix/profiles/default/info:/nix/var/nix/profiles/default/share/info:/run/current-system/sw/info:/run/current-system/sw/share/info", "KDE_SESSION_UID=1000", "PAGER=less", "PROFILEHOME=", "NIXPKGS_CONFIG=/etc/nix/nixpkgs-config.nix", "_=/run/current-system/sw/bin/julia", "MOZ_PLUGIN_PATH=/home/ssahm/.nix-profile/lib/mozilla/plugins:/etc/profiles/per-user/ssahm/lib/mozilla/plugins:/nix/var/nix/profiles/default/lib/mozilla/plugins:/run/current-system/sw/lib/mozilla/plugins", "ZSH=/nix/store/7zsy20j2rpqf0cxrlgr33clqbw7mmnva-oh-my-zsh-2022-04-24/share/oh-my-zsh", "PWD=/home/ssahm/.julia", "QT_AUTO_SCREEN_SCALE_FACTOR=0", "DISPLAY=:0", "XDG_SESSION_CLASS=user", "NIX_PROFILES=/run/current-system/sw /nix/var/nix/profiles/default /etc/profiles/per-user/ssahm /home/ssahm/.nix-profile", "LANGUAGE=", "KDE_APPLICATIONS_AS_SCOPE=1", "LIBEXEC_PATH=/home/ssahm/.nix-profile/lib/libexec:/etc/profiles/per-user/ssahm/lib/libexec:/nix/var/nix/profiles/default/lib/libexec:/run/current-system/sw/lib/libexec", "LC_COLLATE=en_DE.UTF-8", "GTK_RC_FILES=/etc/gtk/gtkrc:/home/ssahm/.gtkrc:/home/ssahm/.config/gtkrc", "KONSOLE_DBUS_SERVICE=:1.329", "XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1", "WINDOWID=90177543", "XDG_VTNR=7", "NIX_PATH=/home/ssahm/.nix-defexpr/channels:nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels:nixos-config=/home/ssahm/nixos/configuration.nix:nixpkgs-overlays=/home/ssahm/nixos/overlays/", "KDE_FULL_SESSION=true", "XDG_SESSION_ID=2", "KDEDIRS=/home/ssahm/.nix-profile:/etc/profiles/per-user/ssahm:/nix/var/nix/profiles/default:/run/current-system/sw", "GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/ssahm/.gtkrc-2.0:/home/ssahm/.config/gtkrc-2.0", "QTWEBKIT_PLUGIN_PATH=/home/ssahm/.nix-profile/lib/mozilla/plugins/:/etc/profiles/per-user/ssahm/lib/mozilla/plugins/:/nix/var/nix/profiles/default/lib/mozilla/plugins/:/run/current-system/sw/lib/mozilla/plugins/", "XCURSOR_PATH=/nix/store/wzkapjrgwys6l1cw7jwx9g8wfx2ybahi-plasma-workspace-5.24.5/share/icons:/home/ssahm/.icons:/home/ssahm/.local/share/icons:/home/ssahm/.nix-profile/share/icons:/home/ssahm/.nix-profile/share/pixmaps:/etc/profiles/per-user/ssahm/share/icons:/etc/profiles/per-user/ssahm/share/pixmaps:/nix/var/nix/profiles/default/share/icons:/nix/var/nix/profiles/default/share/pixmaps:/run/current-system/sw/share/icons:/run/current-system/sw/share/pixmaps:~/.icons:/var/empty/share/icons:/var/empty/share/pixmaps:/var/empty/X11R6/lib/X11/icons", "SHELL_SESSION_ID=ef62624625d1430690efc70bb13e4004", "__ETC_PROFILE_DONE=1", "QT_SCREEN_SCALE_FACTORS=eDP-1=1.25;DP-1=1.25;DP-2=1.25;DP-3=1.25;HDMI-1=1.25;", "XDG_DESKTOP_PORTAL_DIR=/nix/store/w5ygij46jvk45s1r90cnsv809cd45m1h-xdg-portals/share/xdg-desktop-portal/portals", "LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:", "OPENBLAS_MAIN_FREE=1", "KDE_SESSION_VERSION=5"]): no such file or directory (ENOENT)
Stacktrace:
[1] _spawn_primitive(file::String, cmd::Cmd, stdio::Vector{Any})
@ Base ./process.jl:100
[2] #690
@ ./process.jl:113 [inlined]
[3] setup_stdios(f::Base.var"#690#691"{Cmd}, stdios::Vector{Any})
@ Base ./process.jl:197
[4] _spawn
@ ./process.jl:112 [inlined]
[5] _spawn
@ ./process.jl:107 [inlined]
[6] success(cmd::Cmd)
@ Base ./process.jl:502
[7] genkeys(; user::String, repo::String)
@ DocumenterTools ~/.julia/packages/DocumenterTools/zZxsf/src/genkeys.jl:61
[8] top-level scope
@ REPL[6]:1

as you can see, I am running on nixos, nevertheless DocumenterTools should not depend on the operating system.

To replicate this bug, create a NixOS on channel 22.05 with julia-bin package (probably nix-shell -p julia-bin --run julia will also fail)

I hope someone understands what is going on. A similar sounding problem was already reported and resolved for parallel somewhen back. Don't know whether it is the same underlying problem.

Maybe it is just that you assume there is setenv available in your terminal. Please don't assume something like this.

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Suggestion: `Travis.genkeys` to show the travis-ci.com URL instead of the .org one

I think Travis CI is moving everything to its travis-ci.com domain rather than the travis-ci.org one (see, e.g., this travis-blog entry). Would it make sense to have Travis.genkeys suggest the travis-ci.com URL when generating the private key?

While I'm here I'd also like to suggest that Travis.genkeys also mentions the public key's name. That is, add something like what I put in bold below

add the public key below to https://github.com/user_name/package_name/settings/keys with name 'documenter' and read/write access

(Right now this is only mentioned in the documentation of Documenter.jl)

Checklist for registering / v0.1.0

Just putting small stuff here so we wouldn't forget.

  • Update installation instructions in the README.
  • Fix #14
  • Add REQUIRE since it is needed for registering in Metadata
  • Update the uuid to be metadata compatible.

Travis.genkeys(): don't take arguments / drop Git

Travis.genkeys() used to write a .documenter key file to the repository, so it needed to to which package the key was for. But it has not actually touched anything in the repo for a long time, so it does not actually need to take an argument.

Relatedly, Git is used to figure out the exact remote URLs from of the repository. But those are simply printed out for the user, and can probably replaced with generic ones like https://github.com/USER/REPOSITORY/settings/keys. So it might be better to just drop Git usage entirely before #5.

Alternatively, we could still have a Travis.genkeys(::Module) in addition to Travis.genkeys(), which still tries to figure out the URLs, to help the user as much as possible.

Documenter 1.0

Could DocumenterTools be made compatible with Documenter 1.0?
At least one SciML documentation upgrade is blocked by this.

Use Git JLL for `genkeys`

We're still relying on system Git, which can cause issues (particularly on windows):

if Sys.iswindows()
success(`where where`) || error("'where' not found.")
success(`where git`) || error("'git' not found.")
else
success(`which which`) || error("'which' not found.")
success(`which git`) || error("'git' not found.")
end

Instructions for installing DOCUMENTER_KEY on GitHub are out of date

DocumenterTools.genkeys() produces output like

┌ Info: Add the key below as a new 'Deploy key' on GitHub (https://github.com/$USER/$REPO/settings/keys) with read and write access.
└ The 'Title' field can be left empty as GitHub can infer it from the key comment.

public key

[ Info: Add a secure environment variable named 'DOCUMENTER_KEY' (to https://github.com/$USER/$REPO/settings/secrets if you deploy using GitHub Actions) with value:

private key

Unfortunately, these instructions no longer match GitHub's current web interface. Neither of the URLs are valid. The terminology in the info no longer matches what appears in the GitHub repository settings pages.

Please update the info.

Allow OpenSSH @9

OpenSSH @8, the currently required version, requires OpenSSL @1. Thus DocumenterTools is currently holding up many package upgrades that switch to OpenSSL @3. Note that OpenSSL @1 will become unsupported this fall.

Is there a particular reason that OpenSSH @8 is required?

Deprecate generate, recommend PkgTemplates

Based off the discussion in #88, but also relevant for #89. cc @goerz

My two cents is that it's not really worth making changes to the generate functions, and instead we should just put a big warning admonition into the docstring.

Keygen.jl as a separate package

Keygen.jl can be used in various situations that are not limited to Documenter. For example, many GitHub actions need tokens.

Related: #36

Cannot add DocumenterTools on julia 1.0

Error message:

(v1.0) pkg> add DocumenterTools
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
ERROR: The following package names could not be resolved:
 * DocumenterTools (not found in project, manifest or registry)
Please specify by known `name=uuid`.
(v1.0) pkg> add DocumenterTools=46bb7b6e-9a58-11e8-21f8-9f2f45a0fcba
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package DocumenterTools [46bb7b6e]:
 DocumenterTools [46bb7b6e] log:
 ├─DocumenterTools [46bb7b6e] has no known versions!
 └─restricted to versions * by an explicit requirement — no versions left

Remove Travis from the genkeys()

Since we have stopped using Travis, we should just remove it from this info message and have it default to Github Actions.

[ Info: add a secure environment variable named 'DOCUMENTER_KEY' to https://travis-ci.com/$USER/$REPO/settings (if you deploy using Travis CI) or https://github.com/$USER/$REPO/settings/secrets (if you deploy using GitHub Actions) with value:

Why does Travis.genkeys take a module instead of strings?

@mortenpi, I read the docs for Documenter.jl SSH-deploy-keys and thought it was odd for DocumenterTools.Travis.genkeys to require the module in order to generate the keys.

For example DocumenterTools.Travis.genkeys(MyModule) requires that MyModule be installed in development mode. Why does genkeys require the module to be loaded since at the end of the day it boils down to a call to genkeys(; user=user, repo=repo) why wouldn't I just call that directly?

genkeys("$GITHUB_USER", "$REPO_PATH") is easy enough for me to use.

Doesn't the genkeys(MyModule) version force your package to require DocumenterTools.jl just for the one time you generate the keys?

Is there something I am missing?

A way to run a local HTTP server

Ideally, there would be a simple way to serve the build docs as a web page locally. This way the pretty URLs would be less of a problem for reading the docs locally. Possibly using HttpServer.jl.

A more advanced implementation might look up all the packages in the current environment and (if possible), serve the HTML docs for all of them.

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.