Home [Rust] Cargo 프로젝트에서 Author 수정하기
Post
Cancel
Preview Image

[Rust] Cargo 프로젝트에서 Author 수정하기

Rust 프로젝트를 생성할 때, 가장 쉬운 방법은 Cargo를 이용하는 방법이다.

간단하게 다음 명령어를 통해서 기본 프로젝트를 생성해주기 때문이다.

1
$ cargo new 프로젝트이름

그러면 생성된 프로젝트의 구조는 다음과 같다.

1
2
3
4
프로젝트 이름
├── Cargo.toml
└── src
    └── main.rs

아주 심플하다.

여기서 Cargo.toml 를 가면 다음과 같은 기본 구성들이 들어있다.

1
2
3
4
5
6
7
8
9
[package]
name = "workspace-rust"
version = "0.1.0"
authors = ["회사닉네임 <회사이메일>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

음? authors 안에 회사닉네임과 이메일이 들어가있었다.

엥… 우선 폴더별로 계정을 나눠서 쓰고있긴 하지만… 그래도 너무 하잖아…

그래서 어떤 설정 값을 해줘야 하는지 찾아봤다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
fn discover_author(path: &Path) -> (Option<String>, Option<String>) {
    let git_config = find_git_config(path);
    let git_config = git_config.as_ref();

    let name_variables = [
        "CARGO_NAME",
        "GIT_AUTHOR_NAME",
        "GIT_COMMITTER_NAME",
        "USER",
        "USERNAME",
        "NAME",
    ];
    let name = get_environment_variable(&name_variables[0..3])
        .or_else(|| git_config.and_then(|g| g.get_string("user.name").ok()))
        .or_else(|| get_environment_variable(&name_variables[3..]));

    let name = match name {
        Some(namestr) => Some(namestr.trim().to_string()),
        None => None,
    };

    let email_variables = [
        "CARGO_EMAIL",
        "GIT_AUTHOR_EMAIL",
        "GIT_COMMITTER_EMAIL",
        "EMAIL",
    ];
    let email = get_environment_variable(&email_variables[0..3])
        .or_else(|| git_config.and_then(|g| g.get_string("user.email").ok()))
        .or_else(|| get_environment_variable(&email_variables[3..]));

    let email = email.map(|s| {
        let mut s = s.trim();

        // In some cases emails will already have <> remove them since they
        // are already added when needed.
        if s.starts_with('<') && s.ends_with('>') {
            s = &s[1..s.len() - 1];
        }

        s.to_string()
    });

    (name, email)
}

(https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/cargo_new.rs#L818-L862)

기본으로 설정된 GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL등을 가져와서 설정하는 것 같다.

아무래도 메인으로 설정된 친구들을 가져오다보니… 회사닉네임, 회사이메일을 가져온 것 같다.

그러면 zshrc안에 (혹은 각 os나 각 터미널별로 알아서…) 다음과 같이 환경변수를 설정해주면 된다.

1
2
export CARGO_NAME="개인 닉네임"
export CARGO_EMAIL="개인 이메일"

이제 다시 cargo new로 프로젝트를 생성해주면, 잘 들어간 것을 확인할 수 있다.

1
2
3
4
5
6
7
8
9
[package]
name = "workspace-rust"
version = "0.1.0"
authors = ["개인닉네임 <개인이메일>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
This post is licensed under CC BY 4.0 by the author.

DAG가 뭔가요? 🤔

[Rust] Generic Types