5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

D言語Advent Calendar 2020

Day 6

dub v1.23.0/Support dependencies as git url with exact commit

Posted at

はじめに

dub v1.23.0が9月にリリースされました。
その中に、 Support dependencies as git url with exact commit とあったので実際に試してみました。

使い方

使い方はリリースノートに書いてある通りですが、実例をdmanbotから抜粋します。

before:

dub.json
{
	"dependencies": {
		"twitter4d": {
			"path": "./twitter4d"
		}
	}
}

after v1.23.0:

dub.json
{
	"dependencies": {
		"twitter4d": {
			"repository": "git+https://github.com/simdnyan/twitter4d.git",
			"version": "72142f69173fb1914263eaff3f830b786a6cd6e0"
		}
	}
}

dmanbotではtwitter4ddlang-requestsを使うためにforkしたリポジトリをgit submoduleで参照して使っていましたが、v1.23.0以降からはdubで直接リポジトリを指定しています。なんだかんだgitの操作は煩わしいので、パッケージマネージャが隠蔽してくれるのは非常にありがたいです。

ここで参照しているtwitter4dは~/.dub/packages/twitter4d-72142f69173fb1914263eaff3f830b786a6cd6e0/に保存されていました。

Single-file packages

もちろん、Single-file packagesでも有効です。
以前の記事の例は以下のように書き換えることができます。

dlang_requests.d
#!/usr/bin/env dub                                                                                          
/+ dub.sdl:                                                                                                 
name "dlang_requests"                                                                                       
dependency "requests" repository="git+https://github.com/ikod/dlang-requests.git" version="bcbf3505a442770279c598023386c0bde70e8266”           
+/                                                                                                          
import std.stdio,                                                                                           
       std.getopt,                                                                                          
       requests;                                                                                            
                                                                                                            
string url = "http://example.com/";                                                                         
                                                                                                            
void main(string[] args)                                                                                    
{                                                                                                           
  getopt(args, "url", &url);                                                                                
                                                                                                            
  auto rs = Request().get(url);                                                                             
  writeln(rs.responseBody);                                                                                 
}                                                                                                           

実行方法は変わらず、dub run --single dlang_requests.d -- --url=http://qiita.comもしくは./dlang_requests.d --url=http://qiita.comでパラメータを与えて実行できます。

余談

dubのバージョンがv1.23.0以前だとInvalid SemVer formatと怒られます。まずはバージョンを確認しましょう。

$ dmd --version
DMD64 D Compiler v2.094.0
Copyright (C) 1999-2020 by The D Language Foundation, All Rights Reserved written by Walter Bright
$ dub --version
DUB version 1.23.0, built on Sep 22 2020

最後に

いかがでしたか?
使い方で挙げた実例以外では、プライベートライブラリ等、dubにアップできないケースで有用かと思います。是非活用してみて下さい。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?