I think Git and GitHub have become indispensable tools when developing,
Create a directory locally, git init
, create a README file, git add .
, git commit -m'Initial Commit'
, access GitHub, create a repository, git remote add origin [email protected]: copy and paste the part of hoge / fuga.git
, execute the command and git push
~
It's a series of troublesome flows, isn't it?
Now let's create a CLI tool that automates them.
The directory structure is as follows.
If you can install gem in the global environment without using Gemfile, you can just use gem install ○○
.
[auto_github_repo]
|- .commands.sh
|- .env
|- github.rb
|- Gemfile #Added later
|- Gemfile.lock #Added later
Use a gem called Octokit to access GitHub from Ruby and create repositories. In addition to creating a repository, various APIs are prepared and it is interesting, so it may be good to take a look. Here is a list of various methods. https://www.rubydoc.info/github/pengwynn/octokit/Octokit
Perhaps many people who work as engineers in companies use GitHub as a two-step certification for security reasons. This time, I created it based on that, and I will explain below because it is necessary to obtain a GitHub access token separately in order to pass the two-step authentication from the Ruby code.
First, access your GitHub, click the icon in the upper right, open Settings
, and you will be taken to the following page.
Then click Developer settings
at the bottom left.
Then you will be taken to the following page, so please proceed to Personal access tokens
.
Click Generate new token
here
Then, you will be taken to the following page, so please write the intended use in the Note
part and check the repo
part. This time, repo is enough for the authority, but it seems that a convenient CLI tool can be created if other parts can be used well. If you can afford it, please try it.
Then click on Generate token
at the bottom to go to the page where the access token is displayed, so copy it.
Create information such as the access token you created earlier in the .env file. For personal use only, it is okay to write solid code.
.env:.env
USERNAME='GitHub username'
GITHUB_ACCESS_TOKEN='Copyed access token'
FILEPATH='Specify the directory where you want to create the project' #In the case of I/Users/mac username/Program/It is said.
Now let's make a CLI app.
Creating a Gemfile
Terminal
$ bundle init
This will create a Gemfile, so add the following gem.
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem 'octokit', '~> 4.0'
gem 'dotenv'
Install Gem
Terminal
$ bundle
Now that we're ready, let's write a shell script to run from the terminal and Ruby code to work with GitHub.
sh:.commands.sh
#!/bin/zsh #For bash, change this "zsh" to bash
function create() {
source .env #Reading environment variables
ruby github.rb $1 #Run ruby file$1 is the argument passed in the command (name of the directory to be created)
cd $FILEPATH$1 #Move to the directory of the created project
git init
git remote add origin [email protected]:$USERNAME/$1.git
touch README.md
git add .
git commit -m 'Initial Commit'
git push -u origin master
code . #Launch VS Code
}
Now you can run this CLI tool from the terminal, run the Ruby file and even run the Git command.
Next, we will link with GitHub with Ruby.
github.rb
require 'octokit'
require 'dotenv'
# .Read env file
Dotenv.load '.env'
#Assign environment variables to variables
github_access_token = ENV['GITHUB_ACCESS_TOKEN']
path = ENV['FILEPATH']
#Make the directory top once
system('cd')
#Get the argument (project name to create) from the terminal command
folder_name = ARGV[0].to_s
Dir.mkdir(path + folder_name)
#Work with GitHub on Octokit
client = Octokit::Client.new(access_token: github_access_token)
client.user.login
client.create_repository(folder_name)
puts "Succesfully created repository #{folder_name}"
This completes the CLI app.
Let's create the project you want to create from the terminal.
Terminal
$ source .commands.sh
$create The name of the project you want to create
If the specified project is created in the repository of GitHub, the current directory is moved to the directory of the project name, and VS Code can be started automatically, it is successful.
We hope you find it useful as a start dash for development.
Recommended Posts